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?

  1. AOmdat Gray-code het aantal bits halveert, zodat minder synchronisators nodig zijn
  2. 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
  3. 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.

Opbouw van een asynchrone FIFO Schrijfzijde (wclk) Leeszijde (rclk) Dual-port RAM Aparte schrijf-/leesklok Schrijfdata Schrijfpointer Gray-codering Leesdata Leespointer Gray-codering 2-FF-sync Empty-detectie 2-FF-sync Full-detectie Pointers in Gray-code In Gray-code verandert per stap maar 1 bit
Opbouw van een asynchrone FIFO · Bekijken in het figurenoverzicht
Dit onderwerp oefenen Naar de onderwerppagina

Meer vragen over Timinganalyse en CDC

  1. Welke waarde is de omzetting van de 4-bit binaire waarde 0110 (decimaal 6) naar Gray-code?
  2. Wat is de juiste reden waarom in een asynchrone FIFO met een diepte van 16 woorden de schrijf- en leespointer 5 bits zijn, 1 bit meer dan het adres?
  3. Welke voorwaarde om aan de schrijfkant vol (full) te detecteren is juist bij een asynchrone FIFO met een diepte van 16 woorden en 5-bit Gray-codepointers?
  4. In een asynchrone FIFO wordt de pointer van de andere kant gesynchroniseerd gebruikt, dus de zichtbare pointerwaarde is 2–3 cycli oud. Welk effect heeft deze vertraging juist op de full/empty-detectie?
  5. In een asynchrone FIFO met 100 MHz aan de schrijfkant en 80 MHz aan de leeskant schrijft de schrijfkant bursts van 100 woorden, elke cyclus 1 woord, en leest de leeskant elke cyclus 1 woord. Tussen de bursts is er voldoende rust. Wat is de minimale diepte om overlopen te voorkomen (vertraging door synchronisatie wordt genegeerd)?