이 Verilog 코드를 컴파일하고 싶지만 MultiP 모듈의 B 모듈 인스턴스에 오류가 있습니다. 오류 1 : 정의되지 않은 변수 B 오류 2 : "Adder1"근처 : 구문 오류, 예기치 않은 IDENTIFIER.오류가 발생 했습니까?
코드 :
module A(x,y,ci,co,sum);
input x,y,ci;
output co,sum;
reg co,sum;
always @(x | y | ci)
begin
sum = x^y^ci;
co = (x & y) | (ci & y) | (ci & x);
end
endmodule
module B(ppk,x,y,ci,co,ppko);
input x,y,ppk,ci;
output ppko,co;
reg ppko,co;
always @(x | y | ci | ppk)
begin
A((x & y),ppk,ci,co,ppko);
end
endmodule
module MultiP(x,y,ppko);
input [3:0] x;
input [3:0] y;
output [7:0] ppko;
wire [12:0] cW;
wire [12:0] ppW;
always @(x | y)
begin
B Adder1((x[0]&y[1]) , y[0], x[1], 0 , cW[0] , ppko[1]);
B Adder2((x[0]&y[2]) , y[1], x[1], cW[0] , cW[1] , ppW[0] );
B Adder3((x[0]&y[3]) , y[2], x[1], cW[1] , cW[2] , ppW[1] );
B Adder4(0 , y[3], x[1], cW[2] , cW[3] , ppW[2] );
B Adder5(ppW[1] , y[0] , x[2] , 0 , cW[4] , ppko[2]);
B Adder6(ppW[2] , y[1] , x[2] , cW[4] , cW[5] , ppW[3] );
B Adder7(ppW[3] , y[2] , x[2] , cW[5] , cW[6] , ppW[4] );
B Adder8(cW[3] , y[3] , x[2] , cW[6] , cW[7] , ppW[5] );
B Adder9(ppW[3] , y[0] , x[3] , 0 , cW[8] , ppko[3]);
B Adder10(ppW[4] , y[1] , x[3] , cW[8] , cW[9] , ppko[4]);
B Adder11(ppW[5] , y[2] , x[3] , cW[9] , cW[10] , ppko[5]);
B Adder12(cW[7] , y[3] , x[3] , cW[10] , ppko[7] , ppko[6]);
end
endmodule 내가 코드에 최소한의 변경을
'always' 블록 감도 목록의'| '기호는'또는' – Marty
이어야하며'always' 블록 안에'A'를 인스턴스화하려고합니다. 이것은 잘못된 것입니다 – Marty
@ Marty - 대답 상자에 답변을 입력하십시오 : – Tim