module lab2_4bit_adder(
input [3:0] A,
inout [3:0] B, //B=Z
input C0,
input [3:0] B1,
input Switch,
inout [3:0] B2,
output [3:0] S,
output C4
);
wire C1;
wire C2;
wire C3;
wire B;
wire B2;
assign B2 = ~B1 + 1'b1;
assign B = (Switch == 0)? B1:B2;
assign B = (Switch == 1)? B2:B1;
assign B = Switch? B2:B1;
lab2_1bit_adder fa0(A[0], B[0], C0, S[0], C1);
lab2_1bit_adder fa1(A[1], B[1], C1, S[1], C2);
lab2_1bit_adder fa2(A[2], B[2], C2, S[2], C3);
lab2_1bit_adder fa3(A[3], B[3], C3, S[3], C4);
endmodule
错误显示:
不能将非阵列索引b
请帮助我解决它非常感谢
您所做的工作将变量B
重新定义为不是数组的电线。它是一个简单的电线变量。
因此,当您尝试在此代码中访问B[0]
时,它会生成错误,并说B
不是数组,因此您无法索引。只需删除重新启动,代码就可以正常工作。
lab2_1bit_adder fa0(A[0], B[0], C0, S[0], C1);
lab2_1bit_adder fa1(A[1], B[1], C1, S[1], C2);
lab2_1bit_adder fa2(A[2], B[2], C2, S[2], C3);
lab2_1bit_adder fa3(A[3], B[3], C3, S[3], C4);
根据这个问题,可能在较旧版本的Verilog中允许以某种方式重新解释。但是没有人在答案中澄清它,但是您可以检查讨论板。
最终代码应该看起来像:
module lab2_4bit_adder(
input [3:0] A,
inout [3:0] B, //B=Z
input C0,
input [3:0] B1,
input Switch,
inout [3:0] B2,
output [3:0] S,
output C4
);
wire C1;
wire C2;
wire C3; //removed all redeclarations
assign B2 = ~B1 + 1'b1;
assign B = (Switch == 0)? B1:B2;
assign B = (Switch == 1)? B2:B1;
assign B = Switch? B2:B1;
lab2_1bit_adder fa0(A[0], B[0], C0, S[0], C1);
lab2_1bit_adder fa1(A[1], B[1], C1, S[1], C2);
lab2_1bit_adder fa2(A[2], B[2], C2, S[2], C3);
lab2_1bit_adder fa3(A[3], B[3], C3, S[3], C4);
endmodule