5.1 内存DDR电路
平板电脑在运行时,需要读取大量的数据及程序,而这些程序和数据位于NAND Flash或硬盘中。如果电脑中的CPU直接从NAND Flash或硬盘中读取这些数据,就会用较长的时间才能读回到CPU中进行处理,这造成一些程序停顿,无法实时运行,或不能连续运行,甚至无法运行的问题。这时,可以把NAND Flash或硬盘中的程序及数据搬移到(复制到)具有更快读取速度的内存DDR中,从内存DDR中读取运行,从而解决了速度慢的问题。另外,CPU在运行一些程序的过程中,会产生大量临时数据,这些数据只是中间数据,很快就没用了,但临时还有用,所以这些数据也存放在内存DDR中。还有一些则不是临时数据,而是大量的有用数据,也存放在内存中,如果这些数据经过CPU读取再传输,同样会变慢,这时CPU就会让这些数据经由内存的数据总线直接输出给外部需要数据的设备(如图形处理器等),不再经过CPU传输,从而提高运行速度。可见内存在平板电脑中的作用还是很大的,是必不可少的部分。平板电脑中的DDR芯片如图5-1所示。
![](https://book.img.zhangyue01.com/group61/M00/7A/30/CmQUOV-em-2EI7xdAAAAAK8bgFk751134561.jpg?v=FTTTcvoD&t=CmQUOV-em-0.)
图5-1 内存DDR芯片
5.1.1 DDR内存控制器
DDR内存控制器的方框图如图5-2所示,操作系统或驱动程序的代码经过CPU运行处理后,将指令操作码、逻辑地址和操作数据由内部总线送至DDR内存控制器,其中指令操作码(读写指令)被送到DDR内存控制器的CPU操作控制码寄存器中,然后又送至解码电路,由解码电路产生一系列的控制代码,最后再送至控制信号和时序形成电路,由该电路生成对DDR内存进行各种操作所需的多个控制信号及其时序逻辑,然后送往DDR内存电路。而逻辑地址则被送到地址寄存器,然后送往地址转换电路,将逻辑地址(逻辑地址是由操作系统给程序代码分配的地址,用于表示程序代码在整个程序中的位置,又称虚拟地址)转换为物理地址(物理地址是DDR内存中存储单元的地址),地址形成电路完成地址映射、地址偏移、地址越权判断以及错误纠正后,形成DDR内存所需的正确地址信号,送至DDR内存的地址总线。操作数据则被分为读/写两个通道,分别被送至读数据FIFO或写数据FIFO,然后送至ECC错误校验纠正电路,再送至读或写数据缓存驱动,然后经过数据总线送至DDR内存。
![](https://book.img.zhangyue01.com/group61/M00/79/DE/CmQUOF-em-2EBByiAAAAAErhj7Q545903429.jpg?v=qjNGUeXC&t=CmQUOF-em-0.)
图5-2 DDR内存控制器方框图
DDR内存控制器对运行速度和传输速度要求比较高,其内部的功能模块电路有着特殊的设计,一是可以运行在很高的时钟频率上,二是一部分功能直接由硬件来实现,例如,解码功能、ECC纠正功能,以及地址转换中的部分功能,这些电路能够在其输入端输入信号(如表示代码和数据的一系列的0 和1 的组合信号)后,在该电路模块的输出端立即输出所需要的一系列信号和结果,模块功能的实现几乎没有延迟,具有最快的速度。而控制器所起的作用就很少,仅起一些辅助性的异常监控、简单管理和协调的作用。
对DDR内存控制器的另一个要求就是传输的数据必须正确,不能在数据的传输过程中出现数据错误,这个功能是由ECC错误纠正电路来实现的,但并不是所有的错误数据都能纠正。它有一个位数的限制,即能纠正多少位错误,超出这个限制,数据同样会发生错误。例如,我们常见的程序运行时卡住、停顿,程序运行过程中报错,以及出现花屏等故障,其原因就是DDR内存损坏或者接触不良,从而发给DDR控制器大量错误的数据,面对大量的错误数据,ECC电路也无能为力,只能再次将这些错误数据送给CPU或其他电路,于是最终故障现象出现了。但在绝大多数情况下,ECC还是可以起到很关键的作用的,它是数据传输中必不可少的电路,如果没有ECC电路,或者ECC电路坏了,整个电脑都将无法工作且不能使用。
5.1.2 DDR内存的内部结构
DDR内存的内部结构如图5-3所示,这是第三代DDR内存的内部方框图,其他DDR的内部结构除了没有复位电路外,都基本相同。
![](https://book.img.zhangyue01.com/group61/M00/7A/30/CmQUOV-em-2EGgc1AAAAABrzDmk953303308.jpg?v=Xp6KCKdg&t=CmQUOV-em-0.)
图5-3 DDR内存的内部结构
该内部结构中电源部分是必不可少的,由于很简单,图5-3 中没有画出来,但在维修工作中是首先要进行检测的项目,因为没有电源芯片就不可能工作。RST复位控制负责将DDR电路复位到初始化状态,内部大部分电路都将不再工作。ZQ校准和ODT电路则使数据总线工作在最佳状态。逻辑控制电路就是控制总线的接口,负责接收控制信号,并转换成各种操作。地址寄存器把地址转换为行地址和列地址,以及体/块(BANK)地址。行地址、列地址和BANK地址决定存储阵列中的某一个具体的存储单元,而从存储单元读出或写入的数据,则经各自的读或写锁存器缓冲后,送至数据总线。以上就是DDR内部的基本结构介绍。
CPU内置DDR控制器和DDR的连接方框图如图5-4所示。
![](https://book.img.zhangyue01.com/group61/M00/7A/30/CmQUOV-em-2EBOsRAAAAABZbVkw988777542.jpg?v=nG1XwNg1&t=CmQUOV-em-0.)
图5-4 CPU内置DDR控制器和DDR的连接图
CPU的内置DDR控制器通过地址总线、数据总线和控制总线与内存DDR相连。CPU运行的程序、数据存放于DDR中,CPU内置内存控制器,通过内存控制器和内存控制器的驱动程序,来控制、管理并协调这三个总线,从而完成数据从CPU到内存,或从内存到CPU的数据传输功能。
5.1.3 DDR电路连接图
DDR内存现在一般是二代和三代的,一代的已基本见不到了。二代和三代的区别除了三代有更快的速度外,二代的工作电压是1.8V,三代的工作电压是1.5V;另一个区别就是三代的芯片有RST引脚,二代的芯片没有这个引脚;还有则是三代的芯片采用了一些新技术,所以有更快的速度,不过这些从外观上都看不到。电路连接如图5-5所示。
![](https://book.img.zhangyue01.com/group61/M00/7A/30/CmQUOV-em-2EL1p6AAAAAHId8uM123394690.jpg?v=ti9r4942&t=CmQUOV-em-0.)
图5-5 平板电脑DDR电路连接图
目前,平板电脑DDR芯片的数据总线有8位、16位和32位三种,如果是8位的芯片,则32位的数据总线需要4块DDR3芯片和CPU相连。如果CPU是64位的数据总线则需要8 块DDR芯片和CPU的数据总线相连。如果是16 位的DDR芯片,则32 位的数据总线(CPU端的总线)需要2 块,64 位的数据总线需要4 块。地址线则决定内存容量的大小,同时片选线也决定整机容量的大小,其他的控制线则按照信号说明接到CPU的相应引脚端。
另外,芯片引脚符号后面的“#”符号,代表低电平有效,或者是与同符号名称极性相反的信号。
5.1.4 DDR芯片各引脚符号说明及引脚作用
DDR电路芯片引脚符号(图5-5)说明及作用:
A0~A15:地址总线,用于传送地址(或命令,需其他引脚配合)。
D0~D15:数据总线,用于传送数据(或命令)。
WE:写允许,即写DDR的命令。高电平:写;低电平:读命令/读。
CS#:片选信号,低电平时表示选中该芯片,可以从该芯片中读写数据;而高电平时则不对该芯片进行操作,或者说任何操作对该芯片都无效。
RAS#:行地址选择,和CAS#以及地址总线等信号配合,用于确定DDR中的某个存储单元。
CAS#:列地址选择。
CKE#:时钟允许。
CK、CK#:时钟信号(极性相反的一对差分时钟信号)。
ODT:终结电阻,用于提高信号的传输性能,类似终端电阻,可以降低干扰,改善信号传输波形。
ZQ:外接一个240Ω的电阻,内接自动校准器,目的是为了提高数据总线的信号传输质量,从而提高传输速度。
BA0~2:块地址选择,DDR内部被划分为多个逻辑块,选择这些块时用BA信号。
DM0~1:数据掩码标志位,取消数据总线上某个字节,从而使这个字节的数据无效。一个DM信号线,可以使一个字节(8位)数据无效,2个DM信号,可以使两个字节(16位数据)无效,以此类推。
DQS:双向数据同步信号,输入输出数据时,作为数据同步用的,又叫数据存取脉冲。
VDD:电源,三代DDR的电源电压为1.5V(如果采用低功耗版的DDR,则电压为1.35V),二代DDR的电源电压为1.8V,四代及五代DDR的电源电压值会更小。
VREF CA\VREF DQ:基准电压等于二分之一的VDD电压,CA表示命令和地址部分的电路所需的基准电压,DQ表示数据部分的电路所需的基准电压。
DLL:延迟锁定环路,用于动态修正内部时钟与外部时钟同步。
说明: 如果一个符号后面带有“#”号,或者同一个符号后面有“P”“M”或“L”“U”或“+”“-”,表明是极性相反的同一个信号,又称“差分信号”。
5.1.5 DDR电路的工作原理
首先DDR芯片的各个电源应能被准确稳定地加到芯片上,然后CKE信号有效,时钟加到芯片DDR上(在CKE有效之前,CS信号应首先变低,即CS信号有效,否则,所有操作无效),随后就是RST信号有效,DDR芯片被正确复位,复位之后开始执行初始化操作,而这个初始化操作是由DDR芯片内部自动执行的命令,包括运行IQ进行ODT校准,使数据总线工作在最佳状态。校准结束后,DDR芯片就处于准备好的工作状态,等待CPU发出各种操作指令,完成DDR和CPU之间数据传输的工作。
关于对DDR内存的具体操作,则通过大概二十多条指令来实现,其中包括基本的读、写、刷新等,这二十多条DDR指令由驱动程序来实现,CPU通过运行驱动程序就可以向DDR内存发出各种操作指令,既可以向DDR中写数据,也可以从DDR内存中读出数据。
而驱动程序则是通过控制并协调控制总线、地址总线和数据总线,即CPU和DDR之间的连线,来实现各种指令,完成各种操作的。
例如,对DDR内存进行读的指令(或操作)将涉及以下信号线(圆圈内的数字是信号发出的先后顺序):
读(DDR内存中的数据)指令:
① CS有效
② CK、CK#有效
③ RAS有效
④ CAS有效
⑤ WE为高
⑥ A0~A15有效
⑦ D0~D15有效
驱动程序通过对上述各个信号的按序操作,可实现将DDR内存的数据读入到CPU中来。
同样的,写(数据到内存DDR中的)指令:
① CS
② CD、CK#
③ RAS、CAS
④ BA0、BA1
⑤ WE为低
⑥ A0~A15
⑦ D0~D15
驱动程序通过对上述引脚各个信号的有序操作,即可实现将CPU中的数据写入到DDR中去。
其他的指令以此类推,与此相似,如激活指令、刷新指令、预充电指令、寄存器设定指令等,都是由驱动程序通过协调、配合、控制CPU和DDR各个引脚相应的信号线完成数据传输的任务。
总之,是CPU通过运行驱动程序,经过地址总线、数据总线以及控制总线,实现向内存DDR中读写数据的目的。说得再简单些,就是CPU读写内存DDR中的数据。
5.1.6 内存DDR电路的检修
内存DDR中存有程序及数据,内存电路方面的故障会造成无法开机、死机、花屏等,内存电路的方框图如图5-6所示。
DDR电路的引脚信号会根据各型号之间略有差别,如二代内存没有RST信号,有的VREF引脚为一个,有的会分为两个,但这两个引脚在有的具体芯片上会各分成两个引脚,其电压是一样的,都等于二分之一的VDDR电压。VDDR电压会根据具体芯片有所不同,二代为1.8V,三代为1.5V,可能还有1.2V的。本节仅讲维修流程和顺序,以及要检测的信号,具体电压值则根据不同型号灵活应用,对于没有的引脚(如RST等)就不用检测了。
![](https://book.img.zhangyue01.com/group61/M00/7A/30/CmQUOV-em-2EWnFcAAAAACI3br0361138727.jpg?v=u0Hb3XJ2&t=CmQUOV-em-0.)
图5-6 DDR电路检修方框图
DDR电路的检修同样遵循由简至繁的原则,先从简单的方法开始,看DDR内存及外围元器件有无烧毁、损坏、缺件、掉件的现象。有的平板电脑中会有2~4 颗DDR芯片,因为这些DDR芯片型号和电路都是一样的,所以就可以互相对比检查、分析,可以用手摸摸温度是不是有不同,检查有无虚焊、接触不良的地方,也可以用手按压DDR芯片,观察屏幕有无变化(是否变好),压的同时,观察维修电源的电流是否有变化。通过以上简单的方法找到故障的原因和元器件,如果没有发现什么异样,则进行下一步:电压和电阻的测量。电压的数值不超过正常值(电路或芯片所给出的电压值)的20%即为正常,而对于电阻值则不一样。如数据总线的电阻值,与标称值相差应不超过2Ω,而对于控制总线,则会有较大的差别,但所有的阻值(不包括电源电压端的阻值)均不会低于几十欧姆或无穷大。如果低于几十欧姆,说明这根线已短路;如果是无穷大(或者大于正常值很多,几倍以上)则是开路,即有虚焊。然后再测电压,看VDDR电压是否正常,如果电压不正常,或者不稳定,有上下波动变化,说明有漏电的元器件或者IC已损坏。同理VREF电压也应在正常数值范围内,并且稳定,而不应波动变化,电压正常后,就可以检测时钟信号了,时钟信号频率较高,从电压上不好判断,可用测量电阻值的方法简单、粗略地判断。当然如果有频率计或示波器就能进行准确地测量和判断了,如果没有,也可用测量电阻值是否正常来检查时钟引脚的连线是否断了。通过测量阻值是否过高或过低,确定时钟信号电路是否正常,再测其周边元器件是否良好,对时钟信号进行粗略判断,基本无问题后,就可以检测RST信号了。RST信号的检测方法和测CPU的RST一样,正常情况下是高电平(按近电源电压),当是低电平时DDR芯片内部执行复位动作(如果此引脚常为低电平,则不正常)。检测到这里,如果正常就可以大致判断DDR基本没有问题了,但也不是绝对的。更准确的测量需要对DDR的数据总线、地址总线、控制总线(控制信号线)等引脚的电阻值和电压值进行一一检测,这样检测后,判断的准确性就更大一些了。