Hallo zusammen, Ich habe einige Fragen zum grundlegenden Verständnis von Clk-Buffern. folgende Ausgangslage: FPGA: Virtex5 Umgebung: ISE Frage: ------ Ich schließe einen Clock an einen Input Pin am FPGA an. Anschließend instanziiere ich einen BUFG: Clk --> pin_vom_FPGA --> BUFG --> clk_signal Soweit ist alles klar (Standardprozedur). Nun mache ich jedoch folgendes: Clk --> pin_vom_FPGA --> BUFG --> clk_signal --> BUFG --> clk_signal2 Meine Fragen: a.) Muss ich im Design clk_signal & clk_signal2 als unterschiedliche Clks behandeln, oder sind die zueinander synchron? b.) Welche Gründe könnte es geben, einen zusätzlichen Clk-Buffer im Design zu instanziieren? Kann ich der Implementierung da was vereinfachen, wenn ich mehrere Clockbuffer verwende? Eventuell wenn mehrere Schaltungsteile unabhängig voneinander sind (nicht clk-synchron zueinander sein müssen) vereinfacht dies das Routing? Danke und Grüße! Hans
Hans schrieb: > Nun mache ich jedoch > folgendes: > > Clk --> pin_vom_FPGA --> BUFG --> clk_signal --> BUFG --> clk_signal2 der erste BUFG sollte ein IBUFG sein > a.) Muss ich im Design clk_signal & clk_signal2 als unterschiedliche > Clks behandeln, oder sind die zueinander synchron? die haben zwar gleichen takt aber nicht gleiche Phasenlage, es gibt also einen skew zwischen beiden der zu Timing Verletzung führen kann. Nicht gut.
"Muss ich im Design clk_signal & clk_signal2 als unterschiedliche Clks behandeln, oder sind die zueinander synchron?" Die sind synchron bis auf die BUFG-Delay, aber im Code hast Du natürlich unterschiedliche Signalnamen. "Welche Gründe könnte es geben, einen zusätzlichen Clk-Buffer im Design zu instanziieren?" Wenn du Clocknetze mit sehr vielen Sinks hast (also vielen FFs), dann wird der Fanout auf diesem Netz sehr hoch, was das Timing verschlechtert. Dann spaltet man den Clocktree auf und benutzt weitere Clocknetze. Das ist aber eigentlich nur bei sehr großen Designs notwendig. Außerdem kann man dann Teilnetze vom Clock trennen, wenn man BUFGs mit enable verwendet (womit man sich wieder andere Probleme einfängt)
Danke für die Rückmeldungen schonmal!
> der erste BUFG sollte ein IBUFG sein
Wenn ich statt einem IBUFG einen BUFG nehme, was wäre dann der
Unterschied?
Hans schrieb: > Danke für die Rückmeldungen schonmal! > >> der erste BUFG sollte ein IBUFG sein > > Wenn ich statt einem IBUFG einen BUFG nehme, was wäre dann der > Unterschied? Du hast den BUFG für andere clock-Anwendung (bspw DCM - Feedback, mehr interne Takte) zur Verfügung. Der IBUFG ist auf die Taktweiterleitung von externen Taktsignalen optimiert, heisst das Signal wird vom Pin mit geringer Verzögerung in das FPGA-Taktsystem weitergeleitet, vom Pin übers BUFG ist diese Verzögerung höher. Zum Nachlesen: http://www.xilinx.com/support/answers/5304.html https://forums.xilinx.com/t5/Timing-Analysis/Difference-between-IBUFG-and-BUFG-clock/td-p/36584 VG
Vancouver schrieb: > Wenn du Clocknetze mit sehr vielen Sinks hast (also vielen FFs), dann > wird der Fanout auf diesem Netz sehr hoch, was das Timing > verschlechtert. Dann spaltet man den Clocktree auf und benutzt weitere > Clocknetze. Da waere ich mir aber nicht so sicher... Der Clock-Tree hat sowieso viele Buffer, einfach aus der Tatsache, dass selbst ein "Fat" Clk-Buffer so viele Fanouts nicht treiben kann. Diese eingebauten Buffer sind idealerweise so platziert, dass minimaler Skew zwischen zwei FFs in der Nachbarschaft erreicht werden. Am anderen Chipende wird der Skew dann groesser. Eine Verwendung mehrere "gleicher" Takte hatte ich mal: Ein Businterface lief mit der normalen Clk. Dann hatte ich 2 verschiedene Designs im FPGA, von denen zu jeder Zeit aber nur eines benutzt wurde. Diese 2 Designs hatten jeweils eine eigene Clk, einfach die originale Clk durch ein Clk-Gate geschickt (gibt da Clk-Muxe dafuer auf dem Chip). Warum: Strom sparen...
Hans schrieb: > Anschließend instanziiere ich einen BUFG: Das macht doch XST oder map für dich, um sowas musst du dich nicht selbst kümmern, wenn du das Signal als CLK und nur als CLK benutzt. BUFG usw selber instanziieren braucht man nur wenn man z.B. den DCM ohne IP Generator verwendet oder die ISERDES oder MGT oder solche Späße. Da muss man dann bissl tiefer in den jeweiligen Clocking User Guide einsteigen.
Bitwurschtler schrieb: > die haben zwar gleichen takt aber nicht gleiche Phasenlage, es gibt also > einen skew zwischen beiden der zu Timing Verletzung führen kann. clock buffer muchen in der Regel irgendwas um die 50ps ... 100ps. Da sie das Signal auffrischen wird das Signal eher schneller, weil das routing besser wird.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.