官方论坛
官方淘宝
官方博客
微信公众号
点击联系吴工 点击联系周老师
您的当前位置:主页-old > 新闻中心 > FPGA技术教程 > 计数器 >

明德扬点拨视频课——FPGA之计数器的使用

发布时间:2022-02-10   作者:lishuangshun 浏览量:

计数器是FPGA最常用的功能器件,每个模块几乎都会用到,如在电子计算机的控制器中对指令地址进行计数,以便顺序取出下一条指令,在运算器中作乘法、除法运算时记下加法、减法次数,又如在数字仪器中对脉冲的计数等等。应用场合也是非常广泛,通过计数得到时间;计算多少数据;简单的状态机等。本次明德扬视频点拔课主要是讲述计数器使用的方法和规范,给出了自增和自减两个例子,这也是明德扬至简设计的规范设计,多年的实践证明,这种设计规范是可以用于任何场景的。

 

计数器的规范使用,可以极少地精简代码。至简设计的规范主要有以下几点:

1、初始值是多少

a、复位值

b、每轮计数的初始值

 

2. 1条件是什么


3. 结束条件

a、即结束本轮计数的条件

b、一般又是加1条件,不要特地为结束而多统计一个数

c、记得要变回初始值

 

vld=1进行统计,统计到8个后,重新再计数

 

null 


注意:这里为什么只记数到COUNT_1S-1(就是4999_9999)呢?

因为计数器是从0开始计数的,从0变到1就已经计数一次了,因此计500_0000个数只需要从0计到4999_9999就行了

注意:counter的位宽

 

计数器的使用规范有以下几个法则:

 

1、用于统计计数的,建议用自增计数器

 

2、用于不定时计数的(即每轮计数多少个不定),建议用自减计数器

 

3、计数器一般从0开始计数,不要从非0开始。这样有助于检查计数器是否正确,也便于他人理解。

 

4、选好结束数,不要多计一个数来做结束。例如需要计10个数,则从0计数到9即可,结束数是9而不是10。

 

5、位宽应合理。位宽要能保证可以容纳得下计数器可以达到的最大的数,例如,计到6最少需要3位的位宽,而计到10就需要4位位宽了。

 

6、计数时,特别注意0是否要统计在内。

 

下面以四个计数器案例说明至简设计规范:

 

null 

 

分析cnt1:

计数器复位后是7,也就是从7开始计数,7再变到0,这个很不符合我们的正常习惯,也不利于后面的检查和波形对比,应坚决避免此种情况出现。

 

null 

 

分析cnt2,cnt2要统计8个数据(即要计到7)

 

null 

 

 

null 

 

分析cnt2,cnt2要统计8个数据(即要计到7)

 

该实现方案中,计数由0~7已经实现了统计8个,但结束条件为8,多浪费了一个时钟。

 

 

null 

 

null 

分析cnt3

计数器计数满后维持在7不会自动跳变为0;

这也是不应该出现的。计数器在计数满后应自动能变为0,这样才能实现循环

计数。

 

null 

 

null 

 

计数器cnt4,这个是正确的计数器的时序图。大家可以作为标准,与上面几个比较一下,看看有有什么不同,慢慢理解一下。重点注意结束数和开始数这些。

 

null 

 

自减计数器的使用

 

cnt4要多用一个寄存器max_tmp进行保存

 

cnt3直接用max的值

 

null 

 

null 

 

用于不定时计数的(即每轮计数多少个不定),建议用自减计数器

 

明德扬本次课程主要讲述了计数器的使用的方法和规范,给出了自增和自减的两个例子,请一定要按这两个规范设计。多年实践证明,是可以用于任何场景下的。.本次课程后面配有十几个计数器练习如需视频以及练习题和答案,请联系客服人员李老师19928348709(微信同号)

 

上一篇:没有了
下一篇:没有了
   拓展阅读