3
\$\begingroup\$

I am currently working on a system with a Spartan-6 FPGA and have a need for some low volumes of non-volatile memory to be used during system operation.

My question is, since I have a relatively large (25Mbit) flash memory already on board storing configuration data, can I effectively partition a block to be used for general purpose memory during operation? It would seem silly to add duplicate hardware for such small amounts of memory.

Memory size is not an issue as I know the configuration data does not fill the flash (leaving more than enough memory that would be required during operation < 3Mbit).

Has anyone ever done something similar to this?

Thanks!

\$\endgroup\$
  • \$\begingroup\$ I'm planning to do something similar: add board identification data somewhere after the FPGA configuration. I plan to write-protect that sector of the Flash too. By the way, what Flash chip are you planning to use? \$\endgroup\$ – Nick Alexeev Oct 16 '17 at 21:47
3
\$\begingroup\$

If you are using the FPGA with an industry standard type of SPI Flash chip then it is possible to use the SPI Flash chip in the way that you describe. The way to do this with the most user control is to put a small MUX Chip between the FPGA and the SPI Flash chip in the path of the SPI Flash control signals. The other side of the MUX is then connected to alternate user activated pins to support an alternate SPI interface to the SPI Flash chip. You would then program your own interface into the SPI device to access as desired.

On the other hand Xilinx has a detailed App Note that shows how this can be done in a more generic way without the added MUX. See http://www.xilinx.com/support/documentation/application_notes/xapp694.pdf.

A more directed document for the Spartan 6 FPGA family is here: https://www.xilinx.com/support/documentation/user_guides/ug380.pdf

\$\endgroup\$
  • \$\begingroup\$ Great, it looks like this is something that is actually supported by Xilinx, this makes things a lot easier to figure out. Thanks for pointing me in the right direction. \$\endgroup\$ – this_is_not_a_test Jan 25 '17 at 15:37

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.