Hallo zusammen, Ich habe mal eine Verständnisfrage zum Zustandekommen großer Routingdelays im FPGA. folgende einfache Ausgangslage: Input_PIN --> FPGA --> IBUFDS --> FLIP_FLOP --> Output_PIN (FPGA: SPARTAN6) Im Anhang sieht man ein Bild vom FPGA mit dem gerouteten Signal zwischen dem IBUFDS und dem Ausgangsflipflop (liegt im IOB). Dazu das Timing. Es zeigt sich, dass das Signal 10ns (reines Routing) benötigt um diese Strecke zurückzulegen. Meine Frage lautet: Warum braucht das Signal so lange? Natürlich muss es einen recht langen Weg zurücklegen, aber wenn man voraussetzt, dass ein Signal mit (ganz grob) etwa halber Lichtgeschwindigkeit läuft, sollte die Verzögerung doch kürzer sein (bei c/2 braucht das Signal etwa 2ns pro 30cm) Welche Faktoren spielen da rein? Wie kann man sich diese Zeit erklären? Mir geht es nur um das Verständnis. Danke und Grüße!
Kapazitive Last: zwar ist eine "Ladung" flott am Gate des Transistors, aber eine alleine genügt nicht um die Kapazität zu "füllen" und so das "hohe" Potential zu erreichen das der Umschaltvorgang benötigt. Es müssen also viele "Ladungen" zum/vom Gate gebracht werden, was dauert - da durch die dünnen Querschnitte nur eine begrenzte Anzahl v. "Ladungen" transportiert wird.
Bitwurschtler schrieb: > Kapazitive Last: > > zwar ist eine "Ladung" flott am Gate des Transistors, aber eine alleine > genügt nicht um die Kapazität zu "füllen" und so das "hohe" Potential zu > erreichen das der Umschaltvorgang benötigt. Es müssen also viele > "Ladungen" zum/vom Gate gebracht werden, was dauert - da durch die > dünnen Querschnitte nur eine begrenzte Anzahl v. "Ladungen" > transportiert wird. Danke für die Rückmeldung! In diese Richtung wäre auch mein Ansatz gegangen. Gibt es da eigentlich eine Hausnummer wie groß der Kapazitätsbelag so einer Leitung in etwa ist? Was mich auch interessieren würde (nur aus akademischem Interesse) : Kann man sich eigentlich die Länge einer Leitung in ISE irgendwo anzeigen lassen? Im FPGA-Editor habe ich nichts gefunden...
Nachtrag: Statt Kapazitätsbelag wäre eher die Impedanz interessant...
Hans schrieb: > Bitwurschtler schrieb: >> Kapazitive Last: >> >> zwar ist eine "Ladung" flott am Gate des Transistors, aber eine alleine >> genügt nicht um die Kapazität zu "füllen" und so das "hohe" Potential zu >> erreichen das der Umschaltvorgang benötigt. Es müssen also viele >> "Ladungen" zum/vom Gate gebracht werden, was dauert - da durch die >> dünnen Querschnitte nur eine begrenzte Anzahl v. "Ladungen" >> transportiert wird. > > Danke für die Rückmeldung! > In diese Richtung wäre auch mein Ansatz gegangen. Gibt es da eigentlich > eine Hausnummer wie groß der Kapazitätsbelag so einer Leitung in etwa > ist? Dazu ergänzend, weil ich mir nicht sicher bin, ob das bereits so rüberkam: Wenn man nach der Synthese im Device View die Routes ansieht, dann kommt das erstmal so rüber, als seien das lediglich metallisierte Bahnen die da direkt bestimmte Punkte miteinander verbinden (im vorliegenden Fall mehr oder minder einen Input auf ein FlipFlop auf einen Output). Dies stimmt jedoch nicht ganz: immer, wenn man im Device View einen Übergang zwischen horizontalen und vertikalen (in diesen beiden Richtungen verlaufen die metallisierten Bahnen im FPGA) Bahnen sieht, dann befindet sich dort ein Switch Block, welcher die Verbindung herstellt. Und diese Switchblöcke bestehen natürlich aus irgendwelchen Schaltern, die ein gewisses Propagationdelay in den Signalpfad einbringen. Im gesamten Routingdelay stellt also die reine Signallaufzeit in Kupfer vermutlich nur einen kleinen Teil dar.
Die Schalter machen am Signal fast garnichts. Die frischen das Signal sogar auf, wenn sie aktiv sind und beschleunigen die Information. Das maßgenliche im Silizium ist die Kapazität und damit die Fläche (und bei den fest verdrahtenten FPGAs = feste Breite damit im Wesentlichen die Länge einer Leitung).
jaja und propagation Delay ist eine Weltverschwörung...
Beschleunigen..Nja, sicher wird es effektiver sein mehrere buffer zu nehmen falls dem einen die Puste ausgeht. Ich glaube auch das man hier auch nicht zu lang sein darf um nicht in die Reflektionsproblematik zu kommen. 100fs gibt sicher jeder buffer
Tim schrieb: > Beschleunigen..Nja, sicher wird es effektiver sein mehrere buffer zu > nehmen falls dem einen die Puste ausgeht. Du meinst parallele Buffer und Zweige, nehme ich an. > 100fs gibt sicher jeder buffer Die Schaltzeiten, also das, was man ohne Last den Gates anlasten kann, liegt sogar noch höher, als nur 100 Femto, aber trotzdem sind diese irrelevant, weil es rein von der Last abhängt, ob daraus Pico oder gar Nanosekunden werden. Das Transistorgate hat quasi gar keine Kapazität im Vergleich zu der Leitung dorthin. Relevant sind letztlich die Leitungen von dort weg. In aktuellen FPGAs bewegen sich die Taktfrequenzen um die 200MHz-400MHz von daher sind Werte von rund 100ps oval all relevant. Werte unter 10ps liegen im Bereich des Jitters. Daher werden die Interconnetions so dimensioniert, dass sie eine genügend große Anzahl von Leitungen mit rund 100ps treiben können. Meht geht dann über Parallelisierung. Die andere Frage, wie man das macht, wurde schon beantwortet: Die Treiber bestehen aus mehreren Verstärkern hintereinander. Die Methodik spiegelt sich auch im ASIC design wider: Statt einer langer direkter Leitung in der Kombinatorik, baut man einen Buffer ein, der die Leitungen teilt und die Schaltzeiten grob halbiert, da die effektive Schaltzeit mit der Leitungslänge im Quadrat geht und das Addieren des Buffers nix kostet. Als ein Beispiel hätten wir hier eine rund 3mm lange Steuerleitung auf einen Ausgang, die 3x gepuffert wurde, um sie von fast 4ns auf gut 1ns zu drücken: Vorher : 1x180ps + 3690 ps = 3.87 ns Nachher : 3x180ps + 410 ps = 0.95 ns Im FPGA geht das freilich nicht so einfach, weil die Schalter und Buffer fest verbaut sind, was die Sache unflexibel macht.
Mw E. schrieb: > jaja und propagation Delay ist eine Weltverschwörung... Auch wenn du es nicht glauben willst, die Verzögerungen kommen durch die Leitung und nicht durch die Schaltzeiten. Da stecken letztlich Transistoren drin, die binnen Picosekunden schalten. Auch die verketteten Verstärker in den IO-Zellen, die am meisten zu treiben haben, haben Anstiegszeiten von weit unter 1ns.
Hans schrieb: > Was mich auch interessieren würde (nur aus akademischem Interesse) : > Kann man sich eigentlich die Länge einer Leitung in ISE irgendwo > anzeigen lassen? Im FPGA-Editor habe ich nichts gefunden... Ich nehme nicht an, dass der Hersteller ausgerechnet dazu konkrete Angaben machen wird. Wozu auch? Die Zeit ist ja das Entscheidende und da ist der fan out wichtig, wie schon dargestellt wurde.
Hans schrieb: > Was mich auch interessieren würde (nur aus akademischem Interesse) : > Kann man sich eigentlich die Länge einer Leitung in ISE irgendwo > anzeigen lassen? Im FPGA-Editor habe ich nichts gefunden... Du meinst in mm? Ich denke nein. Aber mit den Laufzeiten aus dem FPGA-Editor und der Die-Größe (nach dem kleinsten Gehäuse suchen), sollte man schon eine gute Abschätzung hinbekommen. Duke
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.