扒一扒DDR4的新功能和PCB设计上的一些注意事项
DDR4新增了许多功能,这对于我们之前信手拈来的内存PCB设计又带来了一些新的挑战,虽然说之前的一些规范可以用,但还是有很多不一样的地方,如果依然按照之前的设计方法来做,说明你还不了解DDR4,一准入坑。今天咱们就来扒一扒它的新功能和PCB设计上的一些注意事项。
DDRX发展趋势及参数对比
DDR4信号引脚功能
DDR4新增pin
DDR4新增功能
(1)新的JEDEC POD12接口标准(工作电压1.2V) ;
(2)DBI:可以降低功耗并且提升数据信号完整性;
(3)Bank群组结构:是个8n预取群组结构,它可以使用两个或者四个Bank组,这允许DDR4内存在每个Bank群组单独被激活、读取、写入或刷新操作,这样可以带来更高的内存速度和带宽;
(4)取消了Derating,时序仿真计算不再繁琐;
(5)DQ动态确定Vref ( V_ center ) ,增加了眼图要求;
(5)新的终止调度:在DDR4中DQ bus可以转移终止到VDDQ ,这样即使VDD电压降低的情况下也能保证稳定;
(6)新的数据总线CRC技术,可以进行传输过程中的错误侦测,特别对非ECC内存进行写入操作时有帮助;
(7)针对命令和地址总线的新的CA奇偶校验;突发长度和突发停止长度分别为8和4 ;
(8)正常和动态的ODT :改进ODT协议,并且采用新的Park Mode模式可以允许正常终结和动态吸入终结,而不需要去驱动ODT Pin
(9)Differential Signaling(差分信号技术)
信号分组
DDR3数据信号的分组
DDR4数据信号的分组
DDR3地址信号的分组
DDR4地址信号的分组
布局要求
(1)地址线布局布线需使用Fly-by的拓扑结构,不可使用T型,拓扑过孔到管脚的长度尽量短,长度在150mil左右
(2)VTT上拉电阻放置在相应网络的末端,即靠近最后一个DDR4颗粒的位置放置;注意VTT上拉电阻到DDR4颗粒的走线越短越好,走线长度小于500mil;每个VTT上拉电阻对应放置一个VTT的滤波电容(最多两个电阻共用一个电容)
(3)CPU端和DDR4颗粒端,每个引脚对应一个滤波电容,滤波电容尽可能靠近引脚放置。线短而粗,回路尽量短;CPU和颗粒周边均匀摆放一些储能电容,DDR4颗粒每片至少有一个储能电容。
阻抗控制
(1)单端线:50ohm
(2)差分线:100ohm
带状线和平面
(1)除了从焊盘到过孔之间的短线外,所有的走线都必须走带状线,即内层走线
(2)所有的内层走线都要求夹在两个参考平面之间,即相邻层不要有信号层,这样可以避免串扰和跨分割走线,走线到平面的边缘必须保持4mil以上的间距;
(3)数据线参考平面优先两边都是GND,接受一边地,一边自身电源,但是到GND平面的距离要比到电源平面的距离要近;对于地址线,控制信号,CLK来说,参考面首选GND和VDD,也可以选GND和GND。
容性负载补偿
flyby拓扑要求stub走线很短,当stub走线相对于信号边沿变化率很短时,stub支线和负载呈容性。负载引入的电容,实际被分摊到了走线上,所以造成走线的单位电容增加,从而降低了走线的有效阻抗。所以在设计中,我们应该将负载部分的走线设计为较高阻抗,最直接有效的方式就是减小支线线宽。经过负载电容的平均后,负载部分的走线才会和主线阻抗保持一致,从而达到阻抗连续,降低反射的效果。
PCB叠层设计
(1)所有的DQ线必须同组同层。
(2)地址线是否同层不做要求。
(3)为了减少过孔产生的Stub,强烈建议在同一层中优先布DQ, DQS,CLK等信号。如果所有的BGA都在top层,data线尽量的靠近bottom层走,而地址,控制线则可以靠近top层走;当BGA在top层时,越靠近bottom层,过孔产生的stub越短,信号质量越好。
走线线宽和线间距
(1)线宽和线间距必须满足阻抗控制,即单端线50ohm,差分线100ohm。ZQ属于模拟信号,布线尽可能短,并且阻抗越低越好,所以尽可能的把线走宽一点,建议3倍50ohm阻抗控制的线宽;
(2)DQ和DBI数据线,组内要求满足3W间距,与其他组外信号之间保持至少4W;
(3)DQS和CLK距离其他信号间距做到5W以上;
(4)在过孔比较密集的BGA区域,同组内的数据线,地址线的间距可以缩小到2W,但是要求这样的走线尽可能的短,并且尽可能的走直线;
(5)如果空间允许,所有的信号线走线之间的间距尽可能的保证均匀美观;
(6)内存信号与其他非内存信号之间应该保证4倍的介质层高的距离。
等长要求
(1)数据走线尽量短,不要超过2000mil,分组做等长,组内等长参考DQS误差范围控制在+/-5mil;
(2)地址线、控制线、时钟线作为一组等长,组内等长参考CLK误差范围控制在+/-10mil;
(3)DQS、时钟差分线对内误差范围控制在+/-2mil;
(4)RESET和ALERT不需要做等长控制
(5)信号实际长度应当包括零件管脚的长度,尽量取得零件管脚长度,并导入软件中;
(6)因有些IC内核设计比较特别,按新品设计指导书或说明按参考板做,特别是Intel,AMD的芯片,请特别留意芯片手册要求;
电源处理
(1)VDD(1.2V)电源是DDR3的核心电源,其引脚分布比较散,且电流相对会比较大,需要在电源平面分配一个区域给VDD(1.2V);VDD的容差要求是5%,详细在JEDEC里有叙述。通过电源层的平面电容和专用的一定数量的去耦电容,可以做到电源完整性。
(2)VTT(0.6V)电源,它不仅有严格的容差性,而且还有很大的瞬间电流;可以通过增加去耦电容来实现它的目标阻抗;由于VTT是集中在上拉电阻处,不是很分散,且对电流有一定的要求,在处理VTT电源时,一般是在元件面同层通过铺铜直接连接,铜皮要有一定宽度(120mil)。
(3)VREF(0.6V)VREF要求更加严格的容差性,但是它承载的电流比较小。它不需要非常宽的走线,且通过一两个去耦电容就可以达到目标阻抗的要求。因其相对比较独立,电流也不大,布线处理时建议用与器件同层的铜皮或走线直接连接,无须再电源平面层为其分配电源。注意铺铜或走线时,要先经过电容再接到芯片的电源引脚,不要从分压电阻那里直接接到芯片的电源引脚。
(4)VPP(2.5V)内存的激活供电,容差相对宽松,最小2.375V,最大2.75V。电流也不是很大,一般走根粗线或者画块小铜皮即可。
DDR4接口
A[17:0] | input | 为激活命令提供行地址,为读、写命令地址输入:提供列地址,也为模式寄存器设 置提供操作码,A[16]只用于8Gb和16Gb,A[17]只用于16Gb,另外 (A10/AP, A12/BC_n, WE_n/A14, CAS_n/A15, RAS_n/A16还有一些别 的功能) |
A10/AP | input | 自预充电(Auto precharge):在读写命令期间采样A10,决定是 否对访问的Bank在读写操作之后进行Auto Precharge,高电平表示进 行Auto Precharge,低电平表示不进行Auto Precharge。 另外PRECHARGE命令期间也会对A10进行采样,来决定是对一个(A10为 低电平)Bank进行还是对所有的Banks(A10为高电平)进行PRECHARGE, 如果选择一个,则选择的Bank由Bank组和Bank地址决定 |
A12/BC_n | input | 突发突变(Burst chop):在读和写命令期间对A12/BC_n进行采样, 来决定是否进行突发突变,高电平表示进行,低电平表示不进行.具体 可以查看命令真值表 |
ACT_n | input | 命令输入(command input):ACT_n用于指示激活命令。当ACT_n(与CS_n)是低电平时,输入RAS_n/A16,CAS_n/A15, 和WE_n/A14 看作行地址用于激活命令。 当ACT_n为高电平(CS_n为低)时,RAS_n/ A16, CAS_n/A15, and WE_n/A14,用作RAS_n, CAS_n,和WE_n |
BA[1:0] | input | Bank地址输入(bank address inputs):指示被ACTIVTE,READ, WRITE或者PRECHARGE命令操作的Bank。另外用作指示在MODE REGISTER SET命令期间要访问的模式寄存器 |
BG[1:0] | input | Bank组地址输入(Bank group address inputs):指示被ACTIVTE, READ,WRITE或者PRECHARGE命令操作的Bank组。另外用作指示在MODE REGISTER SET命令期间要访问的模式寄存器,BG[1:0]用于x4和x8配 置,而BG[1]不用于x16配置 |
C0/CKE1, C1/CS1_n, C2/ODT1 | input | Stack address inputs: |
CK_t, CK_c, | input | 时钟:差分时钟输入,所有的地址,命令和控制输入信号在CK_t和 CK_c的低电平被采样 |
CKE | input | 时钟使能:高电平激活,低电平禁止内部时钟信号,输入缓存和输 出驱动。拉低CKE提供PRECHARGE,POWER_DOWN和SELF REFRESH操作。 CKE在读写期访问期间必须保持HIGH, |
CS_n | input | 片选 |
DM_n, UDM_n, LDM_n | input | 输入数据Mask:用于写数据,DM在DQS的双沿采样,DM不支持x4配置, UDM_n用于x16的高8位,LDM_n用于x16低8位, |
ODT | input | On-die termination:ODT为高电平时使能内部终端电阻到DDR4.当使 能时,ODT(Rtt)只用于x4和x8的DQ, DQS_t,DQS_c, DM_n/DBI_n/TDQS_t, 和TDQS_c信号(当TDQS功能通过模式寄存器 使能)。对于x16配置,Rtt应用于DQ, DQSU_t, DQSU_c, DQSL_t, DQSL_c, UDM_n,和 LDM_n信号,如果模式寄存器禁止Rtt,ODT脚将 被忽略。 |
PAR | INPUT | |
RAS_n/A16, CAS_n/A15, WE_n/A14 | INPUT | 命令输入: |
RESET_n | input | 低电平异步复位: |
TEN | input | 连通性测试模式:高电平有效,低电平无效 |
DQ | IO | 数据输入输出 :对于x4,x8和x16分别代表DQ[3:0],DQ[7:0]和 DQ[15:0].如果在模式寄存器中使能了写CRC,写CRC会添加在写 突发的后面 |
DBI_n, UDBI_n, LDBI_n | I/O | DBI输入输出:数据总线翻转。DBI_n用于x8,UDBI_n用于x16的 高8位,LDBI_n用于x16的低8位。不支持x4。通过模式寄存器可 以配置DBI用于读和写操作。 |
DQS_t, DQS_c, DQSU_t, DQSU_c, DQSL_t, DQSL_c, | IO | 数据选通:输入用于写数据输出用于读数据。与输出数据边沿对 齐,与输入数据中心对齐,DQS用于x4,x8,DQSU用于x16高8位, DQSL用于x16低8位。DDR4只支持差分数据选通,不支持单端数据 选通道。 |
ALERT_n | | |
TDQS_t, TDQS_c | output | 终端数据选通道:TDQS只用于x8 DRMAs.如果在模式寄存器使能该功能,DRAM会在TDQS_t和TDQS_c使能与DQS_t和DQS_c同样 的Rtt终端电阻。当TDQS功能通过模式寄存器禁止,DM/TDQS_t脚会提供DATA MASK(DM)功能,TDQS_c脚不使用。对于x4和x16模式, 必须禁止TDQS功能。DM功能只支持x8和x16配置 |
ZQ | 参考 | 外部通过240欧姆电阻连接到VssQ |
Bank与Bank 组的区分
这是从DDR4框图中截取的一部分。该DDR总共有16个Bank,每4个Bank组成一个Bank组。
Bank与Bank 组的区分
READ Buust操作
DDR4 读命令支持突发长度为BL8,BC4两种,或者OTF(实时修改BL8和BC4)。这由A12来控制
.A12 = 0 ,BC4(BC4 = burst chop)
.A12 = 1 ,BL8