Forum: FPGA, VHDL & Co. Frage zu clock'event


von Alex H. (lightningboy)


Lesenswert?

Hallo nochmal ne kleine Frage

hier in dem Beispiel wird in der if abfrage einmal <clock>'event erwähnt
was hat das zu bedeuten und wo wird sowas noch benutzt.

--Beispiel
process (<clock>)
begin
   if <clock>='1' and <clock>'event then
      <count> <= <count> - 1;
   end if;
end process;

 danke schonmal für eure hilfe :)

von Stock H. (winkelmesser)


Lesenswert?

Bedeutet, dass der Zustand von clock sich geändert hat. Wenn der Clock 
sich geändert hat, und nun den Wert 1 hat, ist die Bedingung erfüllt.

Das ganze prüft, ob eine positive Taktflanke vorliegt.

von Sven J. (svenj)


Lesenswert?

Moin...

altbekannter Fehler, aber meistens tolerabel:
Auch jeder Wechsel aus einem anderen Zustand nach '1' wird hier gezählt.
"Korrekt" ist rising_edge(clk).

--
 SJ

von Simon H. (simi)


Lesenswert?

Und um die Antwort auf die mit Sicherheit folgende Frage vorwegzunehmen:

Ja, es gibt noch mehr Zustände als 0 und 1 in STD_LOGIC

Z.B. H. Das bedeutet, dass er schwach (durch einen Pull-Up) nach oben 
gezogen wird. Ein Wechsel von H nach 1 wird durch 'event also erkannt. 
Eine synthetisierte Logik aber wird den Unterschied nicht erkennen.

von Axel (Gast)


Lesenswert?

>Eine synthetisierte Logik aber wird den Unterschied nicht erkennen

Ja, was das FF angeht! Aber wie ist es mit der Initialisierung?

Die Simulation wird bei dem event/1 - Konstrukt reagieren - unabhängig 
von einer fehlenden Initialisierung. Damit wird sie die Flanke "sehen" 
und das Schaltwerk als "laufend" simulieren, während es dank der sinplen 
Synthese als FF einmal real laeuft und einmal still bleibt - je nach 
physikalsischem Startzustand. Der dieser z.T. von der Synthese 
festgelegt wird, hat man also einen Zufall.

von Axel (Gast)


Lesenswert?

... es fehlt noch die Schlussfolgerung: Man hat also einen Zufall, der 
von der Simulation FALSCH simuliert wird. Will man also effizient 
simulieren, dann nutzt man den obigen Konstrukt, will man aber 
realitätsnah simulieren, dann benutzt man besser immer rising edge!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.