01-01-2019 07:13 AM
I am using the Artix 7 FPGA with No RAM attached to it.
The FPGA is configured using Micron quad SPI flash.
The FPGA is connected to external CPU with 16 bit parallel peripheral bus (with read/write/Cs/address )
My purpose is to be able to update the firmware in the configuration nor flash at customer site, using multi boot.
As a start I need your help to decide what is the best/fastest way to do that (without the multi boot just single boot).
Since I cannot use the micro blaze, since there is no external memory and the current utilization is ~60% I thought of the following scheme:
To write Parallel-to-AXI block plus buffer plus control registers code in which the CPU will write chunks of the BIT file to the buffer, an internal block of control will take the buffer content and burn it in the appropriate location using existing IP (AXI_Quad_SPI) to the configuration flash.
Do you have better Idea to implement this?
Can you please refer me to known IPs or Documents that can be helpful?
01-01-2019 05:04 PM
I have written something very similar to what you describe.
Using only a serial port, as opposed to the parallel port you describe, I can write data to an Artix-7 FPGA (Digilent's Arty-A7 design). The serial port goes into a serial to wishbone bridge. From that bridge I can then write to the flash. Once the write to the flash is complete, I can then use the ICAPE2 port to restart the FPGA into whichever configuration I wish to place it into using the warm boot register startup WBSTAR. Later, reading from the ICAPE2 port, I can determine whether or not the new configuration succeeded successfully.
You can find the code to do this within my OpenArty project on github. Particular files to draw your attention to are the micron flash controller, eqspiflash.v, the ICAPE2 controller, wbicapetwo.v, and software flash driver, flashdrvr.cpp, and the flash simulation, qspiflash.cpp.
You should be able to simulate the entire operation with those files to make certain of your success before you actually deploy your idea--if you find them valuable to you.
06-22-2020 06:11 AM
hey! U're firmware is really good! i'm trying to do the exact same thing in vhdl..the flash simulation file is not working..Would you please reload it or just explain the general principle? i'd be so graaaaateful