Synchronisations-Flip-Flops

Ich habe Zweifel an Taktdomänen und FF-Synchronisation. Ich arbeite an einem FPGA und habe zwei Taktdomänen. In der ersten Taktdomäne gibt es eine Taktfrequenz von 125 MHz, in der zweiten wird die Frequenz von einer PLL erzeugt, die 125 MHz im Eingang hat und 12,5 MHz erzeugt.

Werden Synchronisations-FFs zwischen den Taktdomänen für Signale benötigt, die von einer Domäne zur anderen gehen? Ich weiß, dass ich bei asynchronen oder nicht zusammenhängenden Signalen Synchronisierungs-FFs setzen muss, aber in diesem Fall sind die Frequenzen verwandt. Ist es sicher, die FFs zu beseitigen?

Danke

Antworten (2)

Da Sie eine PLL verwenden, um Ihren 12,5-MHz-Takt zu erzeugen, wird die Phasenbeziehung vom Synthesetool beibehalten, was auch immer es ist. Dies bedeutet, dass die Timing-Analyse jeden Pfad zwischen den beiden Uhren korrekt meldet und Ihnen mitteilt, ob die Setup/Hold-Beziehung nicht erfüllt werden kann. Die Takte werden wahrscheinlich auch flankenausgerichtet sein, aber dies hängt von der Konfiguration der PLL ab.

Es ist einfach, einen Clock-Domain-Transfer zwischen einem flankenausgerichteten 12,5-MHz- und einem 125-MHz-Takt durchzuführen. Wenn die Quelle innerhalb von 8 ns eingerichtet wird, speichert 125 MHz den Wert ohne Probleme. Die andere Richtung ist auch einfach, außer dass Sie einen beliebigen Wert für 10 125-MHz-Taktzyklen beibehalten müssen, um sicherzustellen, dass der langsamere Takt den neuen Wert speichert (das Tool überprüft dies nicht).

Es ist manchmal vorzuziehen, die zwei Takte als asynchron zu betrachten. Ein beispielhafter Fall wäre, wenn das Taktverhältnis 11/13 ist, könnte es unmöglich sein, Timings zwischen den Takten zu erfüllen. Betrachten Sie sie in diesem Fall einfach als asynchron, legen Sie falsche Pfadbeschränkungen fest und verwenden Sie FIFOs, Synchronisationsregister oder andere Techniken zum Übertragen von Daten.

Betrachten Sie sie in Ihrem Fall als synchron, es sollte nicht schwierig sein, Timings einzuhalten, wenn sie flankenausgerichtet sind oder wenn ihre Phasenbeziehung nicht ganz schlecht ist. Achten Sie auch darauf, den Timing-Bericht zu überprüfen. Wenn die Cross-Domain-Pfade nicht vorhanden sind, wissen Sie, dass etwas nicht stimmt.

Dies hängt von der Verzögerung ab, die die PLL erzeugt. Wenn die PLL eine Nullverzögerung erzeugt, d. h. eine 12,5-MHz-Taktflanke perfekt auf eine 125-MHz-Taktflanke ausgerichtet ist, dann sollte es kein Problem geben. Wenn Sie beispielsweise Daten aus dem 12,5-MHz-Bereich in den 125-MHz-Bereich übertragen und der 125-MHz-Takt dem 12,5-MHz-Takt um genau den richtigen Betrag nacheilt (ungefähr die Ausbreitungsverzögerung der internen FFs), könnten Sie dies tatsächlich tun Metastabilitätsprobleme. Wenn außerdem die relative Verzögerung der beiden Takte festgelegt ist und Sie sich in einer Problemzone befinden, funktionieren Synchronisations-FFs möglicherweise nicht gut, da jede Übertragung problematisch ist.

In diesem Fall könnten Sie dies umgehen, indem Sie mit einem FF synchronisieren, das von der entgegengesetzten Taktpolarität angesteuert wird, denn wenn die ansteigende Flanke garantiert ein Problem darstellt, ist die abfallende Flanke garantiert gut - solange der Metastabilitätsbereich kleiner als 1/2 ist Taktperiode breit, in diesem Fall 4 nsec.

In jedem Fall müssen Sie Ihren Taktgenerator sorgfältig analysieren.