Ich bin ein Neuling Benutzer von VHDL.VHDL Fehler in für generieren
Ich habe einen Fehler in diesem Code:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity AandB is
Port (a : in STD_LOGIC_vector(31 downto 0);
b : in STD_LOGIC_vector(31 downto 0);
salida : out STD_LOGIC_vector(31 downto 0)
);
end AandB;
architecture Behavioral of AandB is
begin
for i in 0 to 31 loop
salida(i) <= a(i) and b(i);
end loop;
end Behavioral;
der Fehler ist dies:
ERROR:HDLCompiler:806 - Line 43: Syntax error near "for".
ERROR:HDLCompiler:69 - Line 45: <i> is not declared.
ERROR:HDLCompiler:806 - Line 47: Syntax error near "generate".
ERROR:HDLCompiler:854 - Line 39: Unit <behavioral> ignored due to previous errors.
ich für den Code eingeben gesucht here`first 3 Fehler. Habe nicht bemerkt, was der Syntaxfehler für die "for" -Anweisung ist; Es wird angenommen, dass dies innerhalb der Schleife indirekt erklärt wird; Ich weiß nichts über den Fehler in "generate".
Einige Hilfe?
Für ... Schleifen Sei nicht außerhalb eines Prozesses. For ... Generate Statements können, müssen aber (a) mit einem Label beginnen und (b) das Wort Generate irgendwo haben. Das Verwenden einer For-Schleife außerhalb eines Prozesses hat den Compiler überzeugt, dass Sie eine (unterbrochene) For ... Generate-Anweisung verwenden, die sie verwirrend macht. –
Zusätzlich zu Jim, der Ihnen die Syntax einer generate-Anweisung zeigt, die zu einer Blockanweisung mit 32 Blöcken mit 32 Prozessen führt, könnten Sie auch eine simultane simple Zuweisung verwenden: 'salida <= a und b '; was zu einem Prozess führt. Sie könnten Ihre for-Schleife auch in eine Prozessanweisung einfügen und den gleichen Effekt erhalten. – user1155120
Ich bin mir nicht sicher, ob der TS weiß, was 'generate' ist. Könnte sein, dass wir auch erklären sollten, wie eine 'Prozess'-Anweisung funktioniert. – JHBonarius