Timing-Analyse und CDC

Was ist der richtige Grund dafür, dass bei einem asynchronen FIFO Schreib- und Lesezeiger vor der Synchronisierung in die jeweils andere Domäne in Gray-Code umgewandelt werden?

  1. AWeil sich mit Gray-Code die Bitanzahl halbiert und weniger Synchronisierer benötigt werden
  2. BWeil sich bei jedem Schritt nur 1 Bit ändert, sodass auch bei Übernahme während der Änderung der korrekte Wert vor oder nach dem Schritt herauskommt
  3. CWeil Gray-codierte Signale nicht metastabil werden und daher keine Synchronisierung nötig ist
Antwort und Erläuterung anzeigen

Antwort: B. Weil sich bei jedem Schritt nur 1 Bit ändert, sodass auch bei Übernahme während der Änderung der korrekte Wert vor oder nach dem Schritt herauskommt

Bei einem binären Zeiger ändern sich mehrere Bits gleichzeitig, etwa von 0111 auf 1000; synchronisiert man jedes Bit einzeln, kann ein völlig unzusammenhängender Wert empfangen werden. Bei Gray-Code ändert sich pro Inkrement nur 1 Bit; auch wenn dieses Bit metastabil wird und sich auf den alten oder den neuen Wert festlegt, ist das Ergebnis der Wert vor oder nach dem Schritt. Es wird lediglich ein etwas älterer Wert gesehen, sodass der FIFO nicht fehlerhaft wird. Die Bitanzahl ändert sich nicht, und Metastabilität selbst kann auftreten, daher sind Synchronisierer erforderlich.

Aufbau eines asynchronen FIFO Schreibseite (wclk) Leseseite (rclk) Dual-Port-RAM Zugriff mit 2 Takten Schreibdaten Schreibzeiger Gray-Codierung Lesedaten Lesezeiger Gray-Codierung 2-FF-Sync empty-Prüfung 2-FF-Sync full-Prüfung Gray-Code-Zeiger Gray-Code: pro Schritt ändert sich nur 1 Bit
Aufbau eines asynchronen FIFO · Im Diagrammverzeichnis ansehen
Dieses Thema üben Zur Themenseite

Weitere Fragen zu Timing-Analyse und CDC

  1. Welcher Wert ist die Gray-Code-Darstellung der 4-Bit-Binärzahl 0110 (dezimal 6)?
  2. Was ist der richtige Grund dafür, dass bei einem asynchronen FIFO mit 16 Wörtern Tiefe Schreib- und Lesezeiger mit 5 Bit, also 1 Bit mehr als die Adresse, ausgeführt werden?
  3. Welche Bedingung zur Erkennung von „voll“ (full) auf der Schreibseite ist bei einem asynchronen FIFO mit 16 Wörtern Tiefe und 5-Bit-Gray-Code-Zeigern richtig?
  4. Da ein asynchroner FIFO den Zeiger der Gegenseite synchronisiert verwendet, ist der sichtbare Zeigerwert 2–3 Zyklen veraltet. Welche Auswirkung hat diese Verzögerung auf die Erkennung von full/empty?
  5. Bei einem asynchronen FIFO mit 100 MHz auf der Schreibseite und 80 MHz auf der Leseseite schreibt die Schreibseite einen Burst von 100 Wörtern mit 1 Wort pro Zyklus, und die Leseseite liest 1 Wort pro Zyklus. Zwischen den Bursts gibt es ausreichende Pausen. Welche Tiefe ist mindestens erforderlich, um einen Überlauf zu vermeiden (Verzögerung durch Synchronisierung vernachlässigt)?