www.mikrocontroller.net

Forum: FPGA, VHDL & Co. VHDL Impulsbreitenabhängige Anweisung LAST_EVENT


Autor: Dirk Lorenz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: FPGA-User (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Dirk Lorenz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: FPGA-User (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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 !

Autor: Dirk Lorenz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
In der Theorie müsste das ja auch funktionieren, aber selbst die
Simulation lässt den Impuls "durch".

Autor: Zennehoy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die meisten dieser Befehle sind sowieso nicht synthetisierbar...
Normalerweise eliminiert man Spikes durch einen Register.
Zen

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.