- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I was looking for a way to ease our life, when setting up our development system that contains a Raspberry PI3 and Cyclone 10 LP development board. The final step in the process is to program the FPGA with a specific binary. RPI gets its own application from source control and could get the FPGA binary, but programming the FPGA needs an other PC and the Quartus tool set. Is there a way how I can program the FPGA using the RPI?
Just to clarify, I don't intend to run the whole Quartus tool set on the RPI. I tried looking for ways to communicate to the FPGA via USB Blaster for example and in the end get the EPC memory updated, but didn't find any solution so far.
Thanks and Br,
// Tibor
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Tibweb,
You may use Jrunner software created by Intel PSG to program FPGA using an embedded. You will need to create a FPGA design and generate .rbf programming file in order to use this.
You may also refer to the application note at link below for more information about jrunner software.
https://www.intel.com/content/dam/www/programmable/us/en/pdfs/literature/an/an414.pdf
Regards,
YL
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
if you have some GPIOs left, it's only a few lines of C to program the FPGA with a .rbf from there with any µC:
GPIO &= ~FPGA_CLOCK; /* FPGA clock => low */
/* pulling FPGA_CONFIG to low resets the FPGA */
GPIO &= ~FPGA_CONFIG; /* FPGA config => low */
wait(10); /* give it some time to do its reset stuff */
while ((GPIO & FPGA_STATUS) && (GPIO & FPGA_CONF_DONE));
GPIO |= FPGA_CONFIG; /* pull FPGA_CONFIG high to start config cycle */
while (!(GPIO & FPGA_STATUS))
; /* wait until status becomes high */
fpga_data = (uint8_t *) FPGA_FLASH_DATA;
do
{
uint8_t value = *fpga_data++;
for (i = 0; i < 8; i++, value >>= 1)
{
if (value & 1)
{
/* bit set -> toggle DATA0 to high */
GPIO |= FPGA_DATA0;
}
else
{
/* bit is cleared -> toggle DATA0 to low */
GPIO &= ~FPGA_DATA0;
}
/* toggle DCLK -> FPGA reads the bit */
GPIO |= FPGA_CLOCK;
GPIO &= ~FPGA_CLOCK;
}
} while ((!(GPIO & FPGA_CONF_DONE)) && (fpga_data < fpga_flash_data_end));
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hello,
I had the same problem than you and i didnt find anything about that. Just I found program with SVF using openocd or urjtag program, so I search and found one that do that with a stm32.
I port code to linux using wiringpi and i got it, i can program a cyclone 10 with rbf file with gpio ports of rpi really fast.
You can get / check code here:
https://github.com/shaeon/programrbf
I hope can enjoy it.
Carlos Palmero.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I forgot tell you that must work in Cyclone II (you need enable one line for header), Cyclone III, Cyclone IV and Cyclone V.
So I think can be good tool / program for use it also change anything, source code its there.
Best Regards,
Carlos.

- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page