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