Nios® V/II Embedded Design Suite (EDS)
Support for Embedded Development Tools, Processors (SoCs and Nios® V/II processor), Embedded Development Suites (EDSs), Boot and Configuration, Operating Systems, C and C++
12612 Discussions

Implementing external RAM in Nios SOPC builder

Honored Contributor II



I have the fpga module EP2C8Q208C8N, and try to make a SOPC module. I've succesfully made it several times on other hardware, but in this case I cannot place any more than about 4kB on-chip memory. In fact the board contain addiotional memory, which I would like to usue insted of on-chip memory, but I don't know how to implement it in SOPC builder. 


Looking into documentation, I have the 23K640, "64K SPI Bus Low-Power Serial SRAM"  




CY7C1041CV33, "4-Mbit (256K x 16) Static RAM" 


Anybody could tell me, how to use it in SOPC builder? 


I would be very glad for any help or clue,  

best regards,  


0 Kudos
1 Reply
Honored Contributor II


If you're using Qsys, you can try the "Generic tristate controller", and adjust it with the parameters of your memory looking on its datasheet not forgetting to define it as a "memory device". 

For earlier versions and without a generic controller, you should write your own wrapping into SOPC. That means that you write a verilog or VHDL file that maps the memory pins into the avalon bus, it's something like this 

module SRAM_16Bit_512K(// Host Data oDATA,iDATA,iADDR, iWE_N,iOE_N, iCE_N,iCLK, iBE_N, // SRAM SRAM_DQ, SRAM_ADDR, SRAM_UB_N, SRAM_LB_N, SRAM_WE_N, SRAM_CE_N, SRAM_OE_N ); // Host Side input iDATA; output oDATA; input iADDR; input iWE_N,iOE_N; input iCE_N,iCLK; input iBE_N; // SRAM Side inout SRAM_DQ; output SRAM_ADDR; output SRAM_UB_N, SRAM_LB_N, SRAM_WE_N, SRAM_CE_N, SRAM_OE_N; assign SRAM_DQ = SRAM_WE_N ? 16'hzzzz : iDATA; assign oDATA = SRAM_DQ; assign SRAM_ADDR = iADDR; assign SRAM_WE_N = iWE_N; assign SRAM_OE_N = iOE_N; assign SRAM_CE_N = iCE_N; assign SRAM_UB_N = iBE_N; assign SRAM_LB_N = iBE_N; endmodule 

Then you have to create the SOPC component that gives the _hw.tcl with "file/new component..."
0 Kudos