Forum: FPGA, VHDL & Co. Xilinx Spartan 6 programmieren


von Boris M. (borism)


Lesenswert?

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

von Christian R. (supachris)


Lesenswert?

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.

von Boris M. (borism)


Lesenswert?

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

von Christian R. (supachris)


Lesenswert?

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