Verilog 关于“错误”;范围必须由常量表达式“限定”; 始终@(numint或numfrac) 开始 开始:位_DET 对于(i=22;i>0;i=i-1) 开始 if(numint[i]==1'b1) 开始 ieeesign

Verilog 关于“错误”;范围必须由常量表达式“限定”; 始终@(numint或numfrac) 开始 开始:位_DET 对于(i=22;i>0;i=i-1) 开始 if(numint[i]==1'b1) 开始 ieeesign,verilog,Verilog,错误是针对[i-1:0]和[22:i]。零件选择不能有变量范围。位选择可以使用变量。需要单独分配ieeemant的每个位 更改: 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 ;

错误是针对
[i-1:0]
[22:i]
。零件选择不能有变量范围。位选择可以使用变量。需要单独分配
ieeemant
的每个位

更改:

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

ieeemant[22:0]错误是针对
[i-1:0]
[22:i]
。零件选择不能有变量范围。位选择可以使用变量。需要单独分配
ieeemant
的每个位

更改:

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

这是错误的全文吗?在哪条线上?你的问题可能需要更多的信息。这是错误的全文吗?在哪条线上?你的问题需要更多的信息。
for(j=0; j<23; j+=1) begin
    ieeemant[j] <= (i+j < 23) ? numfrac[j+i] : numint[j-i];
end