Community
cancel
Showing results for 
Search instead for 
Did you mean: 
tibweb
Beginner
1,273 Views

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
YuanLi_S_Intel
Employee
144 Views

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.

https://www.intel.com/content/www/us/en/programmable/support/support-resources/download/legacy/jrunn...

 

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

mfro
New Contributor I
144 Views

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

 

 

CarlosPalmero
Beginner
65 Views

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.

CarlosPalmero
Beginner
38 Views

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.

Reply