Vhdl Verilog范围必须由常量表达式限定

Vhdl Verilog范围必须由常量表达式限定,vhdl,verilog,Vhdl,Verilog,我很难理解如何将这个VHDL代码翻译成Verilog v_Upper := r_Digit_Index*4 + 3; v_Lower := r_Digit_Index*4; v_BCD_Digit := unsigned(r_BCD(v_Upper downto v_Lower)); if v_BCD_Digit > 4 then v_BCD_Digit := v_BCD_Digit + 3; end if; r_BCD(v_Upper downto v_Lower

我很难理解如何将这个VHDL代码翻译成Verilog

v_Upper     := r_Digit_Index*4 + 3;
v_Lower     := r_Digit_Index*4;
v_BCD_Digit := unsigned(r_BCD(v_Upper downto v_Lower));

if v_BCD_Digit > 4 then
  v_BCD_Digit := v_BCD_Digit + 3;
end if;

r_BCD(v_Upper downto v_Lower) <= std_logic_vector(v_BCD_Digit);
v_上限:=r_位索引*4+3;
v_Lower:=r_数字索引*4;
v_BCD_位:=无符号(r_BCD(v_上下到v_下));
如果v_BCD_数字>4,则
v_BCD_位:=v_BCD_位+3;
如果结束;

r_BCD(v_Upper down到v_Lower)在verilog中,您不能有这样的变量选择

不允许使用ie
r\u BCD[r\u数字索引*4+3:r\u数字索引*4]

自2001年以来,您可以使用特殊的
+:
语法进行可变部分选择

例如:

r_BCD[r_Digit_Index*4 +: 4] 
   //[ index          +: width]  
有关更多信息,请参阅

r_BCD[r_Digit_Index*4 +: 4] 
   //[ index          +: width]