mikrocontroller.net

Forum: FPGA, VHDL & Co. Flankendetektor - geht das so?


Autor: Steffen Hausinger (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

ich arbeite mich gerade in FPGAs ein und merke nebenbei, dass ich in 
Digitaltechnik auch nicht mehr ganz fit bin. Folgende Aufgabe:

Ich möchte einen Flankendetektor bauen. Wie das in VHDL geht, habe ich 
in der Artikelsammlung gefunden. Ich möchte es gerne grafisch lösen. 
Kann ich das so wie im Anhang dargestellt machen? Oder werde ich später 
Timing Probleme bekommen? In der Simulation funktioniert's.

Beide FF reagieren auf die gleiche steigende Flanke. Sollte das rechte 
FF diese Flanke aber auch nur einen Moment später bekommen, so dass der 
Ausgang des linken FF schon den Eingang übernommen hat, funktioniert der 
Detektor nicht.

Wie macht man's also richtig?

Grüße
Steffen

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja genau so gehts.

Autor: Steffen Hausinger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für Deine Antwort, supachris. Was aber ist mit meinem Einwand?

Das Timing steht und fällt mit der Laufzeit der FF. Sollte sich das 
Taktsignal zu einem der FF um die Laufzeit des anderen verzögern, 
funktioniert die Schaltung schon nicht mehr. Wer garantiert mir, dass 
das nicht passiert? Ist das eine allgemeingültige Regel, von der man 
immer ausgehen kann?

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Steffen Hausinger schrieb:
> Beide FF reagieren auf die gleiche steigende Flanke. Sollte das rechte
> FF diese Flanke aber auch nur einen Moment später bekommen, so dass der
> Ausgang des linken FF schon den Eingang übernommen hat, funktioniert der
> Detektor nicht.
Keine Sorge. Prinzipiell hast du dieses Problem in jedem synchronen 
Design.

> Wer garantiert mir, dass das nicht passiert?
Dass genau diese Race-Condition nicht auftritt, dafür haben die 
Entwickler von CPLDs und FPGAs gesorgt. Dafür gibt es in einem FPGA z.B. 
speziell ausgelegte Taktnetze, im CPLD gibt es dafür spezielle 
Takteingänge.

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So ist es. Solange sich das innerhalb des CPLD oder FPGA mit dem 
gleichen Takt, der auf einem Clock-Netzwerk liegt, abspielt, kann man 
davon ausgehen, das alle FF gleichzeitig schalten. Du hast ja schon 
völlig richig das 1. FF zum einsychronisieren des asynchronen Eingangs 
eingebaut, mehr kannst du nicht tun. Nach dem 1. FF ist das Signal 
garantiert synchron zum internen Takt. Kann halt nur je nach Lage der 
Flanke auch einen Takt später als das asynchrone Ereignis kommen, wenn 
die Setup-Zeit verletzt wird. Damit musst du leben.

Autor: Steffen Hausinger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Na das ist doch mal ein Wort! Ich bin nämlich schon davon ausgegangen, 
ich muss mich darum kümmern.

Danke für Eure Aufklärung!
Steffen

Autor: Der Besucher (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

es stellt sich nur noch die Frage, was du mit den 3 gewonnenen Signalen 
anfängst, da theoretisch bedingt durch unterschiedlichen Gatter- und 
Netzlaufzeiten Spikes auf deinen 3 Ausgängen auftreten könnten. Man muß 
die Weiterverarbeitung der Signale im Auge behalten, wenn man 
kombinatorische Logik zwischen dem letzten Flipflop und einem Ausgang 
hat.

Der Besucher

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Besucher schrieb:
> Hallo,
>
> es stellt sich nur noch die Frage, was du mit den 3 gewonnenen Signalen
> anfängst, da theoretisch bedingt durch unterschiedlichen Gatter- und
> Netzlaufzeiten Spikes auf deinen 3 Ausgängen auftreten könnten. Man muß
> die Weiterverarbeitung der Signale im Auge behalten, wenn man
> kombinatorische Logik zwischen dem letzten Flipflop und einem Ausgang
> hat.

Naja, notfalls noch ein FF hinter jedes Signal dann sind die Glitches 
weg. Im FPGA wird das allerdings kaum nötig sein, die 3 Signale werden 
bestimmt alle in der gleichen LUT abgebildet.

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Im FPGA wird das allerdings kaum nötig sein, die 3 Signale werden
> bestimmt alle in der gleichen LUT abgebildet.
Öhmmm.... eine LUT mit 3 Ausgängen?
Halb so schlimm, jeder hat mal seinen lichten Moment ;-)

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Lothar Miller schrieb:
>> Im FPGA wird das allerdings kaum nötig sein, die 3 Signale werden
>> bestimmt alle in der gleichen LUT abgebildet.
> Öhmmm.... eine LUT mit 3 Ausgängen?
> Halb so schlimm, jeder hat mal seinen lichten Moment ;-)

Achje. Naja, wurde Zeit für Feierabend. Ich meinte eigentlich auch 
den/das Slice. Aber die meisten da haben auch nur 2 
LUTs/Slice....naja...

Autor: Christoph Kessler (db1uq) (christoph_kessler)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es gibt so einen Phasendetektor von Analog Devices als einzelnes IC, 
vielleicht ist das Datenblatt hilfreich:

http://www.analog.com/en/other-products/militaryae...

AD9901:  ULTRAHIGH SPEED PHASE/FREQUENCY DISCRIMINATOR

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Christoph Kessler (db1uq) schrieb:
> AD9901:  ULTRAHIGH SPEED PHASE/FREQUENCY DISCRIMINATOR
Die Korrelation zum ursprünglichen 
Beitrag "Flankendetektor - geht das so?" ist aber doch 
relativ gering  :-o

Autor: Christoph Kessler (db1uq) (christoph_kessler)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja da hatte ich an eine etwas kompliziertere Schaltung gedacht, wegen 
"Detektor" das falsche assoziiert.

Der Text zum Thema "dead zone" im Datenblatt bezieht sich schon auf die 
Frage, was passiert, wenn "diese Flanke aber nur einen Moment später" 
kommt.

Stichwort "Metastabilität" 
http://de.wikipedia.org/wiki/Metastabilit%C3%A4t#D...

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.