大家好,我是记得诚。
今天分享ddr相关知识。
1 什么是ddr
ddr是double data rate的缩写,即“双比特翻转”。ddr是一种技术,中国大陆工程师习惯用ddr称呼用了ddr技术的sdram,而在中国台湾以及欧美,工程师习惯用dram来称呼。
ddr的核心要义是在一个时钟周期内,上升沿和下降沿都做一次数据采样,这样400mhz的主频可以实现800mbps的数据传输速率。
2 每一代ddr的基本区别
3 关键技术解释
3.1 vtt
vtt为ddr的地址线,控制线等信号提供上拉电源,上拉电阻是50ω左右。vtt=1/2vddq,并且vtt要跟随vddq,因此需要专用的电源同时提供vddq和vtt。例如芯片tps51206dsqt,lp2996。用专门的电源芯片,还有一个重要的原因,在fly-by的拓扑中,vtt提供电流,增强ddr信号线的驱动能力。
ddr的接收器是一个比较器,其中一端是vref,另一端是信号,例如地址线a2在有vtt上拉的时候,a2的信号在0和1.8v间跳动,当a2电压高于vtt时,电流流向vtt。当a2低于vtt时,vtt流向ddr。因此vtt需要有提供电流和吸收电流的能力,一般的开关电源不能作为vtt的提供者。此外,vtt电源相当于ddr接收器信号输入端的直流偏执,且这个偏执等于vref,因此vtt的噪声要越小越好,否则当a2的状态为高阻态时,ddr接收器的比较器容易产生误触发。
上文说过,vtt相当于ddr接收器的直流偏执,其实如果没有vtt,这个直流偏执也存在,它在芯片的内部,提供电流的能力很弱。如果只有1个或2个ddr芯片,走fly-by拓扑,那么不需要外部的vtt上拉。如果有2个以上的ddr芯片,则一定需要vtt上拉。
3.2 prefetch
prefetch字面意思就是预存取,每一代的ddr预存取大小不同,详见第2章中表格。以ddr3为例,它的prefetch=8n,相当于ddr的每一个io都有一个宽度为8的buffer,从io进来8个数据后,在第8个数据进来后,才把这8个数据一次性的写入ddr内部的存储单元。下图是一个形象的解释,同时我们关注一下几个速率。ddr3的时钟是800mhz,data rate是1600mbps,由于这个buffer的存在,ddr内部的时钟只需要200mhz就可以了(注意ddr内部不是双比特翻转采样)。
我们来做一个频率对照表,如下:
ddr内部的最小存储单元(1bit)是一个晶体管+一个电容,电容会放电,需要不断的“刷新”(充电)才能保持正常的工作状态,由于电容充放电需要时间,ddr内部的频率受限于此,很难提高,目前技术一般在100~200mhz。因此需要用prefetch技术来提内部数据高吞吐率(其实就是串并转换原理)。prefetch位宽的提高,是ddr2,3,4非常显著的变化。
第一段提到,对于ddr3,在第8个数据进来后,fifo满了,然后才把这8个数据一次性的写入ddr内部的存储单元,那么必须要求ddr的内部时钟和外部时钟有一定的约束关系,fifo满的时候一定是以dqs下降沿采样结束的,数据手册中对dqs的下降沿与clk有一个建立时间和保持时间的约束要求的目的原来是这样。
3.3 sstl
sstl(stub series terminated logic)接口标准也是jedec所认可的标准之一。该标准专门针对高速内存(特别是sdram)接口。sstl规定了开关特点和特殊的端接方案。
sstl标准规定了ic供电,io的dc和ac输入输出门限,差分信号门限,vref电压等。sstl_3是3.3v标准,sstl_2是2.5v标准,sstl_18是1.8v标准,sstl_15是1.5v。
sstl最大的特点是需要终端匹配电阻,也叫终端终结电阻,上拉到vtt(1/2vddq)。这个短接电阻最大的作用是为了信号完整性,特别是在1拖多的fly-by走线拓扑下,还能增强驱动能力。
3.4 bank
以下图为例,一个bank中包含若干个array,array相当于一个表单,选中“行地址”和“列地址”后,表单中的一个单元格就被选中,这个单元格就是一个bit。bank中的所有array的行地址是连在一起的,列地址也是。那么选中“行地址”和“列地址”后,将一起选中所有array的bit。有多少个array,就有多少个bit被选中。以ddr3为例,data线宽度是32,prefetch是8,那么array就有32x8=256.内部一次操作会选中256bit的数据。
bank数量越多,需要的bank选择线越多,ddr3有8个bank,需要3个ba信号ba0~2。ba,行地址,列地址共同组成了存储单元的访问地址,缺一不可。
3.5 ddr的容量计算
下图是ddr3 1gb的寻址配置,以其中128mbx8为例说明,其中x8表示io数据(dq)位宽度。
我的理解是,这个page size更像是逻辑上的一个页,并不是一个bank中,一行的所有bit,因为一行的所有bit要考虑prefetch宽度。
上表是jesd-3d中的表格,row address和column address都是真实需要寻址的地址,其他用途的地址比如a10,a12或者a11等并没有计算在内。在计算时,不要因为有a13,就认为column address就是a0~a13。
3.6 burst
burst字面意思是突发,ddr的访问都是以突发的方式连续访问同一行的相邻几个单元。进行brust时,需要有几个参数:
burst length:一次突发访问几个列地址。
read/write: 是读还是写
starting column:从哪一列开始burst
burst:突发的顺序。
下图是ddr3中突发类型和顺序,burst是通过a12/bc#选择的。但对于ddr,ddr2和ddr4,不一定就是通过a12/bc#,详见pin定义章节。
3.7 ddr的trdc,cl,tac
在实际工作中,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,时钟触发后的访问时间)。
目前内存的读写基本都是连续的,因为与cpu交换的数据量以一个cache line(即cpu内cache的存储单位)的容量为准,一般为64字节。而现有的rank位宽为8字节(64bit),那么就要一次连续传输8次,这就涉及到我们也经常能遇到的突发传输的概念。突发(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内其他行的寻址并传输数据,内存芯片将进行预充电的操作来关闭当前工作行。还是以上面那个bank示意图为例。当前寻址的存储单元是b1、r2、c6。如果接下来的寻址命令是b1、r2、c4,则不用预充电,因为读出放大器正在为这一行服务。但如果地址命令是b1、r4、c4,由于是同一bank的不同行,那么就必须要先把r2关闭,才能对r4寻址。从开始关闭现有的工作行,到可以打开新的工作行之间的间隔就是trp(row precharge command period,行预充电有效周期),单位也是时钟周期数。
3.8 odt
odt是内建核心的终结电阻,它的功能是让一些信号在终结电阻处消耗完,防止这些信号在电路上形成反射。换句话说就是在片内设置合适的上下拉电阻,以获得更好的信号完整性。被odt校准的信号包括:
dq, dqs, dqs# and dm for x4 configuration
dq, dqs, dqs#, dm, tdqs and tdqs# for x8 configuration
dqu, dql, dqsu, dqsu#, dqsl, dqsl#, dmu and dml for x16 configuration
当一个cpu挂了很多个ddr芯片的时候,他们是共用控制线,地址线的,走线肯定要分叉,如果没有中端匹配电阻,肯定会产生信号完整性问题。那么如果只有一个ddr芯片的时候,需不需要呢?正常情况下,走线很短,有符合规则,是不需要的。
下图是ddr中的io上下拉电阻,ron是ddr的输出结构的上下拉电阻,rtt是ddr输入结构的上下拉电阻。这两个电阻的阻值都是可调的。
下图是ron的调节,注意这不是odt的任务,调节是通过寄存器实现。
下图是rtt的调节,是odt要做的事情,而且rtt的档位要多,也是通过寄存器调节的。
注意,ddr3的pin定义上有一个引脚是odt,如果odt=0,dram termination state功能关闭;odt=1,dram termination state的功能参考寄存器设置。如下是一个真值表。因为dram termination state非常耗电,所以不用的时候最好不要打开。
3.9 ddr3的zq
zq信号在ddr3时代开始引入,要求在zq引脚放置一个240ω±1%的高精度电阻到地,注意必须是高精度。而且这个电阻是必须的,不能省略的。进行odt时,是以这个引脚上的阻值为参考来进行校准的。
校准需要调整内部电阻,以获得更好的信号完整性,但是内部电阻随着温度会有些细微的变化,为了将这个变化纠正回来,就需要一个外部的精确电阻作为参考。详细来讲,就是为rtt和ron提供参考电阻。
3.10 ocd
ocd 是在 ddr-ii 开始加入的新功能,而且这个功能是可选的,有的资料上面又叫离线驱动调整。ocd的主要作用在于调整 i/o 接口端的电压,来补偿上拉与下拉电阻值, 从而调整dqs 与 dq 之间的同步确保信号的完整与可靠性。调校期间,分别测试 dqs 高电平和 dq高电平,以及 dqs 低电平和 dq 高电平的同步情况。如果不满足要求,则通过设定突发长度的地址线来传送上拉 / 下拉电阻等级(加一档或减一档),直到测试合格才退出 ocd 操作,通过 ocd 操作来减少 dq 、 dqs的倾斜从而提高信号的完整性及控制电压来提高信号品质。由于在一般情况下对应用环境稳定程度要求并不太高,只要存在差分 dqs时就基本可以保证同步的准确性, 而且 ocd 的调整对其他操作也有一定影响, 因此 ocd 功能在普通台式机上并没有什么作用,其优点主要体现在对数据完整性非常敏感的服务器等高端产品领域。
4 ddr3的pin定义
下面是三星k4b4g0446q/k4b4g0846q的pin定义,每一个都有很详细的解释。
以x8的配置为例,如下是其ball map。
一对时钟线ck和ckn
数据线dq0~dq7共8位。
一对差分对dqs和dqsn
地址线a0~a15,其中,a10和a12有特殊用途。
行选中信号rasn
列选中信号casn
写使能wen
片选csn
bank选择ba0~2
一个reset信号,是ddr3新增的一项重要功能,并为此专门准备了一个引脚。这一引脚将使ddr3的初始化处理变得简单。当reset命令有效时,ddr3 内存将停止所有的操作,并切换至最少量活动的状态,以节约电力。在reset期间,ddr3内存将关闭内在的大部分功能,所有数据接收与发送器都将关闭,且所有内部的程序装置将复位,dll(延迟锁相环路)与时钟电路将停止工作,甚至不理睬数据总线上的任何动静。这样一来,该功能将使ddr3达到最节省电力的目的。
zq和odt pin上文已经说明。
5 ddr的走线规则
ddr的信号线需要分组:
数据线一组(dq,dqs,dqm),误差控制在20mil以内;
控制线一组(address,控制线,时钟),以时钟为中心,误差控制在100mil以内。
武大靖成为竞速体验官,iQOO Neo3发布会倒计时3天
研究显示iPad充电一年费用仅1.36美元
把比亚迪汽车拆开后,工程师震惊了!
NVIDIA首席技术官 Michael Kagan解读数据中心新时代
5G技术带来的只有速度吗?只应用于手机?
DDR、DDR2、DDR3、DDR4、LPDDR区别
浅谈一下锡膏过期了是否还能用?
SanDisk:3D NAND闪存开始出击
手机电池测试中弹片微针模组有着异常优秀的表现
数字孪生智慧港口:协调装卸生产秩序,掌握船舶进出动态
涡街流量计的特点与用途
完全无人驾驶汽车为何迟迟不肯上市?
采用RAM模块与FPGA器件实现短帧数字通信系统设计
浅谈变配电所的直流系统组成及操作电源分类
2019年5G元年运营商需要不断总结过去的经验和教训
美国在全球范围内挑起的贸易纠纷,又遭到了一国的反制
这款苹果手机你们用过吗?
iMEMS加速度传感器ADXL345
上海在机器人领域发展方面有哪些优势?
H3C实验配置步骤:静态路由介绍