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 :)
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.
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
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.
>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.
... 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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.