用EPLD芯片ADV750設(shè)計的一種可編程計數(shù)器
摘要:ATV750是ATMEL公司生產(chǎn)的一種可擦除可編程邏輯器件EPLD(Erasable Programmable Logic Device)。ATV750設(shè)計的可編程計數(shù)器,具有模值范圍大的特點,文中給出了用ATV750設(shè)計的可編程計數(shù)器的設(shè)計原理和方法,同時給出了詳細的源程序。
本文引用地址:http://m.butianyuan.cn/article/226431.htm關(guān)鍵詞:可編程計數(shù)器 反饋置零法 EPLD ATV750
EPLD是繼GAL(Generic Array Logic)后出現(xiàn)的新一代PLD(Programmable Logic Device),它的密度比普通GAL大得多,在設(shè)計可編程計數(shù)器時,僅用一片EPLD就能實現(xiàn)較大模值的分頻計數(shù)。本文給出用ATMEL公司推出的EPLD芯片ATV750來實現(xiàn)可編程計數(shù)器的設(shè)計過程。
1 ATV750簡介
1.1 ATV750的結(jié)構(gòu)描述
圖1為24引腳DIP封裝形式的ATV750的引腳排列,它在邏輯結(jié)構(gòu)方面具如下特點:
●帶有10個輸出邏輯寵單元OLMC(Output Logic Macrocell),每個OLMC有兩個或門,每個或門帶一半乘積項。每個或門所帶的乘積項分別為2×2×4,2×2×5,2×2×6/2×2×7/2×2×8,共有120項乘積項。每個寵單元有兩個觸發(fā)器,每個觸發(fā)器的輸出都有一個三態(tài)緩沖器反饋到與門陣列;
●可編程與門陣列共有84個輸入變量。其中12個專用輸入端為24個變量,10個反饋輸入端為20個變量,20個觸發(fā)器的反饋為40個變量;
●所有的乘積項共有171項。其中或門帶120項,每個寵單元中的兩個觸發(fā)器的異步置0信號AR需要2個乘積項,時鐘控制信號CK需要2個乘積項,三態(tài)輸入緩沖器的使能端OE需要1個乘積項10個宏單元共50個乘積項,另外,所有的觸發(fā)器還共用一個同步置1信號SP,需要1個乘積項。
1.2 輸出邏輯宏單元OLMC
ATV750的輸出邏輯宏單元OLMC結(jié)構(gòu)如圖2所示,它有兩個或門OR0和OR1,一個分離開關(guān),兩個D觸發(fā)器F0和F1,一個2選1多路選擇器MUX,一個異或門XOR和一個三態(tài)緩沖器。
OR0、F0和MUX組成邏輯組態(tài)選擇電路,可以構(gòu)成組合邏輯輸出或者寄存器(時序邏輯)輸出。F0的輸出同時由反饋緩沖器Q0反饋回與門陣列。F1是埋入式的,它的輸出不接到輸出引腳,而是由反饋緩沖器Q1反饋到與門陣列,這可看做是邏輯函數(shù)的中間變量而在設(shè)計中的一個節(jié)點。這種結(jié)構(gòu)對設(shè)計中間帶有觸發(fā)器的時序電路非常方便。在設(shè)計時,可用節(jié)點作為中間輸出變量來設(shè)計F1之前的電路,然后再以引腳作為輸出變量,以節(jié)點的輸出作為輸入變量設(shè)計F1以后的電路,這樣就可把復(fù)雜的設(shè)計分成兩步來進行。
分離開關(guān)的作用是增加或者減少或門OR0的乘積項個數(shù)。比如,當OR0帶有4個乘積項時,如果在設(shè)計電路時輸入變量超過4項,那么,分離開關(guān)將經(jīng)過編程而接通,并將OR1所帶的4個乘積項接到OR0的輸入端而使OR0的乘積項增加一倍。如果在設(shè)計時OR0所帶的4個乘積項已經(jīng)費用了,這個開關(guān)將通過編程而斷開。此時OR1的輸出直接作為F1的輸入信號被全站作為埋入式應(yīng)用而并不作廢。當三態(tài)輸出緩沖器的使能端OE使其高陰態(tài)時,F(xiàn)的輸出與F1一樣,都可作為埋入式觸發(fā)器應(yīng)用。
兩個觸發(fā)器的時鐘信號分別由一個乘積項來供給,即CK0和CK1.異步置0信號也分別由珍上乘積項來供給,即AR0和AR1.這樣可以設(shè)計異步時序電路。
觸發(fā)器的同步置1信號SP可由共用的一個乘積項來供給。MUX和三態(tài)輸出緩沖器可用來構(gòu)成輸出選擇電路。
2 可編程計數(shù)器的設(shè)計原理
一般情況下,采用PLD設(shè)計可編程計數(shù)器有四種方法:第一是基于二進制計烽器基礎(chǔ)上的反饋置零法;第二是基于二進制計數(shù)器基礎(chǔ)上的反饋初值法;第三是基于二進制計數(shù)器基礎(chǔ)上的異步復(fù)位法;第四是基于M序列發(fā)生器基礎(chǔ)上的反饋置零法。其中第一種方法的通用性最強,故常被采用。
N位同步二進制加法計數(shù)器的構(gòu)造非常有規(guī)律,其各級觸發(fā)器的狀態(tài)轉(zhuǎn)移方程為:
Q1=Q1+(Qi-1…Q1·Q0·1),
i=(0,1,…,n-1)
從低位開始分別為:
Q0=Q0+1
Q1=Q1+Q0
Q2=Q2+Q1Q0
欲構(gòu)成一個N模值的分頻器(M≠2n),應(yīng)先選擇二進制計數(shù)器的位數(shù)n,n的選擇應(yīng)滿足:
2n-1M≤2 n
如M=6,則選n=3,模數(shù)為2 3計數(shù)器的方程如下:
Q0=Q0
Q1=Q1+Q0
Q2=Q2+Q1Q0
如果要采用反饋置零法將模為2 n的計數(shù)器改變模M計數(shù)器,則可選擇數(shù)M-1作為反饋的碼F。對上例中的M-6,可選用M-1=5,即101作為反饋碼,因而有:
F=Q2Q1Q0
這樣將上面模8計數(shù)器的方程改為下面形式即可實現(xiàn)模6計數(shù):
Q0=FQ0
Q1=F(Q1+Q0)
Q2=F(Q2+Q1Q0)
顯然,采用此法設(shè)計的任意模值計數(shù)器具有自啟動特性。
3 最大模值計數(shù)器的設(shè)計
ATV750有10個輸出邏輯宏單元OLMC,為了實現(xiàn)最大模值(M≠2 n)的計數(shù)器,可將OLMC組態(tài)和數(shù)項分離連接,這樣OLMC中的兩個或門所帶的乘積項為4~8項。但數(shù)目有限的乘積項無法實現(xiàn)上述各級觸發(fā)器狀態(tài)轉(zhuǎn)移方程中的異或運算所帶來眾多的乘積項,為此設(shè)計二進制計數(shù)器時應(yīng)分級處理,每級二進制計數(shù)器的級數(shù)不能超過8位,級與級之間的進位采用同步結(jié)構(gòu)。這樣,用ATV750設(shè)計可編程計數(shù)器的模值M的范圍為2 17-1=131071,該數(shù)值已能滿足絕大部分應(yīng)用場合的需要。下面給出用ABEL4.0設(shè)計的模值M=2 17-2計數(shù)器的源程序:
module CNT131K
title '模M=2 17-1=131071計數(shù)器'
IC131K device 'P750';
F pin 14; 反饋碼輸出即分頻輸出
C01 pin 23; 第一級二進制計數(shù)器進位輸出
C02 pin 15; 第二級二進制計數(shù)器進位輸出
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; 外部時鐘和異步復(fù)位輸入
Q=[Q16..Q0];
P,C,X=.P.,C.,.X.;
equations
Q0.D=!F(Q0$1); 第一級
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; 第二級
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;第三級
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]; 計數(shù)
[C,0,X]->[0,0,2];
[P,0,3]->[0,0,X]; 預(yù)置131068,反碼輸入
[C,0,X]->[0,0,131069]; 計數(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]; 自啟動檢測
[C,0,X]->[0,0,0];
end CNT131K
4 結(jié)束語
用ATV750設(shè)計可編程計數(shù)的模M最大值為2 17-1=131071。但在實際運用時,如果模M較小則用GAL設(shè)計即可。用GAL16V8設(shè)計可編程計數(shù)器的模M范圍為2至2 8-1=255,用GAL22V10設(shè)計可編程計數(shù)器的模M范圍為2至2 10-1=1023。而當模M比2 17-1更大時,可用更大規(guī)模的EPLD設(shè)計,如ATV2500和ATV5000。當用可編程計數(shù)器構(gòu)成其它更為復(fù)雜的數(shù)字系統(tǒng)時,應(yīng)選用CPLD(Complex Programmable Logic Device)來設(shè)計,這時可選用Lattice半導(dǎo)體公司的ISP(In-System Programming)器件。
評論