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

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

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


      always@( posedge clk )
      begin
      if( rst )
      begin
       count <= 1'b0;
      end
       else
      begin
       count <= nextCount;
      end
      end
      assign nextCount = count + 1'b1;
  
 

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

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

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


      always@( posedge clk, negedge clk )
      begin
       a <= din;
      end
  
 

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


      always@( posedge clk )
      begin
      if( rst )
      begin
      count <= 1'b0;
       end
       else
       begin
       count <= count + 1'b1;
      end
      end
  
 

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

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

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

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

作者其他文章

评论(0

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

    全部回复

    上滑加载中

    设置昵称

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

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

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