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.
Gibt es eine Möglichkeit anzugeben, welche BUFG oder IBUFG verwendet werden soll? Warum erhalte ich diese Warnung?
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_OUT
Ungenutztheit. Sie haben diesen Ausgang mit einem Draht verbunden, und ich kann nur annehmen, dass Sie ihn dann nirgendwo anschließen. CLK0
wird 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."
Tom Tischler
ClockManager1
mit 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?Ahmed Ali Abbasi
Tom Tischler
.CLK0_OUT()
und es sollte die Warnung entfernen.Tom Tischler