目录

DDR基础知识

DDR存储机制

DDR3详解

DDR3型号

DDR3引脚

DDR操作

DDR读操作

DDR写操作


DDR基础知识

DDR=Double Data Rate双倍速率,DDR SDRAM=双倍速率同步动态随机存储器,人们习惯称为DDR,其中,SDRAM 是Synchronous Dynamic Random Access Memory的缩写,即同步动态随机存取存储器。而DDR SDRAM是Double Data Rate SDRAM的缩写,是双倍速率同步动态随机存储器的意思。

SDR SDRAM采用单端(Single-Ended)时钟信号, 在一个时钟周期内只传输一次数据;而 DDR由于工作频率比较快,采用可降低干扰的差分时钟信号作为同步时钟。在一个时钟周期内可以传输两次数据,它能够在的DQS上升沿和和下降沿各传输一次数据。

相对比于DDR,DDR2的时钟加速,是DDR的两倍,DDR3的时钟是DDR的四倍

DDR存储机制

DDR3的内部是一个存储阵列,将数据“填”进去,你可以它想象成一张表格。和表格的检索原理一样,先指定一个行(Row),再指定一个列(Column),我们就可以准确地找到所需要的单元格,这就是内存芯片寻址的基本原理。对于内存,这个单元格可称为存储单元,那么这个表格(存储阵列)就是逻辑Bank(Logical Bank,下面简称Bank)。

DDR内部Bank示意图,这是一个NXN的阵列,B代表Bank地址编号,C代表列地址编号,R代表行地址编号。如果寻址命令是B1、R2、C6,就能确定地址是图中红格的位置。

目前DDR3内存芯片基本上都是8个Bank设计,也就是说一共有8个这样的“表格”。

寻址的流程也就是先指定Bank地址,再指定行地址,然后指列地址最终的确寻址单元。

1.    控制器单元:包括输入命令解析,模式配置&控制部分;

2.    行地址选通单元:行激活通过此处操作;

3.    Bank控制逻辑:行/列地址解码用到bank选通

4.    列地址选择单元,读写操作同时在打开列地址的时候送到1;

5.    内部存储阵列,此处分8个bank,以4g8bit的颗粒为例;每个bank分65536行,128列,每个cell存储8*bl的数据宽度;

6.    读写数据缓存及接口驱动;dq数据在此变换位宽后内外交互;

7.    锁存与控制逻辑:刷新与预充电用到该模块。


DDR3详解

DDR3型号

DDR3有上图的三种型号

MT为公司,41J为型号,xxM为容量单位是bit,之后的数字为数据位宽即数据的管脚个数

如256M8,是256M bit 的容量,8位位宽(对外数据管脚为8)

DDR3引脚

名称

输入/输出

描述

A[14:13], A12/BC#,

A11, A10/AP, A[9:0]

in

地址输入:为 ACTIVATE 命令提供行地址,

为 READ/WRITE 命令提供列地址和自动预充电位 (A10)

BA[2:0]

in

Bank地址输入

CK, CK#

in

差分时钟

CKE

in

时钟使能

CS#

in

片选

DM

in

输入数据屏蔽:DM是写数据的输入屏蔽信号。 在写访问期间,当 DM 与输入数据一起被采样为高电平时输入数据被屏蔽

ODT

in

片上端接:ODT 启用(注册为高电平)和禁用(注册为低电平)DDR3 SDRAM 内部的端接电阻。

RAS#, CAS#, WE#

in

行使能,列使能,写使能

DQ[3:0]

I/O

数据输入/输出:x4 配置的双向数据总线

DQ[7:0]

I/O

数据输入/输出:x8 配置的双向数据总线

DQS, DQS #

I/O

数据选通:输出读取数据,与读取数据边缘对齐。 输入与写入数据,居中对齐写入数据。

TDQS, TDQS#

out

终止数据选通

DDR3控制命令表:

DDR3 mode寄存器设置图:

由于SDRAM的寻址具体独占性,所以在进行完读写操作后,如果要对同一L-Bank的另一行进行寻址,就要将原来有效(工作)的行关闭,重新发送行/列地址。L-Bank关闭现有工作行,准备打开新行的操作就是预充电(Precharge)。预充电可以通过命令控制,也可以通过辅助设定让芯片在每次读写操作之后自动进行预充电。实际上,预充电是一种对工作行中所有存储体进行数据重写,并对行地址进行复位,之所以称为DRAM,就是因为它要不断进行刷新(Refresh)才能保留住数据,因此它是DRAM最重要的操作。

刷新操作与预充电中重写的操作一样。但为什么有预充电操作还要进行刷新呢?因为预充电是对一个或所有L-Bank中的工作行操作,并且是不定期的,而刷新则是有固定的周期,依次对所有行进行操作,以保留那些久久没经历重写的存储体中的数据。但与所有L-Bank预充电不同的是,这里的行是指所有L-Bank中地址相同的行,而预充电中各L-Bank中的工作行地址并不是一定是相同的。

在实际工作中,Bank地址与相应的行地址是同时发出的,此时这个命令称之为“行激活”(Row Active)。在此之后,将发送列地址寻址命令与具体的操作命令(是读还是写),这两个命令也是同时发出的,所以一般都会以“读/写命令”来表示列寻址。根据相关的标准,从行有效到读/写命令发出之间的间隔被定义为tRCD,即RAS to CAS Delay(RAS至CAS延迟,RAS就是行地址选通脉冲,CAS就是列地址选通脉冲),我们可以理解为行选通周期。tRCD是DDR的一个重要时序参数,广义的tRCD以时钟周期(tCK,Clock Time)数为单位,比如tRCD=3,就代表延迟周期为两个时钟周期,具体到确切的时间,则要根据时钟频率而定,DDR3-800,tRCD=3,代表30ns的延迟。

接下来,相关的列地址被选中之后,将会触发数据传输,但从存储单元中输出到真正出现在内存芯片的 I/O 接口之间还需要一定的时间(数据触发本身就有延迟,而且还需要进行信号放大),这段时间就是非常著名的 CL(CAS Latency,列地址脉冲选通潜伏期)。CL 的数值与 tRCD 一样,以时钟周期数表示。如 DDR3-800,时钟频率为 100MHz,时钟周期为 10ns,如果 CL=2 就意味着 20ns 的潜伏期。不过CL只是针对读取操作。

由于芯片体积的原因,存储单元中的电容容量很小,所以信号要经过放大来保证其有效的识别性,这个放大/驱动工作由S-AMP负责,一个存储体对应一个S- AMP通道。但它要有一个准备时间才能保证信号的发送强度(事前还要进行电压比较以进行逻辑电平的判断),因此从数据I/O总线上有数据输出之前的一个时钟上升沿开始,数据即已传向S-AMP,也就是说此时数据已经被触发,经过一定的驱动时间最终传向数据I/O总线进行输出,这段时间我们称之为 tAC(Access Time from CLK,时钟触发后的访问时间)。

突发(Burst)是指在同一行中相邻的存储单元连续进行数据传输的方式,连续传输的周期数就是突发长度(Burst Lengths,简称BL)。

在进行突发传输时,只要指定起始列地址与突发长度,内存就会依次地自动对后面相应数量的存储单元进行读/写操作而不再需要控制器连续地提供列地址。这样,除了第一笔数据的传输需要若干个周期(主要是之前的延迟,一般的是tRCD+CL)外,其后每个数据只需一个周期的即可获得。

突发连续读取模式:只要指定起始列地址与突发长度,后续的寻址与数据的读取自动进行,而只要控制好两段突发读取命令的间隔周期(与BL相同)即可做到连续的突发传输。

谈到了突发长度时。如果BL=4,那么也就是说一次就传送4×64bit的数据。但是,如果其中的第二笔数据是不需要的,怎么办?还都传输吗?为了屏蔽不需要的数据,人们采用了数据掩码(Data I/O Mask,简称DQM)技术。通过DQM,内存可以控制I/O端口取消哪些输出或输入的数据。这里需要强调的是,在读取时,被屏蔽的数据仍然会从存储体传出,只是在“掩码逻辑单元”处被屏蔽。DQM由北桥控制,为了精确屏蔽一个P-Bank位宽中的每个字节,每个DIMM有8个DQM 信号线,每个信号针对一个字节。这样,对于4bit位宽芯片,两个芯片共用一个DQM信号线,对于8bit位宽芯片,一个芯片占用一个DQM信号,而对于 16bit位宽芯片,则需要两个DQM引脚。

在数据读取完之后,为了腾出读出放大器以供同一Bank内其他行的寻址并传输数据,内存芯片将进行预充电的操作来关闭当前工作行。从开始关闭现有的工作行,到可以打开新的工作行之间的间隔就是tRP(Row Precharge command Period,行预充电有效周期),单位也是时钟周期数。

  1. 差分时钟

差分时钟是DDR的一个必要设计,但CK#的作用,并不能理解为第二个触发时钟(你可以在讲述DDR原理时简单地这么比喻),而是起到触发时钟校准的作用。

由于数据是在CK的上下沿触发,造成传输周期缩短了一半,因此必须要保证传输周期的稳定以确保数据的正确传输,这就要求CK的上下沿间距要有精确的控制。但因为温度、电阻性能的改变等原因,CK上下沿间距可能发生变化,此时与其反相的CK#就起到纠正的作用(CK上升快下降慢,CK# 则是上升慢下降快)。而由于上下沿触发的原因,也使CL=1.5和2.5成为可能,并容易实现。与CK反相的CK#保证了触发时机的准确性。

2、数据选取脉冲(DQS)

DQS 是DDR中的重要功能,它的功能主要用来在一个时钟周期内准确的区分出每个传输周期,并便于接收方准确接收数据。每一颗芯片都有一个DQS信号线,它是双向的,在写入时它用来传送由北桥发来的DQS信号,读取时,则由芯片生成DQS向北桥发送。完全可以说,它就是数据的同步信号。

在读取时,DQS与数据信号同时生成(也是在CK与CK#的交叉点)。而DDR内存中的CL也就是从CAS发出到DQS生成的间隔,DQS生成时,芯片内部的预取已经完毕了,由于预取的原因,实际的数据传出可能会提前于DQS发生(数据提前于DQS传出)。由于是并行传输,DDR内存对tAC也有一定的要求,对于DDR266,tAC的允许范围是±0.75ns,对于DDR333,则是±0.7ns,有关它们的时序图示见前文,其中CL里包含了一段DQS 的导入期。

在写入时,以DQS的高/低电平期中部为数据周期分割点,而不是上/下沿,但数据的接收触发仍为DQS的上/下沿

DDR操作

•      启动:上电->解复位->初始化->ZQCL-> LEVELING->IDLE(ready)

•      读:IDLE->行激活->读数据(1次或多次突发)->预充电->IDLE

•      写:IDLE->行激活->写数据(1次或多次突发)->预充电->IDLE

•      刷新:IDLE->REF->IDLE

•      自刷新的进入与退出:IDLE->SFR->IDLE

•      定期校正:IDLE->ZQCS->IDLE,一般外部温度或电压改变时操作

•      动态更改配置:IDLE->MRS/MPR->IDLE

DDR读操作

•      ddr发起一次读的过程包含一系列命令有:

1.    操作开始于Active命令——Active命令同时并发含带地址位,以选择Bank和Row地址(BA0-BA2选择BANK、A0-A15选择Row)。用于打开一个工作行。

2.    随后是一个Read命令——Read命令并发含带突发操作的起始Column地址和bank号,打开对应gating的列;

3.    数据经过特定的延时(CL+AL,后面详细介绍);将数据传出IO;

4.    完成数据传出后,需将当前cache的数据刷回存储整列并关闭当前工作行(携带命令和BA信息);【是否发布自动预充电命令(通过A10)】

DDR写操作

•      ddr发起一次写操作与读类似,除写数据,其他步骤参照读。

1.    和读操作一样。

2.    随后是一个write命令——Read命令并发含带突发操作的起始Column地址和bank号,打开对应gating的列;

3.    经过特定的延时(CWL+AL,后面详细介绍);数据从IO写入io gating;这之间又有一个延时tWR。

4.    完成数据写入后,预充电的操作和读一样。

FPGA ——DDR基础概念详解相关推荐

  1. 图像处理术语解释:灰度、色相、饱和度、亮度、明度、阿尔法通道、HSL、HSV、RGBA、ARGB和PRGBA以及Premultiplied Alpha(Alpha预乘)等基础概念详解

    ☞ ░ 前往老猿Python博文目录 ░ 一.引言 由于老猿以前没接触过图像处理,在阅读moviepy代码时,对类的有些处理方法代码看不懂是什么含义,为此花了4天时间查阅了大量资料,并加以自己的理解和 ...

  2. C++存储区域基础概念详解

    *************************************************** 更多精彩,欢迎进入:http://shop115376623.taobao.com ****** ...

  3. RabbitMQ基础概念详解

    欢迎支持笔者新作:<深入理解Kafka:核心设计与实践原理>和<RabbitMQ实战指南>,同时欢迎关注笔者的微信公众号:朱小厮的博客. RabbitMQ简介 AMQP,即Ad ...

  4. gRPC 基础概念详解

    作者:jasonzxpan,腾讯 IEG 运营开发工程师 gRPC (gRPC Remote Procedure Calls) 是 Google 发起的一个开源远程过程调用系统,该系统基于 HTTP/ ...

  5. OData基础概念详解(Metadata, $select, $filter)

    在博客<SAP Gateway与OData用法简介>中,简单介绍了SAP Gateway的部署方式和OData的使用方法.在本文中,将进一步介绍OData的基础概念,以及在OData中基础 ...

  6. es存在某个字段的查阅_ElasticSearch系列02:ES基础概念详解

    1.ES 简介 1)定义 ES是elaticsearch简写, Elasticsearch是一个开源的高扩展的分布式全文检索引擎,它可以近乎实时的存储.检索数据:本身扩展性很好,可以扩展到上百台服务器 ...

  7. es 映射 mysql_ElasticSearch系列02:ES基础概念详解

    1.ES 简介 1)定义ES是elaticsearch简写, Elasticsearch是一个开源的高扩展的分布式全文检索引擎,它可以近乎实时的存储.检索数据:本身扩展性很好,可以扩展到上百台服务器, ...

  8. 计算机网络之数据链路层基础概念详解

    目录 数据链路层思想相关概念术语 数据链路层在网络中的地位 数据链路层提供的服务 成帧及透明传输 可靠交付(reliable delivery) 流量控制 差错检验 多路访问协议(介质访问控制) 传播 ...

  9. 零基础学习PHP编程——基本概念详解之域名解析与DNS缓存

    基本概念详解之一--域名解析与DNS缓存 注意: 本文主要介绍了域名解析流程即DNS缓存相关知识 [转载请注明] 欢迎交流QQ群: 640765823 一. DNS是什么? DNS(Domain Na ...

最新文章

  1. matlab与python通信_python和matlab之间数据传输方法
  2. kafka数据 落盘_Kafka架构原理?也就这么回事!
  3. 初心大陆----python宝典(意外发生篇)
  4. placement new 操作符
  5. 内存中原码,反码,补码,查看数值范围,,或,异或,取反,左右移位操作
  6. 2017.9.21 所驼门王的宝藏 思考记录
  7. Hadoop无法上传文件查找原因
  8. 【报告分享】2021-2022年中国人工智能创投数据报告.pdf(附下载链接)
  9. [转]android sqlite db-journal文件产生原因及说明
  10. 【路径规划】基于matlab粒子群优化蚁群算法最短路径规划【含Matlab源码 076期】
  11. window电脑通过composer安装yii2时总是失败
  12. 计算机网络——模拟信号(四)
  13. kafka报错Error while fetching metadata with correlation
  14. P1217 [USACO1.5]回文质数 Prime Palindromes——回文质数性质、打表
  15. Yii框架zii.widgets.grid自定义按钮,ajax触发事件并提示
  16. 《机器人学导论》第1章课后作业
  17. Servlet 02
  18. 游戏服务器主程白皮书-序言
  19. git 忽略某些文件
  20. 《平凡的世界》中田晓霞和孙少平的爱情

热门文章

  1. c语言中控辅助DNF,DNF2019最新稳定代码辅助
  2. UCAS - AI学院 - 自然语言处理专项课 - 第8讲 - 课程笔记
  3. Alfresco安装后启动异常处理
  4. 计算机网络实验毕业论文,计算机网络实验五.doc
  5. 电子元件抗ESD能力测试方法 2021-05-29
  6. Linux开发者的CI/CD(3)jenkins pipeline语法学习
  7. [转贴]大量.net学习资源
  8. Linux任务计划详解(crontab、at)
  9. sysbench代码剖析和实践
  10. 通过Python的PIL库给图片添加马赛克