打开APP
未登录
开通VIP,畅享免费电子书等14项超值服
开通VIP
首页
好书
留言交流
下载APP
联系客服
verilog阻塞与非阻塞的综合
小樱业余书吧
>《技术类》
2013.07.15
关注
关于阻塞和非阻塞语句的5大原则:
原则1: 时序电路建模时,用非阻塞赋值。
原则2: 用always块写组合逻辑时,采用阻塞赋值。
原则3: 在同一个always块中不要同时使用非阻塞赋值和阻塞赋值。
原则4: 锁存器电路建模时,用非阻塞赋值。
原则5: 在同一个always块中同时建立时序和组合逻辑电路时,用非阻塞赋值。
最好按照这些原则去做,以免综合出的电路不合要求。
例如:
always@(posedge clk)
begin
a=a+1;
b=a-c;
end
always@(posedge clk)
begin
c=a;
end
endmodule
b的结果为2。因为b取a赋值后的值,但取c赋值之前的值。
打开Tool->Netlist Viewer->RTL Viever查看综合出的电路如图:
实际上a、b、c触发器的赋值仍然是同时进行的,只不过b会与a同时赋a+1的值。
如改为非阻塞语句:
always@(posedge clk)
begin
a<=a+1;
b<=a-c;
end
always@(posedge clk)
begin
c<=a;
end
endmodule
结果b=1,则综合出电路如下:
区别仅在于b赋a而上面是b赋a+1。
如果是组合逻辑中的阻塞语句:
always@(posedge clk)
begin
a<=a+1;
end
always@(a)
begin
b=a+3;
c=b+7;
end
则综合结束如下:
b、c全由组合逻辑电路实现。
若使用非阻塞语句:
always@(posedge clk)
begin
a<=a+1;
end
always@(a)
begin
b<=a+3;
c<=b+7;
end
则综合出的电路和上面一样。因此似乎在组合逻辑中使用非阻塞语句没有意义。因此一般的在组合逻辑中就直接使用阻塞语句。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报
。
打开APP,阅读全文并永久保存
查看更多类似文章
猜你喜欢
类似文章
【热】
打开小程序,算一算2024你的财运
Verilog 阻塞/非阻塞用法 基础
Verilog 编写规范
Verilog实现FPGA常用的电路
一天一个设计实例-门控时钟和使能时钟
systemverilog新增的always_comb,always_ff,和always_latch语句
Verilog中阻塞和非阻塞赋值原则
更多类似文章 >>
生活服务
热点新闻
留言交流
回顶部
联系我们
分享
收藏
点击这里,查看已保存的文章
导长图
关注
一键复制
下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!
联系客服
微信登录中...
请勿关闭此页面
先别划走!
送你5元优惠券,购买VIP限时立减!
5
元
优惠券
优惠券还有
10:00
过期
马上使用
×