用Verilog设计实现异步双向计数器
时间:2025-04-30
时间:2025-04-30
用Verilog实现一步双向计数器的程序
第7卷%第10期
软件导刊
2008年10月SoftwareGuide
Vol.7No.10Oct.2008
用Verilog设计实现异步双向计数器
孙
波,吴
亮
(江苏自动化研究所计算机事业部,江苏连云港222006)
摘
要:介绍了一种利用Verilog设计实现异步双向计数的方法,给出了主要的可综合Verilog代码,通过仿真验证,可
以实现双向计数、异步置数、清零等功能,达到了设计要求。关键词:异步计数器;Verilog;FPGA中图分类号:TP311.52
文献标识码:A
文章编号:1672-7800(2008)10-0118-02
表1
54/74192和54/74193引脚说明
功能计数输出逆向计数时钟正向计数时钟
异步置数(低电平有效)
正向计数进位输出(低电平有效)逆向计数借位输出(低电平有效)异步清零置位输入数据地电源
1问题的提出
在一次接口模块的设计任务中,使用了某些接口适配芯片
引脚
QD,QC,QB,QADNUPLDNCONBONCLRD,C,B,AGNDVCC
表2
和FPGA。为了达到对这些接口适配芯片的读写操作进行计数的目的,需要在FPGA里设计一种双向计数器,这种计数器有两个计数时钟,能在正向计数时钟(如写信号)的有效沿计数增加,在逆向计数时钟(如读信号)的有效沿计数减少。另外,该计数器还应具有一般计数器常见的清零、置数和暂停等功能。由于这个计数器的计数增、计数减、置数和清零等操作没有一个统一的全局时钟来触发,这些操作的产生在时间上是随机的,因此只能采用异步工作方式。
2设计分析
在54/74系列器件中,也有类似功能的双向计数器,如54/
UPXX↑C
54/74192和54/74193真值表信号引脚
功能
DNXXH↑
CLRHLLL
LDNXLHH
清零置数计数值增1计数值减1
74192和54/74193。前者是4位二进制BCD码计数器,后者为4位
二进制全码计数器。除了计数输出编码上的区别,两种器件的电性能与管脚封装完全兼容。我们在FPGA里设计实现双向计数器时,可以将54/74192和54/74193作为对比参考。这两种器件的引脚说明如表1所示。
对于模块化的54/74192和54/74193,考虑到这两种器件的通用性以及管脚封装管脚等原因,计数输出位数不宜太多,两种器件都为4位计数输出。若要获得更大的计数范围,则必须采取多片级联的方式来实现。例如若要实现16位计数输出,就要用到4片54/74192或54/74193串行级联,如图1所示。
与模块化的54/74192和54/74193相比,在FPGA里利用
54/74192和54/74193都是双时钟可置数双向计数器,两者
各有两个独立的计数时钟UP和DN。在其他输入信号都为高的情况下,计数输出在UP的上升沿增加,在DN的上升沿减少。54/
74192和54/74193都支持置数(Load),在LDN的下降沿通过输
入引脚D,C,B,A将数据写入。置数过程与两个计数时钟UP和
DN都是异步的。为了方便器件的级联使用,54/74192和54/74193还带有借位信号BON和进位信号CON输出。把BON和CON的输出信号接入到下一级芯片相应的DN和UP引脚,就可
以方便地实现多片级联。54/74192和54/74193的真值表如表2所示。
Verilog设计计数器时,一般没有必要为了扩大计数范围而采用
级联的方法,因而也没有必要设计借位和进位信号。因为FPGA有相当丰富的逻辑资源与可配置管脚,可以很方便地得到很宽的计数输出。从实用性上来看,所设计的异步双向计数器必须具有双向计数、清零、置数的功能。尽管不必设计借位和进位信
作者简介:孙波(1979~),男,安徽铜陵人,硕士,江苏省自动化研究所助理工程师,研究方向为抗恶劣环境计算机;吴亮(1983~),男,江苏海安人,
,
用Verilog实现一步双向计数器的程序
第10期
数信号Load_n,然后才是计数使能信号en和时钟信号Up和Down。用
Verilog设计这个计数器
时,应用if-else语句正确体现真值表里信号的优先级。另外,为了防止溢出造成的计数不准确,在计数值达到最大值
图1
将4片74192级联得到16位计数输出
时,应暂停正向计数,在计数为零时,应暂停逆
向计数。
设计双向计数器的主要Verilog程序代码如下所示:
号,但为了在系统里灵活控制,计数器还应具有复位、暂停和空/满输出指示等功能。
(1)复位信号Reset_n。来自系统的全局复位信号,实现对计数器的复位/清零。尽管Clear和Reset_n的功能相同,都是将计数器清零,但是把这两个信号区别开来,有利于实现对计数器更灵活的控制,即在不复位系统的情况下也能对计数器清零。
(2)计数暂停信号en。当en为1时可正常双向计数,而当en为0时,暂停计数。
(3)计数值为空的信号Empty和计数值为满的信号Full,这两个输出信号,可以用来向系统提请中断。
通过对54/74192和54/74193的分析,结合设计中的实际情况与需要,所设计的计数器的信号端口及功能说明如表3所示。
表3
引脚
计数器信号端口功能说明功能复位清零
异步置数(低电平有效)置数输入计数使能正向计数时钟逆向计数时钟
正向计数满(计数值已达最大值)逆向计数空(计数值为0)表4
计数器真值表
功能
always@(ne …… 此处隐藏:2202字,全部文档内容请下载后查看。喜欢就下载吧 ……