错误:“索引值(-1)超出VHDL对象名称的范围”。 (MAX +PLUS®IIVHDL)-Altera-Intel社区-FPGA CPLD-ChipDebug

错误:“索引值(-1)超出VHDL对象名称的范围”。 (MAX +PLUS®IIVHDL)

如果明确分配std_logic_vector0位而不是使用LOOP变量,则在RANGE FOR LOOP语句中可能会发生此错误。

解决方案是在LOOP语句之外进行位0的赋值,从而修改循环中的RANGE语句以排除位0

导致错误的代码示例如下所示:

 SIGNAL cfg_a:std_logic_vector(32 downto 0);
SIGNAL cfg_edge1:std_logic_vector(32 downto 0);

cfg_a_proc:PROCESS(cfgclk)
   开始
      IF(cfgclk'EVENT and cfgclk ='1')那么
         我在cfg_a'RANGE LOOP
            IF(i = 0)那么
               cfg_a(0)<= cfg_in;
            其他
               cfg_a(i)<= cfg_a(i-1);
            万一;
         结束循环;
      万一;
   END PROCESS cfg_a_proc; 

一个工作示例如下所示:

 SIGNAL cfg_a:std_logic_vector(32 downto 0);
SIGNAL cfg_edge1:std_logic_vector(32 downto 0);

cfg_a_proc:PROCESS(cfgclk)
   开始
      IF(cfgclk'EVENT and cfgclk ='1')那么
cfg_a(0)<= cfg_in;
         FOR i in 1 to(cfg_a'length  -  1)'RANGE LOOP
               cfg_a(i)<= cfg_a(i-1);
         结束循环;
      万一;
   END PROCESS cfg_a_proc; 
请登录后发表评论

    没有回复内容