你不孤独!我的FPGA之旅
3)瓜熟蒂落 之1 : 学习数据手册
终于来到这个令人激动的章节了。今天用的是电脑,才发现电脑上是可以发视频的,有机会把自己整得帅一点再拍吧,先坐下来,呷上一口妹夫送的正宗的铁观音!
话说要做个NAND Controller,首先得明确目的和目标,目的当然是要用它来操作 NAND了的,具体说是要来操作一个Raw NAND的。目标嘛,前期先完成简单的Raw NAND读写操作。如果能够知道NAND的读写擦基本原理是最好的了,可要讲起来又是个长篇故事。在上期文章里提到的那本英文书里的确有,还是很有趣的,特别是电路设计上有趣的事情很多,以后找个时间聊聊。今天就不在这里啰嗦了。就把当作它黑盒子, 读懂产品说明书就好了。下图是从网上找到的一款NAND产品的数据手册。
datasheet
什么, 158页,太可怕了。来点简单实际并直接的,先搞定怎么读吧。下面2图, 有点绕,大意说的是 00h命令使能数据输出,在00h-30h后拷贝NAND Flash阵列数据到缓冲区(cache register)里并使能数据输出,可以用CHANGE READ COLUMN (05h-E0h)来改变读的字节位置(COLUMN)。因为这个NAND(所有的吧?)读的时候,在器件内部物理上是按页(Page)的方式一起读出来到缓冲区cache register里的,可是IO口只有8个(以x8为例),外部世界再一个字节(Byte)一个字节(Byte)读出来的,具体 读哪个字节,就是通过 05h-E0h指令来设定的。
READ MODE
READ PAGE (00h-30h)
明白了读所需要的指令,真正的时序呢? 看下图:
REAG PAGE (00h-30h) Operation
先发00hCommand类型(注意图中的 Cycle type)指令 , 然后 2个 列地址Address (C1, C2)指令,接着3个行地址Address (R1,R2,R3)指令,然后30hCommand 指令,之后器件的RDY引脚在tWB时间后由高电平转入低电平, 也就是由Ready就绪状态转入BUSY忙状态,再经过tR 以及上升沿tRR时间后RDY引脚转入高电平的Ready就绪状态,提示数据准备好可以输出了。用户就可以在这个时刻后输出所需要的数据。是不是很简单呢?
当然读的操作有好多,比如:
READ MODES
可以根据需要和按指定的时序操作。
简单了解了读操作,那Program编程,也就是俗话说的写呢?很类似的,也有多种,比如:
Progam Operations
看下面一段文字说明:
Description of Program Operations
大体说的是 编程操作用来将数据从缓冲区(cache )或数据寄存器(data register)里移到闪存阵列里。在编程操作过程中,缓冲区(cache )或数据寄存器(data register)里的数据会被改写。在一个块(Block)里, 页(Pages,注意复数形式喔)必须按小到大(也就是0,1,2,.....)的顺序编程, 乱序(out of order)是禁止的。为什么,要求这么苛刻,这么可怕?其实不是,这是要完成可靠的编程操作的需要。这里面有很有趣的故事,今天就不深入了。接着看时序。
Timing of Program Page 80h-10h
先发80hCommand类型(注意图中的 Cycle type)指令 , 然后 2个 列地址Address (C1, C2)指令,接着3个行地址Address (R1,R2,R3)指令,在tADL后输入数据(D0, D1, .....),然后10hCommand 指令启动编程,器件的RDY引脚在tWB时间后由高电平转入低电平, 也就是由Ready就绪状态转入BUSY忙状态,再经过tPROG时间后RDY引脚转入高电平的Ready就绪状态,提示数据编程结这里是结束,不是成功,因为有可能编程不成功啊。用户就可以在这个时刻后输入70hCommand 指令查询编程状态,得到状态编码数据(图中的status)。状态寄存器的值的定义如下:
Status Register Definition
Status Register Definition (Continued)
注意看到,其中的SR Bit位 1 (实际上是累计的状态) 和 SR Bit位 0 (实际上是刚刚的操作的状态),可以知道刚才操作成功还是失败。
不能老是写啊写啊,有一天要写满的,有一天数据不要了需要擦掉的。这就是擦除(Erase)了。 擦除(Erase)是按块(Block)来的。一个块(Block) 有多大呢? 其实有很多专有的名词的,从Feature 说明上可以看到如下:
Feature
咦,提到好多名词啊,从小到大, Byte, Page, Block, Plane, Device。最终产品到底是32G还是64G,区别在于块也就是Block数目不同。还看到了SLC和ONFI俩名词,是不是很熟悉?
再来看一下擦Erase操作,
Erase Operations
擦Erase动作就是用来清除闪存阵列里一个块Block的内容,将它的页(Pages,注意复数形式)准备好用于编程Progam操作。常用的是60h-D0h 的块Block擦除指令。时序如下,应该很容易理解了。
Erase BLOCK Operation
写到这里突然想到前公司的一个同事LHN,特别倾佩她,虽然她当时刚进公司不久,和她交流时张口就说出60D0指令,当时的我一时脑袋都懵了(工作内容关系,平时没记住这些指令,)。
仨重要的操作指令操作完了,可以发现,指令分为COMMAND, ADDRESS, DIN, DOUT 四类,需要的数据周期(Cycle)略有不同。当然啦,目前为止提到的都是异步Asynchronous Interface总线的,该产品还支持同步Synchronous Interface总线的。比较一下如下的信号分配Signal Assignments,可以看到非常类似,途中高亮的地方可以看到 异步Async的WE# 换成了同步Sync的CLK了。
Signal Assignment
不知不觉手边的铁观音早凉了,需要重新泡,不过的基本操作熟悉了(对了,还有具体的tADL之类的AC参数值也要注意了。具体的比如COMMAND指令的信号如何输入,只好等下回分解了。 ),接下来就可以开始下一步设计了。做为本节的结尾,上个阵列相关的AC参数特性值。高亮的地方是选择产品时的一些重要参数。
Array Characteristics
闪存芯片NOR Flash、NAND Flash傻傻分不清楚 ICMAX帮你搞定
通过前天的文章介绍,我们知道eMMC 是 Flash Memory 的一类,eMMC的内部组成是NAND flash+主控IC,那什么是Flash Memory、NOR Flash、NAND Flash,宏旺半导体就和大家好好捋一捋它们几者之间的关系。
Flash Memory 是一种非易失性的存储器。在嵌入式系统中通常用于存放系统、应用和数据等。在 PC 系统中,则主要用在固态硬盘以及主板 BIOS 中。另外,绝大部分的 U 盘、SDCard 等移动存储设备也都是使用 Flash Memory 作为存储介质。
1. Flash Memory 的主要特性
与传统的硬盘存储器相比,Flash Memory 具有质量轻、能耗低、体积小、抗震能力强等的优点,但也有不少局限性,主要如下:
需要先擦除再写入
Flash Memory 写入数据时有一定的限制,它只能将当前为 1 的比特改写为 0,而无法将已经为 0 的比特改写为 1,只有在擦除的操作中,才能把整块的比特改写为 1。
块擦除次数有限
Flash Memory 的每个数据块都有擦除次数的限制(十万到百万次不等),擦写超过一定次数后,该数据块将无法可靠存储数据,成为坏块。
为了最大化的延长 Flash Memory 的寿命,在软件上需要做擦写均衡(Wear Leveling),通过分散写入、动态映射等手段均衡使用各个数据块。同时,软件还需要进行坏块管理(Bad Block Management,BBM),标识坏块,不让坏块参与数据存储。(注:除了擦写导致的坏块外,Flash Memory 在生产过程也会产生坏块,即固有坏块。)
读写干扰
由于硬件实现上的物理特性,Flash Memory 在进行读写操作时,有可能会导致邻近的其他比特发生位翻转,导致数据异常,这种异常可以通过重新擦除来恢复,Flash Memory 应用中通常会使用 ECC 等算法进行错误检测和数据修正。
电荷泄漏
存储在 Flash Memory 存储单元的电荷,如果长期没有使用,会发生电荷泄漏,导致数据错误,不过这个时间比较长,一般十年左右,此种异常是非永久性的,重新擦除可以恢复。
2. NOR Flash 和 NAND Flash
根据硬件上存储原理的不同,Flash Memory 主要可以分为 NOR Flash 和 NAND Flash 两类。 主要的差异如下所示:
· NAND Flash 读取速度与 NOR Flash 相近,根据接口的不同有所差异;
· NAND Flash 的写入速度比 NOR Flash 快很多;
· NAND Flash 的擦除速度比 NOR Flash 快很多;
· NAND Flash 最大擦次数比 NOR Flash 多;
· NOR Flash 支持片上执行,可以在上面直接运行代码;
· NOR Flash 软件驱动比 NAND Flash 简单;
· NOR Flash 可以随机按字节读取数据,NAND Flash 需要按块进行读取。
· 大容量下 NAND Flash 比 NOR Flash 成本要低很多,体积也更小;
(注:NOR Flash 和 NAND Flash 的擦除都是按块块进行的,执行一个擦除或者写入操作时,NOR Flash 大约需要 5s,而 NAND Flash 通常不超过 4ms。)
2.1 NOR Flash
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 连接。
图片: Parallel NOR Flash 与 Serial NOR Flash
鉴于 NOR Flash 擦写速度慢,成本高等特性,NOR Flash 主要应用于小容量、内容更新少的场景,例如 PC 主板 BIOS、路由器系统存储等。
2.2 NAND Flash
NAND Flash 需要通过专门的 NFI(NAND Flash Interface)与 Host 端进行通信,如下图所示:
图片:NAND Flash Interface
NAND Flash 根据每个存储单元内存储比特个数的不同,可以分为 SLC(Single-Level Cell)、MLC(Multi-Level Cell) 和 TLC(Triple-Level Cell) 三类。其中,在一个存储单元中,SLC 可以存储 1 个比特,MLC 可以存储 2 个比特,TLC 则可以存储 3 个比特。
NAND Flash 的一个存储单元内部,是通过不同的电压等级,来表示其所存储的信息的。在 SLC 中,存储单元的电压被分为两个等级,分别表示 0 和 1 两个状态,即 1 个比特。在 MLC 中,存储单元的电压则被分为 4 个等级,分别表示 00 01 10 11 四个状态,即 2 个比特位。同理,在 TLC 中,存储单元的电压被分为 8 个等级,存储 3 个比特信息。
图片: SLC、MLC 与 TLC
NAND Flash 的单个存储单元存储的比特位越多,读写性能会越差,寿命也越短,但是成本会更低。下图 中,给出了特定工艺和技术水平下的成本和寿命数据。
相比于 NOR Flash,NAND Flash 写入性能好,大容量下成本低。目前,绝大部分手机和平板等移动设备中所使用的 eMMC 内部的 Flash Memory 都属于 NAND Flash,PC 中的固态硬盘中也是使用 NAND Flash。
3. Raw Flash 和 Managed Flash
由于 Flash Memory 存在按块擦写、擦写次数的限制、读写干扰、电荷泄露等的局限,为了最大程度的发挥 Flash Memory 的价值,通常需要有一个特殊的软件层次,实现坏块管理、擦写均衡、ECC、垃圾回收等的功能,这一个软件层次称为 FTL(Flash Translation Layer)。
在具体实现中,根据 FTL 所在的位置的不同,可以把 Flash Memory 分为 Raw Flash 和 Managed Flash 两类。
图片: Raw Flash 和 Managed Flash
Raw Flash
在此类应用中,在 Host 端通常有专门的 FTL 或者 Flash 文件系统来实现坏块管理、擦写均衡等的功能。Host 端的软件复杂度较高,但是整体方案的成本较低,常用于价格敏感的嵌入式产品中。通常我们所说的 NOR Flash 和 NAND Flash 都属于这类型。
Managed Flash
Managed Flash 在其内部集成了 Flash Controller,用于完成擦写均衡、坏块管理、ECC校验等功能。相比于直接将 Flash 接入到 Host 端,Managed Flash 屏蔽了 Flash 的物理特性,对 Host 提供标准化的接口,可以减少 Host 端软件的复杂度,让 Host 端专注于上层业务,省去对 Flash 进行特殊的处理。eMMC、SD Card、UFS、U 盘等产品是属于 Managed Flash 这一类。
看完这篇文章,相信对Flash memory都会有一个全面的了解,无论是其原理,还是NOR Flash 和 NAND Flash、Raw Flash 和 Managed Flash 之间的异同,欢迎关注宏旺半导体,会持续带来存储领域更专业的文章。
相关问答
flash 如何复制不同的文件?2、按“SHIFT+F2”,双击选择需要复制的场景。3、解锁该场景中所有图层,按住“SHIFT”键,鼠标点击该场景中所有图层。4、右键点击任意图层中的任意一帧,选择...
怎么样才能复制adobe flash player 打开的内容?-ZOL问答FLASH讨论回答(6)要将网页上的内容保存为PDF文件,您可以按照以下步骤操作:首先,您需要安装一个虚拟打印机软件,例如PdfFactory。您可以通过Google搜索找到更...
腾讯视频怎么复制 flash - 懂得那些视频都无法直接调用的,如果你是想发到别的地方,可以用微博类的分享功能。
腾讯视频怎么复制 flash - 童话书里的小可爱 的回答 - 懂得那些视频都无法直接调用的,如果你是想发到别的地方,可以用微博类的分享功能。
flash 按住什么键可以移动并复制副本?代码进行...复制图形时,需要按住alt键进行拖动复制,这样就可以不停地复制了。在编写代码时,可以先用鼠标拖选需要复制的代码,然后按住ctrl键,就可以对所选...
arm CPU集群 如何启动?启动方式(1)norflash:2MB,从norflash的0地址处开始运行第一条代码,所以代码一定要放在norflash的最前端(2)nandflash:128MB,但是nandflash没有参...
flash 中,”复制帧“具体该怎么做?点一下起始帧,按住shift键,再点一下结束帧,然后在选中的帧上点击右键复制点一下起始帧,按住shift键,再点一下结束帧,然后在选中的帧上点击右键复制
下载了一个 flash player,可不可以拷到一个没有联网的电脑上...两个用户一个是普通用户一个是高级管理高级的没有限制普通的没有下载和使用的权利你可以新建一个用户把权限设到ADMIN最高然后把不能用FlashPlayer的用户桌...
bib文件是什么意思[回答]nboot是从NANDflash读image到内存并执行,eboot是从以太网(用tftp)下载image到内存并执行。将nboot.nb0烧到第0块,将eboot.nb0烧到第2块。启动时nbo....
u盘怎么拷 flash ?u盘拷flash,具体操作如下:首先将flash文件下载在电脑里,用U盘插进电脑USB接口,在我的电脑打开可移动磁盘,把flash文件复制到U盘就可以u盘拷flash,具体操作如...