Coder Social home page Coder Social logo

janrinze / ddr Goto Github PK

View Code? Open in Web Editor NEW

This project forked from buttercutter/ddr

0.0 0.0 0.0 570 KB

A simple DDR3 memory controller

License: GNU General Public License v3.0

Shell 0.06% Tcl 0.31% Verilog 86.78% SystemVerilog 12.37% Stata 0.47%

ddr's Introduction

DDR

A simple DDR3 memory controller for Micron DDR3 RAM

Note:

  1. This softcore IP had been verified (both functional and timing analysis) only inside Xilinx IDE.
  2. It can reach an optimum fmax of 333.333MHz without STA timing violations, without the need of any external SDC.
  3. I would only test this on actual development board once I got hold of it, so ignore any external SDC files I put in this repository for now.

TODO:

  1. Implement more functionalities since the current verilog code does not yet support Additive Latency (AL), write-leveling mode, self-refresh mode, inserting other DRAM commands within write or read bursts data operation for a smarter DRAM controller
  2. Implement Type-III digital PLL described in Floyd Gardner book: Phaselock Techniques, 3rd Edition for high-speed application and DQS phase-shift purpose
  3. Investigate high-speed DDR PHY IO as described in reference [1], [2], [3], [4], [5], [6]
  4. Design my own DDR3 FPGA board

Notes on Modelsim simulation for Micron DDR3 memory simulation model:

  1. Creates a working directory named as ddr3 and copies ddr3_memory_controller.v, test_ddr3_memory_controller.v, 2048Mb_ddr3_parameters.vh, ddr3.v
  2. Issues command : vsim -gui work._2048Mb_ddr3_parameters_vh_unit work.ddr3 work.ddr3_memory_controller work.ddr3_memory_controller_v_unit work.test_ddr3_memory_controller
  3. Issues command : source modelsim_wave.do followed by run 710us
  4. To restart simulation from timestep zero, just issue command : restart

modelsim_waveform

Credit: @Elphel, @Morin, @Greg, @BrianHG and @NorthGuy for their helpful technical help and explanation

Reference:

[1]: Preamble detection and postamble closure for a memory interface controller

[2]: Circuit design technique for DQS enable/disable calibration

[3]: Dqs generating circuit in a ddr memory device and method of generating the dqs

[4]: DQS strobe centering (data eye training) method

[5]: Data strobe enable circuitry

[6]: Bimodal serial to parallel converter with bitslip controller

ddr's People

Contributors

buttercutter avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.