举例说明Verilog HDL 阻塞赋值与非阻塞赋值

本文通过实例详细解释了Verilog HDL中的阻塞赋值(=)和非阻塞赋值(<=)的区别。阻塞赋值常用于组合逻辑电路,而非阻塞赋值适用于时序逻辑电路。文章通过对比不同赋值顺序产生的RTL图,展示了赋值顺序对电路行为的影响,并讨论了如何避免潜在的问题。
摘要由CSDN通过智能技术生成

在给初学者讲解中发现了一些小问题,在此做一下深入的举例说明阻塞和非阻塞赋值

阻塞赋值符号:= 用于组合逻辑电路
非阻塞赋值符号:<= 用于 时序逻辑电路
阻塞是指在同一个always块中,其后面的赋值语句从概念上是在前一条赋值语句结束后开始赋值的。
非阻塞语句是首先计算语句块内部所有右边表达式(RHS)的值,然后完成对左边寄存器变量的赋值操作
例1:
如下2段代码对比:
1、
always @(posedge clk)
begin
b=a;
c=b;
end
RTL图:
在这里插入图片描述
分析:此段代码为阻塞赋值,则原则上代码执行顺序为:先执行 b=a;再执行
c=b;从赋值顺序上看,应该是a到b,再到c。但是,非阻塞赋值描述的是组合逻辑电路,那么赋值过程就与时钟CLK无关,但是描述了posedge clk,所以编译出来的电路是这么描述:在第一个时钟周期,a逻辑赋值给b,然后b逻辑赋值给c,但是这些赋值都在一个时钟周期内完成,那么,电路编译优化出来的就是在一个时钟周期内,a同时赋值给b和c。
2、
always @(posedge clk)
begin
b<=a;
c<=b;
end
RTL图:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值