一种提高NAND-FLASH存储可靠性的FPGA控制方法转让专利
申请号 : CN202010318546.7
文献号 : CN111596860B
文献日 : 2021-04-23
发明人 : 宁永慧 , 刘春香 , 石俊霞 , 袁航飞 , 司国良
申请人 : 中国科学院长春光学精密机械与物理研究所
摘要 :
权利要求 :
1.一种提高NAND‑FLASH存储可靠性的FPGA控制方法,其特征在于,采用EEPROM存储坏块表;所述NAND‑FLASH的存储区间分为存储区和块替换区,其中,存储区和块替换区均包含多个存储块,且每个存储块对应一个状态位和一个地址码;
所述方法包括以下步骤:
S1:上电时,NAND‑FLASH进行坏块检测操作,得到坏块信息,然后将坏块信息发送到FPGA,其中,坏块信息包括坏块的地址码、坏块映射到的好块的地址码;
所述坏块检测操作为:读取各存储块的状态位判断存储块的好坏,在块替换区中查询当前未存储数据的好块的地址码,并将确认的坏块的地址码映射到好块的地址码;
S2:FPGA调用上一次加电时EEPROM中存储的坏块表,然后根据坏块信息更新坏块表,具体更新方法为:
如果坏块检测操作中检测到某个存储块为好块,而坏块表中该存储块为坏块,则将该存储块的状态位设置为异常,且保留坏块表中的地址码;如果坏块检测操作中检测到某个存储块为坏块,则根据该存储块的地址码及其映射到的好块的地址码更新坏块表,其中,若该存储块映射的地址码在坏块表中已被占用,则沿已被占用的地址码的顺序,在块替换区中重新选取映射的地址码;若该存储块映射的地址码对应的存储块在坏块表中被标记为坏块,则沿该被标记为坏块的地址码的顺序,在块替换区中重新选取映射的地址码;若该存储块映射的地址码与该存储块在坏块表中存储的地址码不同,则保留坏块表中的地址码;
S3:对NAND‑FLASH的存储区进行写入与擦除,其中,在擦除过程中,实时读取各存储块的状态位判断存储块的好坏,在写入过程中,通过对存储块进行数据校验判断存储块的好坏,从而得到各存储块对应的坏块信息,实时更新坏块表;
S4:完成写入与擦除而下电时,NAND‑FLASH再次进行坏块检测操作,得到各存储块对应的坏块信息,然后将最后更新得到的坏块表存储于EEPROM中供下次上电时使用。
2.如权利要求1所述的一种提高NAND‑FLASH存储可靠性的FPGA控制方法,其特征在于,当映射的地址码超过警戒值时,NAND‑FLASH向FPGA发送损坏报警信号。
3.如权利要求1所述的一种提高NAND‑FLASH存储可靠性的FPGA控制方法,其特征在于,在擦除过程中,如果检测到当前擦除的存储块为坏块,除了实时更新坏块表外,还要擦除当前存储块映射的好块中的数据。
4.如权利要求1所述的一种提高NAND‑FLASH存储可靠性的FPGA控制方法,其特征在于,在写入过程中,如果检测到当前写入的存储块为坏块,除了实时更新坏块表外,还要将当前存储块写入的数据转移到映射的好块中。
说明书 :
一种提高NAND‑FLASH存储可靠性的FPGA控制方法
技术领域
背景技术
长期有效存储。
程。目前,Nand‑FLASH的FPGA存储控制模块没有开源的代码,一些专用的芯片制造商开发的
nand‑flash存储控制模块也处理IP保护之中。
这些IP保护的管理方式外,更多的是轻量化的NAND坏块管理机制,且无开源代码,主要应用
在嵌入式系统中。客观来讲,仍然输入软件管理的范畴,速度和可靠性较低。
储坏块表等。
发明内容
块,且每个存储块对应一个状态位和一个地址码;
的好坏,从而得到各存储块对应的坏块信息,实时更新坏块表;
坏块表中的地址码;如果坏块检测操作中检测到某个存储块为坏块,则根据该存储块的地
址码及其映射到的好块的地址码更新坏块表,其中,若该存储块映射的地址码在坏块表中
已被占用,则沿已被占用的地址码的顺序,在块替换区中重新选取映射的地址码;若该存储
块映射的地址码对应的存储块在坏块表中被标记为坏块,则沿该被标记为坏块的地址码的
顺序,在块替换区中重新选取映射的地址码;若该存储块映射的地址码与该存储块在坏块
表中存储的地址码不同,则保留坏块表中的地址码。
EEPROM读取的坏块表进行对比,综合得出新的坏块表,提高了NAND‑FLASH存数数据的可靠
性;由此可见,本发明设计了新的坏块表寻址数据结构,实现了坏块的正确寻址,提高NAND‑
FLASH的运行速度和可靠性。
了坏块表的多次寻址功能。
附图说明
具体实施方式
表信息;NAND‑FLASH的端口速率较低,因此,在系统上电后,可以将NAND‑FLASH中的数据初
始化到SDRAM中,以提高存储数据的实际运行速率;同时,在坏块表初始化时,FPGA硬件初始
化方式能够缩短初始化时间。
块,且每个存储块对应一个状态位和一个地址码。
区,在坏块地址码中标记为二进制数“00B”;下半区表示图像的块替换区(共用好块区),在
坏块地址码中标记为二进制数“01B”。
坏块时,进行首次地址映射,如图3中的曲线1和曲线6,分别为地址码为00_01的坏块映射到
地址码为01_A1的好块、地址码为00‑9f的坏块映射到地址码为01_An的好块;在存储区映射
结束后,记录当前的替换区地址码,如图3中的地址码“An”,表示替换区地址使用“An”;当检
测到替换区坏块时,采用链表方式进行二次映射,地址码自加,如图3中地址码An+1,首先是
存储区中的地址码为00_03坏块映射到地址码为01_A2的好块,但是在进行替换区检测时,
发现01_A2为坏块,则01_A2映射到01_An+1。
中的地址码;如果坏块检测操作中检测到某个存储块为坏块,则将该存储块的地址码及其
映射到的好块的地址码写入坏块表中,其中,若该存储块映射的地址码在坏块表中已被占
用,则沿已被占用的地址码的顺序,在块替换区中重新选取映射的地址码;若该存储块映射
的地址码对应的存储块在坏块表中被标记为坏块,则沿该被标记为坏块的地址码的顺序,
在块替换区中重新选取映射的地址码;若该存储块映射的地址码与该存储块在坏块表中存
储的地址码不同,则保留坏块表中的地址码。
置为异常,更新EBT,如图4中“03_A2”,即A2已被03占用,则检测EBT中的地址码05就不能映
射到A2了,EBT中已被占用的地址码截止到An+3,则05映射到An+4,由此避免了坏块状态信
息被错误清零;如果检测到当前块异常,而存储EBT中显示为正常,则将该块的状态设置为
异常,更新EBT,末块地址自加,如图4中“05_An+4”,同时设置NAND‑FLASH错误状态标识,请
求重新注入新数据;如果检测到当前块异常,而存储EBT中显示为异常,但映射地址不同,则
采用EBT中的映射地址,如图4中“9F_An+1”与“9F_An”,更新后仍为“9F_An”。
的好坏,从而得到各存储块对应的坏块信息,实时更新坏块表;
擦除过程中,如果检测到当前擦除块损坏,则进行块地址更新;在替换区查询当前未使用的
块地址,进行地址映射,如图3中地址An+3;由此可见,本发明在进行写入操作时,如果出现
坏块,则需要完成块数据的搬移,并更新坏块表;在擦除过程中,只更新坏块表,简化坏块管
理流程。
EBT有新增坏块,则证明NAND‑FLASH存储的数据有错误,需要设置错误标志上报。通过二者
对比,可以获得更加准确的坏块表,也保证存储数据的正确性;例如,如图5左边所示,系统
每次上电后,从EEPROM中读取EBT到FPGA的RAM中,EBT的存储内容中包括坏块地址和映射块
地址;将数据按照地址和值的方式存储到FPGA的内部RAM中,如图5中的右图(将坏块地址作
为RAM的地址码,映射块地址作为RAM数据)。
坏块替换策略、如何提高坏块管理可靠性等方面提出了新的思路。根据NAND‑FLASH的使用
环境和使用要求,将轻量级坏块管理和负载平衡结合起来,实现了高速高可靠性设计。这种
基于FPGA硬件设计的NAND‑FLASH存储控制结构在小型电子系统设计、航空航天电子学系统
设计中具有广泛的应用前景,可以用于存储大量的图像数据和数据处理参数;同时,本发明
采用FPGA的RTL硬件设计方法,设计了一套完整的NAND‑FLASH坏块管理和读写控制流程和
控制结构,在NAND‑FLASH使用过程中,FPGA管理EBT(坏块列表),并存储到EEPROM中,每次上
电后将存储EBT和末块地址初始化到FPGA中,用于EBT对比,由此提高了NAND‑FLASH的管理
速度和可靠性;根据NAND‑FLASH应用场合和应用频率,简化坏块管理流程;通过两种EBT对
比的方法,提高了坏块表的准确性,提高了存储数据的验证能力;设计了一种坏块表地址映
射结构,标识了坏块类型和坏块映射路径,并在FPGA内实现快速映射和坏块查找,降低了设
计成本,提高了NAND‑FLASH管理运行速度。
在接收到一副感光图像后,在FPGA内部对两幅图像做减法处理,获得最终的感光图像。由于
探测器本底图像大小为1Gbit/幅,同时,需要存储像元校正参数,校正参数需要1Gbit,因
此,选用了三星公司的NAND‑FLASH芯片K9F4G08U0D作为存储芯片,并设置存储区2G,替换区
2G;
换区使用的块数量为15;
数据,与写入的自校图形数据完全一致,如图7所示。
像后,将探测器本体图像、像元校正参数从SDRAM中读出,进行本底扣除,及像元校正计算,
得到的实际图像如图8所示,该实验表明该方法实用有效。
变形都应属于本发明所附的权利要求的保护范围。