FPGA|CPLD|ASICwilliam hill官网
直播中

hero2009nj

13年用户 34经验值
擅长:网络与通信
私信 关注
[问答]

初学者读夏宇闻老师书上一个问题,是关于阻塞赋值和非.....

阻塞赋值操作符用等号(即 = )表示。为什么称这种赋值为阻塞赋值呢?这是因为在赋值时先计算等号
右手方向(RHS)部分的值,这时赋值语句不允许任何别的 Verilog 语句的干扰,直到现行的赋值完成时
刻,即把 RHS 赋值给 LHS 的时刻,它才允许别的赋值语句的执行。
非阻塞赋值操作符用小于等于号 (即 <= )表示。为什么称这种赋值为非阻塞赋值?这是因为在赋值操作
时刻开始时计算非阻塞赋值符的 RHS 表达式,赋值操作时刻结束时更新 LHS。
这两句话读过来读过去还是同一句话么,计算RHS表达式,然后赋值么。谢谢。

回帖(4)

李国法

2013-10-31 18:02:40
一个立即赋值类似物理连线,一个经过时钟打拍,类似时钟同步后输出。。。
举报

fantasy1989

2013-10-31 21:06:37
你应该看一看例子:
always@(posedge clk)
begin
b=a;
c=b;
end

always@(posedge clk)
begin
b<=a;
c<=b;
end
这两句的不同。
前一个,所谓阻塞,是指b=a这个赋值完成之前,后面的c=b语句是不执行的,所以这个always块把a的现值传给b,b又传给了c,相当于把a赋给c;
后一个,这两个赋值没有前后,他把a的现值赋给b;b把自己当前值赋给c,所以没有把a的现值传给c;
你画一下威廉希尔官方网站 图,或者综合后看一下威廉希尔官方网站 ,可以看出其中的区别。
举报

唐文彬

2013-11-5 09:56:35
楼上例子解析得不错!~
举报

430981

2013-11-5 18:24:19
我个人的理解是与clk有关的就用<=,如always@(posedge clk),其他的情况就用=。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分