always @(numint or numfrac)
begin
begin : BIT_DET
for (i=22;i>0;i=i-1)
begin
if (numint[i]==1'b1)
begin
ieeesign <= numsign ;
ieeeexp [7:0] <= 127+i;
ieeemant[22:0] <= { numint[i-1:0] , numfrac[22:i] } ;
ieeeop [31:0] <= { ieeesign, ieeeexp , ieeemant[22:0] } ;
disable BIT_DET;
end
end
end
end
endmodule
请告诉我如何删除错误?
答案 0 :(得分:4)
该错误适用于[i-1:0]
和[22:i]
。部分选择不能具有可变范围。位选择可以使用变量。 ieeemant
的每个位都需要单独分配。
变化:
ieeemant[22:0] <= { numint[i-1:0] , numfrac[22:i] } ;
为:
for(j=0; j<23; j+=1) begin
ieeemant[j] <= (i+j < 23) ? numfrac[j+i] : numint[j-i];
end