Любые альтернативы для цикла в Verilog

Мне нужно сделать CORDIC-симулятор в Verilog, однако код, который я использую, содержит цикл for, и использование "for" не разрешено для этого проекта. Кто-нибудь знает какие-либо альтернативные утверждения, которые могут быть использованы вместо этого для заявления?

genvar i;

generate
for (i=0; i < (STG-1); i=i+1)
begin: XYZ
  wire                   Z_sign;
  wire signed  [XY_SZ:0] X_shr, Y_shr; 

  assign X_shr = X[i] >>> i; // signed shift right
  assign Y_shr = Y[i] >>> i;

  //the sign of the current rotation angle
  assign Z_sign = Z[i][31]; // Z_sign = 1 if Z[i] < 0

  always @(posedge clock)
  begin
     // add/subtract shifted data
     X[i+1] <= Z_sign ? X[i] + Y_shr         : X[i] - Y_shr;
     Y[i+1] <= Z_sign ? Y[i] - X_shr         : Y[i] + X_shr;
     Z[i+1] <= Z_sign ? Z[i] + atan_table[i] : Z[i] - atan_table[i];
  end
end
endgenerate

Оригинальный код был получен здесь http://www.hdlexpress.com/Verilog/VT.html Любая помощь будет очень ценится.

0 ответов

Другие вопросы по тегам