行情
HOME
行情
正文内容
逻辑NAND指令 3D NAND,可以怎么玩?
发布时间 : 2024-11-23
作者 : 小编
访问数量 : 23
扫码分享至微信

3D NAND,可以怎么玩?

相信我们都有所体会,当我们在购买苹果手机时,不同的内存大小价格也差距很大,这个内存指得就是闪存(Flash),苹果是第一家利用闪存来存储数据的公司。闪存又包括NOR Flash和NAND Flash二种,不过NOR Flash的容量较小一般为1Mb-2Gb,而NAND Flash能提供极高的单元密度,可达到高存储密度,适用于大量数据的存储,因此也是主流的闪存技术。从2018年开始,全球大多数的智能手机都已开始使用3D NAND存储芯片,不仅是智能手机,3D NAND芯片在数据中心、云、服务器、SSD、PC等领域也非常受欢迎。

在3D NAND技术推出之前,NAND闪存均为2D平面形式。2D NAND架构的原理就像是在一个有限的平面上盖平房,平房的数量越多,容量也就越大。过往存储芯片厂商将平面NAND中的单元尺寸从120nm扩展到1xnm 节点,实现了100倍的容量。不过随着单元尺寸达到14纳米的物理极限,2D结构在扩展存储容量方面有着很大的局限性(当工艺尺寸达到一定阶段之后,闪存就很容易因为电子流失而丢失其中保存的数据)。

随着2D NAND的微缩达到极限,2007年东芝(现在的铠侠)提出了3D NAND结构的技术理念,3D NAND是行业的一个创新性方向。与减少每个节点单元尺寸的平面NAND不同,3D NAND使用更宽松的工艺,大约介于30 纳米到 50 纳米之间,它通过增加垂直层数来获得更大的存储容量。因此,我们也可以看到,目前主流的存储芯片制造商均在竞相通过增加3D NAND垂直门数,以此来提高存储密度。他们已经规划了下一代3D NAND产品,包括232层/238层,甚至更大到4xx层甚至8xx层。虽说都在盖楼,但是各家盖楼所采用的架构却有所不同。

3D闪存的概念图(图源:铠侠)

架构一:V-NAND,代表厂商:三星

2013年,三星率先推出了V-NAND闪存,其中的V代表Vertical,垂直的意思,这是一种通过垂直堆叠3D空间中的穿孔连接其单元层的解决方案。三星是世界上第一家开发和商业化3D内存解决方案的公司,也为存储器行业创造了全新的范例。

2013年,三星所开发的第一个 V-NAND闪存仅有24层,目前三星的V-NAND已经发展到第八代,它共有200多层。2022年11月7日,三星宣布已开始量产具有200层以上的第八代1 TB的3D NAND (V-NAND),并计划根据消费者需求将其推向市场。 而且三星的目标是到2030年实现1000层。V-NAND闪存不断发展,每一代新的V-NAND都带来了显着的性能提升,以及更低的功耗。

三星86 Gbit 32层第二代V-NAND的横截面

在此,值得一提的是,在V-NAND 128层以前,三星的V-NAND采用的是单层蚀刻技术,它通过圆柱形通道连接电池,能够一次堆叠超过100层,并通过10亿多个孔互连。除了其创新的结构,V-NAND还采用了电荷陷阱闪存 (CTF) 技术来消除单元间干扰。通过在电池中引入非导电的氮化硅层,CTF技术使V-NAND技术免受电荷泄漏和数据损坏的影响。凭借着这一超高纵横比 (UHAR) 孔蚀刻支持的单层技术,三星一直主导着128层的3D NAND。

但是单次刻蚀最多也就到128层,因此,在 128 层设备之外,许多竞争对手采用的都是双层方法,例如美光将两个88层的结构相互堆叠,从而形成一个176层的器件;英特尔的144L 3D QLC设计已经转向了3层堆栈:48 + 48 + 48层,这种方法更容易实施。层数越少,执行HAR蚀刻步骤就越容易。

到了第七代512Gb 176层的TLC芯片,三星开始采用COP(Cell-on-Periphery)结构,后续1Tb 238L TLC产品将是第二代COP TCAT V8 V-NAND。COP结构的存储单元阵列区域位于外围设备上方,但COP结构还是有部分外围设备仍位于单元外部,这意味着必须减少单元阵列以及单元阵列下方和旁边的外围区域,来减小芯片尺寸。

各家存储厂商3D NAND不同架构的比较

(图源:techinsights)

架构二:CuA,代表厂商:美光/英特尔

美光从第一代32层3D NAND就开始采用这种在芯片的外围逻辑上构建其3D NAND阵列的方法,美光将之称为是CuA(CMOS-under-array)。该架构为容量增长、密度、性能和成本改进提供了一种扩展方法。将NAND的位单元阵列堆叠成更多层,每平方毫米硅片提供更多bit,从而实现更高的密度和更低的每bit成本。

2022年7月下旬,美光宣布了其232层3D NAND,据美光称,此232层的3D NAND实现每平方毫米最高的TLC密度(14.6 Gb/mm2)。面密度比同类TLC产品高35%到100%。据美光的信息,该3D NAND设备分成六个平面(当今市场上的许多NAND设备只有两个平面,也有的前沿设计采用四个平面分区来通道命令和数据流),以实现更高的并行度,从而提高性能。在每个芯片的基础上,增加的并行性通过支持可以同时向 NAND 设备发出更多的读写命令,提高了顺序和随机访问的读写性能。就像高速公路一样,车道越多,拥堵越少,通过给定区域的交通流量就越大。目前美光的232 层 NAND已出货。

232层,2 stack CuA NAND

(图源:美光)

英特尔和美光此前研发了FG CuA 3D NAND,在此科普一下,NAND闪存的存储单元技术大致分为浮栅(FG)技术和电荷陷阱(CT)技术。FG技术存储单元有一个栅极(浮动栅极),它在单元晶体管的控制栅极和沟道之间电浮动,通过向浮动栅极注入电荷(改变单元晶体管的阈值)来写入数据。

此前的2D NAND闪存所使用主流技术正是FG技术,不过随着NAND闪存技术从2D走向3D,除了英特尔-美光联盟外,各大厂商都放弃了FG技术,转而采用CT技术,如上文中提到的三星。采用CT技术的主要原因是CT技术在制造通孔存储器时比FG技术简单。而FG 技术因其卓越的数据保留特性、高温特性和优于CT技术的可控性而受到高度评价。

英特尔-美光联盟开发的3D NAND闪存技术共有三代,第一代是结合了32层内存通孔和TLC(3bit/cell)型多级内存的硅die,内存容量为384Gbit。第二代全面引入了CuA技术,将层数增加一倍至64 层(2个32 层堆叠)的硅芯片,并与 TLC 和 QLC(4 bit/cell)多级存储器技术相结合实现了商业化。第三代达到96层(2个48 层堆叠),存储容量与二代持平,硅面积减少至76%左右。

Intel-Micron联盟的3D NAND闪存技术

(图源:pc.watch)

Intel 第四代的144层转向自研,该NAND string首次在source和bitline之间由三层(upper deck,middle deck,lower deck和48L)组成,并为TLC和QLC设备保留了FG CuA结构。每个deck都可以分配给 QLC 或 SLC 块的任意组合,以充分受益于英特尔在存储系统中的新的block-by-deck概念。

不过英特尔已经退出了3D NAND市场,以90亿美元的价格将该业务出售给了SK海力士。

架构三:BiCS,代表厂商:铠侠/WD/SK海力士

铠侠(Kioxia)和西部数据(WD)正在联合开发名为 BiCS Flash的3D NAND。铠侠的前身是东芝,如开头所述,东芝是世界上第一个发明闪存(1987年)并且提出3D NAND技术的公司。早在Kioxia还是东芝的时候,就与SanDisk建立了闪存合作伙伴关系,后来西部数据收购了SanDisk,东芝成为了Kioxia,两家便成立了合资企业Flash Ventures(FV),成为合作伙伴。FV由WD / Kioxia各拥有50/50的份额,晶圆产能也被分成50/50的份额。

KIOXIA于2007年在学术会议上提出了BiCS FLASH™“批处理技术”的概念。据铠侠对BiCS FLASH™“批处理技术”的解释是:在BiCS FLASH™中,有一个板状电极作为控制栅(下图中的绿色板)和绝缘体交替堆叠,然后垂直于表面同时打开(冲孔)大量的孔。接下来,在板状电极中打开的孔的内部部分填充(堵塞)电荷存储膜(粉红色部分)和柱状电极(灰色部分为柱状结构)。在此条件下,板状电极与柱状电极的交点为一个存储单元。在BiCS FLASH™存储单元中,电子在穿过柱中心的电极(灰色结构)和电荷存储膜(粉红色)之间交换。这样,存储单元不是一层一层地堆叠起来,而是先堆叠板状电极,然后在它们之间开一个孔,连接电极,这样就形成了所有层的存储单元一次性降低制造成本。

BiCs的基本流程

(图源:铠侠)

2015年铠侠&西部数据推出了48层BiCS 3D NAND ,2017年为64层,2018年为96层,2020年达到112层。2021年,铠侠和西部数据宣布了他们的第六代 BiCS 3D NAND 技术,该技术有162层,这也是采用CuA概念的第一款产品。西部数据透露的路线图中显示,下一代“BiCS+”将在2023 年底推出,层数应增加到200多个。

西部数据的NAND发展路线图

(图源:西部数据)

作为全球最主要的NAND闪存公司之一,SK海力士是最后一家开发3D NAND闪存技术的公司。据Tech insights的分析,从2015年到2019年,SK Hynix陆续开发了四种类型的存储单元阵列:2015年至2016年开发的首个存储单元阵列采用类似于Kioxia开发的称为“ SP-BiCS”的单元阵列“ P-BiCS”的结构,似乎是32层;2017年其又开发了存储单元阵列的改进版本—“ DP-BiCS Gen1”,估计为48层;2018年,SK海力士开发了一种名为“ DP-BiCS Gen2”的存储单元阵列,该阵列具有将存储堆栈分为两个“层”(也称为“甲板”)的结构,估计为72层。

SK海力士的3D NAND架构发展

(图源:Tech insights)

架构四:4D PUC,代表厂商:SK海力士

2018年11月,从第四代96层3D NAND开始,SK海力士推出了新的命名法——4D PUC(Periphery Under Cell),PUC是一种将外围电路重新定位到电池底部的技术,如下图所示。尽管有这个名字,该公司并没有在四维空间中创建产品,“4”这个数字所代表的其实是一种先进性(而不是指进入第四维度)。它是3D架构变体的商品名,首批所谓的4D NAND设备提升了CTF(电荷撷取闪存)NAND阵列下的外围电路,从而在芯片上节省更多空间,并进一步降低生产成本。按照SK海力士的说法,与3D相比,4D 产品单位单元面积更小,生产效率更高。

SK海力士对4D NAND的解释

(图源:SK海力士)

98层之后,SK海力士陆续开发出128层、176层3D NAND。2022年8月,SK海力士宣布已开发出世界最高238层4D NAND闪存,也是尺寸最小的NAND,预计2023年上半年开始量产。SK 海力士目前的4D NAND技术现已被公认为行业标准。

PUC架构使得4D NAND允许在固定区域内实现高密度,减小了芯片尺寸,但缺点是堆叠技术可能在未来达到极限。SK海力士计划以多站点电池(MSC)为核心来克服这一障碍,通过微制造将现有电池分成两个较小的电池来存储数据,减少电池堆叠的数量,同时水平扩展电池密度,这也是SK海力士 4D 2.0的技术概念的核心要素之一。

架构五:Xtacking,代表厂商:长江存储

3D闪存中除了存储阵列之外这些外围电路会占据相当大的芯片面积,可以看出,上述这些存储厂商所采用的架构大多是是将外围电路放到存储单元下方。而长江存储所采取的是与其他公司完全不同的方法——Xtacking。

Xtacking技术是把存储阵列和外围电路分开来做,分别在两个独立晶圆上加工,虽然NAND闪存不适合用更先进的制程来加工,但是外围的电路却可以。两部分选用合适的工艺节点完成后,完成的内存阵列晶圆通过数十亿个垂直互连通道(VIAs)连接到外围晶圆。如下图所示,将外围电路位于内存之上,然后通过铜混合键合技术堆叠并连接它们,可实现更高的位密度。但是这种粘合技术仍然很昂贵。

图源:长江存储

总结

迄今为止,主流的3D NAND架构大抵有以上这五种:V-NAND、BiCS、CuA(COP)、4D PUC和Xtacking。然而就像盖高楼大厦一样,简单的堆层数不是最终目的,高楼不仅要高,还要保证可以通过安全高效的电梯轻松抵达,即每个存储芯片内部的V-NAND能否以更快、更高效、更省电的方式继续上升?这就非常考验各家的本领。随着NAND技术的进步,局限性也将浮出水面。

智能座舱之存储篇第三篇---NAND Flash 一眼就看明白了

上期内容我们重点说了NAND FLASH本身的一些特殊性,比如写之前要进行擦除,而且存在坏块的可能性性,所以很多车厂在评估NAND FLASH的时候,会评估目前容量的冗余量是多少,要保障有足够多的空间去预防坏块的产生后的数据搬移。

这期内容重点说说NAND FLASH的一些操作特性,怎么进行控制和读取的。这期的内容有点硬核,需要有一些专业知识的人进行阅读,科普类的文章咱们下期继续。

NAND FLASH的硬件特性介绍

上图是镁光 NAND FLASH MT29F1G08ABAEAH4的引脚(Pin)所对应的功能,简单翻译如下:

1. I/O0 ~ I/O7:用于输入地址/数据/命令,输出数据

2. CLE:Command Latch Enable,命令锁存使能,在输入命令之前,要先在模式寄存器中,设置CLE使能

3. ALE:Address Latch Enable,地址锁存使能,在输入地址之前,要先在模式寄存器中,设置ALE使能

4. CE#:Chip Enable,芯片使能,在操作Nand Flash之前,要先选中此芯片,才能操作

5. RE#:Read Enable,读使能,在读取数据之前,要先使CE#有效。

6. WE#:Write Enable,写使能,在写取数据之前,要先使WE#有效。

7. WP#:Write Protect,写保护

8. R/B#:Ready/Busy Output,就绪/忙,主要用于在发送完编程/擦除命令后,检测这些操作是否完成,忙,表示编程/擦除操作仍在进行中,就绪表示操作完成.

9. Vcc:Power,电源

10. Vss:Ground,接地

11. N.C:Non-Connection,未定义,未连接。

实际项目的NAND FLASH原理图

上图中我们可以发现有两个地方需要上拉电阻R/B#:、WP#,其他都是CPU同nand flash直接相连接。通过查询flash 的datasheet可以发现,这两个引脚是开漏极输出,需要上拉电阻。

而且可以看到电路设计中WP#引脚一端接上拉电阻,一端通过二极管和0欧姆电阻连接到CPU复位引脚,CPU主芯片平台的复位是低电平复位,WP#引脚是低电平的时候写保护有效,这样做的目的就是,在复位期间,即CPU复位引脚为低电平期间此时WP#引脚也为二极管电压(0.7V)为低电平,为写保护状态,在复位期间,CPU引脚状态不定,容易对flash进行误操作。这样做的目的就是硬件实现在CPU复位期间,flash是写保护状态,不允许写入的。

很多时候掉电产生的擦除数据,导致数据丢失无法开机、无法保存掉电记忆等等问题都可以使用这个方案来对策解决问题。

为何需要ALE和CLE

比如命令锁存使能(Command Latch Enable,CLE)和地址锁存使能(Address Latch Enable,ALE),那是因为,Nand Flash就8个I/O,而且是复用的,也就是,可以传数据,也可以传地址,也可以传命令,为了区分你当前传入的到底是啥,所以,先要用发一个CLE(或ALE)命令,告诉nand Flash的控制器一声,我下面要传的是命令(或地址),这样,里面才能根据传入的内容,进行对应的动作。否则,nand flash内部,怎么知道你传入的是数据,还是地址,还是命令啊,也就无法实现正确的操作了。

Nand Flash只有8个I/O引脚的好处

1. 减少外围引脚:相对于并口(Parellel)的Nor Flash的48或52个引脚来说,的确是大大减小了引脚数目,这样封装后的芯片体积,就小很多。现在芯片在向体积更小,功能更强,功耗更低发展,减小芯片体积,就是很大的优势。同时,减少芯片接口,也意味着使用此芯片的相关的外围电路会更简化,避免了繁琐的硬件连线。

2. 提高系统的可扩展性,因为没有像其他设备一样用物理大小对应的完全数目的addr引脚,在芯片内部换了芯片的大小等的改动,对于用全部的地址addr的引脚,那么就会引起这些引脚数目的增加,比如容量扩大一倍,地址空间/寻址空间扩大一倍,所以,地址线数目/addr引脚数目,就要多加一个,而对于统一用8个I/O的引脚的Nand Flash,由于对外提供的都是统一的8个引脚,内部的芯片大小的变化或者其他的变化,对于外部使用者(比如编写nand flash驱动的人)来说,不需要关心,只是保证新的芯片,还是遵循同样的接口,同样的时序,同样的命令,就可以了。这样就提高了系统的扩展性。

片选无关(CE don’t-care)技术

Nand flash支持一个叫做CE don’t-care的技术,字面意思就是,不关心是否片选,那有人会问了,

如果不片选,那还能对其操作吗?答案就是,这个技术,主要用在当时是不需要选中芯片却还可以继续操作的这些情况:在某些应用,比如录音,音频播放等应用中,外部使用的微秒(us)级的时钟周期,此处假设是比较少的2us,在进行读取一页或者对页编程时,是对Nand Flash操作,这样的串行(Serial Access)访问的周期都是20/30/50ns,都是纳秒(ns)级的,此处假设是50ns,当你已经发了对应的读或写的命令之后,接下来只是需要Nand Flash内部去自己操作,将数据读取除了或写入进去到内部的数据寄存器中而已,此处,如果可以把片选取消,CE#是低电平有效,取消片选就是拉高电平,这样会在下一个外部命令发送过来之前,即微秒量级的时间里面,即2us-50ns≈2us,这段时间的取消片选,可以降低很少的系统功耗,但是多次的操作,就可以在很大程度上降低整体的功耗了。

总结起来简单解释就是:由于某些外部应用的频率比较低,而Nand Flash内部操作速度比较快,所以具体读写操作的大部分时间里面,都是在等待外部命令的输入,同时却选中芯片,产生了多余的功耗,此“不关心片选”技术,就是在Nand Flash的内部的相对快速的操作(读或写)完成之后,就取消片选,以节省系统功耗。待下次外部命令/数据/地址输入来的时候,再选中芯片,即可正常继续操作了。这样,整体上,就可以大大降低系统功耗了。

NAND FLASH 的读操作详细解读

以最简单的read操作为例,解释如何理解时序图,以及将时序图中的要求,转化为代码。解释时序图之前,让我们先要搞清楚,我们要做的事情:那就是,要从nand flash的某个页里面,读取我们要的数据。要实现此功能,会涉及到几部分的知识,至少很容易想到的就是:需要用到哪些命令,怎么发这些命令,怎么计算所需要的地址,怎么读取我们要的数据等等。

就好比你去图书馆借书,想想是一个什么样的流程,首先得告诉馆长你要要借书还是还书、然后把要借书的位置告诉馆长,最后是把图书卡或者借书证件给馆长,此时就耐心等待要借的书籍了。

下面,就一步步的解释,需要做什么,以及如何去做:

1.需要使用何种命令

首先,是要了解,对于读取数据,要用什么命令。

下面是datasheet中的命令集合:

很容易看出,我们要读取数据,要用到Read命令,该命令需要2个周期,第一个周期发0x00,第二个周期发0x30。

2.发送命令前的准备工作以及时序图各个信号的具体含义

知道了用何命令后,再去了解如何发送这些命令。

Nand Flash数据读取操作的时序图

注:此图来自镁光的型号MT29F1G08ABAEAH4:E的nand flash的数据手册(datasheet)。

我们来一起看看,我在图中的特意标注的①边上的红色竖线。

红色竖线所处的时刻,是在发送读操作的第一个周期的命令0x00之前的那一刻。让我们看看,在那一刻,其所穿过好几行都对应什么值,以及进一步理解,为何要那个值。

(1)红色竖线穿过的第一行,是CLE。还记得前面介绍命令所存使能(CLE)那个引脚吧?CLE,将CLE置1,就说明你将要通过I/O复用端口发送进入Nand Flash的,是命令,而不是地址或者其他类型的数据。只有这样将CLE置1,使其有效,才能去通知了内部硬件逻辑,你接下来将收到的是命令,内部硬件逻辑,才会将受到的命令,放到命令寄存器中,才能实现后面正确的操作,否则,不去将CLE置1使其有效,硬件会无所适从,不知道你传入的到底是数据还是命令了。

(2)而第二行,是CE#,那一刻的值是0。这个道理很简单,你既然要向Nand Flash发命令,那么先要选中它,所以,要保证CE#为低电平,使其有效,也就是片选有效。

(3)第三行是WE#,意思是写使能。因为接下来是往nand Flash里面写命令,所以,要使得WE#有效,所以设为低电平。

(4)第四行,是ALE是低电平,而ALE是高电平有效,此时意思就是使其无效。而对应地,前面介绍的,使CLE有效,因为将要数据的是命令,而不是地址。如果在其他某些场合,比如接下来的要输入地址的时候,就要使其有效,而使CLE无效了。

(5)第五行,RE#,此时是高电平,无效。可以看到,知道后面低6阶段,才变成低电平,才有效,因为那时候,要发生读取命令,去读取数据。

(6)第六行,就是我们重点要介绍的,复用的输入输出I/O端口了,此刻,还没有输入数据,接下来,在不同的阶段,会输入或输出不同的数据/地址。

(7)第七行,R/B#,高电平,表示R(Ready)/就绪,因为到了后面的第5阶段,硬件内部,在第四阶段,接受了外界的读取命令后,把该页的数据一点点送到页寄存器中,这段时间,属于系统在忙着干活,属于忙的阶段,所以,R/B#才变成低,表示Busy忙的状态的。

介绍了时刻①的各个信号的值,以及为何是这个值之后,相信,后面的各个时刻,对应的不同信号的各个值,大家就会自己慢慢分析了,也就容易理解具体的操作顺序和原理了。

3.如何计算出,我们要传入的地址

在介绍具体读取数据的详细流程之前,还要做一件事,那就是,先要搞懂我们要访问的地址,以及这些地址,如何分解后,一点点传入进去,使得硬件能识别才行。

此处还是以MT29F1G08ABAEAH4:E为例,此nand flash,一共有1024个块,每个块内有64页,每个页是2K+64 Bytes,假设,我们要访问其中的第1000个块中的第25页中的1208字节处的地址,此时,我们就要先把具体的地址算出来:

物理地址=块大小×块号+页大小×页号+页内地址=1000×128K+2K×25+1208=0x7D0CCB8,接下来,我们就看看,怎么才能把这个实际的物理地址,转化为nand Flash所要求的格式。

在解释地址组成之前,先要来看看其datasheet中关于地址周期的介绍:

图 Nand Flash的地址周期组成

结合时序图的2,3阶段,我们可以看出,此nand flash地址周期共有4个,2个列(Column)周期,2个行(Row)周期。

而对于对应的,我们可以看出,实际上,列地址CA0~CA10,就是页内地址,11位地址范围是从0到2047,即2K,而多出的A11,理论上可以表示2048~4095,但是实际上,上述规格书中说明当CA11为1时,CA【10:6】都必须为0,所以我们最多也只用到了2048~2112,用于表示页内的oob区域,其大小是64字节。

PA0~PA5,称作页号,页的号码,可以定位到具体是哪一个页。由6个位控制,最多寻址64页,符合规格书中的一块有64页。

而其中,BA6~BA15,表示对应的块号,即属于哪个块,有10个位控制,寻址范围为1024个块。

// 可见:地址的传输顺序是是 页内地址,页号,块号。从小到大。

简单解释完了地址组成,那么就很容易分析上面例子中的地址了:

0x7D0CCB8 = 0111 1101 0000 1100 0000 1100 1011 1000,分别分配到4个地址周期就是:

1st 周期,CA7~CA0 :1011 1000 = 0x B8

2nd周期,CA11~CA8 :0000 1100 = 0x 0C

3rd周期,BA7~PA0 :0000 1100 = 0x 0C

4th周期,A27~A20 :0111 1101 = 0x 7D

注意,上图图中对应的,*L,意思是低电平,由于未用到那些位,datasheet中强制要求设为0,所以,才有上面的2nd周期中的高4位是0000.。因此,接下来要介绍的,我们要访问第1000个块中的第25页中的1208字节处的话,所要传入的地址就是分4个周期,分别传入2个列地址的:0xB8,0x0C,然后再传2个行地址的:0x0C,0x7D,这样硬件才能识别。

4.读操作过程的解释

准备工作终于完了,下面就可以开始解释说明,对于读操作的,上面图中标出来的,1-6个阶段,具体是什么含义。

(1) 操作准备阶段:此处是读(Read)操作,所以,先发一个图5中读命令的第一个阶段的0x00,表示,让硬件先准备一下,接下来的操作是读。

(2) 发送两个周期的列地址。也就是页内地址,表示,我要从一个页的什么位置开始读取数据。

(3) 接下来再传入三个行地址。对应的也就是页号。

(4) 然后再发一个读操作的第二个周期的命令0x30。接下来,就是硬件内部自己的事情了。

(5)Nand Flash内部硬件逻辑,负责去按照你的要求,根据传入的地址,找到哪个块中的哪个页,然后把整个这一页的数据,都一点点搬运到页缓存中去。而在此期间,你所能做的事,也就只需要去读取状态寄存器,看看对应的位的值,也就是R/B#那一位,是1还是0,0的话,就表示,系统是busy,仍在”忙“(着读取数据),如果是1,就说系统活干完了,忙清了,已经把整个页的数据都搬运到页缓存里去了,你可以接下来读取你要的数据了。

对于这里。估计有人会问了,这一个页一共2048+64字节,如果我传入的页内地址,就像上面给的1028一类的值,只是想读取1028到2011这部分数据,而不是页开始的0地址整个页的数据,那么内部硬件却读取整个页的数据出来,岂不是很浪费吗?答案是,的确很浪费,效率看起来不高,但是实际就是这么做的,而且本身读取整个页的数据,相对时间并不长,而且读出来之后,内部数据指针会定位到你刚才所制定的1208的那个位置。

(6) 接下来,就是“窃取“系统忙了半天之后的劳动成果的时候了,呵呵。通过先去Nand Flash的控制器中的数据寄存器中写入你要读取多少个字节(byte)/字(word),然后就可以去Nand Flash的控制器的FIFO中,一点点读取你要的数据了。

至此,整个Nand Flash的读操作就完成了。

对于其他操作,可以根据上面的分析,一点点自己去看datasheet,根据里面的时序图去分析具体的操作过程,然后对照代码,会更加清楚具体是如何实现的。

NAND FLASH 搭配NOR FLASH的优缺点

常见的应用组合就是,用小容量的Nor Flash存储启动代码,比如uboot,系统启动后,初始化对应的硬件,包括SDRAM等,然后将Nand Flash上的Linux 内核读取到内存中,做好该做的事情后,就跳转到SDRAM中去执行内核了。

这样的好处是由于NAND 本身有坏块的可能性,所以为了保障启动万无一失,很多要求高级安全的产品,标注必须从NOR Flash启动uboot,而且从NOR启动还有一个好处就是启动速度快,NAND Flash的优点是容量大,但是读取速度不快,比不上NOR Flash,比如一些对于开机速度有要求的产品应用,比如车载液晶仪表,这类产品为了快速启动一般都是NOR FLASH+EMMC的配置,当然像赛普拉斯平台直接上hyperflash那就更快了。

NAND Flash的ECC校验简单说明

我们先来说说为什么需要ECC校验这个事情,其实上一篇文章我们说过由于NAND flash的自身的不稳定性,存在位翻转的现象,所以就存在写入到flash中的数据和读出来的数据不一样的情况发生,此时就需要有一个检验的机制,防止读出来的不正确,还可以纠正过来。

其实这个就类似于去银行存钱,你存了1W,过几天去银行去取钱的时候发现只有9000了,这个时候你就会拿出存条找银行理论,上次明明存的就是1W啊,你少的1000必须跟我纠正过来,其实这个就是NAND flash的ECC检验原理,发现有读出来的数据和存进去的数据不正确,此时就需要去纠正回来,当然这里的纠正的数据是有限制的,不是所有数据出错都能纠正过来。

ECC 校验是在奇偶校验的基础上发展而来的,它将数据块看作一个矩阵,利用矩阵的行、列奇偶信息生成 ECC 校验码。它能够检测并纠正单比特错误和检测双比特错误,但对双比特以上的错误不能保证检测。它克服了传统奇偶校验只能检出奇数位出错、校验码冗长、不能纠错的局限性。每 nbit 的 Ecc 数值可满足 2的n次方bit 数据包的校验要求。

当往Nand Flash 的Page 中写入数据的时候,每256字节我们生成一个ECC 校验和,称之为原ECC校验和,保存到 PAGE 的OOB数据区中。当从Nand Flash 中读取数据的时候,每 256 字节我们生成一个ECC校验和,称之为新 ECC 校验和。

校验的时候,根据上述ECC生成原理不难推断:将从 OOB 区中读出的原 ECC校验和新ECC校验和按位异或,若结果为0,则表示不存在错(或是出现了ECC无法检测的错误):若3个字节异或结果中存在11个比特位为1,表示存在一个比特错误,且可纠正;若3个字节异或结果中只存在1个比特位为1,表示OOB区出错:其他情况均表示出现了无法纠正的错误。

这两期我们基本上把NAND FLASH的相关设计和使用都完整讲了一遍,下期会讲讲车载DRAM和EMMC的相关内容,敬请期待。

相关问答

cpu的spl是什么?

SPL是uboot第一阶段执行的代码.主要负责搬移uboot第二阶段的代码到内存中运行.SPL是由固化在芯片内部的ROM引导的.我们知道很多芯片厂商固化的ROM支持从nan...

飞凌开发板6410uboot什么命令擦除nandflash啊?

sferase+起始地址+擦查长度在uboot下输入help可以查看所有的命令sferase+起始地址+擦查长度在uboot下输入help可以查看所有的命令

手机闪存怎么查?怎么测试?

鲁大师安卓发布新版v8.2.6,为ROM测试项目“体验评测”新增测试栏“闪存测试”,用更为通用的内存写入速度,例如100MB/s,让消费者更容易横向对比,让手机体验评...

闪存都有那些种类?定义是什么?又是怎样分别的?

[回答]U盘``sd卡!闪存(FlashMemory)是一种长寿命的非易失性(在断电情况下仍能保持所存储的数据信息)的存储器,数据删除不是以单个的字节为单位而是以固...

酷比魔方I player什么芯片?

经过联系厂家,我们得知该芯片具有一下主要特点。ARM922TDMI微处理器内核(8KB数据缓存,8KB指令缓存);多种引导模式:NAND-Flash,UART及片外存储器CS0...AR....

半岛平台官方网站(官方)手机APP下载IOS//网页通用版入口

英特尔520系列120GB固态硬盘特尔固态硬盘520可提供高达80,000次的4K随机写入IOPS(每秒输入输出操作)性能以及高达50,000次的4K随机读取IOPS性能,...

如何看datasheet?

这类芯片只需要了解其功能,注意是否会有逻辑反向特征。看DATASHEET时,基本上只了解一下第一页的内容就行。主要目的就是编程时保证能正确输出2、常见逻辑芯片:...

U盘怎样存储数据?

U盘存储数据的原理为:计算机把二进制数字信号转为复合二进制数字信号(加入分配、核对、堆栈等指令)读写到USB芯片适配接口,通过芯片处理信号分配给NANDFLASH...

3DMAX中什么是堆栈?

堆栈就是做成一个模型后,对其使用的一系列的修改命令.存放这些命令的地方称其为修改堆栈.堆栈就是做成一个模型后,对其使用的一系列的修改命令.存放这些命令...

芯片的研发尺寸到一纳米之后怎么办,是不是要另寻出路?

1nm工艺制程并不是芯片的极限今年3月份台积电与台湾国立交通大学的研究团队因为成功开发出了大面积晶圆尺寸的单层氮化硼(BN)而登上了《自然》杂志,厚度仅0.7...

 万耀平  赵本山哪里人 
王经理: 180-0000-0000(微信同号)
10086@qq.com
北京海淀区西三旗街道国际大厦08A座
©2024  上海羊羽卓进出口贸易有限公司  版权所有.All Rights Reserved.  |  程序由Z-BlogPHP强力驱动
网站首页
电话咨询
微信号

QQ

在线咨询真诚为您提供专业解答服务

热线

188-0000-0000
专属服务热线

微信

二维码扫一扫微信交流
顶部