Configuring DE0-Nano EPCS64 flash device.

Similar to most of the FPGA devices available in the market today, the DE0-Nano also uses SRAM cells to store the configuration data it requires to operate correctly. Since SRAM is a volatile memory it will lose all the data once we power down the device. So whenever we power up the device it will read the configuration data from some other non-volatile memory element and reprogram the FPGA fabric.

DE0-Nano has a flash device named as EPCS64. It has 64Mbits capacity. This blog post will teach you how to program the EPCS64 flash device so that you can save your program in the chip indefinitely (theoretically).

  • Generate the .sof file by compiling your program.
  • Goto File > Convert Programming Files
  • Under ‘output programming file’, select ‘JTAG indirect configuration file’ as the programming file type.’
  • Select ‘EPCS64’ as the configuration device.
  • Give a file name and path.
  • Under ‘Input files to convert’ click on ‘Flash loader’.
  • Then click on ‘Add device’ button at the right side of the window.
  • Select ‘EP4CE22’ under ‘Cyclone IV E’ and click ‘ok’.
  • Under ‘Input files to convert’ click on ‘SOF data’.
  • Then click on ‘Add file’ button at the right side of the window.
  • Select you generated ‘.sof’ file which is generally it is located in the ‘output_files’ folder.
  • Finally click on generate button.


Now you need to program the device using that file. For that,

  • Click on ‘Tools’ > ‘Programmer’
  • Clear the already added files by selecting them and clicking on ‘Delete’ button at the left side of the window.
  • Click on ‘Add file’
  • Select the ‘.jic’ file you created.
  • Click on the check box under ‘Program / Configure’.
  • Click on ‘Start’
  • Finally give your board a Hardware reset by removing the usb and connecting it back.


Now your EPCS64 is successfully configured and you can see that when you power up the device you no longer see the default program but you see your program in it.

Thank you.


  1. Hi, I am also using DE0 Nano board. As the software size in my project is big, I cannot use the small C library. So I need to use SDRAM instead of the on chip memory.

    At present, I was successful to program the EPCS device. So the configuration (hardware) is loaded into the board every time the power is ON. However, I am still not successful to make the software bootable.

    ์Now I doubt that whether the EPCS and SDRAM can be used together on the DE0 Nano board to make both hardware and software bootable.

    1. Hello yossiri,

      I’m sorry for replying to this after one month may be. What is your application? You are talking about hardware and software. I am a bit confused. Can you give me more information to check this issue.

      Thank you.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s