我可以在数组和verilog中的位之间使用布尔和运算

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

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

另一个输入表示1比特的启用,定义为:输入启用;并且导线定义为:wire [3:0] out_int;

我想得到它们的布尔AND运算:

out_int [3:0] =在[3:0] &&启用;

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

verilog register-transfer-level
1个回答
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];
© www.soinside.com 2019 - 2024. All rights reserved.