storagevhdlramspartan

Spartan 6 SP605 VHDL external ram usage?


I'm new to using VHDL and have run into an issue with my project. I'm trying to make an FPGA to converts from one communication protocol to a different one, and for this purpose it would be useful to be able to store (hopefully multiple) packets before converting.

Before I tried to store this data in arrays, but it became quickly apparent that this takes up far too much space on the FPGA. Therefore, I have been searching for a way to store the data on the DDR3 ram on the SP605 board (http://www.xilinx.com/support/documentation/boards_and_kits/xtp067_sp605_schematics.pdf, page 9). I however cannot find instructions on how to write or read data from this. I'm trying to store one 8bit std_logic_vector per clock cycle to later be accessed.

Can anyone advise me on how to proceed?


Solution

  • Xilinx offers an IP Core generator. This IP catalog contains a Memory Interface Generator (MIG) which generates an IP Core to access different memory types. Configure this core for DDR3.

    Writing a DDR3 controller in VHDL is not a project for a beginner not even for an experienced designer. The state machine is simple and well known, but the calibration logic is very costly.

    You should consider a caching or burst read/write technique, because DDR memory can not be accessed in every cycle.