私は2つのVerilogモジュールを作成しました。最初のものは9ビットの数字をとり、最初に出現した1の位置を返します。Verilogモジュールインスタンシエーションと空のbegin end
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の第2の発生を返しますコンパイル中のエラー。助けてください。
チェッカー 'findPositionOf_1'が見つかりません。インスタンス化 'f1'は、 可視チェッカーである必要があります。 開始/終了ブロックが空のボディで見つかりました。この はSystemVerilogでは使用できますが、Verilogでは使用できません。 迷惑セミコロンを探してください。
はなぜインスタンス化は常にブロックで起こることはできません役立つはずです。私はVerilogにはとても新しいです。 – panshul