教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 文库大全 > 初中教育 >

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

来源:网络收集 时间:2026-09-10
导读: 用Verilog实现一步双向计数器的程序 第7卷%第10期 软件导刊 2008年10月SoftwareGuide Vol.7No.10Oct.2008 用Verilog设计实现异步双向计数器 孙 波,吴 亮 (江苏自动化研究所计算机事业部,江苏连云港222006) 摘 要:介绍了一种利用Verilog设计实现异步双向

用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@(negedgeReset_norposedgeClearornegedgeLoad_norposedgeUporposedgeDown)if((!Reset_n)||Clear)q<=8'h00;elseif(!Load_n)q<=d;elseif(en)beginif(Up)beginif(!Full)q<=q+1'b1;elseq<=q;end

elseif(Down)beginif(!Empty)q<=q-1'b1;elseq<=q;endelseq<=q;endelseq<=q;assignFull=&q;assignEmpty=~(|q);

Reset_nClearLoad_nD[7:0]enUpDownFullEmpty

信号引脚

Reset_nLXHHHH

ClearXHLLLL

Load_nXXLHHH

enXXXLHH

UpXXXX↑H

DownXXXXH↑

清零清零置数暂停计数计数值增1计数值减1

4仿真结果

对设计的计数器采用ModelSim6.1f进行仿真。为了利用

3设计实现

本文所讨论的异步双向计数器的设计,以表3所列的真值

仿真工具ModelSim,必须针对以上的Verilog代码编写测试程序(TestBench)。编写的测试程序,除了要验证计数、暂停、清零和置数的功能是否实现外,还应检验计数器在特殊条件下所采取。,若仍然有正向

表为依据。由于信号都是异步的,设计时要考虑信号作用的优

。,和Clear

用Verilog实现一步双向计数器的程序

第7卷%第10期

软件导刊

2008年10月SoftwareGuide

Vol.7No.10Oct.2008

基于AT89S52单片机数字钟的实现

(湖北水利水电职业技术学院,湖北武汉430000)

要:介绍了一种以AT89S52单片机为核心,数码管、蜂鸣器为主要外围元件的数字钟的设计与实现。该仪表系统

具有显示直观、使用方便、性能可靠等优点,介绍了硬件和软件设计,并提供了完整的电路图,具有较好的实用性。关键词:AT89S52单片机;LED动态显示;数字钟中图分类号:TP2

文献标识码:A

文章编号:1672-7800(2008)10-0120-03

1明确系统设计要求

设计并制作出具有如下功能的电脑钟:(1)自动计时,由6 …… 此处隐藏:2854字,全部文档内容请下载后查看。喜欢就下载吧 ……

用Verilog设计实现异步双向计数器.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wenku/1564151.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)