BerndR
Stammgast
Beiträge: 29
|
Erstellt: 21.12.09, 10:12 Betreff: Re: elsif ungleich case ? |
|
|
Hallo Tobias,
das liegt daran, dass du dem Synthesetool nicht vorschreibst, wie sich IO(1) und IO(2) in den nicht beschriebenen Fällen verhalten sollen. Es sieht so aus, als ob bei if Latches generiert werden und beim case nicht (Das ist auch von Synthese-tool zu Synthese-tool unterschiedlich). Dadurch werden im ersten Fall die IO-Daten gehalten bis die Anweisung für das Rücksetzen kommt und im zweiten Fall nicht. Um das gewünschte Verhalten für beide Beschreibungsarten zu erhalten, solltest du in die else bzw. when others -Bedingung den Halteterm eintragen IO(1) <= IO(1); IO(2) <= IO(2); Wenn die IOs als output definiert sind, wird es hier eine Fehlermeldung geben. Deshalb ist es ratsam hierfür interne Signale zu erzeugen, die am Schluss den Outputs zugewiesen werden. Signal io1 : std_logic; Signal io2 : std_logic;
Im Prozess werden dann die internen Signale io1 und io2 benutzt. Ausserhalb des Prozesses kommt dann noch die Zuweisung: IO(1) <= io1; und IO(2) <= io2;
Damit sollte es dann funktionieren.
Gruß
Bernd
|
|