<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > EDA/PCB > 設(shè)計(jì)應(yīng)用 > 用EPLD芯片ADV750設(shè)計(jì)的一種可編程計(jì)數(shù)器

          用EPLD芯片ADV750設(shè)計(jì)的一種可編程計(jì)數(shù)器

          作者: 時(shí)間:2006-05-07 來(lái)源:網(wǎng)絡(luò) 收藏

          摘要:ATV750是ATMEL公司生產(chǎn)的一種可擦除可編程邏輯器件EPLD(Erasable Programmable Logic Device)。ATV750設(shè)計(jì)的可編程計(jì)數(shù)器,具有模值范圍大的特點(diǎn),文中給出了用ATV750設(shè)計(jì)的可編程計(jì)數(shù)器的設(shè)計(jì)原理和方法,同時(shí)給出了詳細(xì)的源程序。

          本文引用地址:http://www.ex-cimer.com/article/226431.htm

          關(guān)鍵詞:可編程計(jì)數(shù)器 反饋置零法 EPLD ATV750

          EPLD是繼GAL(Generic Array Logic)后出現(xiàn)的新一代PLD(Programmable Logic Device),它的密度比普通GAL大得多,在設(shè)計(jì)可編程計(jì)數(shù)器時(shí),僅用一片EPLD就能實(shí)現(xiàn)較大模值的分頻計(jì)數(shù)。本文給出用ATMEL公司推出的EPLD芯片ATV750來(lái)實(shí)現(xiàn)可編程計(jì)數(shù)器的設(shè)計(jì)過(guò)程。

          1 ATV750簡(jiǎn)介

          1.1 ATV750的結(jié)構(gòu)描述

          圖1為24引腳DIP封裝形式的ATV750的引腳排列,它在邏輯結(jié)構(gòu)方面具如下特點(diǎn):

          ●帶有10個(gè)輸出邏輯寵單元OLMC(Output Logic Macrocell),每個(gè)OLMC有兩個(gè)或門(mén),每個(gè)或門(mén)帶一半乘積項(xiàng)。每個(gè)或門(mén)所帶的乘積項(xiàng)分別為2×2×4,2×2×5,2×2×6/2×2×7/2×2×8,共有120項(xiàng)乘積項(xiàng)。每個(gè)寵單元有兩個(gè)觸發(fā)器,每個(gè)觸發(fā)器的輸出都有一個(gè)三態(tài)緩沖器反饋到與門(mén)陣列;

          ●可編程與門(mén)陣列共有84個(gè)輸入變量。其中12個(gè)專(zhuān)用輸入端為24個(gè)變量,10個(gè)反饋輸入端為20個(gè)變量,20個(gè)觸發(fā)器的反饋為40個(gè)變量;

          ●所有的乘積項(xiàng)共有171項(xiàng)。其中或門(mén)帶120項(xiàng),每個(gè)寵單元中的兩個(gè)觸發(fā)器的異步置0信號(hào)AR需要2個(gè)乘積項(xiàng),時(shí)鐘控制信號(hào)CK需要2個(gè)乘積項(xiàng),三態(tài)輸入緩沖器的使能端OE需要1個(gè)乘積項(xiàng)10個(gè)宏單元共50個(gè)乘積項(xiàng),另外,所有的觸發(fā)器還共用一個(gè)同步置1信號(hào)SP,需要1個(gè)乘積項(xiàng)。

          1.2 輸出邏輯宏單元OLMC

          ATV750的輸出邏輯宏單元OLMC結(jié)構(gòu)如圖2所示,它有兩個(gè)或門(mén)OR0和OR1,一個(gè)分離開(kāi)關(guān),兩個(gè)D觸發(fā)器F0和F1,一個(gè)2選1多路選擇器MUX,一個(gè)異或門(mén)XOR和一個(gè)三態(tài)緩沖器。

          OR0、F0和MUX組成邏輯組態(tài)選擇電路,可以構(gòu)成組合邏輯輸出或者寄存器(時(shí)序邏輯)輸出。F0的輸出同時(shí)由反饋緩沖器Q0反饋回與門(mén)陣列。F1是埋入式的,它的輸出不接到輸出引腳,而是由反饋緩沖器Q1反饋到與門(mén)陣列,這可看做是邏輯函數(shù)的中間變量而在設(shè)計(jì)中的一個(gè)節(jié)點(diǎn)。這種結(jié)構(gòu)對(duì)設(shè)計(jì)中間帶有觸發(fā)器的時(shí)序電路非常方便。在設(shè)計(jì)時(shí),可用節(jié)點(diǎn)作為中間輸出變量來(lái)設(shè)計(jì)F1之前的電路,然后再以引腳作為輸出變量,以節(jié)點(diǎn)的輸出作為輸入變量設(shè)計(jì)F1以后的電路,這樣就可把復(fù)雜的設(shè)計(jì)分成兩步來(lái)進(jìn)行。

          分離開(kāi)關(guān)的作用是增加或者減少或門(mén)OR0的乘積項(xiàng)個(gè)數(shù)。比如,當(dāng)OR0帶有4個(gè)乘積項(xiàng)時(shí),如果在設(shè)計(jì)電路時(shí)輸入變量超過(guò)4項(xiàng),那么,分離開(kāi)關(guān)將經(jīng)過(guò)編程而接通,并將OR1所帶的4個(gè)乘積項(xiàng)接到OR0的輸入端而使OR0的乘積項(xiàng)增加一倍。如果在設(shè)計(jì)時(shí)OR0所帶的4個(gè)乘積項(xiàng)已經(jīng)費(fèi)用了,這個(gè)開(kāi)關(guān)將通過(guò)編程而斷開(kāi)。此時(shí)OR1的輸出直接作為F1的輸入信號(hào)被全站作為埋入式應(yīng)用而并不作廢。當(dāng)三態(tài)輸出緩沖器的使能端OE使其高陰態(tài)時(shí),F(xiàn)的輸出與F1一樣,都可作為埋入式觸發(fā)器應(yīng)用。

          兩個(gè)觸發(fā)器的時(shí)鐘信號(hào)分別由一個(gè)乘積項(xiàng)來(lái)供給,即CK0和CK1.異步置0信號(hào)也分別由珍上乘積項(xiàng)來(lái)供給,即AR0和AR1.這樣可以設(shè)計(jì)異步時(shí)序電路。

          觸發(fā)器的同步置1信號(hào)SP可由共用的一個(gè)乘積項(xiàng)來(lái)供給。MUX和三態(tài)輸出緩沖器可用來(lái)構(gòu)成輸出選擇電路。

          2 可編程計(jì)數(shù)器的設(shè)計(jì)原理

          一般情況下,采用PLD設(shè)計(jì)可編程計(jì)數(shù)器有四種方法:第一是基于二進(jìn)制計(jì)烽器基礎(chǔ)上的反饋置零法;第二是基于二進(jìn)制計(jì)數(shù)器基礎(chǔ)上的反饋初值法;第三是基于二進(jìn)制計(jì)數(shù)器基礎(chǔ)上的異步復(fù)位法;第四是基于M序列發(fā)生器基礎(chǔ)上的反饋置零法。其中第一種方法的通用性最強(qiáng),故常被采用。

          N位同步二進(jìn)制加法計(jì)數(shù)器的構(gòu)造非常有規(guī)律,其各級(jí)觸發(fā)器的狀態(tài)轉(zhuǎn)移方程為:

          Q1=Q1+(Qi-1…Q1·Q0·1),

          i=(0,1,…,n-1)

          從低位開(kāi)始分別為:

          Q0=Q0+1

          Q1=Q1+Q0

          Q2=Q2+Q1Q0

          欲構(gòu)成一個(gè)N模值的分頻器(M≠2n),應(yīng)先選擇二進(jìn)制計(jì)數(shù)器的位數(shù)n,n的選擇應(yīng)滿(mǎn)足:

          2n-1M≤2 n

          如M=6,則選n=3,模數(shù)為2 3計(jì)數(shù)器的方程如下:

          Q0=Q0

          Q1=Q1+Q0

          Q2=Q2+Q1Q0

          如果要采用反饋置零法將模為2 n的計(jì)數(shù)器改變模M計(jì)數(shù)器,則可選擇數(shù)M-1作為反饋的碼F。對(duì)上例中的M-6,可選用M-1=5,即101作為反饋碼,因而有:

          F=Q2Q1Q0

          這樣將上面模8計(jì)數(shù)器的方程改為下面形式即可實(shí)現(xiàn)模6計(jì)數(shù):

          Q0=FQ0

          Q1=F(Q1+Q0)

          Q2=F(Q2+Q1Q0)

          顯然,采用此法設(shè)計(jì)的任意模值計(jì)數(shù)器具有自啟動(dòng)特性。

          3 最大模值計(jì)數(shù)器的設(shè)計(jì)

          ATV750有10個(gè)輸出邏輯宏單元OLMC,為了實(shí)現(xiàn)最大模值(M≠2 n)的計(jì)數(shù)器,可將OLMC組態(tài)和數(shù)項(xiàng)分離連接,這樣OLMC中的兩個(gè)或門(mén)所帶的乘積項(xiàng)為4~8項(xiàng)。但數(shù)目有限的乘積項(xiàng)無(wú)法實(shí)現(xiàn)上述各級(jí)觸發(fā)器狀態(tài)轉(zhuǎn)移方程中的異或運(yùn)算所帶來(lái)眾多的乘積項(xiàng),為此設(shè)計(jì)二進(jìn)制計(jì)數(shù)器時(shí)應(yīng)分級(jí)處理,每級(jí)二進(jìn)制計(jì)數(shù)器的級(jí)數(shù)不能超過(guò)8位,級(jí)與級(jí)之間的進(jìn)位采用同步結(jié)構(gòu)。這樣,用ATV750設(shè)計(jì)可編程計(jì)數(shù)器的模值M的范圍為2 17-1=131071,該數(shù)值已能滿(mǎn)足絕大部分應(yīng)用場(chǎng)合的需要。下面給出用ABEL4.0設(shè)計(jì)的模值M=2 17-2計(jì)數(shù)器的源程序:

          module CNT131K

          title '模M=2 17-1=131071計(jì)數(shù)器'

          IC131K device 'P750';

          F pin 14; 反饋碼輸出即分頻輸出

          C01 pin 23; 第一級(jí)二進(jìn)制計(jì)數(shù)器進(jìn)位輸出

          C02 pin 15; 第二級(jí)二進(jìn)制計(jì)數(shù)器進(jìn)位輸出

          Q16,Q15,AQ14 pin 16,22,18 istype 'buffer';

          Q13,Q12,Q11,Q10 node 26,35,30,31,29;

          Q4,Q3,Q2,Q1,Q0 node 32,28,33,27,34;

          CLK,CLR pin 1,2; 外部時(shí)鐘和異步復(fù)位輸入

          Q=[Q16..Q0];

          P,C,X=.P.,C.,.X.;

          equations

          Q0.D=!F(Q0$1); 第一級(jí)

          Q1.D=!F(Q1$0);

          Q2.D=!F(Q2$Q1Q0);

          Q3.D=!F(Q3$Q2Q1Q0);

          Q4.D=!F(Q4$Q3Q1Q0);

          Q5.D=!F(Q5$Q4Q3Q1Q0);

          Q6.D=!F(Q6$Q5Q4Q3Q2Q1Q0);

          Q7.D=!F(Q7$Q6Q5Q4Q3Q2Q1Q0);

          C01=Q7Q6Q5Q4Q3Q2Q1Q0;

          Q8.D=!FC01(Q8$1)#!F!C01Q8; 第二級(jí)

          Q9.D!F1(Q9$Q8)#!F!C01Q9;

          Q10.D=!FC01(Q10$Q9Q8)#!F!C01Q10;

          Q11.D=!FC01(Q11$Q10Q9Q8)#!F!C01Q11;

          Q12.D=!FC01(Q12$Q11Q10Q9Q8)#!F!C01Q12;

          Q13.D=!FC01(Q13$Q12Q11Q10Q9Q8)#!F!C01Q13;

          Q14.D=!FC01(Q14$Q13Q12Q11Q10Q9Q8)#!F!C01Q14;

          C02=Q14Q13Q12Q11Q10Q9Q8C01;

          Q15.D=!FC02(Q15$1)#!F!C02Q15;第三級(jí)

          Q16.D=!FC02(Q16$Q15)#!F!C02Q16;

          F=Q16Q15Q14Q13Q12Q11Q10Q9Q8Q7Q6Q5Q5Q3Q2Q1!Q0;反饋碼M-1=131070

          Q0.C=CLK; Q1.C=CLK; Q2.C=CLK;

          Q3.C=CLK; Q4.C=CLK; Q5.C=CLK;

          Q6.C=CLK; Q7.C=CLK; Q8.C=CLK;

          Q9.C=CLK; Q10.C=CLK; Q11.C=CLK;

          Q12.C=CLK; Q13.C=CLK; Q14.C=CLK;

          Q15.C=CLK; Q16.C=CLK;

          Q0.RE=CLR; Q1.RE=CLR; Q2.RE=CLR;

          Q3.RE=CLR; Q4.RE=CLR; Q5.RE=CLR;

          Q6.RE=CLR; Q7.RE=CLR; Q8.RE=CLR;

          Q9.RE=CLR; Q10.RE=CLR; Q11.RE=CLR;

          Q12.RE=CLR; Q13.RE=CLR; Q14.RE=CLR;

          Q15.RE=CLR; Q16.RE=CLR;

          test-vectors

          ([CLK,CLR,Q]->[CO,C01,Q])

          [0,1,X]->[0,0,0]; 復(fù)位

          [C,0,X]->[0,0,1]; 計(jì)數(shù)

          [C,0,X]->[0,0,2];

          [P,0,3]->[0,0,X]; 預(yù)置131068,反碼輸入

          [C,0,X]->[0,0,131069]; 計(jì)數(shù)

          [C,0,X]->[1,0,131070];

          [C,0,X]->[0,0,0];

          [C,0,X]->[0,0,1];

          [C,0,X]->[0,0,2];

          [C,0,X]->[0,0,3];

          [C,0,X]->[0,0,4];

          [C,0,X]->[0,0,5];

          [P,0,0]->[0,1,X]; 自啟動(dòng)檢測(cè)

          [C,0,X]->[0,0,0];

          end CNT131K

          4 結(jié)束語(yǔ)

          用ATV750設(shè)計(jì)可編程計(jì)數(shù)的模M最大值為2 17-1=131071。但在實(shí)際運(yùn)用時(shí),如果模M較小則用GAL設(shè)計(jì)即可。用GAL16V8設(shè)計(jì)可編程計(jì)數(shù)器的模M范圍為2至2 8-1=255,用GAL22V10設(shè)計(jì)可編程計(jì)數(shù)器的模M范圍為2至2 10-1=1023。而當(dāng)模M比2 17-1更大時(shí),可用更大規(guī)模的EPLD設(shè)計(jì),如ATV2500和ATV5000。當(dāng)用可編程計(jì)數(shù)器構(gòu)成其它更為復(fù)雜的數(shù)字系統(tǒng)時(shí),應(yīng)選用CPLD(Complex Programmable Logic Device)來(lái)設(shè)計(jì),這時(shí)可選用Lattice半導(dǎo)體公司的ISP(In-System Programming)器件。

          塵埃粒子計(jì)數(shù)器相關(guān)文章:塵埃粒子計(jì)數(shù)器原理


          評(píng)論


          相關(guān)推薦

          技術(shù)專(zhuān)區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();