Hallo FPGA-Freunde, angenommen, ich habe eine FPGA und einen andernne Baustein, die mit dem gleichen (externen) Takt betrieben werden. Nun geht ein Datensignal vom FPGA zum Baustein und im Datenblatt des Bausteins sind Setup/Hold-Zeiten für das Datensignal zum Takt angegeben. Also erstelle ich Timing-Constraints und die Tools erzeugen das korrekte Pin-Timing. Meine Frage: Wie werden eigentlich im FPGA diese Timings erzeugt? Angenommen, wir haben einen 100MHz-Takt und das Datensignal muß 2ns vor der Flanke gültig sein: Wie macht der FPGA das, daß er diese 2ns "abzählen" kann, wenn er doch gar keinen schnelleren Takt hat als die 100MHz (10ns)?
Er kann erstmal nur die Laufzeiten ermitteln und Dir mitteilen, ob das Timing passt, oder eben auch nicht. Ohne Vorgabe von Constraints werden Dir die Tools die aktuellen Durchlaufzeiten nur ausgeben. Duke
Das Signal muss ja 2 ns vor der nächsten Flanke gültig anliegen, also muss der FPGA das mit der aktuellen Flanke ausgeben und dann hat er 8ns Zeit, um das Signal bis zum physikalischen Ausgang zu transportieren. Bei Xilinx setzt man dann ein OFFSET OUT Constraint und dann sagt dir das Programm, ob das eingehalten werden kann, oder auch nicht.
Das ist soweit klar, danke. Aber angenommen das Signal muß 2ns vor (Setup) und 3ns nach (Hold) der Flanke gültig sein. Dies sei auch korrekt per "OFFSET OUT/VALID" angegeben. Der FPGA hat also bei der aktuellen Flanke 8ns Zeit, darf aber auch nicht schneller als 3ns sein. Wie erreicht er die Verzögerung von 3ns?
Der FPGA hat also bei der aktuellen Flanke 8ns Zeit, darf aber auch nicht schneller als 3ns sein. Wie erreicht er die Verzögerung von 3ns? Jens Langecker schrieb: > Der FPGA hat also bei der aktuellen Flanke 8ns Zeit, darf aber auch > > nicht schneller als 3ns sein. Wie erreicht er die Verzögerung von 3ns? Der FPGA erreicht da gar nix. Das Synthesetool kann aber durch intellegente Nutzung der ohnehin vorhandenen Verzögerungen (aufgrund der physikalischen Entfernung verschiedener zu verschaltender Komponenten im FPGA sowie der Verzögerung von Buffern und Interconnectes, versuchen deine Vorgaben zu erreichen (z.B. Nutzung von IO-FFs oder in der Matrix)...
Jens Langecker schrieb: > Aber angenommen das Signal muß 2ns vor (Setup) und 3ns nach (Hold) der > Flanke gültig sein. Dies sei auch korrekt per "OFFSET OUT/VALID" > angegeben. Setup Zeit: Es ist nicht so, dass der FPGA bis 2 Sekunden vor der nächsten Flanke wartet und dann die Daten anlegt. Er legt es einfach an, sobald er fertig ist. Dein Code und das Synthesetool müssen dafür sorgen dass spätestens dann anliegt. Hold Zeit: Es ist nicht so, dass der FPGA bis 3ns nach der Flanke wartet und dann das Signal wieder wegnimmt. Dein Code und das Synthesetool müssen dafür sorgen dass es mindestens so lange anliegt. Gruß
Der schrieb: > Setup Zeit: > Es ist nicht so, dass der FPGA bis 2 Sekunden vor der nächsten Flanke > wartet und dann die Daten anlegt. Nachtrag: Sollten eher 2 Nanosekunden sein. Aber sind ja nur 9 Größenordnungen Unterschied...
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.