我正在编写一个VHDL程序,该程序将8位std_logic_vector移位,称为" a"在循环的每个循环中向右移动一次,添加一个' 0'在向量的左侧,并通过存储在a的第一个索引中的任何内容递增结果的值。它应该最终向右移动直到a全为零(" 00000000")并且变量result存储a中的' 1的数量。此时它应该突破循环。
但是当我编译我的代码时,它给出了一个错误,"错误(10536):project4.vhd(75)处的VHDL循环语句错误:循环必须在10,000次迭代中终止" 即可。但是,它应该只在8次循环迭代或更少的时间内终止,所以显然有些错误。
以下是我的代码的循环部分:
bit_shift_loop: loop
if (a = "00000000") then
state_next <= S3;
exit bit_shift_loop;
else
result <= result + ("00" & a(0)); -- Incrementing result by '0' or '1'
done <= '0';
state_next <= S2;
a <= '0' & a(7 downto 1); -- Bit shift right.
end if;
end loop;
如果有人能看到我做错了什么,请告诉我。 谢谢!