基于fpga的nandflash自主坏块管理方法和系统
技术领域
1.本发明涉及坏块管理技术领域,具体地,涉及一种基于fpga的nandflash自主坏块管理方法和系统。
背景技术:2.星载计算机常用cpu和fpga为核心架构共同完成星上存储和控制等功能。以往的功能框架中,nandflash作为存储器件,其擦除、读写等接口逻辑控制由fpga来完成,cpu则完成存储数据的控制和nandflash的可靠性控制(冗余设计或者坏块管理)。
3.专利文献cn104765695a(申请号:cn201510158107.3)公开了一种nand flash坏块管理系统,包括nand flash接口控制单元、坏块管理单元、非易失性存储器接口控制单元和非易失性存储器,所述nand flash接口控制单元连接nand flash阵列,所述nand flash接口控制单元连接坏块管理单元,所述坏块管理单元通过非易失性存储器接口控制单元连接非易失性存储器。所述的非易失性存储器是eeprom。所述的坏块管理单元基于fpga。
4.随着星上功能需求越来越复杂,cpu的工作负担也越来越重,将坏块管理移到fpga中来实现,既给cpu减负,使其能更好地完成其他系统级的任务,又充分利用了fpga快速响应,并行处理的优点,高效可靠地完成nandflash的存储回放功能。本发明解决的是星上nandflash如何在fpga中实现坏块出厂检索、坏块信息维护、块地址动态映射等功能的具体问题。
技术实现要素:5.针对现有技术中的缺陷,本发明的目的是提供一种基于fpga的nandflash自主坏块管理方法和系统。
6.根据本发明提供的基于fpga的nandflash自主坏块管理方法,包括:
7.步骤1:在芯片出厂时,进行坏块出厂检索;
8.步骤2:对坏块信息进行维护;
9.步骤3:进行块地址映射;
10.步骤4:对nandflash接口进行互斥调度。
11.优选的,所述步骤1包括:
12.在每个坏块的第一页进行标记,标记位置为byte4096,标记值为0x00,正常值为0xff;
13.在芯片初始化之后,擦除编程之前,对nandflash的所有块进行遍历检索;再将检索到0x00对应的块索引号信息存入非坏块block0中。
14.优选的,所述步骤2包括:
15.步骤2.1:开辟一块block ram空间用于缓存和更新坏块列表信息,将block0中的坏块索引号搬移到随机存取存储器ram中,以便地址映射时使用;
16.步骤2.2:在固存操作的过程中,擦除或者页编程后进行状态读取,根据器件手册,
读出状态字bit0为1时,表明该操作失败,认为有新增坏块,按照芯片出厂的方式对该块的第一页byte4096写入0x00,作为坏块信息的标记,标记完成后重新遍历坏块,更新block0中的坏块信息。
17.优选的,所述步骤3包括:在blockram中按地址从低到高存储坏块索引号的信息,且ram初始化填充全1数据,在模块工作时,按地址从0开始读出数据,原块索引号与之比较,如果大于等于ram的数据输出dout,则将读地址加1,继续循环比较,直到小于dout时停止循环,最终映射的索引号就是原块索引号加上ram的读地址再加1。
18.优选的,所述步骤4包括:
19.步骤4.1:通过fpga设置通道号轮询,接收访问请求;
20.步骤4.2:当前通道空闲时,响应访问请求,给出访问应答,此时该通道占用nandflash使用权限;
21.步骤4.3:当nandflash操作完成时,释放当前通道的使用权限。
22.根据本发明提供的基于fpga的nandflash自主坏块管理系统,包括:
23.模块m1:在芯片出厂时,进行坏块出厂检索;
24.模块m2:对坏块信息进行维护;
25.模块m3:进行块地址映射;
26.模块m4:对nandflash接口进行互斥调度。
27.优选的,所述模块m1包括:
28.在每个坏块的第一页进行标记,标记位置为byte4096,标记值为0x00,正常值为0xff;
29.在芯片初始化之后,擦除编程之前,对nandflash的所有块进行遍历检索;再将检索到0x00对应的块索引号信息存入非坏块block0中。
30.优选的,所述模块m2包括:
31.模块m2.1:开辟一块block ram空间用于缓存和更新坏块列表信息,将block0中的坏块索引号搬移到随机存取存储器ram中,以便地址映射时使用;
32.模块m2.2:在固存操作的过程中,擦除或者页编程后进行状态读取,根据器件手册,读出状态字bit0为1时,表明该操作失败,认为有新增坏块,按照芯片出厂的方式对该块的第一页byte4096写入0x00,作为坏块信息的标记,标记完成后重新遍历坏块,更新block0中的坏块信息。
33.优选的,所述模块m3包括:在blockram中按地址从低到高存储坏块索引号的信息,且ram初始化填充全1数据,在模块工作时,按地址从0开始读出数据,原块索引号与之比较,如果大于等于ram的数据输出dout,则将读地址加1,继续循环比较,直到小于dout时停止循环,最终映射的索引号就是原块索引号加上ram的读地址再加1。
34.优选的,所述模块m4包括:
35.模块m4.1:通过fpga设置通道号轮询,接收访问请求;
36.模块m4.2:当前通道空闲时,响应访问请求,给出访问应答,此时该通道占用nandflash使用权限;
37.模块m4.3:当nandflash操作完成时,释放当前通道的使用权限。
38.与现有技术相比,本发明具有如下的有益效果:
39.(1)本发明将坏块管理移到fpga中来实现,既给cpu减负,使其能更好地完成其他系统级的任务,又充分利用了fpga快速响应,并行处理的优点,高效可靠地完成nandflash的存储回放功能;
40.(2)本发明解决了星上nandflash如何在fpga中实现坏块出厂检索、坏块信息维护、块地址动态映射等功能的具体问题。
附图说明
41.通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
42.图1为本发明工作流程图;
43.图2为块地址映射工作原理图。
具体实施方式
44.下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。
45.实施例:
46.本发明除了实现nandflash(nand闪存,是flash存储器的一种)基本的初始化、擦除、页编程、页读取等基本接口时序外,还要完成坏块管理及相关的功能:
47.(1)坏块出厂检索;
48.(2)坏块信息维护;
49.(3)块地址映射;
50.(4)nandflash接口的互斥调度。
51.本发明工作流程图框图如图1所示,本发明具体方法分成以下几个步骤:
52.1、坏块遍历检索(bbchk);
53.以mt29f8g08为例,芯片出厂时,都会在每个坏块的第一页做标记,标记位置为byte4096,标记值为0x00,正常值为0xff。
54.在芯片初始化之后,擦除编程之前,需要对nandflash的所有块进行遍历检索;再将检索到0x00对应的块索引号信息都存入block0,因为block0不会是坏块。
55.2、坏块信息维护:
56.(1)更新坏块列表(update);
57.fpga会开辟一块block ram空间用于缓存坏块列表信息。更新坏块列表的目的是将block0中的坏块索引号搬移到随机存取存储器ram中以便后面的地址映射时使用。
58.(2)标记坏块(mark);
59.在固存操作的过程中,擦除或者页编程之后都会跟随一个读取状态的步骤,根据器件手册,读出状态字bit0为
‘1’
时,表明该操作失败,认为有新增坏块,这时会按照芯片出厂类似的方式对该块的第一页byte4096写入0x00,作为坏块信息的标记。标记完成后将会重新遍历坏块,更新block0中的坏块信息。
60.3、块地址映射(blockmap);
61.块地址映射的目的是要绕过坏块,提供一个可用的块索引号供后续的固存操作使用。该模块工作原理如图2所示。
62.blockram中已按地址从低到高存有了坏块索引号的信息,且ram初始化填充全
‘1’
数据,模块工作时,按地址从0开始读出数据,也就是第一个坏块的索引号,原块索引号与之比较,如果大于等于ram的数据输出dout,则将读地址加1,也就是读出第二个坏块的索引号,继续循环比较,直到小于dout时停止循环,最终映射的索引号就是原块索引号加上ram的读地址再+1。
63.举例说明,如果ram存有两个坏块索引号6、10,那么如果访问块索引号为3,那么经过这个该模块映射后索引号变成了4,因为block0是存储坏块信息的,被占用,索引号加1;
64.如果访问块索引号为7,那么经过该模块映射后索引号变成了9。
65.4、nandflash接口的互斥调度;
66.为了满足多个渠道访问nandflash的需要,需要对nandflash的访问接口进行互斥调度,比如设置虚拟通道8,可以满足8个用户同时访问使用nandflash,通过分时互斥来完成通道的调度。
67.(1)访问请求(chn_req);
68.fpga设置通道号轮询,可以接收访问请求。
69.(2)访问应答(chn_ack);
70.当前通道空闲时,响应访问请求,给出访问应答,这时该通道占用nandflash使用权限。
71.(3)访问切换(chn_sw);
72.当nandflash操作完成时,释放当前通道的使用权限。
73.根据本发明提供的基于fpga的nandflash自主坏块管理系统,包括:模块m1:在芯片出厂时,进行坏块出厂检索;模块m2:对坏块信息进行维护;模块m3:进行块地址映射;模块m4:对nandflash接口进行互斥调度。
74.所述模块m1包括:在每个坏块的第一页进行标记,标记位置为byte4096,标记值为0x00,正常值为0xff;在芯片初始化之后,擦除编程之前,对nandflash的所有块进行遍历检索;再将检索到0x00对应的块索引号信息存入非坏块block0中。所述模块m2包括:模块m2.1:开辟一块block ram空间用于缓存和更新坏块列表信息,将block0中的坏块索引号搬移到随机存取存储器ram中,以便地址映射时使用;模块m2.2:在固存操作的过程中,擦除或者页编程后进行状态读取,根据器件手册,读出状态字bit0为1时,表明该操作失败,认为有新增坏块,按照芯片出厂的方式对该块的第一页byte4096写入0x00,作为坏块信息的标记,标记完成后重新遍历坏块,更新block0中的坏块信息。所述模块m3包括:在blockram中按地址从低到高存储坏块索引号的信息,且ram初始化填充全1数据,在模块工作时,按地址从0开始读出数据,原块索引号与之比较,如果大于等于ram的数据输出dout,则将读地址加1,继续循环比较,直到小于dout时停止循环,最终映射的索引号就是原块索引号加上ram的读地址再加1。所述模块m4包括:模块m4.1:通过fpga设置通道号轮询,接收访问请求;模块m4.2:当前通道空闲时,响应访问请求,给出访问应答,此时该通道占用nandflash使用权限;模块m4.3:当nandflash操作完成时,释放当前通道的使用权限。
75.本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的系统、装置及其各个模块以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的系统、装置及其各个模块以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同程序。所以,本发明提供的系统、装置及其各个模块可以被认为是一种硬件部件,而对其内包括的用于实现各种程序的模块也可以视为硬件部件内的结构;也可以将用于实现各种功能的模块视为既可以是实现方法的软件程序又可以是硬件部件内的结构。
76.以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本技术的实施例和实施例中的特征可以任意相互组合。
技术特征:1.一种基于fpga的nandflash自主坏块管理方法,其特征在于,包括:步骤1:在芯片出厂时,进行坏块出厂检索;步骤2:对坏块信息进行维护;步骤3:进行块地址映射;步骤4:对nandflash接口进行互斥调度。2.根据权利要求1所述的基于fpga的nandflash自主坏块管理方法,其特征在于,所述步骤1包括:在每个坏块的第一页进行标记,标记位置为byte4096,标记值为0x00,正常值为0xff;在芯片初始化之后,擦除编程之前,对nandflash的所有块进行遍历检索;再将检索到0x00对应的块索引号信息存入非坏块block0中。3.根据权利要求2所述的基于fpga的nandflash自主坏块管理方法,其特征在于,所述步骤2包括:步骤2.1:开辟一块block ram空间用于缓存和更新坏块列表信息,将block0中的坏块索引号搬移到随机存取存储器ram中,以便地址映射时使用;步骤2.2:在固存操作的过程中,擦除或者页编程后进行状态读取,根据器件手册,读出状态字bit0为1时,表明该操作失败,认为有新增坏块,按照芯片出厂的方式对该块的第一页byte4096写入0x00,作为坏块信息的标记,标记完成后重新遍历坏块,更新block0中的坏块信息。4.根据权利要求3所述的基于fpga的nandflash自主坏块管理方法,其特征在于,所述步骤3包括:在blockram中按地址从低到高存储坏块索引号的信息,且ram初始化填充全1数据,在模块工作时,按地址从0开始读出数据,原块索引号与之比较,如果大于等于ram的数据输出dout,则将读地址加1,继续循环比较,直到小于dout时停止循环,最终映射的索引号就是原块索引号加上ram的读地址再加1。5.根据权利要求1所述的基于fpga的nandflash自主坏块管理方法,其特征在于,所述步骤4包括:步骤4.1:通过fpga设置通道号轮询,接收访问请求;步骤4.2:当前通道空闲时,响应访问请求,给出访问应答,此时该通道占用nandflash使用权限;步骤4.3:当nandflash操作完成时,释放当前通道的使用权限。6.一种基于fpga的nandflash自主坏块管理系统,其特征在于,包括:模块m1:在芯片出厂时,进行坏块出厂检索;模块m2:对坏块信息进行维护;模块m3:进行块地址映射;模块m4:对nandflash接口进行互斥调度。7.根据权利要求6所述的基于fpga的nandflash自主坏块管理系统,其特征在于,所述模块m1包括:在每个坏块的第一页进行标记,标记位置为byte4096,标记值为0x00,正常值为0xff;在芯片初始化之后,擦除编程之前,对nandflash的所有块进行遍历检索;再将检索到0x00对应的块索引号信息存入非坏块block0中。
8.根据权利要求7所述的基于fpga的nandflash自主坏块管理系统,其特征在于,所述模块m2包括:模块m2.1:开辟一块block ram空间用于缓存和更新坏块列表信息,将block0中的坏块索引号搬移到随机存取存储器ram中,以便地址映射时使用;模块m2.2:在固存操作的过程中,擦除或者页编程后进行状态读取,根据器件手册,读出状态字bit0为1时,表明该操作失败,认为有新增坏块,按照芯片出厂的方式对该块的第一页byte4096写入0x00,作为坏块信息的标记,标记完成后重新遍历坏块,更新block0中的坏块信息。9.根据权利要求8所述的基于fpga的nandflash自主坏块管理系统,其特征在于,所述模块m3包括:在blockram中按地址从低到高存储坏块索引号的信息,且ram初始化填充全1数据,在模块工作时,按地址从0开始读出数据,原块索引号与之比较,如果大于等于ram的数据输出dout,则将读地址加1,继续循环比较,直到小于dout时停止循环,最终映射的索引号就是原块索引号加上ram的读地址再加1。10.根据权利要求6所述的基于fpga的nandflash自主坏块管理系统,其特征在于,所述模块m4包括:模块m4.1:通过fpga设置通道号轮询,接收访问请求;模块m4.2:当前通道空闲时,响应访问请求,给出访问应答,此时该通道占用nandflash使用权限;模块m4.3:当nandflash操作完成时,释放当前通道的使用权限。
技术总结本发明提供了一种基于FPGA的Nandflash自主坏块管理方法和系统,包括:步骤1:在芯片出厂时,进行坏块出厂检索;步骤2:对坏块信息进行维护;步骤3:进行块地址映射;步骤4:对Nandflash接口进行互斥调度。本发明将坏块管理移到FPGA中来实现,既给CPU减负,使其能更好地完成其他系统级的任务,又充分利用了FPGA快速响应,并行处理的优点,高效可靠地完成Nandflash的存储回放功能。Nandflash的存储回放功能。Nandflash的存储回放功能。
技术研发人员:李斌
受保护的技术使用者:华东计算技术研究所(中国电子科技集团公司第三十二研究所)
技术研发日:2022.06.14
技术公布日:2022/11/1