用Verilog设计实现异步双向计数器

时间: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字,全部文档内容请下载后查看。喜欢就下载吧 ……

用Verilog设计实现异步双向计数器.doc 将本文的Word文档下载到电脑

    精彩图片

    热门精选

    大家正在看

    × 游客快捷下载通道(下载后可以自由复制和排版)

    限时特价:7 元/份 原价:20元

    支付方式:

    开通VIP包月会员 特价:29元/月

    注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
    微信:fanwen365 QQ:370150219