私は標準形式(64ビット数の場合はIEEE 754浮動小数点標準)で与える必要がある52ビット乗算器のコードを記述しました。だからその後、私は、いくつかのビットが64から超過しているかどうかをチェックしています。その数字を指数部に入れます。Verilogコードエラー:範囲は定数式で囲まなければなりません
module mul1(output reg [103:0] p,
output reg [51:0] c,
input [51:0] x,
input [51:0] y);
reg [103:0]a;
integer i;
always @(x , y)
begin
a=x;
p=0; // needs to zeroed
for(i=0;i<104;i=i+1)
begin
if(y[i])
p=p+a; // must be a blocking assignment
a=a<<1;
end
for(i=103;i>=0;i=i-1)
begin
if (p[i])
c=p[i:i-51];
break;
end
end
endmodule
それがエラーを与えている:範囲はラインの定数式で囲まれなければならない:C = P [I:I-51]。 どうすればこの問題を解決できますか?
[Verilog: "... is not a constant"](http://stackoverflow.com/questions/29815974/verilog-is-not-a-constant)の可能な複製 – Qiu