我有一个接收输入值的模块。我的输入是符号幅度形式,所以我试图检查输入是负数还是正数,然后调用cordic模块。如果它是一个负数,我需要在调用cordic模块之前交换x_i和y_i的值。
根据我对 verilog 的有限了解,我知道 IF 语句必须在 always 块内,但是当我将所有内容都放在 always @ 块内时,会出现错误。那时我做了一些研究,发现模块不能在 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