计数器的原理你懂吗?用Verilog语言更加容易理解

小伙伴们好,小编今天要讲的是基于Verilog语言的计数器电路设计。

首先,介绍一下计数器的基本概念:计数其实是一种最简单最基本的运算,就像我们扳手指计数一样,不过不同的是,计数器是有一定频率的计数,具有一样的时间间隔,而我们扳手指计数的时间间隔不一样罢了。而计数器就是实现这种运算的逻辑电路,主要是通过对时钟(上升)脉冲的个数进行计数的。计数器在我们身边也很普遍,比如手机中自带的跑步的计数,体育比赛中测试时间的计时器等等,所以,熟悉掌握计数器,不仅对于学习Verilog非常有用,而且,还能锻炼我们的逻辑能力和更深刻地理解数字电路的工作原理,从而对科技更加感兴趣!

计数器的原理你懂吗?用Verilog语言更加容易理解

下面是根据计数器的原理,从而编写出来的代码Code:

计数器的原理你懂吗?用Verilog语言更加容易理解

时钟信号:clk(时钟信号,就是电路的“心脏”,不可或缺的)

复位信号:rst(复位信号,也是一个合格的电路不应该缺少的一个输入信号。这里,当复位信号为低电平时,输出全部置零)当复位信号为低电平时,开始计数,每一个时钟信号的上升沿到来就计一次数,每计数满256个时钟周期为一个输出循环,输出置零,然后重新计数。

计数值信号:out(显示计数值,根据自己设计的需要,可以对位数进行设置,比如最大计数值为4,那么位数就可以设置为[2:0])

然后下面是激励程序TestBench:

计数器的原理你懂吗?用Verilog语言更加容易理解

仿真结果如图所示,可以看到,在复位信号无效的时候,当每一个时钟上升沿到来之后,就会自动计一次数,这样,就起到了对时钟进行计数的功能。你想要在多少个时钟周期之后实现什么操作,就可以自动设置计数值,代码中的“256”就是所谓的计数最大值,当计数到“256”的时候,下一个时钟到来的时候,自动返回“0”值。计数器的功能的实现一目了然!

计数器的原理你懂吗?用Verilog语言更加容易理解

计数器的原理你懂吗?用Verilog语言更加容易理解

其实,这个既是计数器,又能当分频器,而且还能当计时器哟(再者还可以当闹钟功能)这三者其实都是息息相关的,但是小编并没有把分频器和定时器的功能加上去。其实只需要增加一两个信号即可,小伙伴们能否想到怎么添加,从而使得这个程序既有计数器的功能,也有分频器的功能和定时器的功能呢?

大家可以试试,如果有问题的话,欢迎留言讨论,小编会一一回复~


分享到:


相關文章: