上节内容介绍了SRAM与DRAM的原理,并介绍了SRAM的接口与使用,SRAM与早期发展的DRAM接口都是异步接口,所谓异步接口是只地址、数据与控制接口在读写双方的应答中没有与时钟产生直接的关系,尽管主从设备的总线可能都是在各自的系统时钟控制下完成的(从设备系统可能没用自己系统时钟),但由于双方的时钟各自生成,没有直接的关系;这种在没有统一时钟控制下的读写,称为异步读写。因次存储器芯片也分为同步存储器芯片和异步存储器芯片。如只读存储器中I2C 接口的EEPROM, SPI接口的EEPROM, SPI接口的Flash 存储器都可以看作同步存储器,而并行接口的EPROM, NOR Flash,NAND Flash 等都认为是异步只读存储器。随机存取存储器也有同步与异步之分,如上面介绍的SRAM,早期的DRAM都是异步的,但随着技术的发展,同步DRAM(SDRAM)由于结构简单,读写速度快,接口时序易于控制等优点,在市场竞争中具有巨大的优势,因此在高速及大容量的内存使用中占有主导地位。下面将着重介绍同步随机存取存储器的原理,接口及应用。

图1 异步DRAM的读写时序
-
同步随机存取存储器
同步随机存取存储器由称为SDRAM(Synchronous DRAM) 。 SDRAM与早期的DRAM最大的不同是采用了同步时钟,从图1 可以看出,DRAM在外部接口上没有采用时钟同步信号,因此在读写上都要进行异步时钟到同步时钟的转换,读写效率很低。一个简单的例子,SRAM有RD#,WE#信号,在主机与SRAM硬件连接后主机生成的控制信号都是在主机时钟的控制下进行的,但是SRAM在接收的地址线和数据线时依赖CE#和WE#信号的选通,此时如果在内部译码将会产生延迟逻辑,具体的延迟随着芯片的不同而不同,因此在使用时都会给出比较大的时序冗余。如IS61WV51216BLL-10TI,虽然读写速度可以达到100M,但在真正应用时,很难做到主机端100M时钟恰好满足要求。如图2,虽然从时序上看可以做到ADDR,CE#,WE#,RD#等信号可以同时建立和撤销,但在考虑到布线延时(包括FPGA的布线延时和PCB板的布线延时)等因素 ,往往要降低主频使用。特别是在目前要求1GHz以上的读写要求时,异步接口显得无能为力。
特别是前面介绍过的FLASH芯片有复杂的读写命令,往往地址,控制信号,数据等都需要锁存,然后再转换成内部时钟,此时就会出现不同时钟域的转换。因此目前的内存都是同步的DRAM。SDRAM比非同步的DRAM多一套时钟线CLK, 在考虑到非读写期间降低功耗的要求,又添加CLKE#信号,即时钟使能信号。SDRAM的时序如图4所示。

图2 SRAM的读写时序

图3 内存条示意图
2. SDRAM(Synchronous DRAM)的分类
随着时间的推进,同步DRAM经过了不同的发展阶段。SDRAM比较典型的阶段及代表产品有SDRAM,DDR-SDRAM, DDR2-SDRAM ,DDR3-SDRAM ,DDR4-SDRAM,DDR5-SDRAM等产品。
-
SDRAM
SDRAM(Synchronous DRAM)是比较早期的产品,主频一般低于100M,与SRAM相比容量大,读写速度高,但读写操作复杂。同时芯片内部采用DRAM结构,因此需要刷新。SDRAM的电压是3.3V,IO口的电平标准一般LVCOMS33(3.3V)。目前在嵌入式领域仍在使用,但性价比不高。
-
DDR-SDRAM
DDR-SDRAM(double data rate)与SDRAM相比突出特点是,在读取与写入时时钟都采用双边沿操作,即在上升沿和下降沿都可以进行读/写操作。DDR-SDRAM的时钟主频一般在150Mhz左右,但由于采用双边沿操作,实际的读写速度要比SDRAM快的多。DDR-SDRAM的供电电压为2.5V,IO的电平标准为LVCMOS25(2.5V)。目前基本上处于淘汰状态。
-
DDR2-SDRAM
DDR2-SDRAM与DDR-SDRAM相比在DDR2内部采用双倍预读取,因此DDR2的时钟一般比DDR-SDRAM的接口时钟高很多。比较流行的333Mhz, 400Mhz ,533Mhz等,接口电压为1.8V。虽然DDR2_SDRAM 在存储器采用双倍预读取,但外部接口依然采用双边沿的读写方式,因此对外接口与DDR-SDRAM 相比仅接口不同电压,读写速度仅时钟频率决定。
DDR3-SDRAM
由于DDR3性价比又比DDR2-SDRAM高很多,因此目前嵌入式系统中DDR3-SDRAM是主流产品。DDR3-SDRAM与DDR2-SDRAM相比在芯片内部读写又提高一倍,因此主频也比DDR2有大幅提升。DDR3-SDRAM供电及接口电压典型的为1.5V,低电压系列为1.35V,如DDR3L SDRAM 供电电压和接口电压都为1.35V。目前仍然是计算机内存的主流产品。特别是在嵌入式系统中,由于多数主流控制器件还不支持DDR4,因此多数嵌入式系统仍以DDR3 为主。
-
DDR4-SDRAM
为目前最高性能的SDRAM,主频最高可以达到3.2G,目前在性价比上与DDR3比有优势,因此在不久的将来会逐渐替代DDR3成为嵌入式系统的主要存储器。
本章课程会结合DDR3-SDRAM MT41J128M16HA-125实例讲解原理,硬件设计,FPGA接口设计及应用实例。由于SDRAM为同步DRAM,因此与读写相关的地址,数据,控制信号都与时钟有关,除了复位信号外,其它的信号都为同步信号。时钟由主控制器提供,主从设备共用同一套系统时钟。典型时序如图4所示,

图4 DDR典型时序
3. DDR3-SDRAM芯片实例详解(MT41J128M16HA-125)
-
标志
(1)MT41J —-Micron(美光) DDR3的标志
(2)128M16–表示128M x 16 bits的存储单元,输入、输出为16位
(3)HA–封装形式指96-ball 9mm x 14mm FBGA
(4)-125–表示读写速度为1.25ns的级别,时钟最高可以达到800MHz
-
特性
(1)供电电压与IO电压一致,都为1.5V-0.075V ~1.5V+0.075V,0.75V为中心的IO推拉结构。低电压系列为1.35V。
(2)差分时钟线
(3) 8n-bit数据预取结构(内部)
(4)ODT:为数据、数据选通、数据屏蔽等信号提供芯片内部固定或动态可选的终端电阻(ODT , on die termination)。
(5)可编程的CAS# 读数据潜伏(latency) CL
(6)可编程附加的CAS# 数据潜伏(latency) AL (additive latency)
(7)可编程的写CAS# 的latency ,CWL(CAS Write Latency)
(8)突发长度,固定的8突发长度(burst length)或砍半(chop)的4突发长度(BC4)
(9)封装:96 PINs FBGA封装(16 接口)(fine BGA,HA/JT)或78 PINs FBGA(HX/DA)封装(仅4位或8位接口),如图5,图6所示。

图5 MT41J128M16HX(DA)-125 封装(78 PIN FBGA)

图6 MT41J128M16HA(JT)-125 封装

图7 美光DDR3 芯片型号识别
-
美光(MICRON)DDR3-SDRAM 的组织结构
以2Gb容量的芯片为例介绍DDR3不同的数据接口和寻址方式,见表1。
-
-
数据接口
-
提供不同接口宽度的芯片,分别为4,8,16位数据接口。
-
-
寻址方式
-
地址寻址的差别主要由行(ROW)、列(COLOUM)以及BANK组成了立体结构尺寸不同。每一行与不同列地址组成一个页面(page),由多个页面组成一个BANK。整个芯片根据容量由8个BANKs组成。行地址与列地址根据数据接口位数不同而不同。如:
4位数据接口: 行地址A[14:0] ,列地址A[11,9:0]。
8位数据接口: 行地址A[14:0] ,列地址A[9:0]。
16位数据接口:行地址A[13:0] ,列地址A[9:0]。
页面容量由数据位宽和列地址共同决定:分别为1KB,1KB,2KB,细节见表1
表1

有关DDR3的接口、时序及控制器的设计,将在后续章节中展开。
老师,4位接口的列地址是不是写错了
没有写错,确实是这样,具体需要查看芯片技术手册,比如文中所示的美光芯片:

老师,以512Meg * 4 举例,行地址的32K是怎么来的呀,一直没想明白,还有为什么页容量和行地址没关系呢?不是行和列共同决定有多少个存储单元么
图中page size指的是一行有多少个byte,图中所示就是1 KB。美光芯片的页容量使用的是Bank size,图中没有给出来,公式应该是 :
bank size = row * column
= 32K * 2K * 4 bits
= 32K * 1K Bytes
= row * page
= 32M bytes