本发明涉及航天器数据存储领域,特别是涉及一种星载nandflash存储管理系统。
背景技术:
随着航天技术和微电子技术的发展,微小卫星功能密度提升,元器件和整星两个层次的可靠性取得了突破性的进步,已使微小卫星逐渐从技术验证走向了成熟的商业应用。与传统中大卫星相比,它在成本、制造速度、应急响应等诸方面具有明显的优势。
微小卫星的电学系统一般包括综合电子系统、电源系统、测控系统。随着卫星功能的扩展,定位系统、智能处理和载荷信息处理系统也逐步加入了微小卫星的电学系统。在这些电学系统中,为了能够有效处理数据、保存数据,后续通过测控和数传将数据下传到地面,除了cpu和fpga这样的器件以外,会有大量的非易失性存储器,用以辅助整星的正常工作。
其中以作为卫星的数据和指令控制中心的综合电子系统为例,它主要起到卫星的数据处理、数据存储、数据传输、指令收发和响应等重要作用。其就对存储器系统有极高的需求,会使用到包括eeprom和nandflash在内的诸多类型存储器件。其中eeprom虽然也是可擦除器件,可反复快速编程,但价格昂贵、容量小,不适合保存系统实时产生的大量数据;nandflash也是非易失闪存器件,每次使用前都需要按照扇区进行擦除,操作速度慢,但是价格低廉、容量大,广泛应用于星上存储。
在微小卫星中,包括存储器在内的电子元器件通常会选择地面设备常用的商用货架产品。由于在轨卫星始终处于带电粒子的辐射环境之中,单粒子效应和总剂量效应会使半导体芯片逻辑单元和存储单元内容出错,导致功能异常,甚至丧失。
同时,存储器件,如nandflash,需要循环擦除,数据拷贝,存在极大的数据完整性和安全性风险。商用存储器件本身改进受到成本、时间和技术等的限制,只能在控制架构上寻找竞争力。因此,存储系统中除了存储介质本身,为了更好的管理卫星中的大规模存储介质,需要一个高可靠的管理系统。
公开号为cn210836056u的说明书公开了一种存储控制系统及星载实时处理系统,包括用于数据采集、指令解析、数据存储的fpga模组,用于对nandflash数据进行文件管理、收集坏块信息以及指令解析、存储管理操作和数据管理的arm模组,用于高速数据存储和数据写入、读出、删除操作的文件系统信息数据缓存的ddr模组以及作为数据存储载体的nandflash模组。该系统主要针对于强化星载数据的实时性及文件管理的性能,并没有涉及数据存储的可靠性。
公开号为cn210836056u的说明书公开了一种星载nandflash型固态存储器,包括写控制模块、读控制模块、存储模块、可用簇队列模块和垃圾回收模块;写控制模块和读控制模块均与簇队列模块关联,垃圾回收模块与存储阵列模块相关联;可用簇队列模块为链表结构,队列头部磨损加权值最小,尾部磨损加权值最大,当需要使用可用空间时,从队列头部指针处获取簇;垃圾回收模块,用于在簇回收时,根据簇的地址的历史使用属性,计算该簇的磨损加权值,并将该簇地址插入至可用簇队列模块相应的位置中去。
该发明还公开了基于其分配存储空间的方法,通过更新簇的写入次数、回读次数和擦除次数,最终使所有簇磨损加权值基本相近,使固态存储器中的存储空间均衡使用。该发明主要针对于没有操作系统的星载大容量固态存储器,通过对存储空间进行动态调配利用,增加nandflash型固态存储器的使用寿命,增强了数据存储的可靠性。
技术实现要素:
本发明的目的在于提供了一种适应空间辐射环境,面向在轨微小卫星使用的nandflash高可靠存储管理系统。
一种星载nandflash存储管理系统,包括:数据处理模块、数据读写模块、刷新功能模块、ecc校验模块、坏块管理模块和nandflash接口控制模块;
数据处理模块,用于对数据的计算及处理;
数据读写模块,用于数据处理模块、ecc校验模块之间,进行数据的写入和读出;
ecc校验模块,对数据读写模块的输入和输出数据进行检错、纠错;
刷新功能模块,用于执行数据的擦除操作;
坏块管理模块,判断并记录nandflash中的坏块;
nandflash接口控制模块,对nandflash和数据处理模块之间传输的信息进行管理;接收ecc校验模块、刷新功能模块以及坏块管理模块的发送的信息;发出执行指令。
数据从数据处理模块的srio口输入,根据需要进行数据读取。数据读取包括以下步骤:用户层调用读取数据接口,输入读取数据的首地址、读取数据长度、数据挑点间隔;nandflash接口控制模块中的控制模块收到读数据命令后,根据接口命令中逻辑首地址从坏块管理模块中获得实际物理地址;nandflash数据读写底层从物理首地址对nandflash进行读数据操作;同时坏块管理模块中将逻辑地址+1,数据读入ecc校验模块;校验通过或纠错成功后,触发数据读写模块的读数据fifo进入数据处理模块,否则错误计数+1,数据仍然使用;数据处理模块将数据挑点、打包后发给用户。
数据从srio口输入,根据需要也可以进行数据写入。数据写入格式为有效数据512b加24bit校验码,以四级流水线形式写入。数据写入包括以下步骤:用户层调用读取数据接口,输入写入数据的首地址、写入数据长度;nandflash接口控制模块中的控制模块收到写数据命令,根据接口命令中逻辑首地址从坏块管理模块中获得实际物理地址;数据处理模块将有效数据包还原,通过数据读写模块的写数据fifo进入ecc校验模块生成源数据ecc校验码,待数据读取时比对使用;ecc校验模块的fifo输出使能触发nandflash数据存储状态机,从物理首地址将数据写入nandflash,若操作地址为此存储有效区尾地址,下一次操作循环至首地址,先擦后写;擦除操作时,若发现坏块,更新坏块表,同时坏块管理模块中逻辑地址+1,生成下一物理地址待用;配合坏块管理和ecc校验,完成数据从上位机到nandflash的传输。
所述的nandflash接口控制模块包括三取二模式和冷备份模式。
所述的三取二模式和冷备份模式受外界控制信号决定,并通过开关矩阵来选择控制模块的工作数目。
所述的nandflash接口控制模块利用外界控制信号,先设置成三取二模式,如发现nandflash接口控制模块的三个控制模块所取数据全部相同,再利用外界控制信号选为冷备份模式,既保证可靠性也减少资源占用。
上位机先给出一个控制信号,nandflash接口控制模块根据选择的模式,再控制开关矩阵开启三个控制模块或者单个默认的控制模块。在三取二模式中,由三取二个模块对三个控制模块给出的信息进行比对,取出多数的值作为最终值。而选择冷备份模式时,只有一个控制模块开启,这个模块有数据输入三取二模块,三取二模块将此数据作为最终值,完成后给出使能信号到数据处理模块,上位机和nandflash储存芯片开始传输。
nandflash接口控制模块的工作模式保障了存储芯片的数据传输管理,同时兼具空间粒子防护功能,提升了芯片在轨工作的可靠性。
所述的nandflash接口控制模块通过三取二模式无法获得正确值,通过外部刷新模块,从外部eeprom中将存储配置文件重新写入nandflash接口控制模块。
通过所述的外部eeprom对所述的nandflash存储管理系统刷写数据时,先进行三取二模式处理,再存入缓存。
所述的ecc校验模块采用调度控制逻辑对512bytefifo、汉明码生成电路进行数据的控制,数据经过512bytefifo、汉明码生成电路进入检错纠错控制逻辑,在确定数据无误后进入数据读写模块的读缓冲fifo。采用多路纠错控制逻辑,通过512bytefifo或汉明码生成调度控制电路,采用乒乓操作原理,保证纠错计算和传输数据互不影响。
优选地,基于乒乓操作原理,ecc校验模块构建两路纠错控制逻辑和512bytefifo、汉明码生成电路。调度控制电路通过nandflash控制接口模块,保证nandflash数据读取不会因ecc校验失而去连续性,使用户层的接口更加普适。
所述的ecc校验包括以下流程:在数据写入时,每512字节(可调整)数据生成3字节原始ecc校验码,存储于相应有效数据后;数据读出同时读出原始ecc校验码,并生成新的校验码,按位异或前后的校验码,根据ecc校验的原理进行数据纠错。数据纠错失败时,错误计数+1,根据用户需求,可以选择重新读取或者使用错误数据。
优选地,坏块管理采用地址映射管理方法,根据数据手册按照1:50的比例给每个存储空间预留保留块,当检测到坏块时,将坏块地址映射到当前存储空间的保留块。坏块表以1或0标记每块的好坏。
所述的坏块表管理模块,包括建立与更新逻辑包,其流程包括:在系统上电时,从外部存储器中读取坏块表,按照三取二模式原则读入片内ram中,坏块表由0或1来表示nandflash对应的块是否为坏块。当用户对nandflash接口调用触发nandflash的擦除操作时,会根据擦除成功与否判定操作的块是否为坏块,若为坏块,则更新坏块表及外部存储器中的坏块表。
所述的星载nandflash存储管理系统可以根据实际应用需要,挂载多块nandflash芯片,形成nandflash存储阵列。
所述的星载nandflash存储管理系统提供了gpio口与nandflash芯片相连,并具备串行和并行两个维度的扩展能力。nandflash芯片与管理系统的连接方式可以根据应用需求及fpga资源进行调整。
所述的nandflash存储阵列可以根据需要扩展成n组,n大于2;第一组8块nandflash并行,增加一组8块nandflash阵列需要提供64个gpio口,作为64bits位宽的接口与存储管理系统连接。
所述nandflash存储阵列可以根据需要拓深成m组,m大于1;每一组8块nandflash串行,增加的一组8块nandflash阵列与前一组共享64个gpio口,作为64bits位宽的接口与存储管理系统连接。
本发明公开的星载nandflash的管理系统,功能全面。采用srio接口,只需扩展并行口就可以满足星载高速传输和存储的需要。
同时,为了应对大规模的出错,设计了针对控制模块的刷新功能。较之前的管理系统,本发明通过多种方式确保了管理系统的高可靠性,同时兼顾了整体的功耗。
附图说明
图1是本发明实施例中nandflash管理系统的示意图;
图2为图1所示的ecc校验示意图;
图3为图1所示的ecc管理逻辑示意图;
图4为图1所示的坏块表建立与更新逻辑示意图。
具体实施方式
如图1,星载nandflash管理系统包括数据处理模块、数据读写模块、刷新功能模块、ecc校验模块、坏块管理模块和nandflash接口控制模块;
数据处理模块,用于对数据的计算及处理;
数据读写模块,用于数据处理模块、ecc校验模块之间,进行数据的写入和读出;
ecc校验模块,对数据读写模块输入输出的数据进行检错、纠错;
刷新功能模块,用于执行数据的擦除操作;
坏块管理模块,判断并记录nandflash中的坏块;
nandflash接口控制模块,对nandflash和数据处理模块之间传输的信息进行管理;接收ecc校验模块、刷新功能模块以及坏块管理模块的发送的信息;发出执行指令。
nandflash接口控制模块包括三取二模式和冷备份模式。
三取二模式和冷备份模式受外界控制信号决定,并通过开关矩阵来选择控制模块的工作数目。
nandflash接口控制模块可利用外界控制信号,先设置成三取二模式,如发现三个模块所取数据全部相同,再利用外界控制信号选为冷备份模式,既保证可靠性也减少资源占用。
nandflash接口控制模块通过三取二模式无法获得正确值,可通过外部刷新模块,从外部eeprom中将存储配置文件重新写入nandflash接口控制模块。
通过外部eeprom对所述的nandflash存储管理系统刷写数据时,先进行三取二模式处理,再存入缓存。
数据从srio口输入,根据需要进行数据读取,其步骤如下:
1、用户层调用读取数据接口,输入读取数据的首地址、读取数据长度、数据挑点间隔;
2、控制模块收到读数据命令,根据接口命令中逻辑首地址从坏块管理模块中获得实际物理地址;
3、nandflash数据读写底层从物理首地址对nandflash进行读数据操作;同时坏块管理模块中将逻辑地址+1,输出对应物理地址,待数据读写顶层使用。
4、数据读入ecc校验模块,校验通过/纠错成功后,触发读数据fifo进入数据处理模块。否则错误计数+1,数据仍然使用。
5、数据处理模块将数据挑点、打包后发给用户。
数据从srio口输入,根据需要也可以进行数据写入,其步骤如下:
1、用户层调用读取数据接口,输入写入数据的首地址、写入数据长度;
2、控制模块收到写数据命令,根据接口命令中逻辑首地址从坏块管理模块中获得实际物理地址;
3、数据处理模块将有效数据包还原,通过写fifo进入ecc校验模块生成源数据ecc校验码,待数据读取时比对使用。
4、ecc校验模块的fifo输出使能触发nandflash数据存储状态机,从物理首地址将数据写入nandflash,若操作地址为此存储有效区尾地址,下一次操作循环至首地址,先擦后写,擦除操作时,若有坏块,更新坏块表。数据写入格式为有效数据512b加24bit校验码,以四级流水线形式写入。同时坏块管理模块中逻辑地址+1,生成下一物理地址待用。
配合坏块管理和ecc校验,完成数据从上位机和nandflash的传输。
如图2为本实施例的ecc校验示意图。基于乒乓操作原理,ecc校验模块构建两路纠错控制逻辑和512bytefifo、汉明码生成电路。nandflash控制接口模块控制通过调度控制逻辑对512bytefifo、汉明码生成电路进行数据的控制,数据经过512bytefifo、汉明码生成电路进入检错纠错控制逻辑,在确定数据无误后进入数据读写模块的读缓冲fifo。调度控制电路通过nandflash控制接口模块,可保证nandflash数据读取不会因ecc校验失去连续性,使用户层的接口更加普适。也可以根据fpga资源设置更多路的纠错控制逻辑及相应的512bytefifo和汉明码生成电路。
如图3为ecc校验的操作流程,在数据写入时,每512字节(可调整)数据生成3字节原始ecc校验码,存储于相应有效数据后;数据读出同时读出原始ecc校验码,并生成新的校验码,按位异或前后的校验码;按位异或前后的校验码共三字节记为s0、s1和s2,分别为列校验码低八位、高八位和行校验码;若数据错误且可纠错,则抽取s1中的bit7、bit5、bit3、bit1作为错误字节的行地址高四位,s0中的bit7、bit5、bit3、bit1作为行地址低四位,s2中的bit5、bit3、bit1作为错误字节的列地址低三位,则对应行列地址处的比特取反则纠错成功;前后数据纠错失败时,错误计数+1,根据用户需求,可以选择重新读取或者使用错误数据。
ecc校验模块复制多路纠错控制逻辑和512bytefifo、汉明码生成调度控制电路,采用乒乓操作,保证纠错计算和传输数据互不影响。
如图4为坏块表建立与更新逻辑流程。坏块管理采用地址映射管理方法,根据数据手册按照1:50的比例给每个存储空间预留保留块,当检测到坏块时,将坏块地址映射到当前存储空间的保留块。坏块表以1或0标记每块的好坏。
在系统上电时,从外部存储器中读取坏块表,按照三取二模式原则读入片内ram中,坏块表由0或者1来表示nandflash对应的块是否为坏块。
当用户对nandflash接口调用触发nandflash的擦除操作时,如判断无需擦除,则逻辑流程结束;如判断需要擦除,则输入相应块地址,根据擦除成功与否判定操作的块是否为坏块。若为坏块,则更新ram坏块表,逻辑地址+1;如不为坏块,则直接逻辑地址+1。当块地址到达max时,表明初次上电块扫描自检完成,更新片内bram,并更新外部存储器中的坏块表,结束逻辑流程。