如果明确分配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;
没有回复内容