我有VHDL綜合的這個問題。我在多篇文章中讀到,如果我只使用一個「等到」/進程,那麼「等待」語句是可綜合的,所以這就是我所做的。所以我試圖製作一個櫃檯,顯示我在哪個樓層(我的項目包含邏輯設計中的電梯),並且應該在訂購的樓層打開5秒鐘的門。問題在於等待聲明。我不知道該如何取代它才能在ISE中運行。等待語句可以合成
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
use ieee.std_logic_arith.all;
entity counter is
port(clk1: in std_logic;
enable2:in std_logic;
input_mux: in std_logic;
dir: in std_logic;
reset,s_g,s_u: in std_logic;
q_open: out std_logic;
q: out std_logic_vector(3 downto 0));
end counter;
architecture c1 of counter is
signal flag: std_logic:='0';
component test
port(clock: in std_logic;
a: in std_logic_vector(3 downto 0);
notify: out std_logic);
end component;
begin
delay: test port map(clk1,"0101",flag);
process
variable temp:std_logic_vector(3 downto 0):="0000";
variable q_open_var:std_logic:='0';
begin
if (enable2='1') then
if (s_g='1' and s_u='1') then
if (RESET='1') then temp:="0000";
else if (CLK1'EVENT and CLK1='1') then
if (DIR='1') then temp:=temp+1;
elsif(DIR='0') then temp:=temp-1;
end if;
end if;
end if;
end if;
end if;
if (input_mux='1') then q_open_var:='1';
q_open<=q_open_var;
wait until (flag'event and flag='1');
q_open_var:='0';
end if;
q<=temp;
q_open<=q_open_var;
wait on clk1, reset;
end process;
end c1;
XST.pdf,Ch。 14 XST VHDL語言支持,VHDL順序電路,[沒有靈敏度列表的VHDL順序過程](https://i.stack.imgur.com/Ugypl.jpg)。另請參見[VHDL多等待語句描述](https://i.stack.imgur.com/4eZ4i.jpg),注意支持可能因設備系列而異,Xilinx將通過工具過渡到Vivaldo。閱讀精細手冊,顯示錯誤消息,提供[最小,完整和可驗證示例](https://stackoverflow.com/help/mcve)。 – user1155120
不要相信任何支持合成的文章。您只能依靠設備製造商提供的文檔。閱讀@ user1155120提供的內容。 – Staszek