Forum: FPGA, VHDL & Co. FPGA Timing optimieren


von Henk (Gast)


Lesenswert?

Ich habe ein ganz ein großes Problem mit meine FPGA-Applikation für eine 
Stratix: Die Signale kommen etwas zu spät aus den Ausgängen heraus im 
Vergleich zu die gewünschten Timings. Der Chip, der weiterverarbeitet, 
sieht die clock zu früh. Ich habe schon schon eine Extra-Clock gemacht, 
auf die sich die Ausgänge beziehen können (Vierteltakt verzögert) und 
Ausgänge auf Fast-Io contraint. Im ModelSim und vho-Sim läuft perfekt, 
aber MEssung zeigt, daß etwas nicht stimmt. Wie kann ich contraints 
anlegen, daß die Ausgänge schneller kommen ?

Henk ten Bakker
(clock constraints und pad-to-setup stimmen)

von Falk B. (falk)


Lesenswert?

Taktung FPGA/CPLD

Und man sollte Output-FlipFlops nutzen.

MfG
Falk

von FPGA-Heinz (Gast)


Lesenswert?

Was "stimmt da nicht"? Timingdiagramm?

Wenn der Takt, mit dem der zeite Chip übernimmt, um 25% verzögert ist, 
müsste das doch locker reichen.

von Henk (Gast)


Lesenswert?

Die Signalen kommen innen im FPGA mit einer kleinen Verzögerung mit dem 
Takt wie es sein soll. Das zeigt auch Simulation. Das funktioniert aber 
in einem anderen Chip nur, wenn die Clock auch da etwas später kommt. 
Leider sind die Signale am Ausgang etwas später, während der Takt 
schnell ist. So sind einige Signalen zu spät und werden falsch getaktet. 
Etwa jede 1000 Operationen ist falsch, stimen Bits nicht.

Für clock to pad habe ich einen Takte eingestellt. Ist laut Theorie ok. 
Nun habe ich etwas weniger, Synthese funktioniert gerade noch, aber 
Problem bleibt.

Wo ist der Denkfehler ?

Henk ten Bakker

von fpgaküchle (Gast)


Lesenswert?

die outputs werden etwas schneller bei besseren IO-constraints. Also
die treiberstärke hoch setzten (DRIVE = 24), die Flankensteilheit 
anziehen
(SLEW = FAST). das verringert die verzögerung zw. takt und datenausgang
and den Ausgangpins.

und wie der vorredner sollten die "letzten FF" nicht mitten im FPGA 
liegen (slice-FF) sondern direkt in der PAD (fpga-io) -Zelle. ob das so 
ist findest du im pad report (*.pad) vom map. Dort gibt es eine spaltem 
IOB-FF (o.ä). oft mus man den code extra so schreiben, das das FF in die 
padzelle passt. schau mal ob die iob-ff genutzt werden, wenn nicht poste 
mal den code.

von Sym (Gast)


Lesenswert?

Die Takt kommt zu früh = die Daten ändern sich noch knapp vor der 
steigenden Flanke. Oder Daten überholen Takt. Es kommt zu einer 
Hold-Time Violation.

Stimmt meine Annahme? Welche Violation hast du denn?

Grundsätzlich gibt es natürlich eine Verzögerung vom Register zum 
Ausgangspin, das liegt aber recht gering (unter 1ns).

Es stellt sich die Frage, woher der Takt für die externe Logik kommt? 
Vom FPGA? Dann musst du unbedingt einen Clockein/ausgang verwenden. 
Sonst gibt's Clock Hold-Time Violations!

Clocks um eine gewisse Phase zu verschieben ist gar keine gute Idee! 
Lass das. Wenn dann den Takt mit einer PLL korrekt erzeugen lassen.

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.