DDR

简谈SDR、DDR、QDR存储器的比较

大家好,又到了每日学习的时间了,今天咱们来聊一聊SDR、DDR、QDR存储器。

首先先简单的了解一下,然后在做一下比较。

SDR:Single Data Rate, 单倍速率
DDR:Dual Data Rate, 双倍速率
QDR:Quad Data Rate, 四倍速率

DRAM:Dynamic RAM, 动态随机存储器, 每隔一段时间就要刷新一次数据才能够保存数据
SRAM:Static RAM, 静态随机存储器, 静态随机存储器,不需要刷新电路,数据不会丢失
SDRAM: Synchronous DRAM, 同步状态随机存储器,数据的读写需要时钟来同步

下面来做个比较:
1、 SRAM和DRAM、SDRAM而言,都有DDR和QDR的一说。QDR,DDR只是说速率,和DRAM/SRAM的区分无关。而且由于实现工艺的原因,DRAM和SDRAM容量比SRAM大,但是读写速度不如SRAM。此外它们一般都是应用于RAM类型的存储器的速率。

区分SDR和DDR的技巧

传统的SDR SDRAM只能在信号的上升沿进行数据传输,而DDRSDRAM却可以在信号的上升沿和下降沿都进行数据传输,所以DDR内存在每个时钟周期都可以完成两倍于SDRAM的数据传输量,这也是DDR的意义——Double Data Rate,双倍数据速率。举例来说,DDR266标准的DDR SDRAM能提供2.1GB/s的内存带宽,而传统的PC133 SDRAM却只能提供1.06GB/s的内存带宽。

一般的内存条会注明CL值,此数值越低表明内存的数据读取周期越短,性能也就越好,DDR SDRAM的CL常见值一般为2和2.5两种。

DDR
DDR是双倍数据速率(Double Data Rate)。DDR与普通同步动态随机存储器(DRAM)非常相象。普通同步DRAM(现在被称为SDR)与标准DRAM有所不同。

标准的DRAM接收的地址命令由二个地址字组成。为接省输入管脚,采用了多路传输的方案。第一地址字由原始地址选通(RAS)锁存在DRAM芯片。紧随RAS命令之后,列地址选通(CAS)锁存第二地址字。经过RAS和CAS,存储的数据可以被读取。

在Nexys4 DDR上实现的DDR2读写例程

最近项目需要用到DDR,于是在网上找相关资料,发现网上关于Xilinx DDR的资料不多,而且比较老,官方文档又是纯英文,且超级长。所以笔者写了这篇文章,为像笔者一样的初学者介绍一下DDR的使用。

在此不介绍DDR是什么了,请自行查资料。(相信用到这篇文章的人不会不知道DDR是啥吧。。。)

好了,闲话休提言归正传。

本文使用Vivado 2015.4在Nexys4 DDR(以下简称N4DDR)开发板上实现DDR的读写。

FPGA如果需要对DDR进行读写,则需要一个DDR的控制器。根据官方的文档(UG586,下载链接在文末),DDR控制器的时序主要有三:

(1)首先是控制信号,如下图:

从上图可以看出,只有当app_rdy信号有效时,程序所发出的读写命令才会被控制器接收。这点必须注意。

(2)然后是写操作时序,如下图:

基于AXI总线的DDR仿真模型

在xilinx平台下,经常要进行基于AXI总线的IP开发。尤其是当要使用DDR时,仿真就存在很大的问题了。之前我们的解决办法是修改接口,然后连接到一个模拟DDR的寄存器组中。但这样做一方面频繁修改接口,相当麻烦;另一方面仿真行为与下板行为不完全一样,不方便找出bug。所以我就决定建立一个DDR AXI 仿真模型来用于AXI总线下的仿真。其思想和原来的方法一样,都是在testbench中建立一个寄存器组来模拟DDR。只不过不修改接口,而是直接用AXI总线的接口来进行行为模拟。

首先,我们先来了解下AXI总线的主要接口与行为:

AXI总线信号说明:


写数据信号图

作者:清风流云

DDR SDRAM的发展背景:
DDR SDRAM是Double Data Rate SDRAM的缩写,即双倍速率同步动态随机存储器,大家习惯称为DDR。最早是由三星公司于1996年提出,后由日本电气、三菱、富士通、东芝、日立、德州仪器、三星及现代等八家公司协议订立内存规格,并得到AMD、VIA与SiS等主要芯片厂商的支持。

图1:DDR内存

图1:DDR内存

作者:陆健锋

根据FuturePlus Systems的联合创始人Barbara Aichinger在10月份的Memcon 2016事件谈话内容,关于DDR内存问题的情况并不乐观。内存问题继续困扰着工业界,并且代价是如此昂贵。根据Facebook上作者的一段内容:“......在每周出可纠正的错误次数超过100次时,服务器的修复机制会自动做上标记......”和“在我们更多的有前瞻和主动性的修复测量下,我们发现,平均46%左右出现问题的服务器会得到修复。”

HLS图像处理系列——在ZedBoard搭建DDR图像处理通路

ZYNQ芯片内包含一个丰富特性的基于双核ARM Cortex-A9的处理子系统(Processing System,PS)和Xilinx 28nm可编程逻辑(Programmable Logic,PL)。PS除了核心外还包括片上存储器、外部存储器接口以及大量外设连接接口。

利用ARM,我们可以做嵌入式操作系统相关的任务,如图形界面、用户输入、网络、DDR3控制等,由于ARM本身具有丰富的外设接口,而且支持多级流水线,处理这些事务游刃有余,但对于计算量较大的应用却捉襟见肘,因为ARM本身还是典型的串行处理器,不适合做大数据、实时性较高的处理任务。FPGA恰好弥补了这一点,利用可编程逻辑可以实现并行处理,只要逻辑资源够用,我们可以采用以空间换时间的策略,使多个计算单元同时进行,可大大缩短处理时间。

用ZYNQ进行图像处理具有架构上的优势,因此对于用ZYNQ做视频相关的开发人员,一套ZYNQ上的图像通路是必须的。本博文介绍的是一种摄像头+HLS图像处理+DDR存储+VGA显示的图像通路。该通路是本人和另外一位同事合作实现,本人负责摄像头的FPGA驱动、HLS图像处理IP的实现以及系统的后期优化。由于涉及公司项目,因此不能提供工程文件,只提供框架和思路。

系统框架如下:

Xilinx FPGA的DDR走线规则

今天从xilinx网站下载

Xilinx Virtex-6/Spartan-6 FPGA DDR3 Signal Integrity Analysis and PCB Layout Guidelines

复习了一下DDR的走线规则,也学到一些新知识。记录一下。

fpga的ddr接口电平sstl

1. DDR2和DDR3的等长要求有点不同。就是DQS和CLK的等长要求

2. ODT操作

写操作,DDR片上的ODT一直使用

读操作,DDR控制器端使用Digitally Controlled Impedance (DCI)

3. 布局

布局采用fly-by拓扑结构(应该是DDR3使用)
DQS,DQ,DM是点对点信号,有片上ODT。
clk,控制,地址线为共用

Zynq系列器件通过JTAG口访问DDR

在开发过程中硬件调试不免会遇到一种情况,就是可能SD卡、USB和网口都没有调通,但是需要一些少量数据对特定功能进行验证,这时通过JTAG接口Restore数据到DDR或从DDR Dump数据到PC机不失为一种有效选择。Xilinx SDK就支持这种功能,以下做一个简单的介绍:

(1)步骤 1:在 SDK 下建立 System Debug 仿真,并选择当前的目标调试核;

(2)步骤 2:点击“Debug”使程序运行到你设定的断点;

(3)步骤 3:选择“Xilinx Tools→Dump/Restore Data File”,并勾选你需要进行的操作是“Dump Memory“还是”Restore Memory“,指定PC机目标文件路径,内存的起始地址及操作的数据长度;

(4)配置目标处理器,Peers 选择为“Local”,Contexts 选择为APU当前正在被 Debug 的核;

(5)点击OK进行”Dump“或”Restore“操作,直到SDK log打印操作完成(因JTAG口数据速率较低,所以传比较大的数据时可能会需要较多的时间)。

作者:Marc Greenberg Synopsys(新思科技) DDR 控制器部产品营销总监

概述
DDR DRAM内存控制器要满足众多市场竞争的需求。一款出色的内存控制器必须能够增加存储器接口的带宽,满足CPU、图形处理、系统实时DRAM的延迟需求,同时符合存储总线和片上总线标准的规定。

读取重排序缓冲器(RRB)是DesignWare uMCTL和uMCTL2 DDR内存控制器IP产品上可用的一项硅验证的架构增强功能,是对DDR内存控制器架构的进一步完善。本白皮书将解释读取重排序缓冲器的概念,并对其如何提升存储带宽加以说明。此外,本文还总结了测试结果,展示了不同架构的DRAM控制器(根据该控制器是带RRB、带外部调度的RRB、或是带内容可寻址内存(CAM)调度的RRB的架构)可从相同输入数据流获得10%、66%或100%的截然不同的DRAM总线利用率。

同步内容