基于可編程器件的任意進(jìn)制計數(shù)器的設(shè)計方法
1 引言
目前計數(shù)器設(shè)計主要有軟件、硬件電路搭建和EDA技術(shù)編程實(shí)現(xiàn)等多種方式。其中,EDA技術(shù)編程實(shí)現(xiàn)方式由于具有軟件的靈活性和接近硬件電路計數(shù)器的最高計數(shù)頻率而應(yīng)用廣泛。但對于位寬8 bit以上,模式較復(fù)雜的計數(shù)器采用EDA技術(shù)編程、調(diào)試卻非常繁瑣。Altera公司考慮到工程上的具體應(yīng)用,增加MAX+plus II設(shè)計軟件的靈活性,設(shè)置LPM(Librarv of Parameterized Moclules)元件庫供設(shè)計人員使用。該庫包含一些常用功能模塊所生成的元件,其元件引腳和參數(shù)由用戶直接指定,可適應(yīng)不同設(shè)計需要(如利用LPM元件庫中的lpm_counter元件設(shè)計任意進(jìn)制計數(shù)器)。使用LPM元件庫優(yōu)點(diǎn)如下:(1)LPM設(shè)計的電路與結(jié)構(gòu)無關(guān);(2)設(shè)計人員利用LPM設(shè)計時,不用擔(dān)心芯片利用率和效率等問題,無需自行設(shè)計基本的標(biāo)準(zhǔn)邏輯單元來構(gòu)造某種功能,直到設(shè)計結(jié)束,設(shè)計人員都無需考慮其最終結(jié)構(gòu),設(shè)計輸入和模擬仿真獨(dú)立于物理結(jié)構(gòu)。作為EDIF(電子設(shè)計交換格式)標(biāo)準(zhǔn)的一部分,LPM得到EDA界的廣泛支持。
2 lpm_counter元件介紹
lpm_counter是LPM元件庫的可調(diào)參數(shù)計數(shù)器元件,其最大計數(shù)位寬為32 bit,最小計數(shù)時鐘周期達(dá)8 ns(125 MHz,使用EPM7032LC44-6實(shí)現(xiàn));實(shí)現(xiàn)加、減或可逆計數(shù);同步或異步清零/置數(shù)功能可選;通過參數(shù)設(shè)置,實(shí)現(xiàn)任意進(jìn)制、輸出位寬不超過32 bit的加、減或可逆同步/異步計數(shù)器。
2.1 引腳及功能描述
1pm_counter元件的引腳端中,只有時鐘端是必選的,需要外界提供計數(shù)信號;其他引腳端都為可選,當(dāng)這些引腳端未選中時,其值為缺省值,引腳在計數(shù)器圖形符號中不顯示。
各引腳端功能描述如下:
data[]:數(shù)據(jù)輸入總線端,輸入信號位寬由LPM_WIDTH決定,用于異步或同步置數(shù)。
clock:時鐘端,上升沿觸發(fā)。
clk_en:時鐘信號輸入允許端;缺省值為“1”(允許)。
cnt_en:計數(shù)允許端,缺省值為“1”(允許)。在同步置數(shù)、同步輸入設(shè)置或同步清零時為“0”(禁止)。
updown:計數(shù)方向控制端,缺省值為“l(fā)”(加計數(shù))。若選擇“LPM_DIRECTION”參數(shù),則該引腳端禁止使用。
cin:低位進(jìn)位端,若省略,其缺省值為“0”。
aclr:異步清零端,缺省值為“0”(禁止)。如果同時輸入異步清零和異步輸入設(shè)置信號,則異步清零信號有效,屏蔽異步輸入設(shè)置信號。
aset:異步輸入設(shè)置端,缺省值為“0”(禁止)。當(dāng)aset端輸入“1”時,q[]輸出全“1”或為“LPM_AVALUE”指定值。
aload:異步置數(shù)端,缺省值為“O”(禁止)。若選用“異步置數(shù)”端,必須連接“data[]”端。該aload端可置入計數(shù)初始值。
sclr:同步清零端,缺省值為“O”(禁止)。如果同時輸入同步清零和同步輸入設(shè)置信號,則同步清零信號有效,屏蔽同步輸入設(shè)置信號。
sset:同步輸入設(shè)置端,缺省值為“0”(禁止)。當(dāng)sset端輸入“1”時,q[]輸出全“l(fā)”或為“LPM_SVALUE”指定值。
sload:同步置數(shù)端,缺省值為“O”(禁止)。若選用“同步置數(shù)”端,必須連接“dat[]”端。該sload端可置入計數(shù)初始值。
q[]:計數(shù)值輸出端,輸出位寬由“LPM_WIDTH”決定。
eq[15..0]:輸出端,計數(shù)器模值必須小于16。當(dāng)計數(shù)值為c時,則輸出端eq[c]為1(高電平)。例如:當(dāng)計數(shù)值c=0時,則輸出端eq[0]=l;當(dāng)計數(shù)值c=1時,則輸出端eq[1]=1;……。
cout:進(jìn)位端。
2.2 參數(shù)及功能
lpm_counter元件參數(shù)中LPM_WIDTH參數(shù)是必選項.其他參數(shù)為可選項。各參數(shù)的功能說明如下:
LPM_WIDTH(計數(shù)位寬):該參數(shù)最大取值為32。它決定計數(shù)器置數(shù)端(data[])和輸出端(q[])的位寬;決定LPM_MODULUS的最大取值(2 LPM_WIDTH)。若LPM_MODULUS參數(shù)取值大于2 LPM_WIDTH,則計數(shù)器不能正常工作。
LPM_DIRECTION(計數(shù)方向):有“UP”,“DOWN”和“UNUSED”3種取值。如果使用LPM_DIRECTION參數(shù),則updown端不連接,其參數(shù)默認(rèn)值為“UP”。
LPM_MODULUS(計數(shù)模數(shù)):該參數(shù)決定計數(shù)器的進(jìn)制:如果該參數(shù)不設(shè)置,則其缺省值為二進(jìn)制,且其最大計數(shù)值為2 LPM_WIDTH;如果aload(或sload、asel、sset)所置數(shù)值比LPM_MODULUS參數(shù)大,則計數(shù)值出錯。
LPM_AVALUE(異步計數(shù)初值):如果aset=1,則該計數(shù)初值被加載。如果該指定值比LPM_MODULUS大,則計數(shù)器輸出值出錯。
LPM_SVALUE(同步計數(shù)初值):如果sset=1,則該計數(shù)初值被加載。如果該指定值比LPM_MODULUS大,則計數(shù)器輸出值出錯。
3 設(shè)計實(shí)例
某型帶峰谷費(fèi)率設(shè)置的數(shù)字電能表要安裝一實(shí)時鐘模塊,實(shí)現(xiàn)日、時、分、秒等計時功能,實(shí)現(xiàn)不同時段用戶所耗電能以不同費(fèi)率計費(fèi)。圖l為該電能表計時模塊原理框圖。
評論