1
\$\begingroup\$

FPGA configuration data must be stored in external non-volatile memory. Can we use just any flash memory or only specific types? What about EEPROMs or any other nonvolatile memory device?

Edit: I am referring to active configuration where the FPGA configures itself, by itself, without support of an external device like a microcontroller or microprocessor.

\$\endgroup\$
3
\$\begingroup\$

You can use any types you like, as long as you provide some circuit that can read the memory and then control the FPGAs configuration interface in an appropriate way to configure the device according to the data in the memory.

For example, a microcontroller could read the flash and send it to the FPGA on its serial or parallel configuration interface.

Or a PC could store the configuration on a hard disk, and send it to a circuit on the PCB with the FPGA, which delivers the data to the FPGA's configuration interface.

The FPGA may also have a built in state machine that can read memory with a specified interface directly, eliminating the need for an external micro or CPLD to operate the configuration interface. The requirements on the flash interface for the FPGA to do this will be spelled out in the documentation for the FPGA. (For Xilinx, there will be a document called the Configuration Guide, but Intel might have a different name for this document or combine it in a general Users Guide).

\$\endgroup\$
  • \$\begingroup\$ Yes, the question was meant for active configuration where the FPGA on its own, configures itself. I shall change the question. \$\endgroup\$ – quantum231 Dec 16 '18 at 17:32
  • \$\begingroup\$ @quantum231 The last paragraph of this answer addresses this case. \$\endgroup\$ – DoxyLover Dec 16 '18 at 19:32
2
\$\begingroup\$

I recently experimented with exactly this stuff. My design uses EPCS16, and I upgraded it to W25Q128FV. It works, but you should know limitations:

  1. Command set must be compatible with EPCS devices. Actually EPCS16 appears to be manufactured by GigaDevice (manufacturer code 0xc8);
  2. "Stacked die" devices are claimed as not working for configuration. I can not comment on it as did not use such serial flash devices, but you must keep it in mind. If you decide to use such, further investigation will be needed;
  3. FPGA will not configure from non-EPCS device if you do not disable checking for silicon ID when making POF file using programming file converter in Quartus software;
  4. As far as I experienced, Quartus refuses to flash non-EPCS devices with its Quartus programmer in AS mode. I used versions 12 and 13, probably newer versions do allow this (I use BB II, thus forced to use older versions of Quartus software);
  5. Standard ASMI IP does not allow reading manufacturer ID and bits ID[15:8] from the flash device. Silicon ID and capacity ID are only available. Of course it is possible to modify ASMI module design;
  6. Last, but very important: reference circuit for EPCS requires some non-power pins - WP and HOLD - connecting to the Vcc. They confirmed it here. If you are going to replace chip with non-Altera one working in x1 mode, you must use 10K resistor pull-ups instead of connecting these pins to Vcc directly.
\$\endgroup\$
  • \$\begingroup\$ What exactly is it that makes other flash memories incompatible? As far as I am aware, flash memories requires commands to be sent to them to read/write data, data is stored in sectors, there are some special features like read manufacturer ID e.t.c. But really, what makes EPCS the only "fully supported" flash? \$\endgroup\$ – quantum231 Dec 18 '18 at 20:16
  • 1
    \$\begingroup\$ Business model. E.g. if you are manufacturer, you can certify specific devices for your appliances. These devices can be yours, or third party. Of course if you do not certify 3rd parties, all customers are locked to buy your devices. I think Altera/Intel started to relax this changing business model a little allowing using 3rd party flash chips. I would call their state of mind as "hesitant", but not completely against. Of course there could be technically incompatible devices - with different command set and protocol. Just compare to EPCS datasheet to get an understanding if device fits. \$\endgroup\$ – Anonymous Dec 18 '18 at 21:16

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.