3. Flash主要分两种,Nand Flash和NOR Flash
1.Flash全名叫做Flash Memory
Flash存储芯片的一种,通过特定的程序可以修改里面的数据。
Flash属于非易失性存储设备,与此相对应的是易失性存储设备。非易失性就是不容易丢失,数据存储在这类设备中,即使断电了,也不会丢失,与此相对的,易失性就是断电了,数据就丢失了,比如大家常用的内存,不论是以前的SDRAM,DDR SDRAM,还是现在的DDR2,DDR3等,都是断电后,数据就没了。
Flash存储器又称闪存,它结合了ROM和RAM的长处,不仅具备电子可擦除可编程(EEPROM)的性能,还不会断电丢失数据同时可以快速读取数据(NVRAM 的优势),U 盘和MP3里用的就是这种存储器。
Flash的内部存储是MOSFET,里面有个悬浮门,是真正存储数据的单元。数据在Flash内存单元中是以电荷形式存储的。而数据的表示,以所存储的电荷的电压是否超过一个特定的阈值Vth来表示,因此,Flash的存储单元的默认值,不是0(其他常见的存储设备,比如硬盘灯,默认值为0),而是1,而如果将电荷释放掉,电压降低到一定程度,表述数字0。
Nand Flash和Nor Flash的区别
NOR | NAND | |
容量 | 1~32MB | 16~512MB |
XIP 可执行程序 | Yes(因为是内存接口), 可以随机访问任意地址的数据 | NO |
擦除 | 非常慢(5s) | 快(3ms) |
写 | 慢 | 快 |
读 | 快 | 快 |
可擦除次数 | 10000~100000 | 100000~1000000 |
生命周期 | 低于NAND Flash的10% | 是NOR Flash的10倍以上 |
接口 | 与RAM接口相同 | I/O接口 |
访问方法 | 随机访问 | 顺序访问 |
易用性 | 简单 | 复杂 |
主要用途 | 常用于保存代码和关键数据 | 用于保存数据 |
价格 | 高 | 低 |
可靠性 | 比较高,位反转的比例小于NAND Flash 的10% | 比较低:,位反转比较常见,必需有校验措施,比如“1-4 bit EDC/ECC”;必须有坏块管理措施 |
Nor的成本相对高,容量相对小,比如常见的只有128KB,256KB,1MB,2MB等等。优点是读写数据时候,不容易出错。所以在应用领域方面,Nor Flash比较适合应用于存储少量的代码。
Nand flash成本相对低,缺点是使用中数据读写容易出错,所以一般都需要有对应的软件或者硬件的数据校验算法,统称为ECC。 优点是,相对来说容量比较大,现在常见的Nand Flash都是1GB,2GB,8GB等。价格便宜,适合用来存储大量的数据。其在嵌入式系统中的作用,相当于PC上的硬盘,用于存储大量数据。
所以,一个常见的应用组合就是,用小容量的Nor Flash存储启动代码,比如uboot,用大容量的Nand Flash做整个系统和用户数据的存储。
(1)按照硬件类型,可以分为:
a.Bare NAND chips:
裸片。单独的Nand Flash芯片。
b.SmartMediaCards:
裸片+一层薄塑料。常用于数码相机和MP3播放器中。之所以称smart,是由于其软件smart,而不是硬件本身有啥smart之处。
c.DiskOnChip:
裸片+glue logic。glue logic=硬件ECC产生器+用于静态的nand 芯片控制的寄存器+直接访问一小片地址窗口,那块地址中包含了引导代码的stub桩,其可以从Nand Flash中拷贝真正的引导代码。
- NAND Flash 根据每个存储单元内存储比特个数的不同,可以分为SLC、MLC和TLC三类。其中,在一个存储单元中,SLC可以存储1个比特,MLC可以存储2个比特,TLC则可以存储3个比特。
NAND Flash 的一个存储单元内部,是通过不同的电压等级,来表示其所存储的信息的。在 SLC 中,存储单元的电压被分为两个等级,分别表示0和1两个状态,即1个比特。在MLC中,存储单元的电压则被分为4个等级,分别表示00 01 10 11四个状态,即2个比特位。同理,在TLC中,存储单元的电压被分为8个等级,存储3个比特信息。
NOR Flash 根据与CPU端接口的不同,可以分为Parallel NOR Flash和Serial NOR Flash两类。
Parallel NOR Flash可以接入到Host的SRAM/DRAM Controller上,所存储的内容可以直接映射到CPU地址空间,不需要拷贝到RAM中即可被CPU访问,因而支持片上执行。Serial NOR Flash的成本比 Parallel NOR Flash低,主要通过SPI接口与Host连接。
鉴于NOR Flash擦写速度慢,成本高等特性,NOR Flash主要应用于小容量、内容更新少的场景,例如PC主板BIOS、路由器系统存储等。
EEPROM的全称是“带电可擦除可编程只读存储器”。一个字节,可以往每个bit中写入0或者1。这是最传统的一种EEPROM,掉电后数据不丢失,可以保存100年,可以擦写100w次。具有较高的可靠性,但是电路复杂/成本也高。因此目前的EEPROM都是几十千字节到几百千字节的,绝少有超过512K的。
EEPROM可以随机访问和修改任何一个字节,既能写0又能写1。
缺点:电路复杂故容量小。
优点:在编程时相比于flash的读写方便的多。
EEPROM的用处:存储一些经常修改的数据。
1.EMMC:全称为embeded MultiMedia Card,是一种嵌入式非易失性存储器系统,由Nand flash和Nand flash控制器组成,以BGA方式封装在一款chip上。
2.EMMC和Nand flash之间的区别
(1)在组成结构上:emmc存储芯片简化了存储器的设计,将NAND Flash芯片和控制芯片以MCP技术封装在一起,省去零组件耗用电路板的面积,同时也让手机厂商或是计算机厂商在设计新产品时的便利性大大提高。而NAND Flash仅仅只是一块存储设备,若要进行数据传输的话,只能通过主机端的控制器来进行操作。
(2)在功能上:EMMC则在其内部集成了Flash Controller,包括了协议、擦写均衡、坏块管理、ECC校验、电源管理、时钟管理、数据存取等功能。相比于直接将NAND Flash接入到Host 端,EMMC屏蔽了NAND Flash的物理特性,可以减少Host端软件的复杂度,让Host 端专注于上层业务,省去对NAND Flash进行特殊的处理。同时,EMMC通过使用Cache、Memory Array等技术,在读写性能上也比NAND Flash要好很多。而NAND Flash是直接接入Hos 端的,Host端通常需要有 NAND Flash Translation Layer,即NFTL或者NAND Flash文件系统来做坏块管理、ECC等的功能。另一方面,EMMC的读写速度也比NAND Flash的读写速度快,EMMC的读写可高达每秒50MB到100MB以上。
原本这种记忆卡称为T-Flash,及后改称为Trans Flash;而重新命名为Micro SD的原因是因为被SD协会 (SDA) 采立,Micro SD卡是其最新的名字。采用的也是NAND Flash芯片作为存储核心。以前手机扩展内存用的那种黑黑的小内存卡。
RAM,全称是随机存取存储器,也就是运行内存,储存的是软件运行时和运行之后的相关数据,RAM越大,手机运行就越快,但是其作为随机存取内存,所以在关机之后RAM存的数据不会保存。在电脑中,主要是内存条,也被称为主存,关机断电丢数据。
DRAM(动态随机存储器)是最为常见的系统内存。我们使用的电脑和手机的运行内存都是DRAM。DRAM使用电容存储,DRAM只能将数据保持很短的时间。为了保持数据,所以必须隔一段时间刷新(refresh)一次,如果存储单元没有被刷新,存储的信息就会丢失。电容中的电荷很容易变化,所以随着时间推移,电容中的电荷数会增加或减少,为了确保数据不会丢失,DRAM每隔一段时间会给电容刷新(充电或放电)。动态:定时刷新数据。
SDRAM:(同步动态随机存取存储器),为DRAM的一种,同步是指Memory工作需要同步时钟,内部命令的发送与数据的传输都以时钟为基准;动态是指存储阵列需要不断的刷新来保证数据不丢失;随机是指数据不是线性依次存储,而是由指定地址进行数据读写。
(1)DDR SDRAM:为双信道同步动态随机存取内存,是新一代的SDRAM技术。DDR内存芯片的数据预取宽度(Prefetch)为2 bit(SDRAM的两倍)。
(2)DDR2 SDRAM:为双信道两次同步动态随机存取内存。DDR2内存Prefetch又再度提升至4 bit(DDR的两倍)。
(3)DDR3 SDRAM:为双信道三次同步动态随机存取内存。DDR3内存Prefetch提升至8 bit,即每次会存取8 bits为一组的数据。运算频率介于 800MHz -1600MHz之间。、
2.SRAM
SRAM(静态随机存储器),它是一种具有静止存取功能的内存,其内部机构比DRAM复杂,可以做到不刷新电路即能保存它内部存储的数据。静态:不需要刷新。
对比DRAM的优缺点:
优点:速度快,不必配合内存刷新电路,可提高整体的工作效率。
缺点:集成度低,功耗较大,相同的容量体积较大,而且价格较高,少量用于关键性系统以提高效率。
1.DDR存储芯片内部结构
一个最小存储单位为:Cell(细胞)
一整行Cell构成了:Row(行)
一整列Cell构成了:Column(列)
Row*Column形成一个:Bank(块)
多个Bank构成一个:Chip(片)
从DDR内存条的外观可以看到,多块Chip(芯片)排列在一个DDR内存条的一面。
再加上一个片选信号就构成一个内存条的一个面,即:Rank。
一个DDR内存条一般有两个面,多个(一般指2个)Rank就构成了一根内存条。
一个内存条配备一个插槽,即:DIMM(双列直插)。
多个DIMM就构成一个通道,即Channel。
一般一个Channel对应于CPU的一个内存控制器。
一个CPU有几个内存控制器,就可以做几个(一般是2个)Channel。
3.DDR常用颗粒的规格参数
DDR | DDR2 | DDR3 | LPDDR3 | DDR4 | |
速率(Mbps) | 200---400 | 400---1066 | 800---2133 | 1333---2133 | 1600---3200 |
VDDQ(V) | 2.5 | 1.8 | 1.5 | 1.2 | 1.2 |
电平信号 | SSTL_2 | SSTL_18 | SSTL_15 | HSUL_12 | POD12 |
时钟信号 | 差分 | 差分 | 差分 | 差分 | 差分 |
DQS | 单端 | 单端、差分 | 差分 | 差分 | 差分 |
ODT | 无 | 有 | 有 | 有 | 有 |
Write Leveling | 无 | 无 | 有 | 有 | 有 |
DBI | 无 | 无 | 无 | 无 | 有 |
4.DDR设计要点
- 电源 DDR的电源可以分为三类
A.主电源VDD和VDDQ,主电源的要求是VDDQ=VDD,VDDQ是给IO buffer供电的电源,VDD是给但是一般的使用中都是把VDDQ和VDD合成一个电源使用。
B.参考电源Vref,参考电源Vref要求跟随VDDQ,并且Vref=VDDQ/2,所以可以使用电源芯片提供,也可以采用电阻分压的方式得到。由于Vref一般电流较小,在几个mA---几十mA的数量级,所以用电阻分压的方式,即节约成本,又能在布局上比较灵活,放置的离Vref管脚比较近,紧密的跟随VDDQ电压。分压用的电阻在100---10K均可,需要使用1%精度的电阻。Vref参考电压的每个管脚上需要加10nF的电容滤波,并且每个分压电阻上也并联一个电容较好。
C、用于匹配的电压VTT
VTT为匹配电阻上拉到的电源,VTT=VDDQ/2。DDR的设计中,根据拓扑结构的不同,有的设计使用不到VTT,如控制器带的DDR器件比较少的情况下。如果使用VTT,则VTT的电流要求是比较大的,所以需要走线使用铜皮铺过去。并且VTT要求电源即可以吸电流,又可以灌电流才可以。一般情况下可以使用专门为DDR设计的产生VTT的电源芯片来满足要求。
而且,每个拉到VTT的电阻旁一般放一个10nf---100nF的电容,整个VTT电路上需要有uF级大电容进行储能。
- 时钟信号
DDR的时钟为差分走线,一般使用终端并联100欧姆的匹配方式,差分走线差分对控制阻抗为100ohm,单端线50ohm。差分线也可以使用串联匹配,使用串联匹配的好处是可以控制差分信号的上升沿缓度,对EMI可能会有一定的作用。
(3)电平信号
SSTL电平本质上是差分对,其实现机制是将信号与参考电平Vref组成差分对进行比较。
HSUL-12电平主要用于点到点的无端接总线拓扑结构,不需要外部串行或者并行匹配电阻,降低了端接功耗,LPDDR3使用的就是该种电平。
POD是伪漏极开路电平,其内部端接上拉到VDDQ,而SSTL内部是上拉到VDDQ/2。
(4)数据和DQS
DQS信号相当于数据信号的参考时钟,它在走线时需要保持和CLK信号保持等长。DQS在DDR2以下为单端信号,DDR2可作为差分信号,也可做单端,做单端时需要将DQS-接地,而DDR3为差分信号,需要走线100ohm差分线。由于内部有ODT,所以DQS不需要终端并联100ohm电阻。每8bit数据信号对应一组DQS信号。
DQS信号在走线时需要与同组的DQS信号保持等长,控制单端50ohm的阻抗。在写数据时,DQ和DQS的中间对齐,在读数据时,DQ和DQS的边沿对齐。DQ信号多为一驱一,并且DDR2和DDR3有内部的ODT匹配,所以一般在进行串联匹配就可以了。
- 地址和控制
地址和控制信号速度没有DQ的速度快,以时钟的上升沿为依据采样,所以需要与时钟走线保持等长。但如果使用多片DDR时,地址和控制信号为一驱多的关系,需要注意匹配方式是否适合。
- PCB布线注意事项
PCB布线时,单端走线走50ohm,差分走线走100ohm阻抗。
注意控制差分线等长±10mil以内,同组走线根据速度的要求也有不同,一般为±50mil。
控制和地址线及DQS线和时钟等长,DQ数据线和同组的DQS线等长。
注意时钟及DQS和其他的信号要分开3W以上距离。
组间信号也要拉开至少3W宽的距离。
同一组信号最好在同一层布线。
尽量减少过孔的数目。
- EMI问题
原理有性能指标要求的,易受干扰的电路模块和信号,如模拟信号,射频信号,时钟信号等,防止DDR对其干扰,影响指标。
DDR的电源和不要与其他易受干扰的电源模块使用同一电源,如必须使用同一电源,要注意使用电感、磁珠或电容进行滤波隔离处理。
在时钟及DQS信号线上,预留一些可以增加的串联电阻和并联电容的位置,在EMI超出标准时,在信号完整性允许的范围内增大串联电阻或对地电容,使其信号上升延变缓,减少对外的辐射。
进行屏蔽处理,使用金属外壳的屏蔽结构,屏蔽对外辐射。
注意保持地的完整性。
5.DDR引脚功能说明
信号名 | 方向 | 功能描述 |
CK_t,CK_c | Input | 差分时钟输入。所有的地址、控制信号都是通过CK_t的上升沿与CK_c的下降沿进行采样的 |
CKE | Input | 时钟使能: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以外的所有输入缓冲都是关闭的。在正时钟上升边沿采样。 |
CS_n | Input | 片选信号:当CS_n锁存为高电平时,所有的命令都被忽略。在正时钟上升边沿采样。 |
CA_n | Input | 命令/地址输入信号。可作为地址线使用,也可作为命令代码使用,是命令代码的一部分。 |
ODT | Input | On-Die Termination,片上终端电阻:ODT信号可使能DDR SDRAM内部的RTT_NOM终端电阻。该设计通过允许DRAM控制器独立地打开/关闭任一或所有DRAM设备的终端电阻来改善存储器通道的信号完整性。 DRAM通过ODT控制引脚为每个DQ,DQS_t及DQS_c和DM开启/关闭终端电阻。与其他输入命令不同,ODT引脚直接控制ODT动作,不对其进行时钟采样。 在自刷新模式下不支持ODT。可以选择在CKE掉电期间通过模式寄存器启用ODT操作。 请注意,如果在掉电模式下启用ODT,则在掉电期间可能无法关闭VDDQ(I/O供电),同时DRAM也会在读操作期间无法关闭。 |
DM_n | Input | 输入数据掩码:DM_n信号是作为写数据的掩码信号,当DM_n信号为低电平时,写命令的输入数据对应的位将被丢弃。DM_n在DQS的两个条边沿都采样。 |
DQ | Input\Output | 数据输入、输出:双向数据总线。若模式寄存器中使能了CRC功能,那么在数据burst结束时就会附加一段CRC码。 |
DQS_t,DQS_c | Input\Output | 差分数据选通信号:差分信号对,作输入时与写数据同时有效,作输出时与读数据同时有效。读数据时与边沿对齐,但是跳变沿位于写数据的中心。DDR4 SDRAM仅支持选通信号为差分信号,不支持单根信号的数据选通信号。 |
NC | 无电气连接。 | |
VDDQ | Supply | I/O供电:1.2V +/- 0.06V |
VSSQ | Supply | I/O地 |
VDD | Supply | Core供电:1.2V +/- 0.06V |
VDDCA | Supply | CA供电 |
VSSCA | Supply | CA地 |
VSS | Supply | Core地 |
VPP | Supply | DRAM激活供电:2.5V(最小2.375V,最大2.75V) |
VREF | Supply | 参考电压 |
ZQ | Supply | Drive Strength Calibration校准参考电阻 |