26_Nand_Flash

  1. Nand_flash Learn

  2. [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(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

  1. 符合ONFI4.0 (open nand_flash interface 4.0)标准,支持SDR,NV-DDR2&&NV-DDR3数据接口,命令,数据和地址都通过8根数据线完成;

  2. 封装工艺是BGA,最高速度可达800MB/s;

  3. SDR(single data rate),DDR(double date rate),WL(wordline-读操作最小的可寻址单位),LUN(logical unit number-最小的独立执行命令和报告状态的单位),SR(包含在指定LUN中的状态寄存器)的基本概念;

  4. 对于部分编号需要对着表格看懂(p17);

  5. 整个block的大致构成:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4JRI0gvQ-1617108754876)(C:\Users\Gang_Xiang\AppData\Roaming\Typora\typora-user-images\image-20210326175123820.png)]

  6. 信号描述,过了一遍常见的信号,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

  1. 层次关系

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-99E561om-1617108754878)(E:\New_Classmate_doc\NAND\YMTC_memory_organization.png)]

  2. 大小关系

    1 Page = (16K + 2048) bytes

    1 Block = 1152 pages

    1 Plane = 1006 blocks

    1 LUN = 2 planes

  3. 寻址方式

    列地址(COLUMN):列地址的偏移是以字节为单位的,大小是页面字节的偏移量;

    行地址(ROW):这个地址包含了三个地址信息,从高位到地位依次是,LUN-Block-Page地址(MSB-LSB);

    其他:

    a. ddr interface 的列地址最低位总是0,所以总是偶数地址

    b. 执行Erase这种操作时,由于是应用block为基本单位,所以不需要用到列地址;

    c. 行列地址都是低地址先发,最后才到高地址;

    d. 先发的列,后发行地址,plane地址是block0的地址,LA选择哪个LUN;

  4. lun是nand目标的一部分与主机共享数据总线,需要确保在任何时间只有一个lun被选择,Read Status Enhanced 取消对所有的没有被寻址的LUN的选择;

  5. 多路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

  1. DDR和SDR时序图差别在于DDR多了一个DQS,DDR接口速度更快(double data rate);

    a. sdr 读写数据使用上升沿或者下降沿来触发,因为只能用上升沿和下降沿,对数据的准确要求比较低;

    b. ddr写数据时通过控制MCU控制dqs信号的上下沿触发

  2. 如果bus state不是输出或者输入状态,那么dqs要拉高,以免设备启用ODT,如ODT没有启用,那么可以不管DQS的状态;

  3. 文档的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

AbbreviationMeaning
tCCSChange Column Setup Time
tWBWE_n HIGH ro R/B_n LOW
tRSTDevice RESET time
tPORPower on reset time
tRsingle-Plane page read operation Time
tFEATBusy Time for Set Feature and Get Features
tITCInterface and time mode change time
tCLSCLE setup time
tCLHCLE hold time
tCSCE_n setuptime
tCHCE_n hold time
tWPWE_n LOW pulse width
tCEACE_n access time
tALSALE setup time
tRtransfer from flash array to page buffer
tADLAddress cycle to data loading time

1.3.2 List of Command

COMMANDMEaning
85hCHANGE Column Address
FFhreset
FChSynchronous
FAhReset LUN
FDhHard Reset
EDhread UID
90hread ID
00h/01h-30hSequential cache read / Random cache read
00h-32hMulti-Plane Copyback read
00h-20hFast Partial Page Read
05h-E0hchange read column
06h-E0hChange Read column Enhanced
85h-11hMulti-Plane Copyback program

1.3.3 some questions

  1. 什么是copyback

    copyback是不经过控制器,直接从page拷贝到page中;

e read column |
| 06h-E0h | Change Read column Enhanced |
| 85h-11h | Multi-Plane Copyback program |
| | |
| | |

1.3.3 some questions

  1. 什么是copyback

    copyback是不经过控制器,直接从page拷贝到page中;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值