为什么这个VHDL循环不会终止?

时间:2017-10-01 17:22:56

标签: loops vhdl

我正在编写一个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;

如果有人能看到我做错了什么,请告诉我。 谢谢!

0 个答案:

没有答案