URL
https://opencores.org/ocsvn/wbddr3/wbddr3/trunk
Subversion Repositories wbddr3
[/] [wbddr3/] [trunk/] [README.md] - Rev 21
Compare with Previous | Blame | View Log
# DescriptionThe purpose of this core is to provide a GPL wishbone core capable of commandinga DDR3 memory, such as the one used on Digilent's Arty board, at full speed.A particular design goal is that consecutive reads or writes should take only one additional clock cycle per read or write. My eventual goal is to build this so that it will support my OpenArty project.Since the DDR3 memory specification is dated August, 2009, memory chips havebeen built to this specification. However, since the DDR3 SDRAM's are rathercomplex, and there is a lot of work required to manage them, controllers forDDR3 SDRAM's are primarily in the realm of proprietary.The lack of a good open source DDR3 SDRAM controller leaves an FPGA engineerwith the choice of building a controller for a very complex interface fromscratch, or accepting a less than optimal controller built by Xilinx's MemoryInterface Generator and then converting the result to an open source bus, suchas the wishbone.This core is designed to meet that need: it is both open (GPL), as well aswishbone compliant. Further, this core offers 32-bit granularity to an interface that would otehrwise offer only 128-bit granularity. This core also offers complete pipelined performance. Because of the pipeline interface, this core isappropriate for filling cache linse. Because the core also offers non-pipelinedperformance, it is also appropriate for random access from a CPU--whether by awrite-through cache, or a CPU working without a cache.# Current statusAs anyone knows who has worked with DDR3 memory controllers will know, this isa difficult and complex project. There are lots of parts and pieces to is.Currently, a large portion (not all) of the Verilog code has been built,together with what should be a very thorough Verilator test bench. TheVerilator code successfully brings the memory out of a reset condition, andruns it through a variety of paces.So, today, the code works within Verilator and appears to match thespecification of the DDR3 bus.The core does not (yet) work on any physical hardware. This task remains.
