두 개의 Verilog 모듈을 만들었습니다. 첫 번째는 9 비트 숫자를 취해 첫 번째로 1의 위치를 반환합니다.Verilog 모듈 인스턴스화 및 빈 시작 부분
module findPositionOf_1(
input [8:0] data,
output reg [3:0] position
);
always @(data)
begin
if(data==9'b0000_00000)
position=4'b0000;
else if(data[0]==1)
position=4'b0000;
else if(data[1]==1)
position=4'b0001;
else if(data[2]==1)
position=4'b0010;
else if(data[3]==1)
position=4'b0011;
else if(data[4]==1)
position=4'b0100;
else if(data[5]==1)
position=4'b0101;
else if(data[6]==1)
position=4'b0110;
else if(data[7]==1)
position=4'b0111;
else if(data[8]==1)
position=4'b1000;
end
endmodule
두 번째 모듈은 처음 제로로 그 비트를 변경하는 첫 번째 모듈을 호출하고 다시 다음 1.
module findPositionOf_2nd_1(
input [8:0] r1_data,
output [3:0] position1
);
reg [3:0] pos,pos2;
reg [8:0] temp;
integer i;
always @(r1_data)
begin
findPositionOf_1 f1(.data(r1_data), .position(pos));
i=pos;
temp=r1_data;
temp[i]=0;
findPositionOf_1 f2(temp,pos2);
if(pos2==4'b0000)
position1=0;
else
position1=pos2;
end
endmodule
내가 무엇입니까의 발생을 찾는 1의 두 번째 발생을 반환 컴파일 중 오류가 발생했습니다. 도와주세요.
검사기 'findPositionOf_1'을 (를) 찾을 수 없습니다. 인스턴스화 'f1'은 가시성 검사기 여야합니다. 빈 몸체로 시작/끝 블록을 찾았습니다. 이 은 SystemVerilog에서는 허용되지만 Verilog에서는 허용되지 않습니다. 길잃은 세미콜론을 찾으십시오.
왜 인스턴스화는 항상 블록에서 발생 될 수 없다 도움이 될 것입니다. 나는 Verilog에 매우 익숙하다. – panshul