Giter Site home page Giter Site logo

sdram-controller's Introduction

SDRAM Controller

This is designed to be a guaranteed timing-accurate SDRAM controller. I was frustrated with the other controllers I could find, in terms of their licensing (most are GPL), their lack of calculations of proper timings, and their general readability/comments. Every time I had trouble with other popular controllers for FPGA retrogaming, I wasn't sure if I had done something wrong, or if the controller was not properly set up for my SDRAM.

Warning: Controllers are not highly tested in sims or in production

If you decide to use these controllers, beware that there may be some subtle bugs that I haven't encountered. I have pretty thoroughly tested (in production) the sdram_burst controller at both CAS Latency = 2 and 3, and have used the standard controller at both CAS Latency = 2 and 3 as well. If you find or suspect an bug, please feel free to open an issue.

Features

  • Customizable SDRAM mode settings
  • Calculation and implementation of required cycle counts for your given clock speed
  • Parameterized t constraint calculations
  • Full-page burst mode controller in sdram_burst.sv - Which is currently in use in https://github.com/agg23/fpga-gameandwatch

Neither controller has multiple ports, but the controller design should lend itself to easily adding port functionality.

Test

Both controllers have had basic validation against Micron's SDRAM testbench. It's generally rather lacking and doesn't test some important metrics like timing, but it was useful in getting started and validating some ideas.

The SDRAM test structure (taken from Micron) has been modified in sdr_parameters.vh. Intel's simulation tool, ModelSim/Questa, did not like certain defines being on the same line as other preprocessor directives, so they've been moved.

sdram-controller's People

Contributors

agg23 avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

sdram-controller's Issues

Question about multi-port version

This looks really good but it looks like a lot of work does done to make it almost multi-port. Any guidance on what more would need to be done for it to be multi-port and if there were any particular issues that prevented that part from being completed? I need to use this in a multi-port situation so I'm looking at adding that capability.

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.