Für Puls verwenden wir Pulse-Synchronizer und für Level-Signal verwenden wir 2-Flop-Synchronizer, aber was ist, wenn das Signal ein Puls- oder Level-Verhalten haben kann? Gibt es eine Möglichkeit das zu synchronisieren?
BEARBEITEN:
Nach der Antwort von @Paebbels gibt es eine Änderung in Circuit, es sollte so sein, die Signaltransformation befindet sich in der TX-Clock-Domäne anstelle der RX-Clock-Domäne.
und seine Simulation ist wie unten,
Aber jetzt geht es darum, die Anzahl der Zyklen auf der TX-Clock-Seite auf die RX-Clock-Seite umzuwandeln. Mindestens CDC auf Ebene konvergiert auf Ebene in der rx-Taktdomäne, wir können die Einschränkung der Anzahl der Zyklustransformationen aufheben.
Sie können dem Puls/Strobe-Synchronizer eine Flankenerkennung hinzufügen.
Wie funktioniert ein normaler Puls/Strobe-Synchronizer?
Was kann mit dieser Schaltung passieren, wenn Pulse ein konstantes Signal bilden?
Die Schaltung beginnt zu schalten und erzeugt viele Impulse am Ausgang.
Lösung:
Dieses Umschalten kann durch Hinzufügen einer Flankenerkennung am Eingang (D-FF + NOT + AND) oder wenn der Sender dem Besetztzeichen nachkommt, gestoppt werden.
Simulieren Sie diese Schaltung – Mit CircuitLab erstellter Schaltplan
Quelle: PoC.misc.sync.Strobe
Hängt davon ab, welche Informationen über das Signal wichtig sind. Wenn Sie sowohl einen relativ konstanten Pegel als auch relativ kurze Impulse haben, die eng beieinander liegen, müssen Sie möglicherweise einen asynchronen FIFO verwenden und den Wert des Signals im FIFO speichern, wenn er sich ändert. Pegel- und Puls-Synchronisierer funktionieren nur gut mit 'spärlichen' Signalen, die sich nicht sehr oft ändern. Wenn Ihre Impulse jedoch mindestens mehrere Taktzyklen lang sind, könnte ein Pegelsynchronisierer in Ordnung sein.
Michael Karas
Prakash Darji