verilog 中为什么不能再两个always中同时赋值同一参数

verilog 中为什么不能再两个always中同时赋值同一参数
2024-11-05 02:01:55
推荐回答(5个)
回答1:

因为那样是电路不可以实现的,一个always中要进行赋值必须是reg变量,一个reg变量对应在时序逻辑电路里是一个触发器的输出,你两个always模块中对同一个reg变量赋值是综合不出来的。。。我的理解是这样。所以写到一个模块里吧。如果还解决不了可以附代码出来,我帮你改改。本人菜鸟,多交流。

回答2:

这是可综合风格的要求。如果仅仅是用于仿真,两个always块里同时赋值同一个reg参数,仿真器可能不会报error。但是如果进一步要用于综合,在硬件实现上会产生冲突,综合器是肯定会报错。所以基于可综合风格的要求,一个reg变量只能在一个always块里被赋值。

回答3:

废话,硬件是并行处理的关系,两个硬件同时给一个参数赋值,必然会产生竞争关系,哪怕你的信号源是截然不同的。如果在某一时刻,同时收到两个信号,一个在还在Th,一个在Ts,你说硬件赋值哪一个?根据墨菲法则,绝对不能在两个always中同时赋值同一参数

回答4:

这个没有什么为什么,就是不可以。就好像人做事不能分身一样,你不可能在两个地方同时做两件事情。

回答5:

这是语法规定,
在两个always中同时赋值同一参数,综合时会报错