首页 > 解决方案 > 我可以在verilog中的数组和位之间使用布尔值和运算吗

问题描述

我有一个输入,它是 4 位,定义为:输入 [3:0] in;

另一个输入说启用,它是 1 位,定义为:输入启用;并且一条线被定义为:wire [3:0] out_int;

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

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

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

标签: verilogregister-transfer-level

解决方案


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

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

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

推荐阅读