Gast
#297683
Hallo Leute! Ich verwende die Xilinx-Umgebung und arbeite das Buch VHDL-Synthese durch. Dort gibt es ein Beispiel für unvollständige Empfindlichkeitslisten: entity empf is port(a,b,c:in bit; y1, y2: out bit); end empf; architecture Behavioral of empf is begin pfehler: process(a,b) begin y1<=(a and b) or c; end process pfehler; pkorrekt: process(a,b,c) begin y2<=(a and b) or c; end process pkorrekt; end Behavioral; Im Buch steht folgendes darüber beschrieben: ---Da 'c' jedoch in der Empfindlichkeitsliste für das Ausgangssignal 'y1' vergesen wurde, wird in der Simulation ein Speicherverhalten vorgetäuscht.--- Im Simulator: Also a,b,c sind auf '1'. Nach 100ns fällt a auf 0. Nach weiteren 100ns fällt c auf 0. Im Simulator fällt y2 auf 0, aber y1 bleibt auf 1. Dann steht noch: ---Das Synthesewerkzeug hingegen erkennt diesen Fehler und fügt das Signal 'c' automatisch der Empfindlichkeitsliste hinzu.--- Warum reagiert der Simulator anders als die Syntheselogic auf der Zielhardware? Warum ist von Fehler die Rede? Wenn ich möchte, dass der Prozess nur bei einer Änderung von a oder b aktiviert wird und nicht bei c, warum muss c ebenfalls hinzugefügt werden? Dies widerspricht folgender Aussage des Buches: ---Prozesse mit Empfindlichkeitsliste werden immer dann aktiviert, wenn eins der in der Empfindlichkeitsliste aufgeführten Sinale ein Ereignis, also die Änderung des Signalwertes aufweist. Derartige Prozesse werden immer bis zur end process-Anweisung ausgeführt.--- Wenn ich nur auf bestimmte Signale reagieren möchte, würde ich nach meiner Logik nur jene Signale in die Empfindlichkeitsliste aufnehemen, wodurch der ensprechende Prozess auch wirklich aktiviert werden sollte. Wozu benötige ich dann überhaupt eine Empfindlichkeitsliste, wenn ich sowieso alle Signale reinschreiben muss? Danke für eure Antworten. Tschüss Martin