一种控制器的制造方法

文档序号:10488828阅读:554来源:国知局
一种控制器的制造方法
【专利摘要】本发明提供了一种控制器,所述控制器包括:坏块管理单元,用于获取坏块列表,将所述坏块列表存储至随机存储器RAM;坏块映射单元,利用坏块映射方法确定当前块Block的操作地址不在所述坏块列表中时,则确定所述当前块Block是好块;检错纠错单元,用于在所述控制器进行读写操作时,对读写数据进行检错纠错;其中,所述RAM输出ram_dout与及RAM地址ram_addr位于同一个时钟周期;如此,所述RAM输出ram_dout与及RAM地址ram_addr位于同一个时钟周期,所以可以在一个时钟周期内确定出坏块,进而提高了读写操作的速度;且所述检错纠错单元可以在数据长度为512字节中纠正出1位错,检测出2位错,提高了检错纠错效率,进一步确保了NAND FLASH芯片的可靠性。
【专利说明】
一种控制器
技术领域
[0001] 本发明属于数据存储技术领域,尤其涉及一种控制器。
【背景技术】
[0002] Flash Memory属于一种非挥发性存储器,在国内也通常被叫作闪存(闪速存储 器)。作为一种优良的单管存储器,它的优点在于体积小、功耗低、速度快、成本低。近年来, Flash Memory已成为集成电路(IC,Integrated Circuit)技术发展的主要驱动器,主要包 含有勵1?、祖冊、0丨如1?、4勵等多种技术架构,其中以祖冊?1^5!1和如1??1^5!1这两种架构在 市场的使用率最高。
[0003] 虽然NAND FLASH技术逐渐成熟,但在NAND FLASH芯片的使用上还是有着一些复杂 性,比如:没有采用独立的数据线和地址线,所有的指令、地址和数据信息共同复用一个I/O 口,以及在使用中有可能出现位反转(bit-flipping)、需要坏块(bad blocks)管理等问题。 这些问题导致NAND FLASH芯片整体的读写速度和数据可靠性降低。
[0004] 基于此,目前亟需一种NAND FLASH控制器,以能对坏块进行管理,对数据进行纠错 检错,以使NAND FLASH芯片在运行过程中能够快速确定坏块并提高纠错检错率,进而保证 NAND FLASH芯片的读写速度和数据可靠性。

【发明内容】

[0005] 针对现有技术存在的问题,本发明实施例提供了一种控制器,用于解决现有技术 中的NAND FLASH控制器的纠错检错率低,且不能快速定位坏块导致NAND FLASH芯片的整体 可靠性及读写速度降低的技术问题。
[0006] 本发明提供一种控制器,所述控制器包括:
[0007] 坏块管理单元,用于获取坏块列表,将所述坏块列表存储至随机存储器(RAM, Random Access Memory);
[0008] 坏块映射单元,利用坏块映射方法确定当前块Block的操作地址不在所述坏块列 表中时,则确定所述当前块Block是好块;
[0009] 检错纠错单元ECC,用于在所述控制器进行读写操作时,对读写数据进行检错纠 错;其中,所述RAM输出ram_dout与及RAM地址ram_addr位于同一个时钟周期。
[0010]上述方案中,所述坏块映射单元还用于:利用坏块映射方法确定当前块Block的操 作地址处于所述坏块列表,则确定所述当前块Block是坏块,跳过所述当前块Block进行写/ 擦操作。
[0011]上述方案中,所述坏块映射方法包括:RAM顺序比较法及单周期组合逻辑法。
[0012] 上述方案中,所述RAM顺序比较法包括:将所请求的块地址req_addr与所述坏块列 表中的坏块地址逐一比较;其中,所述坏块地址按照从小到大的顺序存放至所述RAM中。
[0013] 上述方案中,所述单周期组合逻辑法包括:将所述坏块列表标记为阵列A [0014]储存至一组寄存器中;
[0015] 根据所述请求的块地址req_addr,按照地址逐渐增大的方式扩展出20个块地址, 标记为阵列B;
[0016] 将所述请求的块地址req_addr与所述阵列A中的坏块地址[k]对齐;
[0017] 从所述阵列A中坏块地址[k]开始,根据块地址逐渐增大的方式,将所述阵列A中的 坏块地址与所述阵列B中的块地址逐一比较,获取结果变量cmp;
[0018] 在所述结果变量cmp中,当确定出所述cmp中首个零值时,根据所述零值在所述阵 列B中查找对应的块。
[0019] 上述方案中,当arrayA[k] < req_addr〈arrayA[k+l ]时,所述请求的块地址req_ addr与所述阵列A中的坏块地址[k ]对齐;其中,arrayA为所述阵列A,所述[k ]为对齐点。
[0020] 上述方案中,当数据长度为512字节时,所述检错纠错单元发现并纠正出1位错,检 测出2位错。
[0021 ]上述方案中,所述检错纠错单元的校验码为3个字节。
[0022] 上述方案中,所述控制器还包括:均衡单元,用于对所述控制器的写操作进行均 衡,使得所述块Block及页page的被写次数保持均衡。
[0023] 上述方案中,所述坏块包括:收集单元,用于对无用块block进行收集汇总。
[0024]本发明提供了一种控制器,所述控制器包括:坏块管理单元,用于获取坏块列表, 将所述坏块列表存储至随机存储器RAM;坏块映射单元,利用坏块映射方法确定当前块 Block的操作地址不在所述坏块列表中时,则确定所述当前块Block是好块;检错纠错单元, 用于在所述控制器进行读写操作时,对读写数据进行检错纠错;其中,所述RAM输出ram_ dout与RAM地址ram_addr位于同一个时钟周期;如此,所述RAM输出ram_dout与RAM地址ram_ addr位于同一个时钟周期,所以可以在一个时钟周期内确定出坏块,进而提高了读写操作 的速度;且所述检错纠错单元可以在数据长度为512字节中纠正出1位错,检测出2位错,提 高了检错纠错效率,进一步确保了NAND FLASH芯片的可靠性。
【附图说明】
[0025] 图1为本发明实施例提供的控制器的整体结构示意图;
[0026] 图2为本发明实施例提供的坏块列表保存至RAM中的示意图;
[0027] 图3为本发明实施例提供的坏块映射单元进行坏块映射时的时序图;
[0028] 图4为本发明实施例提供的坏块映射单元利用单周期组合逻辑法确定坏块时的处 理流程图;
[0029]图5为本发明实施例提供的主机host向NAND FLASH芯片写数据时的ECC工作时序 示意图;
[0030]图6为本发明实施例提供的host向NAND FLASH芯片读数据时的ECC工作时序示意 图;
[0031 ]图7为本发明实施例提供的利用汉明码进行检错纠错示意图;
[0032] 图8为本发明实施例提供的对NAND_FLASH芯片进行普通读时的工作时序示意图;
[0033] 图9为本发明实施例提供的对NAND_FLASH芯片进行高速读时的工作时序示意图。
【具体实施方式】
[0034] 为了提高NAND FLASH芯片的整体可靠性及读写速度,本发明提供了一种一种控制 器,所述控制器包括:坏块管理单元,用于获取坏块列表,将所述坏块列表存储至随机存储 器RAM;坏块映射单元,利用坏块映射方法确定当前块Block的操作地址不在所述坏块列表 中时,则确定所述当前块Block是好块;检错纠错单元,用于在所述控制器进行读写操作时, 对读写数据进行检错纠错;其中,所述RAM输出ram_dout与及RAM地址ram_addr位于同一个 时钟周期。
[0035] 下面通过附图及具体实施例对本发明的技术方案做进一步的详细说明。
[0036]本实施例一种控制器,如图1所示,所述控制器包括:坏块管理单元11、坏块映射单 元12、检错纠错单元13、控制单元mctrl 14及物理控制器15(phyc,Physical Controller); 其中,
[0037] 所述坏块管理单元11用于扫描控制器芯片,获取坏块列表,将所述坏块列表存储 至随机存储器RAM。具体地,所述坏块包括初始坏块及递增坏块,所述初始坏块又称出厂坏 块,由于初始坏块信息会随擦除操作而消失,因此拿到芯片后,应当首先读取初始坏块信 息、将其另行保存。
[0038] 递增坏块是在芯片的使用过程中,反复的写/擦操作会导致电子在栅氧SiO2中的 积累,进而导致浮栅管的阈值电压V th会逐渐漂移。如果所述Vth漂出可接受的正常范围时, 则会导致坏块。其中,所述芯片为NAND Flash芯片,所述控制器为所述NAND Flash芯片的 Mas ter,与闪存NAND进行通信,并对NAND进行读、写、擦等操作。
[0039]所以,在控制器对NAND Flash芯片进行操作的过程中,需要保存并维护一个坏块 列表,表中包含了初始坏块及递增坏块。
[0040] 当所述坏块管理单元11获取到所述坏块列表后,所述坏块映射单元12对NAND进行 读、写、擦等操作时,利用坏块映射方法判读当前块Block的操作地址是否在所述坏块列表 中时,如果当前块Block的操作地址不在所述坏块列表中时,则确定所述当前块Block是好 块;如果当前块Block的操作地址在所述坏块列表中时,则跳过该Block,找到下一个距离所 述当前块Block最近的好块,进行读、写、擦等操作。
[0041] 具体地,所述坏块映射方法包括:RAM顺序比较法及单周期组合逻辑法。所述RAM顺 序比较法包括:将所请求的块地址req_addr与所述坏块列表中的坏块地址逐一比较;期中, 所述坏块地址按照从小到大的顺序存放至所述RAM中。
[0042] 以8位宽2Gbit的NAND Flash为例。其片内共有1024个Block,最多2%是坏块,即最 多可能有20个坏块。如图2所示,首先将坏块列表存储至RAM中。假设RAM中存储的列表如表1 所示:
[0043]表 1
[0044]
[0045] 其中,在表1中,所述表中的左边一列表示坏块序号,右边一列表示坏块地址。由于 所请求的块地址与列表中的坏块,是按顺序逐一比较的,因此要求RAM的坏块必须按照从小 到大的顺序排列好。否则,如果将小地址的坏块放在RAM中靠后的位置,比如"628"后存放一 个地址为"15"的坏块,则所述逻辑无法识别出坏块"15"。
[0046] 这里,所述RAM采用"非Register输出",那么进行坏块映射的工作时序如图3所示, 其中,在图3中,所述req_addr为所请求的块地址、所述req_ena为请求使能、所述req_ad_ temp为请求地址标志、所述ram_addr为RAM地址、所述ram_dout为所述RAM输出、所述equal 为匹配、所述g〇〇d_addr为好块地址、good_ena为好块使能、所述comparing为比较。所述 ram_dout与ram_addr位于同一个时钟周期。
[0047] 进一步地,为了实现实时的地址映射,可以考虑在单周期内即给出"下一个可用好 ±夬"的Block地址。这意味着对地址处理必须使用单周期组合逻辑完成。所述单周期组合逻 辑法仍需预先对坏块地址进行排序,处理方法如图4所示。
[0048] 具体地,首先将所述坏块列表标记为阵列A储存至一组寄存器中reg中。
[0049] 其次,根据所述请求的块地址req_addr,按照地址逐渐增大(依次加1)的方式扩展 出20个块地址,标记为阵列B。
[0050] 然后,将所述请求的块地址req_addr与所述阵列A中的坏块地址的值顺次比较,找 到一个坏块地址[k],将请求的块地址req_addr与坏块地址[k]对齐;其中,当arrayA[k] < req_addr〈arrayA[k+l ]时,所述请求的块地址req_addr与所述阵列A中的坏块地址[k]对 齐;其中,arrayA为所述阵列A,所述[k]为对齐点。
[0051] 再从所述阵列A中坏块地址[k]开始,根据块地址逐渐增大的方式,将所述阵列A中 的坏块地址与所述阵列B中的块地址逐一比较,相同为1、相异为0,获取20位结果变量cmp。 实现如下:
[0052] arrayA[k]与arrayB[0](即req_addr)相比,
[0053] arrayA[k+l ]与arrayB[ 1 ](即req_addr+l)相比,
[0054] ……
[0055]最后,在所述结果变量cmp中,当确定出所述cmp中首个零值时,根据所述零值在所 述阵列B中查找对应的块,那么这个块即为好块g〇〇d_blk。具体实现如下:
[0056] cmp ==0000_0000_0000_0000,则good_b Ik = arrayB [ 0 ]
[0057] cmp= =0000_0000_0000_0001,则 good_blk = arrayB[l]
[0058] cmp= =0000_0000_0000_0011,则 good_blk = arrayB[2]
[0059] ……
[0060] 在上述处理中,阵列A中的坏块地址应当是从小到大排序的,这样只需要进行一次 "对齐"操作即可,后续操作均为异或运算。
[0061] 进一步地,所述检错纠错单元13(ECC,Error Checking And Correcting)用于在 所述控制器进行读写操作时,使用ECC编码对读写数据进行检错纠错操作;这里,所述ECC单 元13对输入/输出两个方向的数据进行ECC校验。ECC校验的基本长度为512字节,对于512字 节中的数据,可以发现并纠正1位错、检测2位错,对于2 3位的错则无法保证发现。每512字 节的原始数据,其ECC校验码为3字节。
[0062] 而若一个页Page包含2048字节,因此实际上ECC单元13将1个页Page切分为4段、分 别进行校验。host向NAND FLASH芯片写数据时的ECC工作时序如图5所示。在图5中,①表示 每来1个页Page之前,向ECC单元13发送一个start信号;②表示host向NAND FLASH写入数 据,进入RAM的同时,将数据写入ECC单元13;③表示写数据使能;④表示phyc 15读取RAM给 出的地址时,同时将该地址发送至ECC单元13;⑤表示ECC单元13在相应的地址输出12字节 的校验结果。
[0063] 进一步地,host向NAND FLASH芯片读数据时的ECC工作时序如图6所示。在图6中, ①表示每来1个页Page之前,向ECC单元13发送一个start信号;②表示来自NAND FLAS^W 个页Page的有效数据;③表示来自NAND FLASH的1个页Page的有效数据对应的ECC校验码; ④表示所述phyc 15写RAM给出的地址,同时将该地址发送至ECC单元13;⑤表示ECC单元13 输出的1个页Page的校验结果。
[0064] 这里,所述mctrl 14的主要功能包括:接收host的指令,对phyc 15进行控制;读/ 写每个page之前,向ECC单元13给出start信号。
[0065] 所述phyc 15为mctrl 14的slave单元,用于对NAND Flash芯片的管脚进行直接控 制、交互。各指令下的phy c动作如表2所示:
[0066] 表 2

[0069] 其中,在表2中,所述各指令释义如下:所述RESET为复位指令;所述R_ID_MANU为读 manual ID;所述R_ID_0NFI为读ONFI ID;所述R_PARA_PAGE为读参数;所述R_UNIQUE_ID为 读unique ID;所述SET_FEATURE为特性设置;所述GET_FEATURE为获取特性;所述R_STATUS 为读状态,所述R_STAT_ENH为读状态加强;所述R_PAGE为普通页读;所述R_PAG_CACH_SEQ为 顺序读cache ;所述R_PAG_CACH_RND为任意读cache ;所述PRG_PAGE为页编程;所述ERS_ BLOCK为块擦除;所述ERS_BLK_2PLN为两个?131^的块擦除 ;所述840_81^_3041^为坏块检测; 所述BAD_BLK_S0RT为坏块排序;所述CL为指令锁存;所述AL为地址锁存。
[0070] 实际应用中,如图7所示,以汉明码ECC为例,NAND Flash芯片每个页Page包含2112 字节,其中有2048字节有效数据,若干字节无用数据以及12字节的ECC校验字。
[0071]当host向NAND FLASH芯片进行写入时,只给出2048字节的有效数据。由控制器来 算出ECC校验码,并将有效数据和校验码按照图5所示的地址分布,写入NAND FLASH中。 [0072]当host读取NAND FLASH芯片时,控制器读出1页Page中的全部数据,并使用其中的 ECC校验字对有效数据进行检错、纠错,最终返回给host的回读数据是进行过纠错之后的 2048字节有效数据。
[0073] 这里,对所述NAND FLASH芯片进行读操作时,可依据读周期(tRC,RE#cycle time) 的时间长度将读操作分为两种:普通读和高速读;
[0074] 具体地,当tRC 2 30ns,则使用普通读数据操作时序。如图8所示,NAND FLASH芯片 在RE#下降沿送出数据、之后的RE#上升沿将数据置为高阻,同时控制器在RE#上升沿取走数 据。
[0075] 如果tRC〈30ns,则使用高速读数据操作时序。如图9所示,NAND FLASH芯片在RE#下 降沿送出数据,之后的RE#下降沿将数据置为高阻并输出新的数据、控制器同时在此RE#下 降沿取走数据。
[0076] 进一步地,所述控制器还包括:均衡单元16、收集单元17及时钟复位单元18;其中, 所述均衡单元16用于对所述控制器的写操作进行均衡,使得所述块Block及页page的被写 次数保持均衡;即使得各个块block、页page经历的写操作次数大体相同,以防出现一部分 块block已经超过负荷、另一部分块block却从未被使用的现象。
[0077]所述收集单元17用于对NAND FLASH芯片中无用的所述block进行收集汇总。所述 无用块block是指无用块中存储的数据已经被更新,写入了别的块中,所以无用块block中 存储的是无效数据。
[0078]所述时钟复位单元18用于向其他模块提供时钟和复位信号。
[0079] 本发明实施例提供的NAND FLASH芯片共容量为1Gbit,包含有2*512 = 1024个 Block、1024*64 = 65536个 Page。
[0080] 本发明实施例提供的控制器所述RAM的ram_dout与ram_addr位于同一个时钟周 期,所以可以在一个时钟周期内确定出坏块,进而提高了读写操作的速度;且所述检错纠错 单元可以在数据长度为512字节中纠正出1位错,检测出2位错,提高了检错纠错效率,进一 步确保了NAND FLASH芯片的可靠性。
[0081] 以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围,凡在 本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护 范围之内。
【主权项】
1. 一种控制器,其特征在于,所述控制器包括: 坏块管理单元,用于获取坏块列表,将所述坏块列表存储至随机存储器RAM; 坏块映射单元,利用坏块映射方法确定当前块Block的操作地址不在所述坏块列表中 时,则确定所述当前块Block是好块; 检错纠错单元ECC,用于在所述控制器进行读写操作时,对读写数据进行检错纠错;其 中,所述RAM输出ram_dout与及RAM地址ram_addr位于同一个时钟周期。2. 如权利要求1所述的控制器,其特征在于,所述坏块映射单元还用于:利用坏块映射 方法确定当前块Block的操作地址处于所述坏块列表,则确定所述当前块Block是坏块,跳 过所述当前块Block进行写/擦操作。3. 如权利要求2所述的控制器,其特征在于,所述坏块映射方法包括:RAM顺序比较法及 单周期组合逻辑法。4. 如权利要求3所述的控制器,其特征在于,所述RAM顺序比较法包括:将所请求的块地 址req_addr与所述坏块列表中的坏块地址逐一比较;其中,所述坏块地址按照从小到大的 顺序存放至所述RAM中。5. 如权利要求3所述的控制器,其特征在于,所述单周期组合逻辑法包括: 将所述坏块列表标记为阵列A储存至一组寄存器中; 根据所述请求的块地址req_addr,按照地址逐渐增大的方式扩展出20个块地址,标记 为阵列B; 将所述请求的块地址req_addr与所述阵列A中的坏块地址[k ]对齐; 从所述阵列A中坏块地址[k]开始,根据块地址逐渐增大的方式,将所述阵列A中的坏块 地址与所述阵列B中的块地址逐一比较,获取结果变量cmp; 在所述结果变量cmp中,当确定出所述cmp中首个零值时,根据所述零值在所述阵列B中 查找对应的块。 6 ·如权利要求5所述的控制器,其特征在于,当arrayA[k] < req_addr〈arrayA[k+l]时, 所述请求的块地址req_addr与所述阵列A中的坏块地址[k]对齐;其中,arrayA为所述阵列 A,所述[k]为对齐点。7. 如权利要求5所述的控制器,其特征在于,当数据长度为512字节时,所述检错纠错单 元发现并纠正出1位错,检测出2位错。8. 如权利要求5所述的控制器,其特征在于,所述检错纠错单元的校验码为3个字节。9. 如权利要求1所述的控制器,其特征在于,所述控制器还包括:均衡单元,用于对所述 控制器的写操作进行均衡,使得所述块Block及页page的被写次数保持均衡。10. 如权利要求1所述的控制器,其特征在于,所述坏块包括:收集单元,用于对无用块 block进行收集汇总。
【文档编号】G06F11/10GK105843700SQ201610178879
【公开日】2016年8月10日
【申请日】2016年3月25日
【发明人】谢凯毅, 谢元禄, 张坤, 刘璟
【申请人】中国科学院微电子研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1