【 Verilog HDL 】清晰的时序逻辑描述方法之计数器的描述范例

举报
李锐博恩 发表于 2021/07/15 07:05:13 2021/07/15
【摘要】 所谓清晰,就是便于阅读与理解,如下HDL代码所描述的电路就是清晰的时序逻辑电路,对应计数器的功能:   always@( posedge clk )begin if( rst ) begin count <= 1'b0; end else begin count <= nextCount; end end assign nextCount = coun...

所谓清晰,就是便于阅读与理解,如下HDL代码所描述的电路就是清晰的时序逻辑电路,对应计数器的功能:
 


  
  1. always@( posedge clk )
  2. begin
  3. if( rst )
  4. begin
  5. count <= 1'b0;
  6. end
  7. else
  8. begin
  9. count <= nextCount;
  10. end
  11. end
  12. assign nextCount = count + 1'b1;

虽然这个代码简单,但就是这样的代码能说明问题,带给了我一些启发。上述代码之所以清晰,就是把描述组合逻辑和纯时序逻辑的代码分隔开来,尤其是当代码所描述的功能稍微复杂一些的时候,这样更方便阅读和理解。

所谓的纯时序逻辑,其实就是对寄存器的行为进行描述。其相对于组合逻辑最大的不同就是敏感时钟边沿事件,可以是敏感上升沿也可以是敏感下降沿,这个根据实际需求决定,但是绝不可能是同时敏感时钟的两种边沿事件,这是由其所对应的触发器的结构和工作原理决定的,因为触发器这种硬件结构只有一个时钟输入端。

因此,类似如下的代码是无法综合的:


  
  1. always@( posedge clk, negedge clk )
  2. begin
  3. a <= din;
  4. end

由于上述那个计数器的例子比较简单,所以组合逻辑和时序逻辑混写也无伤大雅。如下:


  
  1. always@( posedge clk )
  2. begin
  3. if( rst )
  4. begin
  5. count <= 1'b0;
  6. end
  7. else
  8. begin
  9. count <= count + 1'b1;
  10. end
  11. end

这个组合逻辑就藏身于赋值操作符号的右边。当组合逻辑比较简单时,这样做也无伤大雅,甚至能让代码更加的简洁。

 

文章来源: reborn.blog.csdn.net,作者:李锐博恩,版权归原作者所有,如需转载,请联系作者。

原文链接:reborn.blog.csdn.net/article/details/82793104

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。