入力値を受け取るモジュールがあります。私の入力は符号の大きさの形式であるため、入力が負か正かを確認してから、コーディック モジュールを呼び出します。負の数の場合、cordic モジュールを呼び出す前に x_i と y_i の値を交換する必要があります。
verilog に関する私の限られた知識から、IF ステートメントは常にブロック内にある必要があることはわかっていますが、すべてを常に @ ブロック内に配置すると、エラーが発生します。そのとき、私はいくつかの調査を行い、IF ステートメント内でモジュールを呼び出すことができないことを発見しました。この状況で何ができますか?
PS 私の悪い説明で申し訳ありません。私は Verilog の初心者です。
module inp(
input wire clk,
input wire rst,
input signed [`XY_BITS:0] x_i,
input signed [`XY_BITS:0] y_i,
input signed [`THETA_BITS:0] theta_i,
output wire signed [`XY_BITS:0] x_o,
output wire signed [`XY_BITS:0] y_o,
output wire signed [`THETA_BITS:0] theta_o,
output wire signed [`THETA_BITS:0] op
);
//if(x_in[XY_BITS] == 0)
cordic z1 (
clk,
rst,
x_i[`XY_BITS-1:0], //Send all bits except sign bits
y_i[`XY_BITS-1:0], //Send all bits except sign bits
theta_i[`THETA_BITS:0],
x_o[`XY_BITS:0],
y_o[`XY_BITS:0],
theta_o[`THETA_BITS:0]);
//else if(x_in[XY_BITS] == 0)
cordic z1 (
clk,
rst,
y_i[`XY_BITS-1:0], //Send all bits except sign bits
x_i[`XY_BITS-1:0], //Send all bits except sign bits
theta_i[`THETA_BITS:0],
x_o[`XY_BITS:0],
y_o[`XY_BITS:0],
theta_o[`THETA_BITS:0]);
endmodule