我不知道为什么每次编译我都会收到此错误。拜托我需要你的帮忙。感谢
module operaciones(
input [3:0] A,
input [3:0] B,
input [3:0] numop,
output reg [3:0] C
);
wire bas1,bas2;
always @ ( A[3] | A[2] | A[1] | A[0] | B[3] | B[2] | B[1] | B[0] | numop[3] | numop[2] | numop[1] | numop[0] )
case (numop)
4'b0000 : sumador_4bits sumador(A,B,bas1,C,bas2);
4'b0001 : restador_4bits restador(A,B,C);
4'b0010 : mult_4bits multiplicador(A,B,C);
4'b0011 : complemento_a_1 comp1(A,C);
4'b0100 : complemento_a_2 comp2(A,C);
4'b0101 : AND anda(A,B,C);
4'b0110 : OR ora(A,B,C);
4'b0111 : NOT nota(A,C);
4'b1000 : XOR xora(A,B,C);
endcase
endmodule
答案 0 :(得分:1)
您无法在always块内实例化模块。如果要在执行时确定要执行的操作,那么您需要在always块之外实例化所有这些实例,然后确定使用哪一个为case语句分配输出,如下所示:
module operaciones(
input [3:0] A,
input [3:0] B,
input [3:0] numop,
output reg [3:0] C
);
wire bas1,bas2;
wire [3:0] C0, C1, C2, C3, C4, C5, C6, C7, C8;
sumador_4bits sumador(A,B,bas1,C0,bas2);
restador_4bits restador(A,B,C1);
mult_4bits multiplicador(A,B,C2);
complemento_a_1 comp1(A,C3);
complemento_a_2 comp2(A,C4);
and1 anda(A,B,C5);
or1 ora(A,B,C6);
not1 nota(A,C7);
xor1 xora(A,B,C8);
always @ ( C0 or C1 or C2 or C3 or C4 or C5 or C6 or C7 or C8 or numop )
case (numop)
4'b0000 : C = C0;
4'b0001 : C = C1;
4'b0010 : C = C2;
4'b0011 : C = C3;
4'b0100 : C = C4;
4'b0101 : C = C5;
4'b0110 : C = C6;
4'b0111 : C = C7;
4'b1000 : C = C8;
default : C = C0;
endcase
endmodule
我做的其他改变:
or
代替|