【发布时间】:2019-03-05 05:18:33
【问题描述】:
当我尝试使用 STRUCTURAL 代码制作 5 位 2x1 MUX 时,我遇到了一个令人困惑的 Verilog 错误,但我似乎找不到任何关于我的代码为何会显示错误的信息。错误是:
error: Expression width 5 does not match width 1 of logic gate array port 1.
我知道它在谈论我的一个输入,但我不知道端口 1 中的哪个输入。但根据其余代码的布局方式,我很确定所有 5 位宽输入与 5bit 线和 5bit 输出匹配。任何帮助将不胜感激!
这里是我的 .v 和 tb.v 供参考
.v: {module mux_2x1_5bit(in1, in2, gate, out);
input [4:0] in1, in2;
input gate;
output [4:0] out;
wire [4:0] a, b;
and #4 and1(a, {5{gate}}, in1);
and #5 and2(b, {5{~gate}}, in2);
or #4 or1(out, a, b);
endmodule
tb.v:
module mux_2x1_5bitTEST();
wire [4:0] out;
reg [4:0] in1;
reg [4:0] in2;
reg gate;
mux_2x1_5bit DUT(in1, in2, gate, out);
initial
begin
in1 = 5'b00000;
in2 = 5'b00010;
gate = 0;
#20 in1 = 5'b00001;
#20 gate = 1;
#20 in2 = 5'b10101;
#20 in1 = 5'b01101;
#20 gate = 0;
end
always @(in1 or in2 or gate)
#1 $display("| gate = %b | in1 = %b | in2 = %b | out = %b |", gate, in1, in2, out);
endmodule
【问题讨论】: