【 Verilog HDL 】清晰的时序逻辑描述方法之计数器的描述范例
【摘要】 所谓清晰,就是便于阅读与理解,如下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)