Wenn Ein-Bit-Informationen zwischen zwei verschiedenen Taktdomänen übertragen werden, verwenden wir 2 Flip-Flops oder doppelte Synchronisierer. Aber wenn wir Multi-Bit-Signale über zwei verschiedene Taktdomänen übertragen, warum reichen dann doppelte Synchronisierer allein nicht aus? Warum benötigen wir in diesem Fall spezielle Handshake-Signale / Gray-Code usw. zusammen mit den doppelt synchronisierenden Flip-Flops, die das gesamte Setup verkomplizieren?
Die Übertragung eines einzelnen Bits ist einfach. Es hat nur zwei Zustände, und wenn ein Übergang auftritt, kann es nur entweder im vorherigen Zustand oder im neuen Zustand sein. Daher ist die einzige Sorge die Metastabilität, und der Zwei-Flop-Synchronisierer reicht normalerweise aus, um dieses Problem anzugehen.
Ein Mehrbitbus hat jedoch ein zusätzliches Problem: Beim Überschreiten einer Taktdomänengrenze können aufgrund winziger Unterschiede in den Verzögerungen in der Logik und in der Verdrahtung unterschiedliche Bits als an unterschiedlichen Taktflanken sich ändernd wahrgenommen werden. Einige Bits können metastabil werden, während andere dies nicht tun, und sie benötigen möglicherweise unterschiedlich viel Zeit, um sich selbst aufzulösen. Jetzt haben Sie nicht nur den vorherigen Zustand und den nächsten Zustand – Sie können eine beliebige Anzahl von Zwischenzuständen haben, in denen nur einige der Bits ihre neuen Werte haben und einige der Bits noch ihre alten Werte haben.
Dieses zusätzliche Problem der Datenkohärenz ist der Grund, warum die zusätzliche Handshake-Logik erforderlich ist. Aus diesem Grund ist das Dual-Clock- oder asynchrone FIFO ein wichtiger Baustein in digitalen Systemen, die mehrere Taktdomänen umfassen – es fasst alle erforderlichen Elemente in einem ordentlichen Paket zusammen.
Andi aka
Christian B.