Timinganalyse en CDC
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?
- AOmdat Gray-code het aantal bits halveert, zodat minder synchronisators nodig zijn
- BOmdat bij elke stap maar één bit verandert, zodat ook bij overname midden in de verandering de juiste waarde van vóór of na de stap wordt verkregen
- COmdat Gray-codesignalen niet metastabiel worden, zodat synchronisatie overbodig is
Antwoord en toelichting tonen
Antwoord: B. Omdat bij elke stap maar één bit verandert, zodat ook bij overname midden in de verandering de juiste waarde van vóór of na de stap wordt verkregen
Bij een binaire pointer veranderen meerdere bits tegelijk, bijvoorbeeld van 0111 naar 1000, dus als elke bit afzonderlijk wordt gesynchroniseerd, kan een volstrekt ongerelateerde waarde worden ontvangen. Bij Gray-code verandert per ophoging maar één bit, dus ook als die bit metastabiel wordt en op oud of nieuw uitkomt, is het resultaat de waarde van vóór of na de stap. Er wordt alleen een iets oudere waarde gezien, dus de FIFO raakt niet ontregeld. Het aantal bits verandert niet, en metastabiliteit zelf kan nog steeds optreden, dus synchronisators blijven nodig.