logo资料库

IFC总线与FLASH研究.docx

第1页 / 共13页
第2页 / 共13页
第3页 / 共13页
第4页 / 共13页
第5页 / 共13页
第6页 / 共13页
第7页 / 共13页
第8页 / 共13页
资料共13页,剩余部分请下载后查看
目录
1. FLASH 简述
1.1 FLASH存储单元
1.2 FLASH内部原理
2. NAND FLASH 原理
3. NOR FLASH 原理
4.NAND 与 NOR 主要区别
5.IFC总线原理
5.1 NAND flash control machine
5.2 NAND flash connections
5.3 NAND flash timings
5.4 NOR flash control machine
5.5 NOR flash timings
目录 目录........................................................................................................................................1 1. FLASH 简述........................................................................................................................2 1.1 FLASH 存储单元...........................................................................................................2 1.2 FLASH 内部原理...........................................................................................................3 2. NAND FLASH 原理............................................................................................................. 4 3. NOR FLASH 原理................................................................................................................5 4.NAND 与 NOR 主要区别..................................................................................................6 5.IFC 总线原理.................................................................................................................... 8 5.1 NAND flash control machine..................................................................................... 9 5.2 NAND flash connections............................................................................................9 5.3 NAND flash timings..................................................................................................11 5.4 NOR flash control machine......................................................................................11 5.5 NOR flash timings.................................................................................................... 12
1. FLASH 简述 现在 Flash 在嵌入式系统中的地位和 PC 上的硬盘类似,用于保存系统运行所 必须的系统,数据和应用程序,与内存掉电后丢失不同,它在掉电后仍可永久保 存。Flash 编程原理都是只能将 1 写为 0,而不能将 0 写成 1.所以在 Flash 编程 之前,必须将对应的块擦除,而擦除的过程就是将所有位都写为 1 的过程,块内 的所有字节变为 0xFF.因此可以说,编程是将相应位写 0 的过程,而擦除是将相 应位写 1 的过程,两者的执行过程完全相反. 1.1 FLASH 存储单元 对于闪存,我们常见的有 SLC 和 MLC 两种,细分还有 eSLC 和 eMLC 等,因为闪存是一种 电压元件,因此它是以不同的电压范围来代表不同的数据,现在看看两者之间的区别。 1) SLC(single-level cell):单阶存储单元,也就是闪存的每一个存储单元存储 1bit 的数 据,存储的数据代表 0 还是 1 是基于 vth 的电压阈值来判定,对于闪存写入,就是对其进行 充电,使得它的电压值超过电压判定点 A,存储单元就表示为 0(已编程),如果没有充电或 者电压阈值低于 A 点,就表示 1(已擦除)。主要针对军工,企业级应用,有着高速写入, 低出错率和耐用性。 2) MLC(Multi-level cell)多阶存储单元,其是以每个存储单元存储 2bit 的数据,存储 的数据是"00","01","10","11"也是基于电压的阈值的判定,其被分成 4 份。相对于 SLC, MLC 的每个单元是 2bit,那么其容量也会大一些,同时其存储单元中存放更多的数据,那么 其结构也相对复杂,出错的机会也比较大。主要针对的是消费级应用,有着高容量,低成本, 使用于 USB 闪存,手机,数码相机等存储卡。
1.2 FLASH 内部原理 NOR FLASH 和 NAND FLASH 都是使用浮栅场效应管(Floating Gate FET)作为基 本存储单元来存储数据的,浮栅场效应管共有 4 个端电极,分别是为源极 (Source)、漏极(Drain)、控制栅极(Control Gate)和浮置栅极(Floating Gate),前 3 个端电极的作用与普通 MOSFET 是一样的,区别仅在于浮栅,FLASH 就是利用浮栅是否存储电荷来表征数字 0’和‘1’的,当向浮栅注入电荷后,D 和 S 之间存在导电沟道,从 D 极读到‘0’;当浮栅中没有电荷时,D 和 S 间没 有导电沟道,从 D 极读到‘1’。 注:SLC 可以简单认为是利用浮栅是否存储电荷来表征数字 0’和‘1’的,MLC 则是要利用浮栅中电荷的多少来表征‘00’,‘01’,‘10’和‘11’的,TLC 与 MLC 相同。 FLASH 中,常用的向浮栅注入电荷的技术有两种---热电子注入(通过源极给浮栅 充电)和 F-N 隧道效应(通过硅基层给浮栅充电),从浮栅中挪走电荷的技术通常 使用 F-N 隧道效应(Fowler Nordheim tunneling) 1)写操作就是向浮栅注入电荷的过程,NOR FLASH 通过热电子注入方式向浮 栅注入电荷(这种方法的电荷注入效率较低,因此 NOR FLASH 的写速率较低), NAND FLASH 则通过 F-N 隧道效应向浮栅注入电荷。FLASH 在写操作之前,必须先 将原来的数据擦除(即将浮栅中的电荷挪走),也即 FLASH 擦除后读出的都是 ‘1’。 2)擦除操作就是从浮栅中挪走电荷的过程,NOR FLASH 和 NAND FLASH 都是通 过 F-N 隧道效应将浮栅中的电荷挪走的。 3)读出操作时,控制栅极上施加的电压很小,不会改变浮栅中的电荷量,即 读出操作不会改变 FLASH 中原有的数据,也即浮栅有电荷时,D 和 S 间存在导电 沟道,从 D 极读到‘0’;当浮栅中没有电荷时,D 和 S 间没有导电沟道,从 D 极读到‘1’。
2. NAND FLASH 原理 NAND FLASH 的结构原理图如下,可见每个 Bit Line 下的基本存储单元是串联的, NAND 读取数据的单位是 Page,当需要读取某个 Page 时,FLASH 控制器就不在这个 Page 的 Word Line 施加电压,而对其他所有 Page 的 Word Line 施加电压(电压值不能 改变 Floating Gate 中电荷数量),让这些 Page 的所有基本存储单元的 D 和 S 导通,而 我们要读取的 Page 的基本存储单元的 D 和 S 的导通/关断状态则取决于 Floating Gate 是否有电荷,有电荷时,Bit Line 读出‘0’,无电荷 Bit Line 读出‘1’,实现了 Page 数据的 读出,可见 NAND 无法实现位读取(即 Random Access),程序代码也就无法在 NAND 上运行。这种串联结构决定了 NAND FLASH 的如下特性: (1)基本存储单元的串联结构减少了金属导线占用的面积,因此 NAND FLASH 存储密度高,适用 于需要大容量存储的应用场合,即适用于 data-storage。 (2)基本存储单元的串联结构决定了 NAND FLASH 无法进行位读取,也就无法实现存储单元的独 立寻址,因此程序不可以直接在 NAND 中运行,因此 NAND 是以 Page 为读取单位和写入单位,以 Block 为擦除单位。 (3)NAND FLASH 写入采用 F-N 隧道效应方式,效率较高,因此 NAND 擦除/写入速率很高,适用 于频繁擦除/写入场合。同时 NAND 是以 Page 为单位进行读取的,因此读取速率也不算低(稍低 于 NOR)。 最后来个小贴士:NAND FLASH 的中的 N 是 NOT,含义是 Floating Gate 中有电荷时,读出 ‘0’,无电荷时读出‘1’,是一种‘非’的逻辑;AND 的含义是同一个 Bit Line 下的各个基 本存储单元是串联的,是一种‘与’的逻辑,这就是 NAND 的由来。
3. NOR FLASH 原理 NOR FLASH 是很常见的一种存储芯片,数据掉电不会丢失.NOR FLASH 支持 Execute On Chip,即程序可以直接在 FLASH 片内执行(这意味着存储在 NOR FLASH 上的程序不需要复制到 RAM 就可以直接运行).这点和 NAND FLASH 不一样.因此,在嵌入式系统中,NOR FLASH 很适合 作为启动程序的存储介质.NOR FLASH 的读取和 RAM 很类似(只要能够提供数据的地址,数据 总线就能够正确的给出数据),但不可以直接进行写操作.对 NOR FLASH 的写操作需要遵循特 定的命令序列,最终由芯片内部的控制单元完成写操作. 从支持的最小访问单元来看,NOR FLASH 一般分为 8 位的和 16 位的(当然,也有很多 NOR FLASH 芯片同时支持 8 位模式和是 16 位模式,具体的工作模式通过特定的管脚进行选择). FLASH 一般都分为很多个 SECTOR,每个 SECTOR 包括一定数量的存储单元.对有些大容量的 FLASH,还分为不同的 BANK,每个 BANK 包括一定数目的 SECTOR.FLASH 的擦除操作一般都是以 SECTOR,BANK 或是整片 FLASH 为单位的. 在对 FLASH 进行写操作的时候,每个 BIT 可以通过编程由 1 变为 0,但不可以由 0 修改为 1. 为了保证写操作的正确性,在执行写操作前,都要执行擦除操作.擦除操作会把 FLASH 的一个 SECTOR,一个 BANK 或是整片 FLASH 的值全修改为 0xFF.这样,写操作就可以正确完成了. 由于 NOR FLASH 没有本地坏区管理,所以一旦存储区块发生毁损,软件或驱动程序必须接手这 个问题,否则可能会导致设备发生异常. 在解锁、抹除或写入 NOR FLASH 区块时,特殊的指令 会先写入已绘测的记忆区的第一页(Page).接着快闪记忆芯片会提供可用的指令清单给实体 驱动程序,而这些指令是由一般性闪存接口(CommON FLASH memory Interface, CFI)所界定 的. 与用于随机存取的 ROM 不同,NOR FLASH 也可以用在存储设备上;不过与 NAND FLASH 相 比,NOR FLASH 的写入速度一般来说会慢很多. NOR FLASH 的结构原理图如下,可见每个 Bit Line 下的基本存储单元是并联的,当某个 Word Line 被选中后,就可以实现对该 Word 的读取,也就是可以实现位读取(即 Random A ccess),且具有较高的读取速率,下图是一个 3*8bit 的 NOR FLASH 的原理结构图,这种并 联结构决定了 NOR FLASH 的如下特性:
(1)基本存储单元的并联结构决定了金属导线占用很大的面积,因此 NOR FLASH 的存储密 度较低,无法适用于需要大容量存储的应用场合,即适用于 code-storage,不适用于 data-storage。 (2)基本存储单元的并联结构决定了 NOR FLASH 具有存储单元可独立寻址且读取效率高的 特性,因此适用于 code-storage,且程序可以直接在 NOR 中运行(即具有 RAM 的特性)。 (3)NOR FLASH 写入采用了热电子注入方式,效率较低,因此 NOR 写入速率较低,不适用 于频繁擦除/写入场合。 最后来个小贴士:NOR FLASH 的中的 N 是 NOT,含义是 Floating Gate 中有电荷时,读 出‘0’,无电荷时读出‘1’,是一种‘非’的逻辑;OR 的含义是同一个 Bit Line 下的各 个基本存储单元是并联的,是一种‘或’的逻辑,这就是 NOR 的由来。 4.NAND 与 NOR 主要区别 (1)NorFlash 是随机存储介质,用于数据量较小的场合;NandFlash 闪存是连续存储介质, 适合存放大的数据. (2)由于 NorFlash 地址线和数据线分开,所以 NorFlash 芯片可以像 SDRAM 一样连在数据线 上.NOR 芯片的使用类似于通常内存芯片,传输效率高,可执行程序可以在芯片内执行(XI P, eXecute In Place),这样应用程序可以直接在 flash 闪存内运行,不必再把代码读到系统 RAM 中.由于 NorFlash 的这个特点,嵌入式系统中经常将 NOR 芯片做启动芯片使 用.NandFlash 共用地址和数据总线,需要额外连结一些控制的输入输出,所以直接将 NAND 芯片做启动芯片比较难. (3)NandFlash 闪存芯片因为共用地址和数据总线的原因,不允许对一个字节甚至一个块进 行的数据清空,只能对一个固定大小的块区域进行清零操作;NorFlash 芯片可以对字进行 操作.所以在处理小数据量的 I/O 操作的时候的速度要快与 NANDFlash 的速度. (4)NandFlash 闪存的容量比较大,最大容量己达到 8G 字节.为了方便管理,NandFlash 的存 储空间使用了块和页两级存储体系,也就是说它的存储空间是二维的,比如 K9F5608UOA 闪 存块的大小为 16K,每页大小是 512 字节,每页还 16 字节空闲区用来存放错误校验码空间(也 称为 out-of-band,OOB 空间).在进行写操作时,NandFlash 闪存每次将一个字节的数据放 入内部的缓存区,然后再发出“写指令”进行写操作.由于对 NandFlash 闪存的操作都是以 块和页为单位的,所以在向 NandFlash 闪存进行大量数据的读写时,NAND 的速度要快于 NOR 闪存. (5)NorFlash 闪存的可靠性要高于 NandFlash 闪存,是因为 NorFlash 型闪存的接口简单, 数据操作少,位交换操作少,因此可靠性高,极少出现坏区块,一般用在对可靠性要求高的 地方.NandFlash 型闪存接口和操作均相对复杂,位交换操作也很多,关键性数据更是需安 错误探测/错误更正(EDC/ECC)算法来确保数据的完整性,因此出现问题的几率要大得多,坏 区块也是不可避免的,而且由于坏区块是随机分布的,连纠错也无法做到.
(6)NANDFlash 一般地址线和数据线共用,对读写速度有一定影响;NORFlash 闪存数据线和 地址线分开,相对而言读写速度快一些. NANDFlash 可擦写次数高于 NORFlash 芯片,但是 由于 NANDFlash 通常是整块擦写,块内的页面中如果有一位失效整个块就会失效,而且由于 擦写过程复杂,失败的概率相对较高,所以从整体上来说 NOR 的寿命较长. (7)接口对比 NorFlash 带有通用的 SRAM 接口,可以轻松地挂接在 CPU 的地址、数据总线上,对 CPU 的接口要求低。NorFlash 的特点是芯片内执行(XIP,eXecute In Place),这样应用程序可 以直接在 flash 闪存内运行,不必再把代码读到系统 RAM 中.如 uboot 中的 ro 段可以直接在 NorFlash 上运行,只需要把 rw 和 zi 段拷贝到 RAM 中运行即可. NandFlash 器件使用复杂的 I/O 口来串行地存取数据,8 个引脚用来传送控制、地址和 数据信息。由于时序较为复杂,所以一般 CPU 最好集成 NandFlash 控制器.另外由于 NandFlash 没有挂接在地址总线上,所以如果想用 NandFlash 作为系统的启动盘,就需要 CPU 具备特殊的功能,如 s3c2410 在被选择为 NandFlash 启动方式时会在上电时自动读取 NandFlash 的 4k 数据到地址 0 的 SRAM 中.如果 CPU 不具备这种特殊功能,用户不能直接运 行 NandFlash 上的代码,那可以采取其他方式,比如好多使用 NandFlash 的开发板除了使用 NandFlash 以外,还用上了一块小的 NorFlash 来运行启动代码. (8)可靠性对比 NandFlash 器件中的坏块是随机分布的,以前也曾有过消除坏块的努力,但发现成品率 太低,代价太高,根本不划算.Nand 器件需要对介质进行初始化扫描以发现坏块,并将坏块 标记为不可用.在已制成的器件中,如果通过可靠的方法不能进行这项处理,将导致高故障 率。而坏块问题在 NorFlash 上是不存在的. 在 Flash 的位翻转(一个 bit 位发生翻转)现象上,NAND 的出现几率要比 NorFlash 大得 多.这个问题在 Flash 存储关键文件时是致命的,所以在使用 NandFlash 时建议同时使用 EDC/ECC 等校验算法. (9)文件系统比较 Linux 系统中采用 MTD 来管理不同类型的 Flash 芯片,包括 NandFlash 和 NorFlash.支 持在 Flash 上运行的常用文件系统有 cramfs、jffs、jffs2、yaffs、yaffs2 等.cramfs 文 件系统是只读文件系统.如果想在 Flash 上实现读写操作,通常在 NorFlash 上我们会选取 jffs 及 jffs2 文件系统,在 NandFlash 上选用 yaffs 或 yaffs2 文件系统.Yaffs2 文件系统 支持大页(大于 512 字节/页)的 NandFlash 存储器.
5.IFC 总线原理 IFC 用于提供外部接口给 NAND Flash,NOR Flash,SRAM,EPROM,ASIC 类设备。为了实现 这个功能,IFC 上的闪存控制机制(FCM)分别控制 NAND Flash,NOR Flash,GPCM 的时序。 四个独立的片选信号被提供,但是它们共享相同的 PIN 脚,所以在同一时间内每次只能有一 个内存可以被控制通过设置寄存器的位(CSPRn[MSEL])。如果一个 BANK 占用发生了,相应的 机制(NAND, NOR, or GPCM)提供自己的外部信号来控制 IFC 的使用权,直到传输完成才结束 使用权。下面这个图表关于 IFC 接口和信号复用:
分享到:
收藏