Wat is Metastabiliteit?

Toestand waarin de uitgang van een flipflop enige tijd noch 0 noch 1 is, doordat de setup- of holdtijd niet is gehaald. Als maatregel worden asynchrone signalen met een tweetraps-flipflop gesynchroniseerd.

Japanse benaming: メタステーブル

“Metastabiliteit” komt voor in 7 oefenvragen uit 3 onderwerpen, bijv. Timinganalyse en CDC, Logische schakelingen, LSI-ontwerpflow en EDA.

Synchronisator met twee flipflops Klokdomein zender Klokdomein ontvanger FF zender FF1 FF2 Async Direct Gesync. uitgang Klok zender Klok ontvanger Metastabiel? Klok ontvanger Uitgang FF1 Instabiel Uitgang FF2 ca. 1 periode Stabiliseert FF1 vóór de volgende flank, dan krijgt FF2 de juiste waarde
Synchronisator met twee flipflops · Bekijken in het figurenoverzicht

Vakgebied: Logische schakelingen

Waarom een flipflop tussen 0 en 1 kan blijven hangen

Een flipflop slaat zijn toestand op in kruislings gekoppelde inverters, die twee stabiele punten hebben met daartussen één instabiel evenwichtspunt. Als de data-ingang verandert binnen het venster dat wordt bepaald door de setuptijd (vóór de klokflank) en de holdtijd (erna), kan de latch dicht bij dat evenwichtspunt achterblijven. Meekoppeling versterkt dan de kleine onbalans met een tijdconstante τ, maar hoe dichter de start bij het evenwicht ligt, hoe langer de beslissing duurt, zonder harde bovengrens. De uitgang kan op een tussenliggende spanning blijven staan of te laat schakelen, en de uiteindelijke waarde is onvoorspelbaar.

Synchronizers en MTBF

Bij een asynchrone ingang kan metastabiliteit alleen zeldzaam worden gemaakt, niet worden voorkomen. Een synchronizer met twee flipflops geeft de eerste trap bijna een volledige klokperiode om tot een beslissing te komen voordat de tweede trap haar bemonstert. De gemiddelde tijd tussen storingen is ongeveer MTBF = e^(t_r/τ) / (T_0 × f_clk × f_data), waarbij t_r de beschikbare beslistijd is en τ en T_0 van de flipflop afhangen. Omdat t_r in een exponent staat, voegt een derde trap ongeveer één periode toe en vermenigvuldigt ze de MTBF enorm: met τ = 20 ps levert 1 ns extra een factor e^50 op, meer dan 10^21.

Wat een synchronizer niet oplost

Elke gesynchroniseerde bit kan een verandering één cyclus te vroeg of te laat vangen, dus een waarde van meerdere bits, zoals van 0111 naar 1000, kan aankomen als 1111 of 0000. Tellers gaan daarom over in Gray-code, waarbij per stap maar één bit verandert, zoals bij de pointers van asynchrone FIFO's; willekeurige data gebruikt een handshake of een asynchrone FIFO. Een korte puls uit een snel domein kan tussen de flanken van een langzame klok vallen en verdwijnen, dus moet hij worden verlengd of omgezet in een toggle. Signalen die een domeingrens oversteken, moeten rechtstreeks uit een flipflop komen, omdat een combinatorische glitch als geldige waarde kan worden gevangen.

Metastabiliteit versus gewone timingschendingen

In één synchroon klokdomein betekent een setupschending dat het datapad te traag is, en statische timinganalyse vindt dat; de klok vertragen of het pad versnellen lost het op. Tussen asynchrone klokken bestaat geen vaste faserelatie, dus schendingen treden vroeg of laat op, hoe snel de logica ook is, en timinganalyse kan ze niet sluiten. Daarom vertrouwen ontwerpen op CDC-verificatie (clock domain crossing), waarbij tools elke overgang opsporen en controleren op een correcte synchronizer, Gray-gecodeerde pointer of handshake. Zulke bugs zijn zeldzaam, dus gewone simulatie vangt ze zelden.

Nu oefenen: vragen over Metastabiliteit

Hoe verandert de gemiddelde tijd tussen storingen door metastabiliteit (MTBF) juist als een synchronisator met 2 flip-flops wordt uitgebreid tot 3 trappen?

  1. ADe tijd die beschikbaar is om de metastabiliteit te laten uitdoven neemt met ongeveer één periode toe, en de MTBF wordt exponentieel langer
  2. BDe MTBF wordt evenredig met het aantal trappen 1,5 keer zo groot
  3. CHoe makkelijk metastabiliteit optreedt, wordt aan de ingangskant bepaald, dus de MTBF verandert niet
Antwoord en toelichting tonen

Antwoord: A. De tijd die beschikbaar is om de metastabiliteit te laten uitdoven neemt met ongeveer één periode toe, en de MTBF wordt exponentieel langer

De MTBF van een synchronisator wordt bij benadering gegeven door MTBF = e^(t_r/τ) ÷ (T_0 × f_clk × f_data). Hierin is t_r de tijd die beschikbaar is om de metastabiliteit te laten uitdoven, en zijn τ en T_0 constanten die door de eigenschappen van de flip-flop worden bepaald. Een extra trap verlengt t_r met ongeveer één periode. Neemt t_r bijvoorbeeld bij τ = 20 ps met 1 ns toe, dan wordt de MTBF e^50 keer zo lang, oftewel meer dan 10^21 keer. De kans dat de eerste trap metastabiel wordt verandert niet, maar de kans dat de toestand uitdooft voordat hij verder doorloopt, neemt sterk toe.

Veelgestelde vragen

Wat veroorzaakt metastabiliteit in een flipflop?

Data die verandert binnen het setup-en-holdvenster rond de klokflank, waardoor de interne latch dicht bij haar instabiele evenwichtspunt achterblijft. Dat is onvermijdelijk wanneer de ingang asynchroon is ten opzichte van de klok.

Waarom worden twee flipflops gebruikt om een asynchroon signaal te synchroniseren?

De eerste flipflop kan metastabiel worden, en de tweede bemonstert haar een volledige klokperiode later, wanneer ze vrijwel zeker tot een beslissing is gekomen. Dit verhoogt de MTBF exponentieel, maar maakt falen niet onmogelijk.

Kun je een synchronizer gebruiken voor een bus met meerdere bits?

Niet bit voor bit, omdat verschillende bits in verschillende cycli kunnen worden gevangen en een ongeldige tussenwaarde opleveren. Gebruik Gray-code voor tellers, of een handshake of asynchrone FIFO voor algemene data.

“Metastabiliteit” in de toelichting

Vragen met “Metastabiliteit” (7)

  1. Hoe verandert de gemiddelde tijd tussen storingen door metastabiliteit (MTBF) juist als een synchronisator met 2 flip-flops wordt uitgebreid tot 3 trappen?
  2. Welke omschrijving van de setup-tijd van een flip-flop is juist?
  3. Hoe heet de verificatie waarbij met een speciale tool wordt gecontroleerd of op de plaatsen waar signalen worden doorgegeven tussen schakelingen met verschillende klokken, synchronisatieschakelingen correct zijn aangebracht?
  4. Wat is de juiste reden waarom de uitgang van combinatorische logica in het verzendende klokdomein niet direct op de synchronisator aan de ontvangende kant mag worden aangesloten?
  5. Elke bit van 4-bit data krijgt een eigen synchronisator met 2 trappen en wordt zo naar een ander klokdomein doorgegeven. Welk probleem kan juist optreden als de data van 0111 naar 1000 verandert?
  6. Een puls die in een klokdomein van 500 MHz één cyclus (2 ns) lang 1 is, wordt met een synchronisator met 2 trappen doorgegeven aan een domein van 100 MHz. Welk probleem kan juist optreden?
  7. Wat is de juiste reden waarom in een asynchrone FIFO de schrijf- en leespointer naar Gray-code worden omgezet voordat ze naar het andere domein worden gesynchroniseerd?

Vergelijkingen met deze term

Halfgeleider-rekentools

Verwante termen

Synchronisator Numerieke apertuur (NA) Asynchrone FIFO Klokdomein Gray-code Handshake MTBF (gemiddelde tijd tussen storingen) Flipflop Glitch Clockskew

Naar de woordenlijst