如果明确分配std_logic_vector的0位而不是使用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;





没有回复内容