I am in the process of selecting FPGA device for the product I am desingning. Product is a data acquisition system that collects data from ADCs and sends it to an host computer via USB interface. FPGA will be used to interface with ADCs and processing ADC data. Another microcontroller(FTDI microncontroller) will be responsible with sending data to computer via USB.
My problem is I want to configure FPGA over USB with the help of the microcontroller on the board. I can load the initial program to FPGA with any interface when the product is in production. However, I'd like to know if it's possible to reconfigure the FPGA over USB once the product is delivered to the customers (firmware update).
Which FPGAs are suitable for this type of application?
Thanks in advance.
The majority of the intel FPGA's support NIOS2. With this technology you can implement a micro-processor & ram in the FPGA fabric.
The Nios2 configuration & fpga configuration can be stored in an eprom.
The nice thing about this configuration is that you can use the processor to reconfigure the eprom while it is operating hence doing a firmware upgrade.
USB can be realised with a cypress processor.
Should you be interested in a board that has all the hardware you need to do a feasability test for your job (ADC + EPROM + FPGA + USB controller) look at the Terasic site (DE10-standard / DE2-115)
I know that this answer does not include the use of the FTDI microcoltroller, but it could be a way to get you started.
Thanks for your answer Johi.
In my application I need hi-speed USB and DAC and FT93xx microcontrollers have these, and therefore I am going to have this microcontroller in the board. It would be really nice to be able to update FPGA configuration through USB using the microcontroller on board.
I want to know how difficult it is to program the FPGA over microcontroller. Can an FPGA be simply reconfigured via a serial interface such as I2C or SPI?
For some reason I can't use NIOS II processor I get errors no one can seem to solve. Link to the error: https://forums.intel.com/s/question/0D50P00004DAgF9SAL/another-sldhub-error
Thanks for your response.
I am quite new to FPGA design, forgive me if I ask something stupid. Take it easy on me.
I am going to be using cyclone 10 LP series FPGA. I've been reading the handbook to learn more about configuration (Chapter 6). It's my understanding that there are two main ways to program/configure a cyclone 10 LP FPGA I can either use configuration pins or JTAG pins. In figure.88 it shows a diagram of a microcontroller with a flash memory programming an FPGA, I want to implement something like this. Is it too difficult? Another example is figure 97, it is very similar to the last example. It's just a microcontroller controlling a flash memory and configuring the FPGA.
My plan is kind of like this: first, I generate the bitstream file required for FPGA configuration, send it via USB to microcontroller, have microcontroller put the bit stream to flash memory and configure the FPGA using one of two ways that I explained above.
Is that a reasonable approach?
Thank you for your response.
I have one more question. When using one of these methods, do I have to use special FPGA PROM such as ECPQ proms, or should I use regular EEPROM?