Spartan6 - inladen programma

Eduard2

Golden Member

Beste forumleden,

Waar vind ik informatie over het inladen van het programma in een Spartan6 FPGA ? Ik vraag me af of een Raspberry pi kan worden gebruikt om de *.bin file in de FPGA te laden. In mijn toepassing werken de RPI en de FPGA samen. De FPGA staat op een Mojo boardje. Het programma werd permanent geladen in het flash geheugen van de Mojo.

In essentie wil ik uitvissen of het haalbaar is een eigen FPGA printje te bouwen dat past boven de RPI. Is het zinvol een C-taal programma te schrijven dat bij opstart van de RPI de *.bin file inleest en naar de FPGA doorstuurt ?

Graag uw advies.

Vriendelijke groeten,

Eduard

Uiteraard kan dat. Op jouw boardje staat de fpga nu waarschijnlijk in een startup mode waarbij ie zichzelf uit de flash gaat laden. Er zijn ook modes waarbij iets anders de master is en daarbij het initiatief neemt. De fpga is dan slave. "Slave serial" is zo'n mode.
Even snel gegoogled, XAPP583 geeft je denk ik alles wat je moet weten. Maar het was maar 10 seconden zoeken, dus er is vast meer info te vinden.

PS, toch nog even over je woordgebruik "inladen programma". Een FPGA bevat geen programma. De sourcecode is ook geen programma. Het is geen software. Er zit een configuratie in en je source is de hardware beschrijving, of HDL.

[Bericht gewijzigd door flipflop op zondag 7 juli 2019 11:23:53 (22%)

"We cannot solve our problems with the same thinking we used when we created them" - Albert Einstein
Eduard2

Golden Member

Bedankt flipflop,

Voor mij is FPGA nieuw. Vandaar de foutieve woordkeuze. Op internet zoeken naar "FPGA config" geeft direct meer resultaat.

Ik las dat info kan worden opgehaald via ISE/help/Xilinx on the web. Bij mij geeft dat menu geen reactie. Zijn die diensten gesloten voor de gebruikers met de free licentie ? Via uw link vond ik ook een aantal youtube filmpjes over de configuratie.

Vriendelijke groeten,

Eduard

[Bericht gewijzigd door Eduard2 op zondag 7 juli 2019 16:35:15 (55%)

Op 7 juli 2019 11:08:38 schreef Eduard2:
In essentie wil ik uitvissen of het haalbaar is een eigen FPGA printje te bouwen dat past boven de RPI.

Als je geen grote FPGA nodig bent (of hangt aan Xilinx), kun je dat ook kopen. Wel zo makkelijk. :) En misschien zijn nog wel soortgelijke boards te vinden met grotere FPGA's er op (al dan niet Spartan-6).

Is het zinvol een C-taal programma te schrijven dat bij opstart van de RPI de *.bin file inleest en naar de FPGA doorstuurt ?

Hangt af hoe vaak je een andere configuratie voor de FPGA gebruikt. Als je steeds dezelfde FPGA configuratie gebruikt, is het makkelijker die in een configuratie flash te stoppen. FPGA doet dan zelf 't werk bij power-up.

Als je steeds heel verschillende toepassingen hebt, ja dan is configuratie 'vanaf extern' er in stoppen misschien wel zo handig. Zeker bij ontwikkelen ervan.

Op 7 juli 2019 11:20:54 schreef flipflop:
Een FPGA bevat geen programma.

Klopt.

Het is geen software.

Dat dan weer wél. :D Niet in de zin van een programma wat uitgevoerd wordt. Maar op een andere manier. Vergelijk een beetje met HTML: zoals HTML beschrijft hoe een webpagina er uit moet zien, beschrijft Verilog of VHDL wat de logica in een FPGA moet doen. Ontwikkelsoftware zet dat om in een configuratie bestand (een "binary blob"), die ge-upload 'de FPGA poortjes in de juiste stand zet'. Vervolgens is het echt hardware werk wat binnen de FPGA gebeurt, geen "programma runnen" (tenzij er soft CPU cores aan te pas komen of FPGA met ingebouwde ARM cpu oid., maar laten we het niet ingewikkelder maken dan nodig :p ).

Die help zit ook wel in het webpack denk ik. Misschien heb je het niet mee-geïnstalleerd. Googlen of direct op de Xilinx website zoeken die ik meestal.
Heb je al gezocht op de combi Xilinx en C-code? Het lijkt me stug dat zo'n config routine nog niet te vinden is.

"We cannot solve our problems with the same thinking we used when we created them" - Albert Einstein

Google eens op XAPP058. En "Serial Vector Format" (SVF). XSVF is een compacte binaire versie daarvan.

Durf niet met zekerheid te zeggen of dat ook voor Spartan-6 familie van toepassing is, maar vermoed van wel. Genoemde appnote gaat over een vrij generiek XSVF -> JTAG gebeuren. Uit te voeren door een simpele cpu/µC als Arduino, PIC etc.

Edit: nog een interessante link gevonden: pi3j The Raspberry Pi JTAG programmer

[Bericht gewijzigd door RetroTechie op zondag 7 juli 2019 21:46:41 (17%)

Waarom wil je zo nodig via jtag? De Xilinx-en hebben naast jtag ook dedicated pinnen waarlangs je kunt programmeren. Als je vanuit de .bin file gaat is dat nagenoeg doorsturen van die file-inhoud. Details weet ik zo niet uit m'n hoofd, maar zo simpel moet het zijn.

En @retro: dat jij het toch software wilt noemen... tja, misschien moeten we die discussie hier maar niet aangaan. Ik blijf bij m'n stelling hierboven.

"We cannot solve our problems with the same thinking we used when we created them" - Albert Einstein
Eduard2

Golden Member

Beste forumleden,

Ik wil iedereen bedanken die informatie aanleverde. Uiteindelijk heb ik in het Xilinx document ug380 een schakeling gevonden die serieel vanaf een microprocessor de Xilinx FPGA laadt. 4 draden volstaan om vanuit een Raspberry pi de FPGA te vullen: een 50 MHz systeemklok, een SPI klok, SPI MOSI en Program_B.

De gebouwde schakeling is een vereenvoudigde versie van het schema op blz 28 van ug380. Als 1 byte telegrams worden te laden bytes stuk voor stuk doorgestuurd. Met enkele lijntjes C code op de Raspberry werkt het prima.

Vriendelijke groeten,

Eduard