基于Verilog的经典数字电路设计—计数器

在数字系统中,使用得最多的时序电路差不多就是计数器了。计数器不仅能够用于对时钟脉冲计数,还可以用于分频、定时、产生节拍脉冲、产生脉冲序列以及进行数字运算等等。
其实,计数也是一种最简单最基本的运算,就像我们心里默念的计数一样。不过不同的是,计数器是有一定频率的计数,具有一定的时间间隔,而我们心里默念的计数的时间间隔不一样罢了(也就是不够准确的啦),而计数器就是实现这种运算的逻辑电路,主要是通过对时钟(上升)脉冲的个数进行计数的。
计数器在我们身边也很普遍,比如手机中自带的跑步的计时器、电脑定时关机等等;所以,熟悉掌握计数器,不仅对于学习 verilog 非常有用,而且,还能锻炼我们的逻辑能力和更深刻地理解数字电路的工作原理,从而对科技更加感兴趣!
一、计数器的 verilog 代码实现和 rtl 电路实现下面是计数器的 verilog 代码实现:
module counters( input clk, input up, // 可增可减(可逆)计数器 output reg [7:0] cout = 8'b0000_0000 // 8 位计数器 ); always @(posedge clk) if (up) cout <= cout + 1'b1; else cout <= cout - 1'b1;endmodule下面是计数器的 rtl 电路实现:
计数器的 rtl 电路图
时钟信号:clk(时钟信号,就是电路的“心脏”,不可或缺);
复位信号:rst_n(复位信号,也是一个合格的电路不应该缺少的一个输入信号,当复位信号为低电平时,输出全部置零,这就是所谓的低电平有效)当复位信号为高电平时,开始计数,每一个时钟信号的上升沿到来就计一次数,每计数满 256 个时钟周期为一个输出循环,输出置零,然后重新计数;当然,这里为了更好地读懂代码,并没有加入复位信号啊哈哈哈嗝。
计数值信号:cout(显示计数值,根据自己设计的需要,可以对位数进行设置,比如最大计数值为 6,那么位数就可以设置为 3 bits)
其实,这个既是计数器,又能当分频器,而且还能当计时器哟(再者还可以当闹钟功能)这三者其实都是息息相关的,但是博主并没有把分频器和定时器的功能加上去,其实只需要增加一两个信号即可,小伙伴们能否想到怎么添加,从而使得这个程序既有计数器的功能,也有分频器的功能和定时器的功能呢?

魅族Pro7什么时候上市?最新消息:魅族Pro7真机曝光,双屏创新设计到底是惊喜还是鸡肋,发布会见分晓!
R&amp;S携手Skylo Technologies增强非地面网络(NTN)测试服务
任意波形发生器DG70000系列的特点
什么是工业级网关,它的应用领域有哪些
适合直播的手机推荐:vivoX9S、小米6和华为P10
基于Verilog的经典数字电路设计—计数器
联发科发Sensio智能健康解决方案 60秒可检测6项生理数据并分析
吕晨翀:超声AI产品为何少见?
双通道MIL-STD-1553B总线通信及ARINC429总线通信板卡产品
HPE发布新固件修复40000小时SSD无法识别问题
谁是移动通信网络的领军者
VCO电压控制振荡器的原理、选型和应用
PADS中对层的无模指令操作
新博弈:数字基建时代面临四大安全挑战
OLED电视为什么如此受主流企业偏爱?
7月德国线上市场手机品牌销量排行榜冠亚军三星、华为守擂成功
移动存储器全面解析
利用DataSocket技术实现虚拟仪器在网络平台上的应用
230亿收购案不获批,UTC面临拆分!
LED灯板拼接屏线路板,看完不迷糊