Hallo zusammen, ich habe bei einem aktuellen Projekt ein kleines Problem und wollte mal Fragen ob mir hier vielleicht jemand helfen kann. Und zwar soll ich einen kleinen Spartan 6 (XC6SLX9) über zwei differentielle Leitungen mit einem größeren Spartan 6 (XC6SLX45) programmieren können. Auf dem Board mit dem 9er Spartan wird es später einen kleinen Speicher geben in dem ein paar Sachen wie z.B. HW Version, SW Version, Bestückunsvariante und ähnliches abgelegt wird. Also würde ich gerne das Bit-File in dieses laden um später nicht bei jedem PowerOn das Bit-File übertragen zu müssen. Die Art des Speichers ist derzeit noch frei wählbar.) Falls es etwas zur Sache tut, es wird sehr wahrscheinlich auch ein pB oder uB auf dem 9er Spartan laufen und auf dem 45er Spartan läuft ein uB mit Linux. Um zu schauen ob es funktioniert habe ich ein SP605 und ein LX9 Board von Silica bekommen. Aber leider fehlt mir noch die richtige Idee um dies zu realisieren. Die einzigste Idee die ich bis jetzt hatte, ist eine direkte Programmierung des 9er Spartans ähnlich der Slave Serial Configuration (in UG380 beschrieben), jedoch fehlt mir dann die PROGRAM_B Leitung um den FPGA neu zu laden. (Oder kann man auch das PROGRAM_B intern im uB / pB auslösen)? Aber vielleicht hat jemand auch eine ganz andere Idee wie man es machen kann. Ich freue mich schon auf eure Ideen... Gruß Boris
Hm, das wird schwierig. Wenn du keinen Flash (SPI oder BPI) am Ziel-Spartan vorsiehst, hast du da keine Chance. Slave Serial braucht 4 Leitungen (PROG_B, INIT_B, CCLK, DIN) Du kannst einen leeren Spartan nur über die entsprechenden Xilinx-Methoden programmieren, und 2 Leitungen reichen da nicht. Und differenziell auch nicht, das müsstest du vorher wieder nach single ended wandeln. Du kannst aber einen SPI Flash vorsehen, der quasi einen Bootloader enthält und dann über ein Protokoll deiner Wahl den SPI Flash von Ziel-Spartan aus neu beschreiben. Nach der Konfig sind alle Flash-Anschlüsse frei verfügbar. Beim Spartan 6 kannst du auch intern ein Reprog auslösen, wenn ich mich recht erinnere. Sinnvollerweise nimmt man dann einen Flash, in den der Bitstream 2 mal rein passt, denn der S6 kann Multiboot mit Fallback und Watchdog. Wenn beim Update was passiert, startet der immer noch mit dem Image an Adresse 0, das sollte man natürlich nicht überschreiben. Im Flash hast du dann auch noch genügend Platz für deine Board-Daten.
Hallo Christian, vielen Dank für deine schnelle Antwort. Die INIT_B Leitung hatte ich ja total vergessen. Ich mache mir mal Gedanken über deine Idee mit dem Bootloader. (Da hätte ich ja auch selbst drauf kommen können.) Und schaue ob ich das mit meinen zwei Boards hier aufbauen kann, bzw. ob ich dann noch alles im 9er Spartan unter bekomme. Gruß Boris
Naja, einen Flash zum Booten vorzusehen, ist nie verkehrt. Sonst musst du zwangläufig bei jedem Power-On den FPGA betanken. Und ein kleiner SPI-Core frisst ja nicht die Welt an FlipFlops.
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.