Quartus hat eine Option bei der man in der Typauswahl FPGAs angezeigt bekommt auf die man ein bestehendes Projekt migrieren kann. Man kann dann mehrere FPGAs auswählen und das kompilierte Binary soll dann auf allen ausgewählten FPGAs laufen. Ich habe ein Projekt für einen Cyclone 10 LP das auf dem 010, 016 und 025 laufen soll. Auf dem 010 läuft das Binary, auf den beiden anderen nicht. Es gibt keinen Fehler beim Bau oder bei der Übertragung des Binaries - aber bei der Ausführung. Ich habe beachtet dass die 016 und 025 an einigen Pins wo beim 010 IOs liegen GND bzw. Versorgungsspannung erhalten müssen. Gibt es da sonst noch irgendwas zu beachten? Oder sollte es tatsächlich ein Kontaktproblem (Gehäuseform UBGA256... / Lötfehler) sein? Hat schon mal jemand erfolgreich mit dieser Vertikalmigration gearbeitet? Einen schönen 4. Advent allen Lesern!
Andreas R. schrieb: > Man kann > dann mehrere FPGAs auswählen und das kompilierte Binary soll dann auf > allen ausgewählten FPGAs laufen. Das hast du falsch verstanden. Die Funktion bewirkt das nur Pins verwendet werden die in allen ausgewählten FPGA zur Verfügung stehen. Du musst aber trotzdem für jeden einzelnen FPGA eine eigenes Bitfile erzeugen. Die Idee ist für den Prototyp den größten FPGA in gewähltem Package zu verwenden und für die Serie den kleinsten in den das Design passt was zum Zeitpunkt des Hardwareentwurfs in der Regel noch nicht abschätzbar ist.
Das erklärt so einiges. Dann werde ich mal ein paar neue Bitfiles erzeugen :) Danke für die Hilfe!
OK. Habe ein neues Bitfile erzeugt - trotzdem tut es der 016er nicht. Es sind mehrere Kriterien die unabhängig voneinander nicht laufen. So arbeitet eine PLL offenbar nicht (aus dem entsprechenden Ausgangspin kommt NICHTS raus), ein davon unabhängiges I2C (Slave) Handshaking funktioniert nicht, und ein I2C (Master) das einfach ein paar Bytes an einen Chip senden soll bleibt mucksmäuschenstill. Ich mache so eine Migration zum ersten Mal - deswegen habe ich NULL Erfahrung damit. Ich bekomme beim Kompilieren diverse Warnings - die sind aber beim 010er und 016er identisch. Ich könnte sie durch entsprechende Einträge im .sdc-File auch unterdrücken - es ist nichts kritisches bzw. funktionsbeeinträchtigendes. Gibt es zu der Problematik "Vertikalmigration" irgendwo ein HowTo / Tutorial / Hinweise im Web?
Wenn du die Vermutung hast, dass da tatsächlich ein Defekt ist, dann baue ein Minimaldesign das alle IOs toggelt. Einen Zähler und jedes Bit auf einen IO oder so. Sonst kann ich nur was zu Xilinx sagen: Wenn ein Design auf einem anderen FPGA laufen soll, dann muss die Pinzuordnung passen, die benötigten Ressourcen müssen im FPGA vorhanden sein und das Timing muss geschafft werden. Wenn ich hier also vom kleinen Artix zum großen Artix migriere nehme ich ein anderes .xdc File für die Pinzuordnung und dann lasse ich die Synthese und alles neu durchlaufen bis zum Bitstream. Funktioniert prächtig.
Hallo Gustl, das wird vermutlich der Weg sein den ich gehen muss. Ich habe alle Pins, die beim "größten" (dem 025er) eben keine I/Os mehr sind sondern GNDs oder VCCs bereits im Layout so berücksichtigt. Beim 010er habe ich dadurch ca. 10 I/Os weniger - aber da mangelt es in dem Projekt sowieso nicht. Auf jeden Fall sollte die PCB daher von Seiten der Spannungsversorgung zu allen kompatibel sein. Die leichten Unterschiede / Inkompatibilitäten bei den I/Os habe ich mir durch Quartus anzeigen lassen (Migrationshilfe...) und die I/Os entsprechend so gewählt dass auch das vom 010er über den 016er bis hin zum 025er klappen sollte. Ich habe das Projekt nicht komplett selbst entwickelt, ich habe es geforkt. Der Original FPGA Code war für den 010er geschrieben. Meine Änderungen in eingen I/O-Zuweisungen (notwendig wegen der Inkompatibilitäten) laufen auf dem 010er auch völlig problemlos. Nur der nächst größere zickt rum - und das auf zwei verschiedenen Boards in gleicher Weise. Lötfehler sind zwar nach wie vor nicht ausgeschlossen, aber dieses identische Verhalten legt für mich einen Denkfehler in der Codeanpassung näher als einen Lötfehler.
Andreas R. schrieb: > Nur der nächst größere > zickt rum - und das auf zwei verschiedenen Boards in gleicher Weise. Und da wären die Warnungen interessant.
Die Warnungen sind angeblich fehlende Clockzuweisungen bei DSP Prozessen, Glitches bei einer PLL und "stucked Pins". Die stucked Pins stimmen - das sind Pins die ich zum Debuggen nehme und die aktuell auf GND definiert sind. Die fehlenden Clockzuweisungen können nicht stimmen - denn die DSP-Prozesse funktionieren einwandfrei. Die Glitches sind entweder nicht störend oder ebenfalls nicht da - im 010er läuft alles einwandfrei. Und die Warnings sind bei beiden FPGAs identisch. Ich glaube daher nicht dass das Problem dort zu suchen ist.
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.