一种基于FPGA的FLASH阵列控制方法及控制器技术

技术编号:21184381 阅读:47 留言:0更新日期:2019-05-22 15:02
本发明专利技术公开了一种基于FPGA的FLASH阵列控制方法,其特征在于:包括:进行分层控制:第一层:通过时序控制,对FLASH阵列的实际物理地址按页读、写,按块擦除;第二层:建立逻辑地址到物理地址映射表,对FLASH阵列的坏块进行管理,并在使用过程中对增加的坏块进行动态管理;第三层:建立循环存储管理,对FLASH进行均衡使用;第四层:对数据加前向纠错编码。本发明专利技术基于FPGA的FLASH阵列控制方法,实现任意宽度与深度的NAND FLASH阵列的控制。

A FLASH Array Control Method and Controller Based on FPGA

The invention discloses a control method of FLASH array based on FPGA, which is characterized by: hierarchical control: the first layer reads, writes and erases the actual physical address of FLASH array by page through timing control; the second layer establishes a mapping table from logical address to physical address, manages the bad blocks of FLASH array, and carries out additional bad blocks in the course of using. Dynamic management; Layer 3: Establishment of cyclic storage management, balanced use of FLASH; Layer 4: Data plus forward error correction coding. The invention realizes the control of AN FLASH array with arbitrary width and depth based on the FLASH array control method of the FPGA.

【技术实现步骤摘要】
一种基于FPGA的FLASH阵列控制方法及控制器
本专利技术涉及FLASH控制领域,尤其是一种基于FPGA的FLASH阵列控制方法及控制器。
技术介绍
当前,以FLASH存储芯片作为介质的SATA、mSATA、NVMe电子盘等应用正在取代传统硬盘得到广泛应用,性能越来越高,成本也越来越低;但是在一些电子设备中,受到体积以及结构功耗等限制,采用嵌入式计算机+电子盘的方案实现有困难,在有些高速流数据的处理系统中,数据需要实时存储,事后分析;比如信号处理领域中高速AD采集数据的存储,这些数据存储带宽超出了普通电子盘的存储带宽,采用高性能计算机+电子盘磁盘阵列的解决方案往往体积较大,并且环境适应性也不能满足一些特定要求;因此在很多定制嵌入式设备中,尤其是军用嵌入式电子设备里,直接采用FPGA控制FLASH芯片阵列的方案,这样集成度更高,结构更可靠,减少了元器件,提高了可靠性。目前使用FPGA直接控制FLASH阵列存储数据在军用电子设备数据存储是常用的解决方案,但是现有的直接采用FPGA控制FLASH阵列,存在如下问题:a)由于FLASH工艺本身的固有缺陷,FLASH芯片结构存在坏块(BLOCK),并且在使用的过程中,坏块数量会增加;b)FLASH芯片的每一块或者页有使用次数限制,SLCNANDFLASH一般在60000~100000次,MLCNANDFLASH的使用次数在5000次左右,TLCNANDFLASH的使用次数在3000次左右;c)FLASH芯片结构按照块(BLOCK)、页(PAGE)操作,擦除以块为单位,编程以页为单位(也可以以少于一页的数量进行编程操作);d)FLASH在执行写入(编程)前,必须先擦除(一般来说,擦除操作将数据位由0变为1,编程操作将1变为0);e)FLASH在执行擦除或者编程操作时,时间不确定;芯片手册会给出最大时间(不同的器件这个值不相同);f)FLASH除了存在坏块外,还存在坏点;因此,能够解决上述问题的基于FPGA的FLASH阵列控制方法的设计变得尤为重要。
技术实现思路
本专利技术的专利技术目的在于:针对上述存在的问题,提供一种基于FPGA的FLASH阵列控制方法,分层解决flash阵列的控制问题;通过FLASH阵列控制器,实现FLASH阵列的控制。本专利技术采用的技术方案如下:本专利技术一种基于FPGA的FLASH阵列控制方法,包括:进行分层控制:第一层:通过时序控制,对FLASH阵列的实际物理地址按页读、写,按块擦除;第二层:建立逻辑地址到物理地址映射表,对FLASH阵列的坏块进行管理,并在使用过程中对增加的坏块进行动态管理;第三层:建立循环存储管理,对FLASH进行均衡使用;第四层:对数据加前向纠错编码。作为优选,所述第四层中的前向纠错编码方法包括:使用RS编码进行前向纠错,数据读出后通过并行RS译码恢复数据。本专利技术一种基于FPGA的FLASH阵列控制器,包括FLASH阵列IO时序控制模块、坏块管理逻辑、FLASH阵列命令控制逻辑、接口管理逻辑、数据流处理器和CPU接口模块;所述FLASH阵列IO时序控制模块,用于FLASH阵列第一层次的控制时序;所述坏块管理逻辑,用于坏块管理,进行FLASH阵列第二层次的控制;所述CPU接口模块,用于控制命令、寄存器的映射,将整个FLASH阵列控制器例化为一个可通过CPU控制寄存器操作的IP,进行FLASH阵列第三层次的控制;分别与坏块管理逻辑和数据流处理器进行交互;所述FLASH阵列命令控制逻辑,用于FLASH阵列非初始化及命令控制逻辑;分别与FLASH阵列IO时序控制模块和接口管理逻辑进行交互,并与CPU接口模块进行交互;所述接口管理逻辑,将FLASH阵列接口转换为按页为单位类似SDRAM的数据读写接口,按照逻辑地址访问;与坏块管理逻辑进行交互;所述数据流处理器,完成外部数据读写访问与接口管理逻辑之间的数据交换。作为优选,基于FPGA的FLASH阵列控制器还设有控制器对外接口;所述控制器对外接口包括:FLASH阵列接口、数据流读写接口、处理器EMIF接口和坏块管理缓存接口;所述FLASH阵列接口与FLASH阵列IO时序控制模块连接;所述数据流读写接口与数据流处理器连接;所述处理器EMIF接口与CPU接口模块连接;所述坏块管理缓存接口与坏块管理逻辑连接。作为优选,所述FLASH阵列IO时序控制模块的控制方法:将NANDFLASH芯片阵列的执行过程转换为空闲状态(IO_IDLE)、片选输出状态(IO_CS)、命令锁存状态(IO_CLE)、地址锁存状态(IO_ALE)、读异步时序控制状态(IO_ARE)、读同步时序控制状态(IO_SRE)、写异步时序控制状态(IO_AWE)或写同步时序控制状态(IO_ST7)。作为优选,所述接口管理逻辑的控制方法:在FPGA写FLASH时,实行流水线写操作;在FPGA读FLASH时,随机读取;在FLASH阵列擦除时,按流水线方式按照逻辑地址顺序擦除;所述接口管理逻辑的接口包括FLASH写访问接口、FLASH读访问接口和FLASH擦除接口。作为优选,所述FLASH阵列命令控制逻辑的控制方法:将NANDFLASH芯片阵列的执行过程转换为空闲状态(FLC_NOP)、复位状态(FLC_RESET)、读FLASH芯片状态寄存器(FLC_RDST)、读FLASH芯片ID(FLC_RDID)、获取FLASH芯片模式寄存器(FLC_GFET)、设置FLASH芯片模式寄存器(FLC_SFET)、读取FLASH参数页(FLC_RDPP)、读数据状态(FLC_READ)、写数据状态(FLC_PROG)、擦除块状态(FLC_ERASE)、回读页状态(FLC_CBREAD)或回读并写状态(FLC_CBPROG)。作为优选,所述坏块管理逻辑的控制方法:ST0:初始化逻辑地址到物理地址映射表为一一对应,坏块计数器初始化为0;ST1:判断是否有格式化命令,无则等待,有则进入ST2;ST2:开始执行当前逻辑地址擦除命令,进入ST3;ST3:读FLASH阵列状态,等待擦除完成,擦除完锁存芯片状态寄存器,进入ST4;ST4:若擦除失败,则逻辑地址不变,将坏块计数器取反对应的映射表中物理地址与当前逻辑地址对应的映射表中的地址交换,进入ST2;否则,逻辑地址加1,进入ST5;ST5:判断是否格式化完毕,格式化完毕进入ST6,否则进入ST2;ST6:判断是否有随机地址擦除命令,有则进入ST7;ST7:开始执行当前逻辑地址擦除命令,进入ST8;ST8:读FLASH阵列状态,等待擦除完成,擦除完锁存芯片状态寄存器,进入ST9;ST9:若擦除失败,则逻辑地址不变,将坏块计数器取反对应的映射表中物理地址与当前逻辑地址对应的映射表中的地址交换,进入ST7;否则,进入ST6。作为优选,所述数据流处理模块的具体控制方法:将外部并行的写数据请求以及读数据请求进行仲裁,根据数据缓存的大小以及FLASH阵列的各流水状态进行判断仲裁优先执行读或者写。综上所述,由于采用了上述技术方案,本专利技术的有益效果是:与现有技术相比,本专利技术实现任意宽度与深度的NANDFLASH阵列的控制,通过寄存器控制可以实现按照物理地址或者按照逻辑地址对NANDFLASH阵列执行擦除、编程、读以及读状本文档来自技高网
...

【技术保护点】
1.一种基于FPGA的FLASH阵列控制方法, 其特征在于:包括:进行分层控制:第一层:通过时序控制,对FLASH阵列的实际物理地址按页读、写,按块擦除;第二层:建立逻辑地址到物理地址映射表,对FLASH阵列的坏块进行管理,并在使用过程中对增加的坏块进行动态管理;第三层:建立循环存储管理,对FLASH进行均衡使用;第四层:对数据加前向纠错编码。

【技术特征摘要】
1.一种基于FPGA的FLASH阵列控制方法,其特征在于:包括:进行分层控制:第一层:通过时序控制,对FLASH阵列的实际物理地址按页读、写,按块擦除;第二层:建立逻辑地址到物理地址映射表,对FLASH阵列的坏块进行管理,并在使用过程中对增加的坏块进行动态管理;第三层:建立循环存储管理,对FLASH进行均衡使用;第四层:对数据加前向纠错编码。2.如权利要求1所述的基于FPGA的FLASH阵列控制方法,其特征在于:所述第四层中的前向纠错编码方法包括:使用RS编码进行前向纠错,数据读出后通过并行RS译码恢复数据。3.一种用于权利要求1或2所述的基于FPGA的FLASH阵列控制方法的基于FPGA的FLASH阵列控制器,其特征在于:包括FLASH阵列IO时序控制模块、坏块管理逻辑、FLASH阵列命令控制逻辑、接口管理逻辑、数据流处理器和CPU接口模块;所述FLASH阵列IO时序控制模块,用于FLASH阵列第一层次的控制时序;所述坏块管理逻辑,用于坏块管理,进行FLASH阵列第二层次的控制;所述CPU接口模块,用于控制命令、寄存器的映射,将整个FLASH阵列控制器例化为一个可通过CPU控制寄存器操作的IP,进行FLASH阵列第三层次的控制;分别与坏块管理逻辑和数据流处理器进行交互;所述FLASH阵列命令控制逻辑,用于FLASH阵列非初始化及命令控制逻辑;分别与FLASH阵列IO时序控制模块和接口管理逻辑进行交互,并与CPU接口模块进行交互;所述接口管理逻辑,将FLASH阵列接口转换为按页为单位类似SDRAM的数据读写接口,按照逻辑地址访问;与坏块管理逻辑进行交互;所述数据流处理器,完成外部数据读写访问与接口管理逻辑之间的数据交换。4.如权利要求3所述的基于FPGA的FLASH阵列控制器,其特征在于:还设有控制器对外接口;所述控制器对外接口包括:FLASH阵列接口、数据流读写接口、处理器EMIF接口和坏块管理缓存接口;所述FLASH阵列接口与FLASH阵列IO时序控制模块连接;所述数据流读写接口与数据流处理器连接;所述处理器EMIF接口与CPU接口模块连接;所述坏块管理缓存接口与坏块管理逻辑连接。5.如权利要求3所述的基于FPGA的FLASH阵列控制器,其特征在于:所述FLASH阵列IO时序控制模块的控制方法:将NANDFLASH芯片阵列的执行过程转换为空闲状态(IO_IDLE)、片选输出状态(IO_CS)、命令锁存状态(IO_CLE)、地址锁存状态(IO_ALE)、读异步时序控制状态(IO_ARE)、读同步时序控制状态(IO_SRE...

【专利技术属性】
技术研发人员:张泽渺何建樑叶明
申请(专利权)人:成都旋极历通信息技术有限公司
类型:发明
国别省市:四川,51

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1