Forum Discussion

Altera_Forum's avatar
Altera_Forum
Icon for Honored Contributor rankHonored Contributor
9 years ago

SRAM Controller on DE2-115 Cyclone IV E

I'm planning to use the SRAM to store a 640 x 480 image from the tv decoder output capture.. But I can't find any sample project that uses the SRAM Controller.v in order for me to perform sequential writing (one pixel per address) and sequential reading for the display after further processing..can someone help/give some link/site where can help me to understand the operation of the SRAM controller?

5 Replies

  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    The "DE2_115_NIOS_DEVICE_LED" example that comes on the DE2-115 support CD has a good example of how to use the SRAM.

    I suggest you copy what you need from that. However, if you do want to use more of that example project you'll need to migrate the design for newer versions of Quartus. Refer to 'an 632: sopc builder to qsys migration guidelines (https://www.element14.com/community/servlet/jiveservlet/downloadbody/30391-102-6-251604/altera.application_notes_6.pdf)' for details.

    Cheers,

    Alex
  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    That means i have to use Nios right? Is there a way for me to use the SRAM without using Nios? I'm kind of not familiar with C

  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    No, you certainly don't have to use Nios to put the SRAM to use. You can write your own interface to do so.

    --- Quote Start ---

    But I can't find any sample project that uses the SRAM Controller.v

    --- Quote End ---

    SRAM doesn't need a 'controller' in the same way the SDRAM does. Present an address & data and strobe the data in (using WE & CE). Alternatively, present an address and activate CE & OE to get the data out.

    This memory interface tutorial (https://www.google.nl/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&uact=8&ved=0ahukewjlg9_4ln7kahwdtbqkhv1ibwiqfggfmaa&url=http%3a%2f%2fece.wpi.edu%2f~rjduck%2fverilog%2520memory%2520module%25207.pdf&usg=afqjcneszzvqt4gxd-6cu6wglui8groflw&bvm=bv.113370389,d.d24) discusses accessing SRAM and has some useful timing diagrams along with an SRAM verilog model. The 'Simplified Read/Write Operation' figures (pages 14/15), along with the waveform simulation on the last page should, I hope, clarify what signals you need to generate as part of your interface.

    Cheers,

    Alex
  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    How can i perform sequential reading of the data i stored? Like having the data from address 0 to last address to be displayed in my vga? I tried it but the VGA is displaying either a black or white image

  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    Providing you've presented an address and activated CE & OE (typically by driving them LOW), you can read in the data from the SRAM - providing you wait the required time for the data to be valid (see the datasheet for the SRAM). You can then present the next address (sequential or otherwise), leaving CE & OE active, to recover the data corresponding to that address. True, Random access.

    If this is what you've done, and you're not getting what you expect on your display, then I'd question whether you've written in what you expect or whether you have a problem somewhere else in your code.

    Cheers,

    Alex