【精选】硬件接口之DDR | 您所在的位置:网站首页 › ddr3内存插槽有多少引脚 › 【精选】硬件接口之DDR |
1.引脚说明
DDR3物理引脚可划分为4类:地址总线、数据总线、控制线、电源与参考电压。 2.地址线 A[14:0] 地址总线: 为地址输入,为ACTIVATE命令提供行地址,同时为READ/WRTE命令提供列地址和自动预充电位(A10),以便从某个Bank的内存阵列里选出一个位置。LOAD MODE命令期间,地址输入提供一个操作码。地址输入的参考值是 VREFCA引脚。A12/BC#: 在模式寄存器(MR)使能时,A12在READ和 WRITE命令期间被采样,以决定burst chop(on-the-fly)是否会被执行(HIGH=BL8执行 burst chop),或者LoW-BC4不执行 burst chop。BA[2:0] bank选通线: 确定要操作的Bank,参考值是ⅤREFCA引脚。3.命令&控制&时钟 1)CKE 时钟使能引脚(输入): CKE为高电平时,启动内部时钟信号、设备输入缓冲以及输出驱动单元。CKE低电平时则关闭上述单元。当CKE为低电平时,可使设备进入PRECHARGE POWER DOWN、SELF-REFRESH以及ACTIVE POWER DOWN模式。CKE与SELF REFRESH退出命令是同步的。在上电以及初始化序列过程中,VREFCA与VREF将变得稳定,并且在后续所有的操作过程中都要保持稳定,包括SELF REFRESH过程中。CKE必须在读写操作中保持稳定的高电平。在POWER DOWN过程中,除CK_t,CK_c,ODT以及CKE以外的所有输入缓冲都是关闭的。在SELF REFRESH过程中,除CKE以外的所有输入缓冲都是关闭的。在正时钟上升边沿采样。2)CK. CK# 差分时钟信号(输入): 差分时上钟输入,所有控制和地址输入信号在CK上升沿和CK#的下降沿交叉处被采样,输出数据选通(DQs,DQS#)参考与CK和CK#的交叉点。3)CS# 片选信号: 使能(低)和禁止(高)命令译码,当CS#为低时DDR芯片使能、CS#的参考值是 VREFCA引脚。4) RAS#,CAS#,WE#:这3个信号,连同CS#,定义一个命令,其参考值是ⅤREFCA。5)RESET# 复位信号: 低位有效,参考值是VSS,复位的断言是异步的6)ODT 片上终端使能: ODT使能(高)和禁止(低)片内终端电阻,在常操作使能时,ODT仅对下面的引脚有效:DQ[7:0]、DQS、DQS#和DM。如果通过LOADMODE命令禁止,ODT输入被忽略。ODT的参考值是VREFCA引脚。7)ZQ#: 输出驱动校准的外部参考,这个引脚应该连接240欧姆电阻到VSSQ。4.电源与参考引脚 1)VDD: 电源电压,1.5V±0.075V。2)VEDO: DQ电源,1.5V±0.075V。为了降低噪声,在芯片上进行了隔离。3)VREFCA: 控制、命令、地址的参考电压。 VREFCA在所有时刻(包括自刷新)都必须保持规定的电压。4)VREFDQ: 数据的参考电压。 VREFDQ在所有时刻(除了自刷新)都必须保持规定的电压。5)VSS: 地.6)VSSQ: DQ地, 为了降低噪声,在芯片上进行了隔离5.引脚功能 1)ODT ( On-DieTermination ,片内终结) 所谓的终结(端接),就是让信号被电路的终端吸收掉,而不会在电路上形成反射, 造成对后面信号的影响。 顾名思义, ODT 就是将端接电阻移植到了芯片内部,主板上不再有端接电路。在进入DDR 时代, DDR 内存对工作环境提出更高的要求,如果先前发出的信号不能被电路终端完全吸收掉而在电路上形成反射现象, 就会对后面信号的影响造成运算出错。因此目前支持DDR主板都是通过采用终结电阻来解决这个问题。 由于每根数据线至少需要一个终结电阻, 这意味着每块DDR 主板需要大量的终结电阻, 这也无形中增加了主板的生产成本 ,而且由于不同的内存模组对终结电阻的要求不可能完全一样,也造成了所谓的“内存兼容性问题”。而在DDR-II 中加入了 ODT功能,当在DRAM 模组工作时把终结电阻器关掉, 而对于不工作的 DRAM 模组则进行终结操作,起到减少信号反射的作用,如下图二所示。ODT 的功能与禁止由主控芯片控制,在开机进行 EMRS 时进行设置, ODT 所终结的信号包括 DQS 、DQS# 、DQ 、DM 等。这样可以产生更干净的信号品质,从而产生更高的内存时钟频率速度。而将终结电阻设计在内存芯片之上还可以简化主板的设计,降低了主板的成本, 而且终结电阻器可以和内存颗粒的“特性”相符, 从而减少内存与主板的兼容问题的出现.ODT将终结电阻移植到了芯片内部,主板上不在有终结电路。ODT的功能与禁止由北桥芯片控制,主要用来简化一个模组中同时使用4与8bit位宽芯片时的控制设计)、DQ、DM等。 2)ZQ 校准 如下所示, ZQ 是DDR3一个新增的引脚,在这个引脚上接有一个 240 欧姆的低公差参考电阻。这个引脚通过一个命令集,通过片上校准引擎( ODCE ,On-DieCalibrationEngine )来自动校验数据输出驱动器导通电阻与 ODT 的终结电阻值。 当系统发出这一指令之后, 将用相应的时钟周期 (在加电与初始化之后用 512 个时钟周期,在退出自刷新操作后用 256 时钟周期、在其他情况下用 64个时钟周期)对导通电阻和 ODT 电阻进行重新校准。 ODT是终端匹配,那就是要在你的信号线终端上拉一个电阻,但是这个内部电阻随着温度会有些细微的变化,为了保证信号被准确的进行终端匹配,就需要ZQ了,ZQ的作用就是使用你外面连接的,高精度240R电阻来对这个内部的电阻进行校准。 具体调校如下所示。 不过,由于在一般情况下对应用环境稳定程度要求并不太高,只要存在差分 DQS时就基本可以保证同步的准确性, 而且 OCD 的调整对其他操作也有一定影响, 因此 OCD 功能在普通台式机上并没有什么作用,其优点主要体现在对数据完整性非常敏感的服务器等高端产品领域。 7)数据掩码 Data Mask(DM) 数据掩码功能也称为部分写。只支持x8和x16配置。DM功能与DBI和TDQS功能共用相同的管脚。DM功能只用于写操作,且不能与写DBI功能同时使能。 TDQS功能的优先级最高,如果使能了TDQS那么DM和DBI功能都被禁止。 DDR的内核时钟只有100M 133M 166M 200M四种,由于几代预读取能力不同,那DDR3举例,它的等效频率就成了800M —1600M这个应该是它的范围吧? 是的。内核时钟预读取位数2=等效时钟频率。
在RESET之后的第一次ZQCL必须要512个时钟(tZQINIT)周期进行一次完整的校准。在之后 ZQCL必须要tZQOPER(256个时钟周期)ZQCS命令在除了ATCIVITIES的任何时间发送,所有的BANK必须Precharged并要满足tRP的时间要求. 原文地址:参考链接 三、DDR3 工作原理与时序参数 1.DDR3 存储单元结构和原理 一个基本存储单元结构图如下图, storage capacitor为一个基本存储单元,当access transitor被选通时,可读可写 DDR只能选中其中一行,不可同时对两行进行访问。 读操作原理: 如上图所示,预充电开关闭合,旁路了sense amplifier,所有的bit line都被充电至1/2VDD。预充电关闭,因bit line足够长,其可短时间维持1/2 VDD的电压值。所访问行的word line打开,则与存储电容连接的晶体管导通。若电容储存值为1,则存储电容将向bit line充电。因bit line电容远大于存储电容,bit line 电压会冲至略大于1/2VDD。 若电容储存值为0,则bit line将向存储电容充电。bit line电容电压将小于1/2VDD。 1.sense amplifer将放大其两端奇偶行bit line的电压差别,直到一端是稳定的高电平,而另一端是稳定的L电平。其输出将锁存到行latch,由于整行都被锁存,对该行中的每一个地址的读访问不需要额外的延时。 2.一旦sense amplifier的两端稳定,存储电容将被sense amplifer的输出所刷新。由于bit line较长,sense amplifer电平传输到存储电容需要一定的时间。 3.一旦读取结束,word-line被关闭。sense amplifier被关闭(旁路),所有的bit line重新开始预充电。 写操作原理: 所对应的sense amplifer被强制置为某一个电平,然后由其对存储电容充电或放电。 2.DDR 与 SDRAM区别 DDR SDRAM 全称为 Double Data Rate SDRAM,中文名为“双倍数据流 SDRAM”。DDR SDRAM 在原有的 SDRAM的基础上改进而来。下图是DDR和SDRAM的数据传输对比图
DDR寻址流程是:先指定Bank地址,再指定行地址,然后指列地址最终的确寻址单元。在实际工作中,Bank地址与相应的行地址是同时发出的,此时这个命令称之为“行激活”(Row Active)。在此之后,将发送列地址寻址命令与具体的操作命令(是读还是写),这两个命令也是同时发出的,所以一般都会以“读/写命令”来表示列寻址。 tRCD 全称是 RAS-to-CAS Delay(RAS至CAS延迟,RAS就是行地址选通脉冲,CAS就是列地址选通脉冲),也就是行寻址到列寻址之间的延迟,是在行有效(行激活)到读/写命令发出的这段时间间隔叫做 tRCD,可以理解为行选通周期,时序图如下:
AL使用Post CAS技术,在总线上发出CAS信号(读写/命令)后到这个指令实际被执行的延时。但是对于这个改进有两个地方值得注意的: 1、tRCD依然是存在的,这个是硬件的限制。而Post CAS技术改进的是命令的传输机制。可以这样理解的:Post CAS技术是对CAS信号指令提供一种芯片内部延时的机制,也可以理解为将CAS信号缓存AL时间后执行,这样不妨碍总线上的其他命令的发送。 2、Post CAS技术在单次的突发访问中是没有影响的,只有连续多次的突发访问才有性能的提升,但是对于内存操作一般不可能做单次的突发,就算程序这样做了硬件缓存机制也会做多次的突发。 8.读延时 tRL tRL :从列地址发出到数据端口上有效的数据输出延时 tRL = tAL + tCL
10.数据掩码 DM(Data I/O Mask) 如果BL=4,那 么也就是说一次就传送4×64bit的数据。但是,如果其中的第二笔数据是不需要的,怎么办?还都传输吗?为了屏蔽不需要的数据,人们采用了数据掩码 (Data I/O Mask,简称DQM)技术。通过DQM,内存可以控制I/O端口取消哪些输出或输入的数据。这里需要强调的是,在读取时,被屏蔽的 数据仍然会从存储体传出,只是在“掩码逻辑单元”处被屏蔽。DQM由北桥控制,为了精确屏蔽一个P-Bank位宽中的每个字节,每个DIMM有8个DQM 信号线,每个信号针对一个字节。这样,对于4bit位宽芯片,两个芯片共用一个DQM信号线,对于8bit位宽芯片,一个芯片占用一个DQM信号,而对于 16bit位宽芯片,则需要两个DQM引脚。 11.预充电 tRP(Row Precharge command Period) Prechage:需要precharge的原因,关闭当前行,打开新行时,要求新的bit line充电到VDD/2。在数据读取完之后,为了腾出读出放大器以供同一Bank内其他行的寻址并传输数据,内存芯片将进行预充电的操作来关闭当前工作行。还是以上面那个Bank示意图为例。读出放大器服务单位为行,所以对同一Bank的不同行的操作,需要先关闭现有的工作行,在打开要操作的行。 到可以打开新的工作行之间的间隔就是tRP(Row Precharge command Period,行预充电有效周期),单位也是时钟周期数 WR 值计算: 通过将tWR(ns)除以tCK(ns)并四舍五入到下一个整数,可以计算时钟周期中的WR(自动预充电的写恢复)min:WRmin = Roundup(tWR [ns] / tCK [ns] )。必须将模式寄存器中的WR值编程为等于或大于WRmin。编程的WR值与tRP一起使用以确定tDAL。 12. 数据选取脉冲 tDQS DQS 是 DDR中的重要功能,它的功能主要用来在一个时钟周期内准确的区分出每个传输周期,并便于接收方准确接收数据,用于数据同步。每一颗芯片都有一个 DQS 信号线,它是双向的,在写入时它用来传送由内存控制器发来的 DQS 信号,读取时,则由DDR芯片生成 DQS 向内存控制器发送。 在读取时,DQS 与数据信号 在 CK 与 CK#的交叉点同时生成。实际上,DQS 生成时,芯片内部的预取已经完毕了,由于预取的原因,实际的数据传出可能会提前于 DQS 发生(数据提前于 DQS 传出)。此时 CL 可理解为 列选通(CAS)发出到 DQS 生成的间隔,数据真正出现在数据 I/O 总线上相对于 DQS 触发的时间间隔被称为tAC。 DQS 在写入时,如果以 DQS 的上下沿区分数据周期的危险很大。由于芯片有预取的操作,所以输出时的同步很难控制,只能限制在一定的时间范围内,数据在各 I/O 端口的出现时间可能有快有慢,会与 DQS 有一定的间隔,这也就是为什么要有一个 tAC 规定的原因(DDR中的tAC是在DQS触发和数据真正出现在I/O总线上的间隔时间)。而在接收方,一切必须保证同步接收,不能有 tAC 之类的偏差。这样在写入时,芯片不再自己生成 DQS,而以发送方传来的 DQS 为基准,并相应延后一定的时间,在 DQS 的中部为数据周期的选取分割点(在读取时分割点就是上下沿),从这里分隔开两个传输周期。这样做的好处是,由于各数据信号都会有一个逻辑电平保持周期,即使发送时不同步,在 DQS 上下沿时都处于保持周期中,此时数据接收触发的准确性无疑是最高的。 写入数据:以 DQS 的高/低电平期中部为数据周期分割点 读出数据:数据的接收触发为 DQS 的上/下沿。 13. 写入延迟 tDQSS 在DQS 写入时序图中,可以发现写入延迟已经不是0了,在发出写入命令后,DQS与写入数据要等一段时间才会送达**。这个周期被称为 DQS 相对于写入命令的延迟时间(**tDQSS, WRITE Command to the first corresponding rising edge of DQS)。 **为什么要有这样的延迟设计呢?**原因也在于同步,毕竟一个时钟周期两次传送,需要很高的控制精度,它必须要等接收方做好充分的准备才行。tDQSS 是 DDR 内存写入操作的一个重要参数,太短的话恐怕接受有误,太长则会造成总线空闲。tDQSS 最短不能小于 0.75 个时钟周期,最长不能超过 1.25 个时钟周期。 正常情况下,tDQSS 是一个时钟周期,但写入时接受方的时钟只用来控制命令信号的同步,而数据的接受则完全依靠 DQS 进行同步,所以 DQS 与时钟不同步也无所谓。不过,tDQSS产生了一个不利影响— — 读后写操作延迟的增加,如果 CL=2.5,还要在 tDQSS 基础上加入半个时钟周期,因为命令都要在 CK 的上升沿发出。下图中,当 CL=2.5 时,读后写的延迟将为 tDQSS+0.5 个时钟周期(图中 BL=2)。
14.内存的自动自刷新 ASR(Automatic Self-Refresh) 为了保证所保存的数据不丢失,DRAMASR必须定时进行刷新。为了最大的节省电力,DDR3采用了一种新型的自动自刷新设计(ASR,Automatic Self-Refresh)。当开始ASR之后,将通过一个内置于DRAM芯片的温度传感器来控制刷新的频率,因为刷新频率高的话,消电就大,温度也随之升高。而温度传感器则在保证数据不丢失的情况下,尽量减少刷新频率,降低工作温度。不过DDR3的ASR是可选设计,并不见得市场上的DDR3内存都支持这一功能,因此还有一个附加的功能就是自刷新温度范围(SRT,Self-Refresh Temperature)。通过模式寄存器,可以选择两个温度范围,一个是普通的的温度范围(例如0℃至85℃),另一个是扩展温度范围,比如最高到95℃。对于DRAM内部设定的这两种温度范围,DRAM将以恒定的频率和电流进行刷新操作。 15. 局部自刷新 RASR(Partial Array Self-Refresh) 局部自刷新(RASR,Partial Array Self-Refresh)这是DDR3的一个可选项,通过这一功能,DDR3内存芯片可以只刷新部分逻辑Bank,而不是全部刷新,从而最大限度的减少因自刷新产生的电力消耗。这一点与移动型内存(Mobile DRAM)的设计很相似 16.延迟锁定回路(DLL) DDR SDRAM 对时钟的精确性有着很高的要求,而 DDR SDRAM 有两个时钟,一个是外部的总线时钟,一个是内部的工作时钟,在理论上 DDR SDRAM 这两个时钟应该是同步的,但由于种种原因,如温度、电压波动而产生延迟使两者很难同步,更何况时钟频率本身也有不稳定的情况(SDRAM 也有内部时钟,不过因为它的工作/传输频率较低,所以内外同步问题并不突出)。 DDR SDRAM 的 tAC 就是因为内部时钟与外部时钟有偏差而引起的,它很可能造成因数据不同步而产生错误的恶果。实际上,不同步就是一种正/负延迟,如果延迟不可避免,那么若是设定一个延迟值,如一个时钟周期,那么内外时钟的上升与下降沿还是同步的。鉴于外部时钟周期也不会绝对统一,所以需要根据外部时钟动态修正内部时钟的延迟来实现与外部时钟的同步,这就是 DLL 的任务。 DLL 不同于主板上的 PLL,它不涉及频率与电压转换,而是生成一个延迟量给内部时钟。目前 DLL 有两种实现方法,一个是时钟频率测量法(CFM,Clock Frequency Measurement),一个是时钟比较法(CC,Clock Comparator)。 CFM 是测量外部时钟的频率周期,然后以此周期为延迟值控制内部时钟,这样内外时钟正好就相差了一个时钟周期,从而实现同步。DLL 就这样反复测量反复控制延迟值,使内部时钟与外部时钟保持同步。 CC的方法则是比较内外部时钟的长短,如果内部时钟周期短了,就将所少的延迟加到下一个内部时钟周期里,然后再与外部时钟做比较,若是内部时钟周期长了,就将多出的延迟从下一个内部时钟中刨除,如此往复,最终使内外时钟同步。 CFM 式 DLL 工作示意图
17. 写入均衡 Write Leveling 为了提供更好的信号完整性,DDR3的memory controller可以使用write leveling来调整DQS差分对和CK差分对的相对位置,利用DQS差分对路径上的可调整延时来达成该目的。对于DDR的简单运用,比如on-board DDR memory,并且仅有一颗DDR内存的情况下可以考虑不需要做write leveling。 需要写入均衡的情况如下: 1)T型布线: t2:等待tWLDQSEN时间后(保证DQS管脚上的ODT已设置好),DDR控制器将DQS置起;DDR memory在DQS上升沿采样CK信号,发现CK=0,则DQ保持为0。 t3:DDR控制器将DQS置起;DDR memory在DQS上升沿采样CK信号,发现CK=0,则DQ仍然保持为0。 t4:DDR控制器将DQS置起;DDR memory在DQS上升沿采样CK信号,发现CK=1,则等待一段时间后,DDR memory将dq信号置起。 采取以上策略的原因:对于DDR controller来说,其无法测定clk边沿和dqs边沿的绝对位置,故采用了不断调整dqs delay,在dqs上升沿判断clk从0到1或1到0的一个变化,一旦检测到变化,则写入均衡停止。 DDR3标准的Figure 17 write leveling concept图不太好理解,以下进行说明。 从1中的两个信号diff_DQS和DQ,可以看到 diff_DQS的上升沿采到的CK值都是0; 将diff_DQS加延时,直到如2 中所示diff_DQS的上升沿采到的CK值都是1,进而DQ输出从0到1,完成写入均衡(write leveling)。 注意:在DDR3的标准文档中,在同一个时序图中经常性看到有多个相同信号名,但波形不同的情况,需要结合上下文分析波形。 1. 只有使用了fly-by的情况下需使能write leveling 2. CPU内部的内存控制器只能对DQS信号做延迟,不能做超前处理,所以CK要大于DQS信号线的长度,否则将不能满足tDQSS 18.ODT有效阻抗 RTT RTT是ODT的有效阻抗。由MR1寄存器的A9,A6和A2来设定RTT的大小。标准中提到的RZQ电阻为240欧姆,连接在ZQ管脚和VSSQ之间。例如{A9,A6,A2}=001时,RTT=RZQ/4=60欧姆。参见下图(来自DDR3标准) . 在DDR3 标准中定义了两种RTT,即RTT_nom 和RTT_wr,两者分别在MR1和MR2寄存器中设定。如下图。 在DDR3标准中“Controller sends WR command together with ODT asserted”. 如下图,2处为写命令,对应地ODT信号被拉起。5处为读命令,ODT为0,无效。1和4为激活命令,更新bank地址和行地址。3为单bank precharge命令。 1)bank预充电 tRP & tRPA tRP:单个BanK的PRECHARGE命令发出后,需要tRP时间段 tRPA: 所有BanK的PRECHARGE命令发出后,需要tRPA时间段 2)bank激活 tRAS & tRC & tRRD tRAS 行激活时间:存储区激活命令与发出预充电命令之间所花费的时钟周期数。 **tRC:**同一个Bank之间激活命令的时间间隔被定义为tRC,即连续两次向同一存储体发出的 ACTIVET命令之间的最小时间间隔。tRC = tRAS + tRP **tRRD:**不同Bank之间的激活命令时间间隔被称为tRRD。 tRFC 刷新指令间隔时间:决定两次刷新时间,那tRFC就注定比tRC时间来的高,所以它们之间是相互配合的关系 **tCCD:**CAS#-to-CAS#命令之间的时延。读命令之间的时间间隔。如果要输出数据连续读命令之间的间隔是BL/2 个周期,为什么是BL/2? 因为命令是单速率而数据是双速率,如果突发数据速率是8,那读(写)数据输出只需要4个时钟周期。
1.DDR初始化流程 DDR3内存的初始化过程在JEDEC有详细的介绍,以下是Hynix的文档,内容大同小异,时序图如下: 6. 发送MRS命令给MR2(BA0,2=0 and BA1=1) 7. 发送MRS命令给MR3(BA2=0 and BA0,1=1) 8. 发送MRS命令给MR1 且激活DLL(发送DLL enable命令,需要A0=0,BA0=1且BA1,2=0) 9. 发送MRS命令给MR0且 RESET DLL(发送DLL RESET命令,需要A8=1,BA0,1,2=0) 10. 发送ZQCL命令开始ZQ校准过程。 11. 等待tDLLK和tZQinit完成。 12. DDR3 SDRAM可以开始进行一般操作了。 2.上电复位时序复位信号RESET#和时钟使能信号CKE信号之间要求满足以下时序:
五、参考链接 参考链接1:DDR3详解(以Micron MT41J128M8 1Gb DDR3 SDRAM为例) 参考链接2:SDRAM的tRCD、CL、tAC的定义 参考链接3:DDR II中的延时参数 参考链接4:DDR3内存的初始化过程 参考链接5:tbzj_2000 |
CopyRight 2018-2019 实验室设备网 版权所有 |