Other

项目介绍

hdl-util/sdram-controller 是一个托管在 GitHub 上的开源项目,主要使用 Verilog 编写,采用 Other 许可证,目前获得 87 个 Star、12 次 Fork。

仓库全名
hdl-util/sdram-controller
开源许可证
Other
Star 数
87
Fork 数
12

README 摘要

Generic Synchronous DRAM Controller Why? The code in this repository lets you control an SDRAM chip without licensing IP from anyone. Demo: test pattern on an LG 24UD58-B Monitor Usage 1. Take files from src/ and add them to your own project. If you use hdlmake, you can add this repository itself as a remote module. 1. Other helpful modules are also available in this GitHub organization. 1. See…

完整内容见 GitHub 原始 README 或本页 。

常见问题

sdram-controller 用什么语言开发?

主要使用 Verilog 编写,采用 Other 许可证,目前有 87 个 Star。

sdram-controller 可以免费商用吗?

仓库标注的许可证为 Other,商用前请先阅读仓库 LICENSE 文件确认授权范围。

如何获取 sdram-controller 的源码?

可以直接克隆仓库:git clone https://github.com/hdl-util/sdram-controller.git,默认分支为 master;安装与运行步骤见仓库 README。

sdram-controller 最近还在维护吗?

仓库最近一次更新为 2020年9月7日,当前没有未关闭的 Issue;Star 数为 87,可作为社区活跃度的参考。

关于

GitHub 原始描述(英文)

Generic FPGA SDRAM controller, originally made for AS4C4M16SA

描述取自 GitHub 官方 API,保持仓库作者书写的原文。

简要分析

热度分
116
价值分
56
活跃状态
活跃

语言占比

Python
Stata
SystemVerilog
Tcl
Verilog

贡献者

README

Generic Synchronous DRAM Controller

Build Status

Why?

The code in this repository lets you control an SDRAM chip without licensing IP from anyone.

Demo: test pattern on an LG 24UD58-B Monitor

Test pattern shown correctly

Usage

  1. Take files from src/ and add them to your own project. If you use hdlmake, you can add this repository itself as a remote module.
  2. Other helpful modules are also available in this GitHub organization.
  3. See top/mkrvidor4000_quartus/mkrvidor4000_top.sv for a usage example with clock domain crossing. A dual-clock FIFO is used to move data from the SDRAM to HDMI to display a test pattern. The test pattern is composed only of red and green. If you see blue, the pattern is incorrect.
  4. Read through the parameters in sdram_controller.sv and tailor any instantiations to your situation.
  5. Please create an issue if you run into a problem or have any questions. Make sure you have consulted the troubleshooting section first.

Terminology

  • CAS latency: the time (in clocks) after the column-address is set for the command to return data
  • Precharge: a required step in DRAM operation that sets the line voltage to Vcc / 2 (3.3V / 2) in anticipation of the next operation
  • Refresh: restores the charge in the cells by rewriting them, preventing the loss of data
  • Self Refresh: a low power mode where the SDRAM chip is able to refresh itself
  • DQM: turning on DQ-masking disables the output during a read and masks the input during a write. Used to avoid I/O contention.

Troubleshooting

  • Make sure you’ve set the IO standard for the pins connected to the DRAM chip as LVTTL 3.3V
  • SystemVerilog users: make sure you are using wire instead of logic for DQ and the clock. This caused synthesis issues for me where the pins were stuck at GND or VCC when they were clearly being driven.
  • If you see noise or data corruption, check your FPGA driver strength, check if the SDRAM chip has configurable driver strength, and try lowering the clock

To-do List

  • Self Refresh Mode
  • Optimizations
    • Conditionally avoid manual precharging
      • Manual precharging can assume spatial locality by only precharging if the next command is for a different column-address
    • Bank activation: if the row address and bank are the same, can you do a repeated read/write? (yes until tmax bank active)
    • Command pipelining: you could activate another bank while a write/read is being done (some overhaul of the state machine is needed here)

Reference Documents

These documents are not hosted here! They are available directly from Alliance Memory.

评论

暂无评论