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)
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.
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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.