Verilog 分配语句如何与条件运算符一起使用?

问题描述 投票:0回答:1

我是 Verilog 的新手。在做实验作业时(是的,我已经阅读了这里的家庭作业政策),我遇到了一个条件语句(三元运算符)。

assign w1 = load ? in : out;

我知道每当右侧发生任何变化时都会分配更新。在这种情况下,每当

load
in
out
发生变化时,是否会分配更新 w1?或者当 load 改变时分配更新
only

实验作业是为了实现寄存器。这个问题与寄存器实现没有直接关系,因此我可以放心地在这里要求澄清。我在 assign 上找到的所有

文档
都表明,只要右侧的任何操作数发生变化,它就会更新。这如何应用于三元运算符?

从逻辑上讲,该语句相当于两个“或”“与”门,正确的是((load and in)or(~load and out))?

谢谢。

我希望分配仅在

load
发生变化时才会更新。我使用该语句的情况有点令人困惑,无法隔离所使用的行为,所以我很好奇向了解更多的人学习。

我也有兴趣了解逻辑等价物。

verilog
1个回答
0
投票

了解右侧有 评估,左侧有更新

只要右侧表达式中的任何信号有更新,就会安排评估。对于任何带有任何运算符的表达式都是如此。如果 RHS 上的评估导致 LHS 上的值发生变化,则会安排对 LHS 的更新。

在您的示例中,如果

load
为 true 并且
in
为 0,则
w1
将被驱动为 0。当
in
更新为 1,并且没有其他任何更改时,您会希望
w1
更改为1也。

有关三元运算符背后的逻辑,请参阅这个答案

© www.soinside.com 2019 - 2024. All rights reserved.