Intel® Quartus® Prime Software
Intel® Quartus® Prime Design Software, Design Entry, Synthesis, Simulation, Verification, Timing Analysis, System Design (Platform Designer, formerly Qsys)
Intel Support hours are Monday-Fridays, 8am-5pm PST, except Holidays. Thanks to our community members who provide support during our down time or before we get to your questions. We appreciate you!

Need Forum Guidance? Click here
Search our FPGA Knowledge Articles here.
15340 Discussions

Is it possible to program a Cyclone 10 LP FPGA evaluation kit using a RPI?


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

0 Kudos
4 Replies

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.




New Contributor I

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));






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: 


I hope can enjoy it.
Carlos Palmero.


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,