0

我有一个接收输入值的模块。我的输入是符号幅度形式,所以我试图检查输入是负数还是正数,然后调用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
4

0 回答 0