Forum: FPGA, VHDL & Co. Pin-Timing Frage


von Jens Langecker (Gast)


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)?

von Duke Scarring (Gast)


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

von Christian R. (supachris)


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.

von Jens Langecker (Gast)


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?

von Vanilla (Gast)


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)...

von Der (Gast)


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ß

von Der (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.