Forum Discussion

ACoff2's avatar
ACoff2
Icon for New Contributor rankNew Contributor
6 years ago

How to read/write to external memory NOR Flash IC (S29GL128P) from NIOS-II.

Hardware Setup

DVK600 (https://www.waveshare.com/dvk600.htm)

CoreEP4CE10 (https://www.waveshare.com/wiki/CoreEP4CE10)

NOR Flash Board B (https://www.waveshare.com/norflash-board-b.htm)

Software

Quartus prime 18.1

Device family Cyclone IV E

Details

I am new to Quartus prime and Platform Designer. I have a basis project setup with platform designer. I have included a NIOS II core, some onchip memory and a jtag_uart. I have a basic demo of "hello world" from the NIOS working.

I'd now like to add some external memory to my system, a NOR flash IC (S29GL128P). I want to use platform designer to setup this device and connect it to the NIOS. I assume that I need to use some IP which has an Avalon interface to connect the flash IC to the NIOS memory mapped master. To be clear, I don't want to use the external flash to program configuration data into a flash memory device, instead I want to use it as general memory for Read/Write.

I was hoping there would be a generic parallel flash memory, mapped Avalon interface that I could hook up to? Or do I need to roll my own.

2 Replies

  • ACoff2's avatar
    ACoff2
    Icon for New Contributor rankNew Contributor

    I figured this out, so here is a solution I hope will help someone else.

    There is indeed a generic common flash interface (CFI) IP in platform designer. One just needs to know where to look for it.

    Expand the Qsys Interconnect category, Tri-State Components sub-category and add Generic Tri-State Controller block. Double-click the Flash Memory Interface (CFI) preset. You then need to fill out the details related to your specific IC, check the datasheet.

    There is a caveat here, the output of the Generic Tri-State Controller block is of Tristate Conduit type and it is not suited for direct connection to the flash memory chip pins. A Tri-State Conduit Bridge block (can be found right under the Generic Tri-State Controller block) is required to create the appropriate external connection.

    Don't forget to setup your pins

  • Ahmed_H_Intel1's avatar
    Ahmed_H_Intel1
    Icon for Frequent Contributor rankFrequent Contributor

    Thanks a lot for your answer and hard work to find the root cause of the issue.