Designwarnung zur Uhrenimplementierung auf Spartan 3E

Ich arbeite mit einem SPARTAN 3E-FT256 auf Xilinx 14.1 und muss aus dem integrierten 50-MHz-Takt einen 25-MHz-Takt generieren. Dies erreiche ich mit einem Digital Clock Manager.

Dies sind meine UCF-Bezeichnungen:

NET "CLK_50MHZ" LOC = "C8" | IOSTANDARD = LVCMOS33 ;   //GCLK 10
NET "CLK_50MHZ" PERIOD = 20.0ns HIGH 40%;              //DCM_X0Y1

DCM-Instanziierung:

wire clk_ibufg;
wire clock;
wire CLK0_OUT;

IBUFG clk_ibufg_inst ( .I(CLK_50MHZ) , .O(clk_ibufg) );
BUFG  clk_bufg_inst  ( .I(clock) , .O(clk));

ClockManager1 clock_converter (
.CLKIN_IN(clk_ibufg), 
.CLKFX_OUT(clock), 
.CLK0_OUT(CLK0_OUT)
);

Ich bin mir über die Verwendung von IBUFG und BUFG sehr unsicher, aber das Datenblatt scheint die Verbindungen --- IBUFG zu DCM zu BUFG ---- für minimalen Versatz zu bevorzugen.

Die Warnung, die ich bekomme:

„Die folgenden Clock-Signale werden nicht auf den dedizierten globalen Clock-Routing-Ressourcen geroutet. Dies führt normalerweise zu längeren Verzögerungen und einem höheren Skew für die Clock-Load-Pins. Dies könnte das Ergebnis einer falschen Clock-Platzierung sein, mehr als 8 Clocks speisen Logik in einem einzelnen Quadranten des Geräts oder falsche logische Aufteilung in den/die Quadranten. Überprüfen Sie den Timing-Bericht, um die Verzögerung und den Versatz für dieses Netz zu überprüfen.

Warnung

Gibt es eine Möglichkeit anzugeben, welche BUFG oder IBUFG verwendet werden soll? Warum erhalte ich diese Warnung?

Ich nehme an, Sie haben ClockManager1mit dem CoreGenerator-Tool generiert? Wenn nicht, wie hast du es geschafft? Wenn ja, welche Einstellungen haben Sie für die Ausgangspuffer des DCM gewählt?
Sie haben richtig vermutet. Ich habe diese automatische Pufferoption beim Generieren des DCM verwendet. IBUFG und BUFG entfernt und es funktioniert ohne Warnung. Ich erhalte jedoch während der Synthese eine, die besagt, dass "Signal <CLK0_OUT> zugewiesen, aber nie verwendet wird". Laut Datenblatt soll dieses Signal verwendet werden, um Feedback für die Entzerrung zu verwenden. Wie füttere ich es zurück in das DCM und werde diese Warnung los? Denn auf der IP-Core-Generierungsvorlage wird angezeigt, dass CLK0_OUT automatisch in CLK_FB eingespeist wird.
Es kann durchaus intern erfolgen, in diesem Fall können Sie diese Ausgabe einfach ignorieren - in der Instanziierung einfach setzen .CLK0_OUT()und es sollte die Warnung entfernen.
In Bezug auf Feedback gibt eines der Dokumente (Seite 10) an, dass Sie in den Feedback-Optionen Folgendes haben können: „Kein Feedback. Erlaubt, wenn nur die CLKFX- oder CLKFX180-Ausgänge verwendet werden.“ Da Sie nur den CLKFX-Port verwenden, ist kein Feedback in Ordnung.

Antworten (1)

Da Sie den CoreGenerator-Assistenten verwenden, können die meisten Elemente auf niedriger Ebene als Teil des Assistenten ausgewählt werden, was bedeutet, dass Sie sie nicht manuell instanziieren müssen.

Da Sie für die Ausgänge „Auto“ ausgewählt haben, müssen Sie kein BUFG hinzufügen. Andernfalls wird das DCM wahrscheinlich einen BUFG für den Ausgang instanziieren, der dann Ihren BUFG füttern muss (dh zwei hintereinander). Zwei globale Taktpuffer sollten nicht hintereinander angeordnet werden, erstens, weil dies nicht erforderlich ist, und zweitens, weil das Signal das globale Taktnetzwerk verlassen muss, in dem es sich befindet, vom ersten BUFG, um zum Eingang des zweiten zu gelangen BUFG, daher deine Warnung.

Sie sollten auch auswählen können, dass ein IBUFG im DCM-Assistenten für die Eingabe verwendet wird, was wiederum bedeutet, dass Sie ihn nicht manuell instanziieren müssen.

Aus den Kommentaren erwähnst du auch eine Warnung vor CLK0_OUTUngenutztheit. Sie haben diesen Ausgang mit einem Draht verbunden, und ich kann nur annehmen, dass Sie ihn dann nirgendwo anschließen. CLK0wird für Feedback verwendet, wie Sie sagen, aber laut Xilinx App Note XAPP462 (S. 10) benötigen Sie kein Feedback, wenn Sie nur den CLKFX-Ausgangsport verwenden, was in Ihrem Fall zutrifft.

"Kein Feedback. Zulässig, wenn nur die CLKFX- oder CLKFX180-Ausgänge verwendet werden."

Ich muss also kein IBUFG oder BUFG für ein DCM instanziieren. Die einzige Option in Bezug auf Puffer ist jedoch diejenige, die fragt, ob Taktpuffer für Ausgaben verwendet werden sollen oder nicht.
@newbie konnte sich nicht erinnern, ob es eine Eingabeoption gab. Aber es wird höchstwahrscheinlich auf ein IBUFg schließen, auch wenn Sie es nicht hinzufügen, da dies die einzige Möglichkeit ist, den Takt von einem Eingangspin zum DCM zu bekommen.
Eine weitere Frage zu allem anderen: Welchen IO-Pin verwende ich für einen synchronen aktiven High-Reset? Aus dem Datenblatt erhalte ich nur, dass "BTN_SOUTH in einigen FPGA-Anwendungen auch als Soft-Reset verwendet wird". Ich finde keine andere Dokumentation darüber, was ein Soft-Reset ist.