【发布时间】:2021-09-12 20:53:50
【问题描述】:
在verilog中制作闩锁的正确方法是什么? 当我尝试在 vivado 上合成两种方式时,两种情况下都会生成闩锁。我想了解我们是使用阻塞语句还是非阻塞语句?
i) 总是@(enable,input) 开始 q
ii) 总是@(enable,input) 开始 q = 输入; 结束
【问题讨论】:
在verilog中制作闩锁的正确方法是什么? 当我尝试在 vivado 上合成两种方式时,两种情况下都会生成闩锁。我想了解我们是使用阻塞语句还是非阻塞语句?
i) 总是@(enable,input) 开始 q
ii) 总是@(enable,input) 开始 q = 输入; 结束
【问题讨论】:
使用阻塞分配。
对于综合,仅对边缘敏感的时序逻辑使用非阻塞分配。
【讨论】:
您提供的任何方法都不能用于制作闩锁。
常用的编程模式如下:
always @*
if (en)
q <= inp;
【讨论】: