Pin-Timing Frage

Gast #3004177
Lesenswert?

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)?
Gast #3004187
Lesenswert?

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
#3004213
Lesenswert?

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.
Gast #3004233
Lesenswert?

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?
Gast #3004279
Lesenswert?

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)...
Gast #3004805
Lesenswert?

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ß

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren