Configuration an FPGA on installation

configurationfpgavirtex-series-fpga

I am working on a project using a Virtex-5 FPGA. The small projects that I've worked on with FPGAs has only required me to program the FPGAs on development boards using JTAG or loading the bit file onto the FPGA. However, I have a newly designed board using an FPGA which I don't believe has even been powered on yet.

I was doing a bit of reading about the FPGA requiring to be configured and was also reading the Configuration guide which talks about the internal memory being written with the configuration data. I don't know if I've missed something or if Xilinx ISE automatically does that when I program the FPGA with it. Can someone shed any additional light on this ?

Thanks!

Best Answer

The FPGA configuration itself is stored in SRAM (i.e. flip-flops). A newly started FPGA has an empty configuration where typically all pins are in a somewhat idle state (e.g. weak pull-up), and clocks are not forwarded inside the FPGA, so no activity takes place.

From that state, either the FPGA boots actively by accessing an external device (usually, flash memory), or waits until it is configured by external circuitry. Which road is taken usually depends on some resistors on some pins.

The internal block memory can also, but need not, be initialized from configuration data.

Shiny new boards are programmed like all others, by attaching to JTAG and either writing a configuration to the chip, or by poking the chip into writing to flash and subsequently triggering a reconfiguration so the data is loaded.