Timinganalyse en CDC

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?

  1. AAlleen het opheffen van full en empty wordt vertraagd; overlopen of lezen uit een lege FIFO treedt niet op
  2. BOmdat de full-detectie vertraagd is, kan te veel worden geschreven en kan de data overlopen
  3. COmdat de empty-detectie vertraagd is, kan uit een lege FIFO worden gelezen
Antwoord en toelichting tonen

Antwoord: A. Alleen het opheffen van full en empty wordt vertraagd; overlopen of lezen uit een lege FIFO treedt niet op

De leespointer die de schrijfkant ziet is een oude waarde, dus het lijkt alsof er minder is gelezen dan in werkelijkheid, en de FIFO wordt voller ingeschat dan hij is. Full is dus altijd al actief als de FIFO echt vol is; alleen het opheffen nadat er ruimte is vrijgekomen loopt iets achter. Voor empty aan de leeskant geldt hetzelfde: nieuw geschreven data wordt alleen later zichtbaar. Beide werken naar de veilige (pessimistische) kant, dus de data raakt niet beschadigd, maar om de prestaties te behouden wordt de diepte met een marge voor deze vertraging gekozen.

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. 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)?
  2. De schrijfkant schrijft op 200 MHz elke cyclus 1 woord, in bursts van 120 woorden. De leeskant leest met een klok van 150 MHz in 2 van elke 3 cycli 1 woord. Wat is de minimale diepte om overlopen te voorkomen (vertraging door synchronisatie wordt genegeerd)?
  3. Met 250 MHz aan de schrijfkant en 200 MHz aan de leeskant wordt aan beide kanten elke cyclus 1 woord overgedragen. Wat is de berekende minimale diepte van een FIFO die bursts van 64 woorden ontvangt (vertraging door synchronisatie wordt genegeerd, naar boven afronden)?
  4. Welke opbouw van een resetsynchronisator, die uit een actief-lage externe reset een interne reset maakt die „asynchroon wordt geactiveerd en synchroon wordt gedeactiveerd”, is juist?
  5. Twee stuursignalen uit hetzelfde verzendende domein worden elk met een eigen synchronisator met 2 trappen ontvangen en aan de ontvangende kant met een AND gecombineerd. Wat is juist het probleem van dit ontwerp?