NAND flash的Cache Program
1.Cache Program是通过80h - 15h命令实现通过流水机制将数据传输与物理编程并行处理。详细过程如下(1)发命令80h告诉芯片我要写入数据。(2)发送地址告诉芯片我要写的地址。(3)传输数据到Cache寄存器。(4)发送命令15h启动将数据从Cache寄存器传输到Data寄存器发送完15h后RB信号线会拉低(此时发命令70h查询状态寄存器位6会是0)表示数据传输过程正常进行即Cache寄存器为busy状态。(5)当RB拉高时(此时发命令70h查询状态寄存器位6会是1)表示数据已经从Cache寄存器到Data寄存器传输完成即Cache寄存器ready为空闲状态可以继续接收host的下一笔数据。此时数据会从Data寄存器传输到存储阵列查询状态寄存器位5会是0表示存储阵列是busy状态。(6)host检测到RB拉高后开启启动下一笔数据传输同样发命令80h addr然后把数据传输到Cache寄存器数据传输到Cache寄存器后发送命令15h启动数据从Cache寄存器传输到Data寄存器RB拉低表示Cache寄存器busy此时数据可能还不会立马从Cache寄存器传输到Data寄存器因为上一笔数据可能还在从Data寄存器传输给存储阵列需等待Data寄存器空闲等Data寄存器的数据全部传输到存储阵列后Cache寄存器的数据会开始传输到Data寄存器当全部数据传输到Data寄存器后RB会拉高表示Cache寄存器ready(此时发命令70h查询状态寄存器位6会是0)host可以往Cache寄存器传输下一笔数据。可以看出整个过程RB信号只表示Cache寄存器是否idle即Cache寄存器的数据是否已经传输到Data寄存器所以当最后一页数据通过命令15h发送完后当RB拉高时只能表示Cache寄存器的数据已经全部传输到Data寄存器了但数据还没从Data寄存器传输到存储阵列因此当最后一页数据下发时要用命令10h而不是15h用10h时RB信号会表征数据是否传输到存储阵列完成当数据全部传输到存储阵列时RB才会拉高。注意最后一页数据发送命令10h时数据也是先从Cache寄存器传输到Data寄存器再传输到存储阵列而不是直接从Cache寄存器传输到存储阵列。总结Cache Progra数据是从host -- Cache寄存器 -- Data寄存器 -- 存储阵列。2.普通非Cache Program即发送80h - 10h命令数据也是先从host传输到Cache寄存器再从Cache寄存器传入到Data寄存器再传输到存储阵列普通program下状态寄存器的位6不起作用。