【发布时间】:2023-01-14 04:15:52
【问题描述】:
我正在尝试实现一个计时器,该计时器会在经过一段时间后更改信号值以控制项目中的电机。我在我的组件的体系结构中使用两个单独的进程和一个共享变量来迭代一个循环。根据这个变量的值,我在输出控制信号上分配了不同的值。我将在下面发布代码:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity Control_Motor is
Port ( up : out STD_LOGIC;
down : out STD_LOGIC;
clk : in STD_LOGIC;
button : in STD_LOGIC);
end Control_Motor;
architecture Behavioral of Control_Motor is
shared variable i : natural := 0;
begin
process(clk)
begin
if rising_edge(clk) then
i := i+1;
end if;
end process;
process(button)
begin
if(button = '1') then
i:= 0;
while i < 19 loop
if(i <= 4) then up<='1';
elsif(i <= 9) then up<='0';
elsif(i <= 14) then down<='1';
elsif(i >= 19) then down<='0';
end if;
end loop;
end if;
end process;
end Behavioral;
程序合成时出现如下错误:
ERROR:Xst:1312 - Loop has iterated 64 times. Use "set -loop_iteration_limit XX" to iterate more.
我该如何解决这个错误?我错过了什么吗?
【问题讨论】:
标签: while-loop vhdl xilinx-ise synthesize