We can buy prototype board to program FPGA very easily. And we can also buy single FPGA to program. But I don't know any board to program multiple time a FPGA. I guess that whenever you want to program several FPGA, a special programming board has to be used, where you can easily replace the FPGA by another with some kind of slot. Am I wrong? And is that board FPGA specific?
An FPGA (aside from some specialty products) doesn't store its configuration after power is removed. It must be re-programmed every time it is powered up.
Most FPGAs include dedicated logic to connect to an EEPROM on the same board and automatically configure the FPGA from data stored on the EEPROM after each power up. If you use this kind of FPGA, your problem is now how to program a bunch of EEPROMS to be stuffed on the boards with your FPGAs.
For this, gang programmers are certainly available. You can also pay a service company to program your EEPROMs for you.
But they might not be economical if your production volume is less than 100 units or so. Instead, you can use the regular in-circuit programming facility of your FPGA to program it to a design that routes signals from the in-circuit programmer through the FPGA to program the EEPROM. The major FPGA vendors build this capability in to their in-circuit programming tools so you might not even be aware that this is what you're doing.
The previous answer is correct (The Photon) for solutions that typically have only FPGAs on the board.
If you already have an MCU on your board you can load the FPGAs from that processor.
Read this from Xilinx on configuration (others are very similar).
Read this on Altera FPGA configuration loading.
Typically when you load from a serial EEProm this is handled by the FPGA itsel, and as pointed out you just need to program the EEProms so the FPGA can be permanently installed on the PCB.
The other methods are much more flexible and typically include:
- A serial option such as SPI or I2C
- A JTAG option with multiple FPGAs addressable (many times this may include a JTAG header on the board for manual upgrade, but it can be driven from an MCU.
- A parallel option which looks like a RAM chip.
The parallel option is often used where the functions in the FPGA are dynamically changed during operation.
To expand on @crj11 s answer, all you need to do is provide a JTAG interface, which is a tiny little 10-pin connector, hooked up to the appropriate pins on the FPGA. After the board is assembled, you connect the JTAG and program the FPGA. And you can do this repeatedly to the same FPGA, so upgrades and bug fixes are straightforward.
Am I wrong? And is that board FPGA specific?
The largest company I know that does "gang programmers" for the last 40 years or so is DataI/O . They have adapters for every chip size and software for all chips bundled in one package and charge an annual update fee for their libraries. They don't do cheap a dirty single chip gang programmer cards. But someone else might.
They have the most popular machine, and ones for high production run rates. Not cheap, but good.
When large board shops have high production rates they use Data I/O equipment that supports.
- Up to 2000 parts per hour (with tray, tape and tube, even with large file sizes)
- 2 pick & place heads
- SSD for fast download
- Optimized algorithms
Normally you program a serial Flash chip for a voltatile FPGA but there are some interesting flash + Cortext FPGA SoC's out now. https://www.microsemi.com/product-directory/fpgas/1690-proasic3#proasic3-e
What we often do if we have production lots that are larger than a several dozen pieces is, we create a needle board for incurcuit testing that also has contacts to the flash interface. This way we can directly integrate the programming process into the testing sequence.