mikrocontroller.net

Forum: FPGA, VHDL & Co. FPGA - Metastabilität messen


Autor: Tommi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
meine Cyclone3 FPGA basierte Schaltung verarbeitet externe (zur inneren 
Taktdomain völlig asynchron) Daten. Mittels einer doppelstufigen 
D-Flipflop Struktur werden diese synchronisiert. Was mich in diesem 
Zusammenhang interessieren würde: Kennt jemand ein Verfahren (schaltung) 
wie ich die Anzahl der metastabilen Ereignisse meinem FPGA ermitteln 
(messen) kann.
Merci, tommi

Autor: Jörg (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich würde aus der Taktdomäne der Zielschaltung eine phasenverschobenen
Takt generieren und damit Sample-FFs steuern. Die Sample-FFs greifen
dann die Signale vor, zwischen und hinter den Sync-FFs (deine D-FFs) ab.
Je Phasenverschiebung würde ich dann z.B. 1Million Samples nehmen
und dann schauen, wo und ob Unstimmigkeiten auftreten. Bei z.B. 50MHz
dauert dann ein Sample-Vorgang weit weniger als eine Sekunde, bei
100 Phasen also weniger als eine Minute.

Gruss,

Jörg

Autor: Donald Duck (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da gab es in den News-Foren mal einen ellenlangen Thread dazu und da hat 
einer von den Xilinx Leuten auch eine Fomel präsentiert. Ich glaub da 
gab es auch Referenz-Links für Xilinx Fpga's. Das Thema hat mich aber 
nie wirklich interessiert. Ich arbeite zwar auch mit asynchronen Clocks 
aber ob die nun im ersten, zweiten oder dritten Takt gesampelt werden, 
war mir so ziemlich egal. Die Wahrscheinlichkeiten lagen grob genommen 
zwischen 10^4 - 10^7.

Autor: Klaus Falser (kfalser)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Kennt jemand ein Verfahren (schaltung)
> wie ich die Anzahl der metastabilen Ereignisse meinem FPGA ermitteln
> (messen) kann.

Es geht doch nicht um die Anzahl der metastabilen Zustände, sondern es 
geht wohl darum ob ein metastabiler Zustand bis zum Eintreffen der 
nächsten Taktflanke abgeklungen ist, sodass das 2. FF nicht mehr 
metastabil wird.

Ich kann mich (dunkel) an eine Diskussion im comp.arch.fpga Forum 
erinnern, wo die Leute von Xilinx behauptet haben, dass diese 
Wahrscheinlichkeiten so klein sind, dass man sie fast gar nicht mehr 
messen kann.
Das selber messen kannst Du vergessen.

Autor: Klaus Falser (kfalser)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Mittels einer doppelstufigen D-Flipflop Struktur werden
> diese synchronisiert

Synchronisierts Du einen Bus ein?
Dann ist es wichtig dass NUR EIN Signal einsynchronisiert wird, nämlich 
das, welches anzeigt dass die Daten übernommen werden können.
Nicht die Bus-Daten selbst mittels eine FF Kette einsynchronisieren, 
sonst kann es vorkommen dass eine Leitung den Zustand von der 1. Flanke 
bekommt und eine andere Datenleitung den Zustand von der 2. Flanke.

Autor: Tommi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank für das Interesse an dem Thread.

Ich synchronisiere ein Pulse von einem externen Sensor, also single-bit. 
Mit doppelstufig meinte ich zwei hintereinander geschaltete FF.

@ Klaus
Es geht doch nicht um die Anzahl der metastabilen Zustände, sondern es
geht wohl darum ob ein metastabiler Zustand bis zum Eintreffen der
nächsten Taktflanke abgeklungen ist, sodass das 2. FF nicht mehr
metastabil wird.

Doch, mir geht es schon um die Anzahl der metastabilen Zustände. Z.B. 
die am Ausgang meines ersten FFs auf einen bestimmten 'Messzeitraum' 
bezogen.
Ich hatte mal etwas von Schaltungen gehört, die genau solche Events 
triggern und zählen. Mit so etwas könnte man dann ja wohl auch die MTBF 
ermitteln !?!
Gruss Tommi

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

Bewertung
0 lesenswert
nicht lesenswert
@  Klaus Falser (kfalser)
> Synchronisierts Du einen Bus ein?
> Dann ist es wichtig dass NUR EIN Signal einsynchronisiert wird, nämlich
> das, welches anzeigt dass die Daten übernommen werden können.
Dann können aber u.U. deine Daten, die du übernehmen willst, schon 
wieder entschwunden sein. Immerhin hast du mit dem einsynchronisierten 
Übernahmesignal bezogen auf den Bus 2 Takte Latency.

Sollte das also die steigende Flanke des Write-Signals sein, sind die 
Originaldaten auf dem Bus längst weg  :-(

Autor: Klaus Falser (kfalser)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Tommi
Es gibt eine Application notes von Xilinx APP091 und APP077, wo diese 
Dinge erklärt und besprochen werden.
Aber die Wahrscheinlichkeiten selber messen ?? Dazu sind sie meiner 
Meinung nach zu klein.

@Lothar
Deshalb muß das Einsynchronisieren eines Busses auch gut überlegt 
werden.
Falsche Daten einzulesen bringt es doch auch nicht, oder ?
Man kann aber die Daten mit dem Write-Signal latchen, und von dort mit 
dem synchronisierten Signal einlesen

Autor: Ingenieur (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Falsche Daten einzulesen bringt es doch auch nicht, oder ?
Exakt, wobei man oft pauschal sampeln muss, um hinterher zu entscheiden, 
ob das, was man da hat, etwas Plausibles ist, oder nicht. Ein latchen 
und das WR_E oder ALE beobachten, ist da noch das einfachste, weil es 
effektiv ein synchrones System ist. Schwerer wird es, wenn man kein 
Signal hat, das angibt, wenn die Adressen/Daten passen.

Aber nochmal zur Frage:

Ich glaube, daß hier wieder mal Metastabilität mit Instabilität 
verwechselt wird. Letzteres ist ja das eigentliche, da häufige Problem 
der Sychronisierung. Metastabilität bedeutet, daß der Ausgang eines FFs 
nicht nur eine unbekannten und nicht vorhersehbaren Zustand einnimmt, da 
es auf der Taktflanke gesampelt hat, sondern daß es so ungünstige 
getroffen hat, daß es erst einmal nur halb schaltet und sich länger, als 
gfs zu tolerieren ist, in einem Zwischenzustand aufhält. Erst, wenn es 
dann vollständig gekippt ist, "entscheidet" sich der nachfolgende 
Schaltungsteil, was dann wieder dazu führt, daß auch das nächste FF u.U. 
wieder wechselnde Flanken sieht.

Da eine Einsynchronisation über direkt kaskadierte FFs geschieht, müsste 
ein solcher metastailer Zustand aber schon extrem lange anhalten, wenn 
er zu einem Problem werden soll. Dies ist extrem unwahrscheinlich, da 
die heutigen Chiptechnologien sehr hohe Verstärkungen in den 
mitkoppelnden Zweigen gestatteten, die zu extrem geringen Metazeiten 
füheren.

>wo die Leute von Xilinx behauptet haben, dass diese
>Wahrscheinlichkeiten so klein sind, dass man sie fast gar nicht mehr
>messen kann.

Genau. Da geht es um einige 10ps mehr oder weniger. Das kann aber aber 
sehr
gut simulieren und auch berechen.

Im Übrigen triff diese Werbeaussage, die Xilinx dazu auf der HP macht, 
auch auf die anderen Herstelelr zu :-)

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.