我可以在数组和Verilog中的一点之间使用布尔值和运算吗

时间:2018-09-02 16:01:14

标签: verilog register-transfer-level

我有一个输入说,其中有4位,定义为: 输入[3:0] in;

和另一个输入说使能,它是1位,定义为: 输入使能; 导线定义为: 电线[3:0] out_int;

我想将它们的布尔AND运算为:

out_int [3:0] =输入[3:0] && enable;

我无法获得所需的输出, 我要建模的是 如果enable hv为1或0,则out_int(所有4位)应等于in(所有4位);当enable为X或Z时,out_int的所有4位应为4'bx。

1 个答案:

答案 0 :(得分:0)

您正在使用逻辑和运算符&&,其结果为1位。要检查z或x,您需要在Verilog中使用===运算符,或者在SystemVerilog中使用$isunkown()

您似乎想要的是条件运算符? :

//              condition                            true   false
out_int[3:0] = (enable ===1'bx || enable === 1'bz) ? 4'bx : in[3:0];