时序逻辑中的阻塞和非阻塞

描述

Verilog HDL的赋值语句分为阻塞赋值和非阻塞赋值两种。阻塞赋值是指在当前赋值完成前阻塞其他类型的赋值任务,阻塞赋值由=来完成;非阻塞赋值在赋值的同时,其他非阻塞赋值可以同时被执行,非阻塞赋值由《=来完成。

(1)组合逻辑中的阻塞和非阻塞

eg.

always@(a or b or c or d)

begin

t1 = a & b;

t2 = c & d;

out = t1 | t2;

end

当abcd均由0变为1时,采用阻塞赋值语句时:t1=1,t2=1,out=1;

采用非阻塞赋值语句时:t1=1,t2=1,out=0。非阻塞赋值每一条语句执行不会阻止其他非阻塞语句的同时执行,故此时的t1和t2还未更新,所以out的值不变。

(2)时序逻辑中的阻塞和非阻塞

eg.实现D触发器

always@(posedge clk)

begin

q1 《= d;

q2 《= q1;

end

采用非阻塞赋值时,q1=d,q2=q1;采用阻塞赋值时q1=q2=d,不符合D触发器的要求。

综述:对于组合逻辑(always模块敏感列表为电平触发),采用阻塞赋值(=);对于非阻塞逻辑(always模块敏感列表为边沿触发),采用非阻塞赋值(《=)。

原文标题:阻塞赋值与非阻塞赋值

文章出处:【微信公众号:FPGA之家】欢迎添加关注!文章转载请注明出处。

  审核编辑:彭菁
 

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分