-
Nand_flash Learn
-
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mDoBFk8T-1617108754874)(C:\Users\Gang_Xiang\AppData\Roaming\Typora\typora-user-images\image-20210329163727155.png)]
1.1 Topic 1
1.1.1 block diagram && interface
YMTC doc 1 &2.4 &3.1&3.2&3,4
I need know
-
符合ONFI4.0 (open nand_flash interface 4.0)标准,支持SDR,NV-DDR2&&NV-DDR3数据接口,命令,数据和地址都通过8根数据线完成;
-
封装工艺是BGA,最高速度可达800MB/s;
-
SDR(single data rate),DDR(double date rate),WL(wordline-读操作最小的可寻址单位),LUN(logical unit number-最小的独立执行命令和报告状态的单位),SR(包含在指定LUN中的状态寄存器)的基本概念;
-
对于部分编号需要对着表格看懂(p17);
-
整个block的大致构成:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4JRI0gvQ-1617108754876)(C:\Users\Gang_Xiang\AppData\Roaming\Typora\typora-user-images\image-20210326175123820.png)]
-
信号描述,过了一遍常见的信号,CE(chip_enable),ALE(Address_Latch_Enable),CLE(COmmand_Latch_Enable),RE_n(Read_enable),WE_n(Write_able),R_B(Ready/Busy),DQ(Data Inputs/Outputs),ZQ(校准信号)
1.1.2 memory organiztion
YMTC doc 1 &2.4 &3.1&3.2&3,4
-
层次关系
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-99E561om-1617108754878)(E:\New_Classmate_doc\NAND\YMTC_memory_organization.png)]
-
大小关系
1 Page = (16K + 2048) bytes
1 Block = 1152 pages
1 Plane = 1006 blocks
1 LUN = 2 planes
-
寻址方式
列地址(COLUMN):列地址的偏移是以字节为单位的,大小是页面字节的偏移量;
行地址(ROW):这个地址包含了三个地址信息,从高位到地位依次是,LUN-Block-Page地址(MSB-LSB);
其他:
a. ddr interface 的列地址最低位总是0,所以总是偶数地址
b. 执行Erase这种操作时,由于是应用block为基本单位,所以不需要用到列地址;
c. 行列地址都是低地址先发,最后才到高地址;
d. 先发的列,后发行地址,plane地址是block0的地址,LA选择哪个LUN;
-
lun是nand目标的一部分与主机共享数据总线,需要确保在任何时间只有一个lun被选择,Read Status Enhanced 取消对所有的没有被寻址的LUN的选择;
-
多路LUN操作的限制:
a. Lun是独立的实体,两个或者两个以上的LUN同时执行命令,叫做LUN的多路操作;在此期间,LUN是在busy状态或就绪态;当LUN没有接受到11h(muti-plane)命令,所有的空闲LUN会清空页寄存器如果寄存器清除操作被禁用了,在LUN的page operation处于读操作完成和进行时或者是数据没有被其他LUN读取,如果启用程序页寄存器清除增强,则不受此限制;
b. 主机不能选择同一个Volume中的另一个LUN直到所有的数据都发送完成10h或者15h命令被发送,如果是多频面操作,必须先完成所有的平面数据输入,再选择其他的LUN;
c. 当页面读命令发送到多个LUN时,host需要采取措施以避免列地址损坏。主机发送新的读命令地址,在选择一个新LUN之前;
d. 如果已经下发了多LUN操作的命令,下一个下发的命令因该是读增强。读增强命令会让没有被选中的LUN区关闭他们的输出通道,确保只有被read enhanced的LUN相应下一个输出周期。当一个读增强完成之后,读状态命令会持续到下一个多LUN操作发出;
e. 主机同时给多个LUN发送Read Command,主机会给每一个LUN发送一个读增强命令在读数据之前,保证只有被读增强选择的LUN响应数据输出周期,避免总线抢占;
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8dYwfJgE-1617108754880)(C:\Users\Gang_Xiang\AppData\Roaming\Typora\typora-user-images\image-20210329112655688.png)]
1.1.3 basic cmd sets
YMTC doc 6.1
-
DDR和SDR时序图差别在于DDR多了一个DQS,DDR接口速度更快(double data rate);
a. sdr 读写数据使用上升沿或者下降沿来触发,因为只能用上升沿和下降沿,对数据的准确要求比较低;
b. ddr写数据时通过控制MCU控制dqs信号的上下沿触发
-
如果bus state不是输出或者输入状态,那么dqs要拉高,以免设备启用ODT,如ODT没有启用,那么可以不管DQS的状态;
-
文档的115页到118页有对应的命令说明和缩写;
1.1.4 reset
YMTC doc 6.2
-
Reset(FFh)
a. Reset 命令会将目标置于默认的上电状态,不占用地址周期(?);
b. 如果在NV-DDR2接口发送命令,那么接受到命令的目标会先把切到SDR数据接口;如果是DDR3的接口,目标保留现在的接口形式;
c. 上电后的第一个命令必须时reset命令,在每个上电周期中reset命令只会被执行一次,上电reset会重新loading寄存器,一旦LUN通过上电reset,reset命令将作为操作中断在下次上电前;
d. 当Reset命令发送时,R/B的值不确定;Reset命令发送之后WE保持tRST的low电平;
e. Reset 命令可以终止设备处于忙碌状态的任意操作,被改变的的cell不有效,因为数据会被部分编程或者删除。命令寄存器会被清空以等待下一次的命令,pass/fail状态bits值会被清空为0.如果第一个reset命令执行期间(tRST)收到第二个Reset,那么会被NAND忽略掉第二个reset命令,如果nand装备好了,那么第二reset是可以被触发的;
-
Synchronous Reset(FCh)
a. sync reset 命令将reset所有的lun不需要地址周期,可以在目标任何状态下执行,执行sync reset之时,R/B_n Value的值是未知的;命令发出之后是R/B保证拉低;
b. 仅支持NVDDR2/NV-DDR3接口,当接口被配制成SDR了,则不支持发送sync reset命令;
-
Reset LUN(FAh)
a. 被用作reset指定的LUN,这个命令只会被可寻址的LUN接受,然后作为命令的一部分;LUN任何状态下都可执行,SR[6]值未知,在reset LUN发送时;SR[6]保证在tWB之后持续低电平;不受目标data interface的影响;
b. Reset LUN 命令应该取消其他正在执行的命令。任何程序,擦除,或者read操作,会被reset LUN命令打断,如果reset命令如果在擦除的时候用到reset LUN那么数据的完整性没有办法保证,如果读数据的操作收到命令,那么数据的输出可能时无效的;
-
Hard Reset(FDh)
a. 对选定的LUN进行reset(第一种reset),tPOR(power reset time )之后,除先前配置的卷配置和电子镜像配置都恢复默认值;NV-DDR2接口执行时应该置于SDR接口,如果时SDR接口则保留,NV-DDR3也保留;
b. 在发送hard reset 命令之前,host 必须发送read status enhanced(78h)选择一个LUN,是、支持多LUN操作;
c. hard reset 命令可以被执行在被选中的LUN不是busy状态时
1.1.5 read id
-
read if(90h)
-
read id命令可以识别目标设备,在地址20h发送read id命令时,如果目标支持ONFI标准,那么返回最开始的四个节;ONFI4.0引入了第四和第五个bytes;上电接口ID只会在上电周期设置一次不会改变(SDR&&DDR3);读六个字节之外会输出不确定的值;
-
在地址00h上发送命令,返回jedec设备制造代码和设备id,nand_falsh的device有五个字节;当主机在NV-DDR2或者DDR3接口发送Read ID命令时,每一个bytes会被发送连词,主机仅仅会锁存一份data byte;
-
LUN级命令,在hard_reset之后,如果没有被发送读增强选择其他LUN区,LUN0回会是默认;所有的LUN都有相同的ID;
-
同样是90h的command,00h和20h(adr)读的数据有何不同?
00h:manufacture code,device identifiter inter chip number,pagesize…
20h:ONFI 的相关信息
-
-
Read Unique ID(EDh)
- UID在00h上接收16bytes的id,设备厂商再制造时这个ID必须时独一无二的;
- UID可能存在flash阵列中,为了判断UID会不会出现位错误,同时也会返回补码,按位异或值位1那么说明是有效的;
- UID CMD是一个LUN级命令,如果没有发送读增强,那么LUN0会被读出,每个LUN有不一样的LUN配置和UID;
- 为了适应鲁棒性检索,目标应该存储16份UID以及相应的补;
- 主机可以使用支持的任何时序模式;读增强不应该在执行read UID命令时使用
-
read parameter Page(ECh)
- read parameter page 命令会在00h上检索描述组织,特性,时序和其他参数关于target参数的数据结构;
- page参数时在page中是静态的没有办法被改变,电源管理事件发生之后不再读取参数页面;
- Change Read Column(05h-E0h)命令可以在tR事件之后发出以读取特定的特定的页;
- 上电后第一次执行 read parameter page 命令,需要使用时序0。如果支持其他的时序,就只能在后续的read paran page中使用了;
- read status(70h)用于检查status,读状态完成之后;主机在命令线发出00h,继续读取参数的数据流;
- read status enhanced(78h) && chang read column enhanced(06)不能在read param page时使用;
- 当涉及项目的size时,值以字节的方式报告,比如这个片会返回有多少的bytes在这个页中;
1.1.6 feature cmd
YMTC 6.11.16.11.4&&6.11.5.16.11.5.3
-
Get Features(EEh)
- 命令用于确定特定特性的当前设置,这个参数会返回当前的设置特性,总是在数据线的低八位上传输;读取第一个字节后,主机会在发送其他命令之前读取需要的数据;
- 当在DDR2/DDR3接口发送命令之后,所有的byte会被接受2次,主机会锁存一份data,如果使用Read Status 或是 Read Status Enhanced被用作监控在tFEAT time拉升,host会发送一个命令00h开始传输features 从 paramter P1开始;
- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-g1HDVAyK-1617108754882)(C:\Users\Gang_Xiang\AppData\Roaming\Typora\typora-user-images\image-20210329200336273.png)]
-
Set Features(EFh)
- 用于修改特定的feature,比如,重新启用在上电时被禁用的feature,总是在数据的低8位上传输。
- 当在原数据接口发出时,每个数据需要传输两次,设备会被锁存一次;
- 设置特性需要修改timing_mode,数据接口,在tITC时间内,host不会改变其他状态;
- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Vz5dz80N-1617108754883)(C:\Users\Gang_Xiang\AppData\Roaming\Typora\typora-user-images\image-20210329201408548.png)]
-
LUN Get Features(D4h)
- LUN Get Feature 可以从特定的LUN读取特性
- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-q5LpoZsC-1617108754884)(C:\Users\Gang_Xiang\AppData\Roaming\Typora\typora-user-images\image-20210330092533972.png)]
-
LUN Set Features(D5h)
- 设置特性到指定的LUN,host需要输入LUN的地址;
- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-h4MKloXp-1617108754884)(C:\Users\Gang_Xiang\AppData\Roaming\Typora\typora-user-images\image-20210330093333407.png)]
-
Timing Mode(01h)
- 当SDR或者NV-DDR2数据接口使能,数据接口设置和时序number在Reset(FFh)之后不会保存;
- Reset(FFh)之后接口会被设置成SDR和时序模式会被设置成0,所有其他关于时序模式的设置会被Reset,SyncReset,Reset Lun命令执行之后保存
- 如果reset命令在NV-DDR2接口发送,然后主机会在timing 0时使用SDR接口直到新的数据接口被保存选择新的特性,主机只需要设置一个读取支持的timming模式;
- 在NV-DDR2 转换到 SDR时应该用Reset命令,而不因该使用Set Frature command命令;
- 当Vccq=1.2V, NV-DDR3接口会默认enbale,NV-DDR3切换到SDR或者NV-DDR2接口是不被允许的,如果feature表的P1[4:5]被改变,设备还是会保持NV-DDR3接口。Reset command 在接口时NV-DDR3被发送,host还是会保持NV-DDR3数据接口。
- 建议主机在Reset(FFh)后,继续保持Timing 0,直到设备被配置成支持的更快时序;
- Timng Mode Feature Enable Address:01h
- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QtDvRedS-1617108754884)(C:\Users\Gang_Xiang\AppData\Roaming\Typora\typora-user-images\image-20210330101606086.png)]
-
DDR2/DDR3 configuration(02h)
-
目标支持DDR2/3时才会被使用,设置控制差分信号,ODT配置,数据输入输出的热循环。DDR2接口在Reset不保留,上电参数会把这个覆盖掉;DDR3数据接口,则会在Reset之后保存;但是DDR2和DDR3接口都在sync reset或者 reset Lun命令之后保存
-
这些设置需要在定时模式特性中启用NV-DDR2数据接口才能生效。建议在启用NV-DDR2数据接口之前配置该特性。
-
在DDR2或者DDR3数据接口被使能,特性改变会即时生效。主机应该关心数据的完整性在NV-DDR2/3在修改这些数据时;
-
如果在NV-DDR2发送时出现命令错误,那么切换到SDR数据接口更新设置,然后回到DDR2接口;
-
如果在DDR3时出现问题,建议切换到Timing Mode 0,做一些合适的修改之后回到之前的Timing模式。这些配置被修改的时候需要在意信号的完整性;
-
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cBEguNwJ-1617108754885)(C:\Users\Gang_Xiang\AppData\Roaming\Typora\typora-user-images\image-20210330104706060.png)]
-
VEN:Vrefq , from external or internal;Page 199
-
-
Output Drive Strength(10h)
- 在Reset(FFh),sync Reset(FCh),LUN(FAh)之后,drive strength会保留,默认的值是 35 Ohms(10b)
1.1.7 general timing
1.2 Topic 2
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JhxYs29D-1617108754885)(C:\Users\Gang_Xiang\AppData\Roaming\Typora\typora-user-images\image-20210329163727155.png)]
6.3.6~6.3.11/6.4/6.5/6.6&&6.3.4/6.3.5
1.2.1 read/write/erase
1.2.1.1 page read(00h-03h)
-
page read 命令可以在指定的LUN上读取一行标识数据
-
主机会检查transfer或者R/B_n 的电平看数据是否完成,或者发送读状态命令或者监视SR[6]通过RE_n切换。
-
读取状态完成后,主机会重新发送一个00h的命令值去读取数据
-
设备随机读取数据在page中,而不是根据change read column(005-E0h)或者changge read column Enhanced(06h-E0h)命令,修改读的列可以多次操作。在05h-E0h或者06h-E0h在同一个page,这里应该没有其他的操作。否则这里的数据会被丢失;
-
超出页位的读取会导致返回无效的值给host,主机在读取页面的最后一个字节继续切,那么输出的数据是不确定的;
-
Multi-Plane PageRead Sequence
- NAND设备支持多plane操作,多平面操作多平面plane_read,需要保证 plane中A&B有相同的地址,不一样的页、page reads多平面操作是不支持的;
-
Cache Read
-
两种读取的cache方式,顺序读缓存(31h)和随机读取(00h-31h),允许在page缓存区读取一个页面同时在Flash array中读取。page read (00h-30h)命令应该在顺序读取或者随机读取命令之前发出;
-
第一个读缓存命令应该在page read 操作完成之后读(SR[6] set as one).主机可以Flash_array中读取下page的地址。如果主机没有输入下一个地址,那么就读取下一个连续地址。随机和顺序的读取,数据输出总是从列地址的00h开始;设备会输出随机数据替换顺序数据在写入change read column(05-E0h)或者是change Read Column Enhanced(06-E0)命令;
-
Cache read命令发送之后,SR[6]会被清0,这个操作完成之后&&SR[6]被设置成一(ready),主机就会开始在前一页或者cache read操作。发出额外的cache read 命令将最近从array读到的数据复制到page buffer中。如果没有更多的page读,最后的页通过发出 Cache Read End 命令复制到也缓存区;
-
在读取block的最后一个page之后,主机不应该发送顺序读命令.如果命令发送到多个LUNs同时,主机会执行一个读增强命令去选中一个LUN,然后再对该LUN发送顺序读cache 或者是顺序读cache结束(3Fh);
-
-
fast partial page Read(00h-20h)
-
-
快速读取部分页,需要六个地址周期,行(page location),column(portion in a page).主机可以提供数据块中范围内的任何地址。灵活的部分页读操作传输4K+512bytes 在NAND array cache寄存器。所选块范围内的人格地址都无效。
-
多plane 快速读取允许主机读取连个两个不一样的块,主机输入不同的column地址在每一个plane上指示去读取哪一个块,快速读取指定页地址不支持Cache read mode;
-
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-B4d5c64H-1617108754886)(C:\Users\Gang_Xiang\AppData\Roaming\Typora\typora-user-images\image-20210330170617062.png)]
-
-
Change Read Column(05h-E0h)
- Change Read Column命令更改所选LUN的页缓冲区中读取数据的列地址。只有当LUN处于读空闲(read idle)状态时才会下发 changed read column。写入E0h命令之后的tCCSns主机才会从LUN中读取。
- 可以多次操作在同一个page中,在05h-E0h在同一个页中,这里不应该有任何其他的操作,否则日期在page buffer中会丢失;
-
Erased Page Check(00-33h)
-
页擦除命令带有六个地址周期,提供了一种方法确保所有的数据都被擦除了。主要用于电源数据丢失时,在这种情况下,页可能有部分编程,但是状态却是已经擦除;
-
主机可以通过监视状态寄存器R/B_n输出或者SR[6]状态寄存器,主机可以判断
SR[6] == 0就被擦除完成,SR[6] == 1没有被擦除;
-
-
Change Read Column Enhanced(06h-E0h)
- 更改正在读取LUN,Plane,Column地址,此命令用在独立的LUN操作或者多Plane操作需要给出新列的整个地址;
- 主机不能发出change Read column Enhanced command除非参数页中显示支持他。目标执行数据输出命令时,不能被使用;
- Change Read Column Enhanced导致未选择的空闲lun (SR[6] is one)关闭其输出缓冲区。这确保只有Change Read列Enhanced命令选择的LUN响应后续的数据输出。当Change Read Column Enhanced下发时,如果未被选中的lun是active的(SR[6]为0),那么主机在后续的数据输出之前会下发Read Status Enhanced (78h)命令,确保所有未被选中的lun关闭它们的输出缓冲区。
1.2.1.2 program operations
- page program(80h-10h)
- 页编程命令:传输page或者是page的一部分到page buffer然后编程数据放置到Flash array。页程序周期包括一个串行命令的加载周期,在该数据加载周期中可将16K+2048字节的数据加载到页缓冲区中,当加载的数据被编程到适当的单元中时,接着是一个编程周期。注意,用户不能输入超过16K + 2048字节的数据,否则无法保证程序的运行。
- 串行数据加载周期首先发出串行数据输入命令(80h),6个周期的地址传输完成之后开始串口传输。80h清除page寄存器为了load新的data,设备支持随机数据在page中的输入。下个数据的列地址可以被change Row address和 change column command修改,这个操作可执行多次在一个page中;
- 在主机发出Confirm命令(10h)之后,编程过程将在tPROG时间内中启动并完成。一旦程序进程启动,主机可以通过监视RB n输出来检测程序周期的完成,或者通过Read Status命令来检测状态寄存器的SR[6]。只有Read Status命令。读取状态增强命令,所有复位命令(EEh。EAh和FCh)和Suspend命令在编程过程中有效。当页面程序完成时,可以检查SROl。在另一个无用命令写入到命令寄存器之前,命令寄存器将保持在读状态命令模式。
- 这个NANDFLASH接口支持一次性接口,在80h之后执行1Ah命令,page的内容会存储在内部的数据寄存器。host load的数据顺序是 Lower page , Middle Upper pages.直到所有的程序已经被传输到内部的寄存器,10h会被发送到程序最开始的flash array;
- 这个NAND Flash是设备支持multi-plane操作。但是保证页地址在两个plane是一样的。
- cache program
- change write column(85h)
- change Row Address(85h)
- TLC program Suspend
- program resume
1.2.1.2 copyback operations
1.2.2 copyback
1.2.3 multplane
1.2.4 interleave
1.2.5 status
1.3 Others I Should Know
1.3.1 List of abbreviations
Abbreviation | Meaning |
---|---|
tCCS | Change Column Setup Time |
tWB | WE_n HIGH ro R/B_n LOW |
tRST | Device RESET time |
tPOR | Power on reset time |
tR | single-Plane page read operation Time |
tFEAT | Busy Time for Set Feature and Get Features |
tITC | Interface and time mode change time |
tCLS | CLE setup time |
tCLH | CLE hold time |
tCS | CE_n setuptime |
tCH | CE_n hold time |
tWP | WE_n LOW pulse width |
tCEA | CE_n access time |
tALS | ALE setup time |
tR | transfer from flash array to page buffer |
tADL | Address cycle to data loading time |
1.3.2 List of Command
COMMAND | MEaning |
---|---|
85h | CHANGE Column Address |
FFh | reset |
FCh | Synchronous |
FAh | Reset LUN |
FDh | Hard Reset |
EDh | read UID |
90h | read ID |
00h/01h-30h | Sequential cache read / Random cache read |
00h-32h | Multi-Plane Copyback read |
00h-20h | Fast Partial Page Read |
05h-E0h | change read column |
06h-E0h | Change Read column Enhanced |
85h-11h | Multi-Plane Copyback program |
1.3.3 some questions
-
什么是copyback
copyback是不经过控制器,直接从page拷贝到page中;
e read column |
| 06h-E0h | Change Read column Enhanced |
| 85h-11h | Multi-Plane Copyback program |
| | |
| | |
1.3.3 some questions
-
什么是copyback
copyback是不经过控制器,直接从page拷贝到page中;