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