1 引言
目前计数器设计主要有软件、硬件电路搭建和EDA技术编程实现等多种方式。其中,EDA技术编程实现方式由于具有软件的灵活性和接近硬件电路计数器的最高计数频率而应用广泛。但对于位宽8 bit以上,模式较复杂的计数器采用EDA技术编程、调试却非常繁琐。Altera公司考虑到工程上的具体应用,增加MAX+plus II设计软件的灵活性,设置LPM(Librarv of Parameterized Moclules)元件库供设计人员使用。该库包含一些常用功能模块所生成的元件,其元件引脚和参数由用户直接指定,可适应不同设计需要(如利用LPM元件库中的lpm_counter元件设计任意进制计数器)。使用LPM元件库优点如下:(1)LPM设计的电路与结构无关;(2)设计人员利用LPM设计时,不用担心芯片利用率和效率等问题,无需自行设计基本的标准逻辑单元来构造某种功能,直到设计结束,设计人员都无需考虑其最终结构,设计输入和模拟仿真独立于物理结构。作为EDIF(电子设计交换格式)标准的一部分,LPM得到EDA界的广泛支持。
2 lpm_counter元件介绍
lpm_counter是LPM元件库的可调参数计数器元件,其最大计数位宽为32 bit,最小计数时钟周期达8 ns(125 MHz,使用EPM7032LC44-6实现);实现加、减或可逆计数;同步或异步清零/置数功能可选;通过参数设置,实现任意进制、输出位宽不超过32 bit的加、减或可逆同步/异步计数器。
2.1 引脚及功能描述
1pm_counter元件的引脚端中,只有时钟端是必选的,需要外界提供计数信号;其他引脚端都为可选,当这些引脚端未选中时,其值为缺省值,引脚在计数器图形符号中不显示。
各引脚端功能描述如下:
data[]:数据输入总线端,输入信号位宽由LPM_WIDTH决定,用于异步或同步置数。
clock:时钟端,上升沿触发。
clk_en:时钟信号输入允许端;缺省值为“1”(允许)。
cnt_en:计数允许端,缺省值为“1”(允许)。在同步置数、同步输入设置或同步清零时为“0”(禁止)。
updown:计数方向控制端,缺省值为“l”(加计数)。若选择“LPM_DIRECTION”参数,则该引脚端禁止使用。
cin:低位进位端,若省略,其缺省值为“0”。
aclr:异步清零端,缺省值为“0”(禁止)。如果同时输入异步清零和异步输入设置信号,则异步清零信号有效,屏蔽异步输入设置信号。
aset:异步输入设置端,缺省值为“0”(禁止)。当aset端输入“1”时,q[]输出全“1”或为“LPM_AVALUE”指定值。
aload:异步置数端,缺省值为“O”(禁止)。若选用“异步置数”端,必须连接“data[]”端。该aload端可置入计数初始值。
sclr:同步清零端,缺省值为“O”(禁止)。如果同时输入同步清零和同步输入设置信号,则同步清零信号有效,屏蔽同步输入设置信号。
sset:同步输入设置端,缺省值为“0”(禁止)。当sset端输入“1”时,q[]输出全“l”或为“LPM_SVALUE”指定值。
sload:同步置数端,缺省值为“O”(禁止)。若选用“同步置数”端,必须连接“dat[]”端。该sload端可置入计数初始值。
q[]:计数值输出端,输出位宽由“LPM_WIDTH”决定。
eq[15..0]:输出端,计数器模值必须小于16。当计数值为c时,则输出端eq[c]为1(高电平)。例如:当计数值c=0时,则输出端eq[0]=l;当计数值c=1时,则输出端eq[1]=1;……。
cout:进位端。
2.2 参数及功能
lpm_counter元件参数中LPM_WIDTH参数是必选项.其他参数为可选项。各参数的功能说明如下:
LPM_WIDTH(计数位宽):该参数最大取值为32。它决定计数器置数端(data[])和输出端(q[])的位宽;决定LPM_MODULUS的最大取值(2 LPM_WIDTH)。若LPM_MODULUS参数取值大于2 LPM_WIDTH,则计数器不能正常工作。
LPM_DIRECTION(计数方向):有“UP”,“DOWN”和“UNUSED”3种取值。如果使用LPM_DIRECTION参数,则updown端不连接,其参数默认值为“UP”。
LPM_MODULUS(计数模数):该参数决定计数器的进制:如果该参数不设置,则其缺省值为二进制,且其最大计数值为2 LPM_WIDTH;如果aload(或sload、asel、sset)所置数值比LPM_MODULUS参数大,则计数值出错。
LPM_AVALUE(异步计数初值):如果aset=1,则该计数初值被加载。如果该指定值比LPM_MODULUS大,则计数器输出值出错。
LPM_SVALUE(同步计数初值):如果sset=1,则该计数初值被加载。如果该指定值比LPM_MODULUS大,则计数器输出值出错。
3 设计实例
某型带峰谷费率设置的数字电能表要安装一实时钟模块,实现日、时、分、秒等计时功能,实现不同时段用户所耗电能以不同费率计费。图l为该电能表计时模块原理框图。