Ich habe dieses Problem mit der VHDL-Synthese. Ich habe in mehreren Artikeln gelesen, dass die "wait" -Anweisung synthetisierbar ist, wenn ich nur einen "wait to" -Prozess verwende, also habe ich das gemacht. Also habe ich versucht, einen Zähler zu machen, der anzeigt, in welchem Stockwerk ich bin (mein Projekt besteht aus einem Aufzug in Logic Design), und er sollte die Türen für 5 Sekunden auf Etagen öffnen, die bestellt wurden. Das Problem ist mit der Warteanweisung. Ich weiß nicht, was ich ersetzen soll, damit es auch in ISE funktioniert.Warteanweisung synthetisierbar sein
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-Sprachunterstützung, VHDL-Sequenzialkreise, [VHDL-Sequenzieller Prozess ohne eine Empfindlichkeitsliste] (https://i.stack.imgur.com/Ugyppl.jpg). Siehe auch [VHDL Multiple Wait Statements Beschreibungen] (https://i.stack.imgur.com/4eZ4i.jpg). Die Unterstützung kann sich je nach Gerätefamilie unterscheiden, Xilinx geht durch Werkzeugübergänge, die zu Vivaldo führen. Lesen Sie das Fine-Handbuch, zeigen Sie Ihre Fehlermeldungen an und geben Sie ein [minimales, vollständiges und überprüfbares Beispiel] (https://stackoverflow.com/help/mcve) an. – user1155120
Vertrauen Sie keinem Artikel in Bezug darauf, was für die Synthese unterstützt wird. Sie können sich nur auf Dokumente des Herstellers Ihres Geräts verlassen. Lies was @ user1155120 zur Verfügung gestellt hat. – Staszek