据我的总结如下:
begin-end语句的各句话是顺序执行的;
fork-join语句各句话是并行执行的;
阻塞赋值“=”计算表达式和赋值一起进行;
非阻塞赋值“<=”先计算表达式,再在语句块中统一赋值;
但是,唉,说实话还是搞得不明不白的!!比如begin-end语句里面的阻塞赋值 和 非阻塞赋值“大概”能搞懂了,但是什么时候用fork-join的阻塞 非阻塞呢?
有没有大虾能从综合出来的硬件的角度来讲下,这些个的电路结构到底是咋样的?~~~这样应该更容易理解点~~~
此帖出自
小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
阻塞与非阻塞赋值的区别,说来话长,自己可以翻书看一下,网上这方面的资料也很多。
总的来说,自己代码写多了后就对这些区别比较清楚了。
简单的说:
1.时序电路建模,用非阻塞语句,比如说最常见的D触发器;
2.用always做组合逻辑建模,用阻塞语句。
还有,若是要可综合的话,一般用begin-end,不用fork-join。
再补充一句,要观察这两种赋值语句的区别的话,还是通过时序图来看,从综合出的电路来看,很多时候他们就是一样的电路(不包含时钟边沿触发的电路)。
一周热门 更多>