Hallo, ich möchte eine Impulsbreitenabhängige Anweisung realisieren. Habe mir das so vorgestellt: IF signal_A'LAST_EVENT >= 10ns THEN signal_B <= '1'; Funktioniert allerdings nicht. Kann mir jemand weiterhelfen?? Danke im Vorraus.
soweit ich weiss gibt LAST_EVENT die Zeit an zwischen der letzten Änderung des Signals und der akt. Simulationszeit. Eine Impulsbreite lässt sich nur durch zusätzliche Bedingungen messen, die Abfrage wie lange die letzte Änderung des Signals zurückliegt ist da nicht sicher ausreichend. Vielleicht kannst Du mit 'EVENT, 'STABLE o.ä. Deine Bedingung besser prüfen - beschreib mal das Problem genauer.
Mit dieser Anweisung will ich mögliche Spikes vermeiden. So soll die Schaltung nur Impulse registrieren, die länger als z.B. 10ns andauern. Müsste eigentlich mit LAST_EVENT funktionieren: Wenn das letzte Ereignis mehr als 10ns zurücklegt, sollte das SignalB auf "1" gesetzt werden. Ist das Eingangssignal allerdings nur ein Spike (z.B. 1ns) wird das SignalB gar nicht erst gesetzt. Das Problem ist nun, dass bei dieser Anweisung das SignalB selbst bei Impulsbreiten von 100ns nicht gesetzt wird.
if sig='1' and sig'STABLE(10 ns) then ... würde z.B. prüfen, ob das Signal sig in den letzten 10 ns konstant auf '1' war. Hilft das ? Das geht natürlich alles nur in der Simulation, ich hoffe nicht, dass Du das synthetisieren wolltest !
In der Theorie müsste das ja auch funktionieren, aber selbst die Simulation lässt den Impuls "durch".
Die meisten dieser Befehle sind sowieso nicht synthetisierbar... Normalerweise eliminiert man Spikes durch einen Register. Zen
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.