(3ビット)入力の2の補数表現を返すモジュールを構築しようとしています(最初のビットは符号です)。次のコードは概念的には正しいと思いますが、おそらくその構造について何かが欠けている可能性があります。コンパイルしようとすると、次のエラーが発生します。
(vlog-2110) Illegal reference to net "f_o".
(vlog-2110) Illegal reference to net "f_o".
(vlog-2110) Illegal reference to net "f_o".
そのエラーを検索すると、変数を同時に入力と出力として使用すると通常見られることが示されましたが、それは私の場合ではありません。エラーの場所を指摘していただけますか?
module ca2 (a_i,f_o);
input [2:0] a_i;
output [2:0] f_o;
always @(a_i[2:0] or f_o[2:0])
begin
if (a_i[2] == 1)
begin
f_o[2] = a_i[2];
f_o[1:0] = (~a_i[1:0] + 'b1);
end
else
begin
f_o = a_i;
end
end
endmodule