一. DDR2介绍

DDR2由JEDEC(电子设备工程联合委员会)开发的新生代内存技术标准。该标准定义了DDR2封装、寻址及操作、电气等所有特性。

DDR相关技术对比

DDR

DDR2

DDR3

电压,VDD

2,5V

1,8V

1,5V

I/O接口

SSTL_25

SSTL_18

SSTL_15

数据传输率

200~400

400~800

800~2000

容量标准

64M~1G

256M~4G

512M~8G

CL值

1,5/2/2,5/3

3/4/5/6

5/6/7/8

预读取(Bit)

2

4

8

Bank数量

2/4

4/8

8/16

突发长度

2/4/8

4/8

8

封装形式

TSOP

FBGA

FBGA

针脚数(Pin)

184

240

240

二. DDR2信号

时钟信号CK、CK#、CKE

片选芯片CS#

片内终结信号ODT

命令输入信号RAS#、CAS#、WE#

数据掩码DM

地址信号BA0-BA2、A0-A15

数据信号DQ

数据索引信号DQS、DQS#

电源信号等

注:DDR比SDRAM多一个CLK#时钟信号,该信号与标准时钟信号CLK相位相差180。,从而形成差分时钟。与SDRAM只能在时钟的上升沿进行数据传输不同,DDR在CLK的上升沿和下降沿都可以传输数据,这样,在相同的系统时钟下,DDR的数据传输速率就是SDRAM的两倍。

需要注意的是,CLK#并不作为第二个触发时钟,而是用于校准触发时钟。这是因为DDR在CLK的双沿触发数据传输,使得传输周期缩短一半,因此必须保证传输周期的稳定以确保数据的正确传输。基于这一要求,必须对CLK的上下沿间距进行精确的控制。但由于温度波动、电阻性能改变等原因,CLK上下沿间距可能会发生变化,此时CLK#可以起到校准的作用。

三. DDR2采用的新技术

OCD(off-chip driver):离线驱动调整,DDR II通过OCD可以提高信号的完整性。DDRII通过调整上拉/下拉的电阻值使两者电压相等。使用OCD通过减少DQ-DQS的倾斜来提高信号的完整性;通过控制电压来提高信号品质。

ODT(on-die terminal):内建核心的终结电阻器。DDR2根据自己的特点内建合适的终结电阻,可以保证最佳信号波形,达到最佳的信号质量。

Post CAS:前置CAS,为提高DDR2内存的利用效率而设定。在Post CAS操作中,CAS信号(读写/命令)能够被插到RAS信号后面的一个时钟周期,CAS命令可以在附加延迟(Additive Latency)后面保持有效。原来的tRCD(RAS到CAS延迟)被AL(Additive Latency)所取代,AL可以在0,1,2,3,4中进行设置。由于CAS信号放在了RAS信号后面一个时钟周期,因此ACT(行选择)和CAS信号永远也不会产生碰撞冲突。

四. DDR2构造

DDR2内部的存储单元按bank进行管理,根据容量大小一般分为4或8个bank。每个bank中又分为行和列,bank的位宽就是整个芯片的位宽。

五. DDR2工作方式

DDR2工作时每个bank只允许打开1行,即只允许对打开的行进行读写操作,如果要对同一bank中的其他行进行读写操作,则必须先用预充电(precharge)命令关闭已经打开的行,再用激活(active)命令打开需要进行读写操作的行。发送激活命令时要同时给出bank地址和行地址,选定需要打开的行,等待一定时间间隔后再给出列地址。DDR2的行列地址线是复用的,通过列地址选通信号CAS可以区分行地址与列地址。

DDR2采用突发方式进行数据传输,即对同一行中相邻的存储单元连续进行数据传输,连续传输所涉及的存储单元(列)的数量就是突发长度(Burst Lengths)。工作时只要给出起始地址和突发长度,DDR2就会依次自动对后面相应数量的列进行读写操作。DDR2支持的突发长度为4或8。

DDR2采用电容存储数据信息,电容的漏电造成数据丢失,必须要定时刷新才不会丢失。为了保存内部数据,DDR2每隔一定的时间就要对每一行进行刷新。根据DDR2的JEDEC标准,最多每隔7.8us就要刷新一次,用来保持DDR2内部数据的正确性。DDR2有两种刷新模式:自刷新(self-refresh)和自动刷新(auto-refresh)。自刷新通常工作于所有bank都处于空闲的状态,功耗低,但是进入自刷新模式和退出自刷新模式都要经过复杂的时序步骤来完成,控制复杂。自动刷新模式由定时器产生刷新命令,易于控制,因此一般选择自动刷新模式。

DDR2的工作频率很高,因此数据窗口很窄,为了能准确采集数据,DDR2使用差分信号DQS、DQS_N来采集数据。写操作中,DQS信号由控制器发出,DQS信号与数据窗口中央对齐;读操作中DQS信号由DDR2存储器发出,DQS信号与数据窗口边沿对齐,控制器接收到DQS信号后,要将DQS信号与数据窗I:1相位偏移90°,使DQS信号与数据窗口中央对齐。DQS信号对相位要求很严格,在实际使用中,考虑连线延迟、管脚延迟等因素,在高频率下进行数据采集变得很困难,一般由专门的PHY(Physical Layer Interface)来完成。

上电后控制器首先执行的是初始化过程,然后才是读写操作。在读写过程中,会遇到刷新请求,刷新的优先权要高于读写操作。如果刷新操作与读写操作冲突,则控制器会先通知用户停止发送读写命令,并等待现有的读写操作完成,然后进行刷新操作。

执行读写操作时,控制器会先根据映射的行地址来判断操作所需要的行是否已经激活,如果已经激活,则直接发送列地址;如果没激活且在不同的bank中,则先发送激活命令再发送列地址和读写命令;如果没激活且在相同的bank中,则先要发送预充电命令关闭已经打开的行,然后依次发送激活命令和读写命令。

如果执行读操作,则在读命令发出后,要等待读数据传回,根据DQS信号来接收读数据,将双速率的64bit数据转换成单速率的128 bit数据送给用户端口(CPU)。

读命令

当DDR2 SDRAM的bank被打开之后,就可以对该bank进行读写访问操作。当控制器给出读命令的同时,要给出访问目标的列地址,并设定自动预充电是否有效。如果自动预充电有效,当读操作结束时自动执行预充电并关闭该bank。

从DDR2 SDRAM接受读命令到给出到有效读数据之间的延时,称为读延迟(Read Latency,即RL)。读延迟被定义为AL和CL的和,即RL=AL+CL。AL和CL的值可以分别通过MR和EMR来设定。

DQS/DQSn是由DDR2 SDRAM驱动的,伴随数据输出的选通脉冲信号。如下图所示,当即将输出数据时,DQS信号被设为低——DQSn信号是DQS信号的反,这就是所谓的前同步信号(preamble);当输出数据即将结束时,即一次读访问的最后一个有效数据时,DQS信号为低,这就是所谓的后同步信号(postamble)。

写命令

与读命令相似,写命令也只能在目标地址所在的bank被打开后才能进行;同样,在给出写命令的同时要给出地址和自动刷新命令。写命令与写数据之间的延迟称为写延迟(Write Latency,WL),定义为读延迟减去1,即L=RL-1。

写操作也有前同步信号和后同步信号,与读操作的相比,在长度上有所不同。读操作的前同步信号是1个时钟宽度,后同步信号是0.5个时钟宽度;写操作的前后同步信号的宽度都是在0.5到1个时钟宽度之间。在DQS和数据DQ的同步问题上,读写操作也各不相同。读操作的数据信号DQ和数据选通信号DQS是同步的;写操作的数据信号DQ和数据选通信号DQS的相位相差90度,这是为了数据在写入内存时,数据眼图中央部分的可靠信号可以被内存模块截获。

预充电命令(Precharge)

预充电有两种发起方式,一是通过由控制器通过命令总线的预充电命令发起;二是通过与读写命令一起的自动预充电命令发起。预充电命令可以选择一个特定bank或所有bank的处于打开状态的行进行关闭,当然,由于DDR2 SDRAM的bank结构的原因,每个bank最多只能有1个行处于打开状态。

如果是由命令总线的预充电命令发起的,那么地址线上的第10位信号(A10)的输入将决定是关闭全部bank的行还是单一bank的行。当A10为高时,bank地址将被忽略,所有的bank都将被关闭;当A10信号为低时,bank地址将指定被关闭的bank。如果预充电命令是自动预充电的话,在读写命令发出时,A10表示是否要在完成读写操作之后进行预充电。为保证存储单元内数据的信号强度,DDR2 SDRAM要求平均间隔tREFI,最大间隔9×tREFI,进行一次刷新操作。通常,常温使用状态下tREFI 为7.8us;当工作温度高于85℃时,tREFI为3.9us。

空操作命令NOP

空操作命令,顾名思义,就是没有实际的特殊功能的操作。NOP是DDR2 SDRAM处于空闲或者等待的状态时,为了避免命令总线上出现不定的动作而设定的,它不会对DDR2 SDRAM当前的状态及动作产生任何影响。

六. 地址映射

用户端发送的是线性地址,而不同类型DDR2存储器所规定的行列地址及bank地址所占用的位宽不相同,因此要将输入的线性地址根据所使用的DDR2存储器进行地址映射,将最终发送给DDR2的各类地址分离出来,供状态机(DDR2)使用。

七. timing

CL :CAS(READ) latency,列选择到数据输出的时间。

tRAS:ACTIVE-to-PRECHARGE command

tRC:ACTIVE-to-ACTIVE command period(同bank)。

tRRD:ACTIVE bank a to ACTIVE bank b command(异bank)。

tRCD:ACTIVE-to-READ or WRITE delay,行选择(RAS)到列选择(CAS)延迟。

tRP:PRECHARGE command period,预充电命令的执行时间。

参考:

  1. 《SDRAM的工作原理》,中国科学院西安光学精密机械研究。
  2. 《DDR2 SDRAM控制器的设计及FPGS验证》,刘冠男,欧明双,宋何娟,中国集成电路CIC。
  3. 《基于FPGA的DDR2 SDRAM控制器的设计与实现》,张凌,北京航空航天大学专业硕士学位论文。

AM3352中关于VTP的描述

The VTP controller macro evaluates silicon performance at current voltage, temperature, and process (VTP) to enable IO drivers to set constant predetermined output driver impedance. The controller operates by comparing driver impedances to the external reference resistor and adjusting driver impedance to obtain an impedance match.

DDR2基础的更多相关文章

  1. S5PV210 DDR2初始化 28个步骤总结

    看了一套视频,感觉DDR这个部分将的非常细致也很好,于是把视频内容花了一个多星期作了总结. 这个视频就是不知道是谁讲的,做好事不留名啊---那位知道告诉我哈-- 平台:S5PV210 DDR: 兼容 ...

  2. DDR2是什么意思

    DDR2DDR2(Double Data Rate 2) SDRAM是由JEDEC(电子设备工程联合委员会)进行开发的新生代内存技术标准,它与上一代DDR内存技术标准最大的不同就是,虽然同是采用了在时 ...

  3. 嵌入式Linux学习笔记之第一阶段---基础篇

    嵌入式Linux学习分五个阶段 第一阶段: 01嵌入式环境搭建初期 02C语言语法概述 03C语言内存操作 04c语言函数 05linux基础 06gun基础 第二阶段: 01-linux之io系统编 ...

  4. C:指针基础

    内存概述 内存 内存含义: 存储器:计算机的组成中,用来存储程序和数据,辅助CPU进行运算处理的重要部分. 内存:内部存贮器,暂存程序/数据--掉电丢失 SRAM.DRAM.DDR.DDR2.DDR3 ...

  5. java基础集合经典训练题

    第一题:要求产生10个随机的字符串,每一个字符串互相不重复,每一个字符串中组成的字符(a-zA-Z0-9)也不相同,每个字符串长度为10; 分析:*1.看到这个题目,或许你脑海中会想到很多方法,比如判 ...

  6. node-webkit 环境搭建与基础demo

    首先去github上面下载(地址),具体更具自己的系统,我的是windows,这里只给出windows的做法 下载windows x64版本 下载之后解压,得到以下东西 为了方便,我们直接在这个目录中 ...

  7. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  8. Golang, 以17个简短代码片段,切底弄懂 channel 基础

    (原创出处为本博客:http://www.cnblogs.com/linguanh/) 前序: 因为打算自己搞个基于Golang的IM服务器,所以复习了下之前一直没怎么使用的协程.管道等高并发编程知识 ...

  9. [C#] C# 基础回顾 - 匿名方法

    C# 基础回顾 - 匿名方法 目录 简介 匿名方法的参数使用范围 委托示例 简介 在 C# 2.0 之前的版本中,我们创建委托的唯一形式 -- 命名方法. 而 C# 2.0 -- 引进了匿名方法,在 ...

随机推荐

  1. APNS 生成证书 p12 或者 PEM

    .net环境下须要p12文件,下面是生成p12过程 1.$ openssl x509 -in aps_development.cer -inform der -out PushChatCert.pem ...

  2. Struts完美解决i18n问题

    所谓的i18n问题指的是(软件的)国际化问题,简单来讲就是使我们的软件可以让世界使用任何语言的人们都能使用,软件自身会根据语言环境的不同进行自动配置,如果你是中文环境那界面以中文显示,如果是英文环境就 ...

  3. 取石子(六)_nyoj_585(博弈-奇异矩阵).java

    取石子(六) 时间限制: 1000 ms  |  内存限制: 65535 KB 难度: 3   描述 最近 TopCoder 的 PIAOYI 和 HRDV 很无聊,于是就想了一个游戏,游戏是这样的: ...

  4. RSA 在C#里简单实现

    1.选择两个大素数:p,q;2.计算所得n:n=p*q;3.计算中间结果t:t=(p-1)*(q-1);4.选择一个e:要求e和t的最大公因数是1(也就是e与t互素);5.计算所得d:d*e mod ...

  5. 软件开发工具——Make

    掌握Makefile的使用方法和工作流程: 掌握make工具变量的相关知识,包括其引用.定义及分类等: 掌握Makefile常见的函数含义: 掌握Makefile与shell命令行的通信方法: 掌握M ...

  6. 深入理解Git (三) - 微命令上篇

    1 git hash-object 曾经讲过Git用Hash值作为Git对象的名字,那么详细是哪个命令呢? 我们能够先改动一个文件: echo "hongchangfirst" & ...

  7. 解决Html.CheckBoxFor中”无法将类型 bool 隐式转换为 bool。存在一个显式转换..."的方法

    在后面加.Value属性 @Html.CheckBoxFor(m => m.IsComment.Value, new { style = "vertical-align: middle ...

  8. 〖Android〗/system/etc/media_codecs.xml

    其中的原文件中包含的注释如下: <?xml version="1.0" encoding="utf-8" ?> <!-- Copyright ...

  9. iOS 烟花撒花效果,图层渐变,图层倒影特效。CAEmitterLayer粒子发射器

    iOS 烟花撒花效果,图层渐变,图层倒影特效.CAEmitterLayer粒子发射器 上一节我写了一个关于视图图层的相关类,有关CALayer这个类的使用和一些使用方法,详细看这里,就是我们在处理视图 ...

  10. iOS-仿智联字符图片验证码

    概述 随机字符组成的图片验证码, 字符位数可改变, 字符可斜可正排列. 详细 代码下载:http://www.demodashi.com/demo/10850.html 项目中有时候会有这种需求: 获 ...