Guten Tag,
unser Prof hat uns folgende Zeichnung gegeben und wir sollen überlegen,
wie die zusätzliche Beschaltung des 2. D-Flipflops bei metastabilen
Zuständen Abhilfe schaffen kann.
Fungiert das zweite D-Flip-Flop hier als eine Art "Synchronisator"? Wenn
ich die Setup und Holdzeiten verletze und dann ein zweites FlipFlop
davorschalte, wieso schafft dieses D-Flip-Flop dann Abhilfe bezüglich
der Metastabilität?
Hallo Achim,
den Artikel habe ich erst gerade entdeckt und ich habe mir ihn
vorgenommen. Das Einsychronisieren ist auch dort enthalten, ich verstehe
aber nicht, wieso die zusätzliche Beschaltung eines D-FlipFlops das
Signal dann wieder einsychronisiert. Ich wäre danbkar, wenn du mir das
einmal erläutern könntest.
Eine Metastabilität klingt nach einer gewissen Zeit wieder ab. Das
heißt, der Ausgang des ersten FF "entscheidet" sich nach einer gewissen
Zeit, ob er H oder L sein soll und nimmt diesen Zustand dann auch
statisch an.
Geschieht dieses "Abklingen" schneller, als eine Taktperiode, so ist
beim zweiten Takt der Ausgang des ersten FF und somit der Eingang des
zweiten FF stabil.
Dieser stabile Wert wird dann mit der zweiten Flanke in das zweite FF
übernommen. Ganz ohne Setup- oder Holdzeitverletzungen. Und damit wird
der Ausgang des zweiten FF nicht mehr metastabil.
Aber das heißt doch, dass der Ausgang des zweiten FlipFlops dann nicht
unbedingt den Zustand anzeigen wird, der eigentlich gewünscht ist, oder?
Wenn man nach dem 1. FlipFlop beispielsweise High haben wollte, kann es
doch sein, dass nach dem 2. FlipFlop dann Low da ist, oder nicht?
Elektronikbeginner schrieb:> Aber das heißt doch, dass der Ausgang des zweiten FlipFlops dann nicht> unbedingt den Zustand anzeigen wird, der eigentlich gewünscht ist, oder?
Soweit ich weiß, ja. Aber es ist immer noch besser, einen stabile
falschen Zustand zu haben, als einen instabilen.
Elektronikbeginner schrieb:> ber das heißt doch, dass der Ausgang des zweiten FlipFlops dann nicht> unbedingt den Zustand anzeigen wird, der eigentlich gewünscht ist, oder?> Wenn man nach dem 1. FlipFlop beispielsweise High haben wollte, kann es> doch sein, dass nach dem 2. FlipFlop dann Low da ist, oder nicht?
Exakt.. das ist so.
Wenn die Information am Eingang nicht "rechtzeitig" da war, dann kann
die Elektronik dahinter nicht mehr erraten, was denn eigentlich
gewünscht war.
Aber das Problem ist ja eher, dass du nicht nur ein FF, sonderen mehrere
mit dieser Eingangsinformation fütterst. Z.B. nen Zähler.
Und wenn jetzt plötzlich ein Teil der FF eine 1 sehen und die anderen
eine 0 und ein paar davon wild umherzappeln, dann führt das zu Zuständen
im Zähler, die vielleicht gar nicht so gewünscht sind.
Darum synchronisiert man und erst den Ausgang der Synchronisationsstufe
gibt man dann auf die restlichen FFs der Schaltung. So kann man sich
sicher sein, dass wenigstens alle FF immer die identische Information
bekommen.
Schlumpf schrieb:> Aber das Problem ist ja eher, dass du nicht nur ein FF, sonderen mehrere> mit dieser Eingangsinformation fütterst. Z.B. nen Zähler.
Siehe auch dort:
http://www.lothar-miller.de/s9y/categories/35-Einsynchronisieren
Aber prinzipiell gilt, dass bei heutigenFPGAs Metastabilität
frühestens bei Taktfrequenzen ab etwa 500MHz eine Rolle spielen. Wie
schon erwähnt ist eben meist nicht Metastabilität das Problem, sondern
unterschiedliches Routing zu den beteiligen Flipflops einer FSM. Und ein
Zähler ist eben auch eine simple FSM.
Dussel schrieb:>> Aber das heißt doch, dass der Ausgang des zweiten FlipFlops dann nicht>> unbedingt den Zustand anzeigen wird, der eigentlich gewünscht ist, oder?
Ja das ist korrekt.
Beim Einsynchronisieren von Ereignissen/Signalen die asynchron zum
System laufen auf das einsynchronisiert werden muss sind immer zwei
Takte nötig. Einer der ersten ARMs hatte ein externes Businterface das
asynchron zum Core war mit dem Effekt, dass Daten von extern (externer
Datenbus) erst mal zwei Takte gebraucht haben um am Kern
einsynchronisiert zu werden. Die CPU lief - wenn richtig erinnert - mit
16 MHz.
rgds
Schlumpf schrieb:> Darum synchronisiert man und erst den Ausgang der Synchronisationsstufe> gibt man dann auf die restlichen FFs der Schaltung. So kann man sich> sicher sein, dass wenigstens alle FF immer die identische Information> bekommen.
Schlumpf hat das schön erklärt.
Ich habe mal eine Schaltung aufskiziert (nicht schön aber selten).
Manchmal sagt ein Bild mehr als viele Worte.
In Fall (1) wird der Eingang IN nicht auf den Takt aufsyncronisiert.
Hier kann es passieren, dass A und B gleiche Zustände annehmen.
In Fall (2) syncronisiert das Eingangs Flip-Flop das Signal (IN) auf den
Takt auf. Das stellt sicher, dass zum Zeitpunkt der Taktflanke die
Eingänge der weiteren Flips-Flops immer unterschiedlich sind.