Mögliche Taktdomänenüberquerung?

Bitte beachten Sie den folgenden Code. (Aus Gründen der Übersichtlichkeit ist es ein YCbCr 4:2:2 bis 4:4:4 SerDes.)

always @(posedge clk_54, posedge reset) begin
if (reset)
    cntr <= 0;
else if (flag_in) 
    cntr <= cntr+1; 
end

always @(posedge clk_54, posedge reset) begin
if (reset) begin
    Y  <= 0;
    Cb <= 0;
    Cr <= 0; end
if (cntr==0) 
    Cb <= YCbCr;
else if ((cntr==1)||(cntr==3)) 
    Y <= YCbCr; 
else if (cntr==2) 
    Cr <= YCbCr;
end

Der Eingangstakt beträgt 54 MHz. cntrist ein Zwei-Bit-Zähler. flag_inist ein Flag, das dem Zähler mitteilt, wann er beginnen soll. Es ist sehr deutlich, dass sich keines der drei Ausgangssignale , Y, Cboder Crmit einer schnelleren Rate als 27 MHz (die Hälfte von 54) ändert. Wenn ja, kann ich die Signale sicher bei 27 MHz abtasten und mir keine Gedanken über Probleme beim Überqueren der Taktdomäne , Setup und Halten usw. machen?

Ich plane, mit Vivado zu synthetisieren und auf einem FPGA zu platzieren. Der 27-MHz-Takt wird mit dem Vivado-Taktassistenten aus den 54 MHz abgeleitet.

Sind die 27-MHz- und 54-MHz-Takte asynchron zueinander, dh von getrennten Quellen? Wenn dies der Fall ist, kann / wird ihre Phase driften, da ihr Frequenzverhältnis nicht genau 2: 1 beträgt und Ihre 54-MHz-Eingangs-DFFs (die Sie haben sollten) metastabil werden können, da Sie tatsächlich Taktdomänen überqueren werden.
Ich habe in der Frage erwähnt, dass "der 27-MHz-Takt mit dem Vivado-Taktassistenten von den 54 MHz abgeleitet wird".
Der Vivado-Zeiterfassungsassistent ist eine GUI, die denen bekannt ist, die sie verwendet haben. Wollen Sie, um bei der eigentlichen Schaltung zu bleiben, sagen, dass sie von derselben PLL erzeugt werden und daher miteinander phasenverriegelt sind?
Was ich sagen will, ist, dass der 54-MHz-Takt von außerhalb der Platine kommt und die 27 MHz vom 54-MHz-Takt mithilfe des Vivado-Taktungsassistenten unter Verwendung der PLL-Option abgeleitet werden
Auch hier beschreiben Sie die Vivado-GUI-Aktionen, nicht die Schaltkreise, die sie erstellt, also vergessen wir Vivado für den Moment. Wenn Sie nur meine obige Kommentarfrage beantworten möchten, kann ich Ihnen eine klare Antwort auf Ihre Domänenüberquerung geben. Machen Sie sich jedoch nicht die Mühe, wenn Sie dies nicht möchten.

Antworten (1)

Dies sieht aus wie eine 54-MHz-Schaltung, da Sie keine offensichtliche Kontrolle über die Phasenlage der beiden Takte haben. Solange die beiden Takte synchron sind und alle Pfade von clk_27 bis clk_54 auf 54 MHz getaktet sind, sollte es keine Probleme mit Metastabilität oder Konvergenz geben.

Wenn eines der Signale von unterschiedlichen Taktquellen erzeugt wird (selbst wenn sie phasenstarr sind) oder außerhalb des Chips durch externe Verbindungen geleitet wird, müssen Sie auch dort die Worst-Case-Verzögerungsvariation berücksichtigen.