2013-01-05 59 views
1
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 

请告诉我如何删除错误?关于错误“范围必须以常量表达式为界”

+1

的是错误的全文?它是什么?你的问题可以使用更多的信息。 – Tim

回答

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 
+0

你能解释为什么你在接受它4年后不接受答案吗? – Greg

相关问题