Electronic – FPGA – DIY Programming

fpgaprogrammingspi

I've been programming microcontrollers for a few years now, and I've just discovered FPGA's after taking a digital design class. After doing some research into different FPGA's, development boards, etc, I'm still hesitant to buy any because I wouldn't know how to make my own version of the final "product." I've put PIC's, SAM's, AVR's, etc. on to custom PCB's with no issue, so I'm not worried about that–my main concern is programming an FPGA without a manufacturer's board.

My specific question: Would an FPGA function if I took the bitmap file generated by Quartus, Vivado, iCEcube, etc, wrote it to an SPI flash memory chip beginning at address 0 (say, via an FT2232H), and connected the flash memory to the SPI pins of an FPGA (with the MODE config set properly)?

I apologize for the partial hypothetical; I'm fairly sure that's all Lattice's Diamond Programmer does, but I wondered if that approach would work for FPGA's from different manufacturers, or whether say, Quartus added additional "window dressing" or headers to the memory while writing it.

Let me know if there's anything I can do to improve/clarify the question, or if I'm missing a big point in the FPGA programming process. Thanks!

Best Answer

Yes, it would work just fine.

Actually, the development tools for most FPGAs allow you to program the external flash directly through the FPGA's own JTAG connection, eliminating the need for a separate programming interface for the flash.