VHDL-Forum - Anfänger

Quartus II ignoriert "AFTER"

Quartus II ignoriert "AFTER"

Hallo Alle! Ich benutze Quartus II, um Altera D2 zu programmieren. Warum bignoriert Quartus Verspäten, wenn ich´AFTER´ benutze? Z.bÖ
z<= a AND b AFTER 500 NS;
Vieleicht muss man etwas bezeichnen, oder etwas entschalten?
Danke schön.

Re: Quartus II ignoriert "AFTER"

Solche Schlussfolgerung mache ich, wenn das Programm mit Vector Waveform file analiziere. Dort gibt es keine Verspätung.
Signale y1 und y2 sehen gleich ausÖ
y1<= a AND b;
y2<= a AND b AFTER 500 NS;

Re: Quartus II ignoriert "AFTER"

Ich schreibe alles Program, um leichter das Problem zu losen.

LIBRARY ieee ;
USE ieee.std_logic_1164.all ;
ENTITY light IS
PORT ( x1, x2, Clk : IN STD_LOGIC ;
f,f2,LCD_ON, LCD_BL : OUT STD_LOGIC ) ;
END light ;
ARCHITECTURE LogicFunction OF light IS
BEGIN
f <= (x1 AND NOT x2) OR (NOT x1 AND x2) AFTER 200 NS;
f2 <= (x1 AND NOT x2) OR (NOT x1 AND x2) AFTER 500 NS;
LCD_ON <= '1' AFTER 200 NS;
LCD_BL <= '1';
END LogicFunction ;

So sieht Waveform aus:





waveform.JPG (32 kByte, 686 x 170 Pixel)
Anzeige optimiert für beste Darstellung.
Großansicht - speichern

Re: Quartus II ignoriert "AFTER"

Hallo Ontos.

Gut das Du mal das Bild dazu hineingestellt hast.
Schau Dir mal die Periode von x1 und x2 an. Die ist 200ns und 100ns. Das sind Teiler von der Verzögerung um 200ns und 500ns. Du schiebst f2 so weit in der Zeit, dass sie sich mit der Funktion f deckt.
Versuche mal kleinere Verzögerungszeiten:
z.B.:

f <= (x1 AND NOT x2) OR (NOT x1 AND x2) AFTER 20 NS;
f2 <= (x1 AND NOT x2) OR (NOT x1 AND x2) AFTER 50 NS;


Gruß DaMicha.

Re: Quartus II ignoriert "AFTER"

Leider, solche Lösung gebt keine Ergebnise. Ich meine, dass das Problem anderswo versteckt ist... Vieleicht Quartus macht keine Verpäten...

Re: Quartus II ignoriert "AFTER"

Hallo Ontos.

Ich arbeite zwar nicht mit Quartus aber ich denke, das Verzögern von Signalen sollte funktionieren.

Probiere mal folgendes aus:

f <= x1 after 10 ns;
f2 <= x2 after 20 ns;


Das sollte eigentlich funktionieren.

Vielleicht noch als Info. Der after Befehl sollte nur in Testbenches benutzt werden, da er nicht synthetisierbar ist.
In der Regel wird er vom Synthetisierer ignoriert.
In der Behavorial Simulation solltest Du die Verzögerungen sehen und in den Post-Translate, Post-Map und Post-Route Simulationen nicht mehr. Dort siehst Du dann die Gatter- und Routing-Verzögerungen (liegen im unteren ns Bereich).

Gruß DaMicha.