用EPLD芯片ADV750設(shè)計(jì)的一種可編程計(jì)數(shù)器
摘要: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)器件。
評(píng)論