一种基于软硬件结合方式的大容量快速NandFlash存储实现方法与流程

文档序号:20995486发布日期:2020-06-05 22:08阅读:224来源:国知局
一种基于软硬件结合方式的大容量快速NandFlash存储实现方法与流程

本发明属于嵌入式系统领域,涉及一种基于软硬件结合方式的大容量快速nandflash存储实现方法。



背景技术:

随着嵌入式系统应用越来越复杂,系统处理的数据越来越多,需要在现有设备上处理和存储更多的数据。

假如,现有一类通用处理器具有nandflash控制器和局部总线控制器,nandflash控制器用于管理存储数据的nandflash芯片,局部总线控制器用于管理挂载在局部总线上的外设。用于管理nandflash的控制器称为fcm(nandflashcontrolmachine),该控制器具有一8kb的缓存供处理器内核和nandflash之间交互数据。其8kb的缓存分成了两个4kb大小的缓存区块,每个缓存区块用于缓存处理器和nandflash交换的2kb的数据和64b的oob信息;每个缓存区块可单独对nandflash进行命令时序控制和数据交换。

原嵌入式处理器对nandflash存储器的访问是通过处理器的局部总线对fcm的访问实现的,由于fcm提供的缓存区块最大为4kb,所以一次能够读写的数据的最大页面大小大小为2kb。嵌入式处理器的fcm最大支持的nandflash存储空间有限,例如,最多只能支持2片nandflash,单片nandflash的容量最大为2gb。因此,如果需要大于2gb的数据存储需求,则需要在此基础上进行存储器容量的扩展,nandflash存储器的读写速度较慢。



技术实现要素:

本发明的目的在于克服上述现有技术的缺点,提供了一种基于软硬件结合方式的大容量快速nandflash存储实现方法,该方法能够有效的提高nandflash存储器的读写速度。

为达到上述目的,本发明所述的基于软硬件结合方式的大容量快速nandflash存储实现方法包括以下步骤:

根据nandflash特性结合控制器的双缓存区块特点,优化nandflash的读写方式,采用并行化读写方式控制多块nandflash;

在实现上,对处理器的局部总线控制器的时序和命令进行解析,在fpga芯片内部重新映射部分局部总线控制下的空闲物理地址空间,在fpga芯片内实现对多片nandflash芯片的复合片选;

修改软件驱动程序,使修改后的软件驱动程序对单片存储器的串行访问命令变成对两片nandflash芯片的交替访问,利用nandflash芯片访问的等待时间,交替进行对缓存区块的读写访问。

处理器通过局部总线与fpga芯片连接,局部总线中包含用于控制nandflash的fcm模块的控制线及片选线、局部总线控制器的数据线、地址线、读使能信号线及写使能信号线,32片nandflash芯片按地址空间顺序排布构成存储阵列,所有的nandflash芯片共享数据地址线和控制线,每一个nandflash芯片的片选信号cs各不相同,且分别与fpga芯片的cs输出连接,nandflash芯片的数据线和控制线通过fpga芯片与嵌入式处理器相连。

在fpga内部重新映射部分局部总线控制下的空闲物理地址空间,在fpga芯片内实现对多片nandflash芯片的复合片选的具体实现过程为:

在fpga内部重映射空闲物理地址空间并形成片选寄存器,应用软件通过访问外围存储设备物理地址空间来访问相应的fpga芯片内部片选寄存器,fpga芯片解析应用软件对片选寄存器的写入数据,实现对nandflash的复合片选,上层软件通过对同一地址写不同的值,以完成对应nandflash芯片片选引脚切换。

在fpga内部重新映射部分局部总线控制下的空闲物理地址空间,在fpga芯片内实现对多片nandflash芯片的复合片选的具体实现过程为:

利用空闲物理地址空间,fpga芯片仅在上层软件写该段地址时解析la上的地址数据,根据该地址数据完成相应的片选,上层软件对32个地址空间写特定的值,完成对应nandflash芯片片选引脚的切换。

修改软件驱动程序,使修改后的软件驱动程序对单片存储器的串行访问命令变成两片nandflash芯片的交替访问,利用nandflash芯片访问的等待时间,交替进行缓存区块的读写访问的具体实现过程为:

缓存区块0接收上层软件dma传递数据的同时,缓存区块1对底层nandflash芯片进行读写访问,缓存区块0在缓存区块1等待nandflash完成指令执行的空隙操控指定的空闲nandflash芯片,利用nandflash执行指令时的硬件等待时间,双缓存区块依次交替工作,实现流水线操作,利用逻辑中硬件执行命令的等待时间,将数据和指令提前装载入fcm空闲缓存区块中,在其他缓存区块处于等待时间时,按固定时序执行指定命令和数据传递,使底层驱动能够同时对多块nandflash操作。

本发明具有以下有益效果:

本发明所述的基于软硬件结合方式的大容量快速nandflash存储实现方法在具体操作时,根据nandflash特性结合控制器的双缓存区块(bank)特点,优化nandflash的读写方式,采用并行化读写方式控制多块nandflash,使得整体的读写速度可以成倍提高,在实现上,对处理器的局部总线控制器的时序和命令进行解析,在fpga内部重新映射部分局部总线控制下的空闲物理地址空间,实现对多片nandflash芯片的复合片选,另外,通过修改软件驱动程序,使对单片存储器的串行访问命令变成两片nandflash芯片的交替访问,利用nandflash芯片访问的等待时间,交替进行缓存区块的读写访问,可以成倍地提高nandflash存储器的读写速度。

附图说明

图1为嵌入式处理器、fpga、nandflash芯片的硬件连接关系图;

图2为fpga内片选电路实现方案1示意图;

图3为fpga内片选电路实现方案2的示意图;

图4为逻辑页面地址到物理页面地址映射关系图;

图5为大容量存储器驱动软件流程图。

具体实施方式

下面结合附图对本发明做进一步详细描述:

本发明所述的基于软硬件结合方式的大容量快速nandflash存储实现方法包括以下步骤:

根据nandflash特性结合控制器的双缓存区块特点,优化nandflash的读写方式,采用并行化读写方式控制多块nandflash;

在实现上,对处理器的局部总线控制器的时序和命令进行解析,在fpga内部重新映射部分局部总线控制下的空闲物理地址空间,在fpga芯片内实现对多片nandflash芯片的复合片选;

修改软件驱动程序,使修改后的软件驱动程序对单片存储器的串行访问命令变成对两片nandflash芯片的交替访问,利用nandflash芯片访问的等待时间,交替进行对缓存区块的读写访问。

1、大容量扩展的硬件实现方式

参考图1,处理器通过局部总线与fpga芯片连接,局部总线中包含用于控制nandflash的fcm模块的控制线、片选线,局部总线控制器的数据线、地址线、读使能信号线及写使能信号线,32片nandflash芯片按地址空间顺序排布构成存储阵列,所有的nandflash芯片共享数据地址线和控制线,每一个nandflash芯片的片选信号cs各不相同,分别与fpga芯片的cs输出连接,nandflash芯片的数据线和控制线通过fpga芯片与嵌入式处理器相连。

2、在fpga内部重新映射部分局部总线控制下的空闲物理地址空间,在fpga芯片内实现对多片nandflash芯片的复合片选的具体实现过程有两种;

第一种方案为:利用局部存储器的外围存储器物理地址在fpga内映射形成寄存器实现复合片选。

具体的,根据局部总线控制器时序,如图2所示,fpga芯片在局部总线上片选引脚cs有效后,读取地址总线(la)上传递的地址信息,用于判断当前读写的寄存器地址,例如当前地址总线上传递的地址为0x00000001,则表明当前操作的寄存器地址为0x0000000;读写译码电路根据读使能(oe)和写使能(we)的有效与否给寄存器电路发出读使能信号(ren)或写使能信号(wen),若当前操作为上层应用需要读取寄存器的值,读译码器会在la和oe有效后发出读使能信号,寄存器电路在读使能信号的驱动下将存储在内部的值输入到数据总线(ld)上,并保持一定的时间;当当前操作是上层应用需要写寄存器值,写译码器会在la和we有效后发出写使能信号,寄存器电路在写使能信号的驱动下读取数据总线上的数据并保存到内部存储区。

为实现1对32的复合片选,在寄存器电路中为片选控制配置的片选寄存器,寄存器位宽为16位,寄存器的地址为空闲的嵌入式处理器可读写的外围存储设备的物理地址,片选译码电路会在nandflash芯片片选信号有效时读取对应寄存器的值进行译码,将嵌入式处理器写入片选寄存器的数值转变成对应的片选信号,片选寄存器中的数据就和需要访问的nandflash芯片建立一一对应的联系,根据实际需要,译码电路可以产生所需要的数量的片选信号。

第二种方案为:

根据局部总线控制器时序,如图3所示,地址译码电路会在地址数据(la)和写使能信号(we)都有效时,根据地址数据的不同发出对应的使能信号(enn),un模块会在enn有效时锁存此时ld[0]的值。ld[0]的值会决定是否连通cs信号和csn信号,当ld[0]值为1时,cs信号和csn信号连通,输出正确的片选信号;当ld[0]值为0时,cs信号和csn信号不连通,表明此时不对当前nandflash块进行片选。为实现1对32的复合片选,地址译码电路需要对32个不同地址进行解析产生32个使能信号,un模块包含寄存器,当使能信号enn有效时,则会将ld[0]的值写入寄存器,寄存器输出和嵌入式处理器的cs信号进行逻辑运算,产生指定nandflash芯片的片选csn信号,每次只允许产生一个nandflash芯片的片选信号有效。

3、底层驱动地址映射的实现

原处理器的fcm只能访问2gb的nandflash存储器空间,当存储器容量扩展到64gb时,需要将处理器访问的存储器地址以2gb单片flash为基础进行整体存储空间映射到64gb地址空间。

处理器通过fcm以及fpga芯片对nandflash芯片进行数据读写访问,其中,nandflash通过fcm控制器中的缓冲器缓存区块和处理器交换数据,因此在地址空间中只需指定其8kb缓冲器的地址即可。映射逻辑如图4所示,将64gbnandflash芯片存储器以2gb为基本单元进行映射。nandflash最小写入单元为一个页面(2kb),2gb存储空间总共有1048576个页面块。整个64gb的存储模块具有33554432块页,上层应用软件访问的是所有页面块。对底层驱动来说,所控制的页面范围只是0-1048575(2gb)空间。映射逻辑将所有页面块以2gb为单位,划分成32个区间并存储在逻辑表中,每次会根据传递到底层的页面号查找此表,以确认需要连接的nandflash芯片的编号。

在软件驱动程序中,需要将物理页面编号结合地址映射表和映射逻辑转换成对应nandflash块编号,如图4所示,软件驱动代码会在首次启动时对所有的页面块进行坏块扫描并排序,每个页面块都有其唯一的物理页面块编号,底层驱动向上层驱动提供接口,上层驱动将物理页面号传递到底层,映射逻辑查找映射表中对应物理页面的底层nandflash号。

在fpga内片选电路为方案1时,如图5所示,映射逻辑向片选寄存器写入该nandflash芯片编号,fpga芯片根据对应的映射逻辑片选择底层的nandflash块,fpga芯片配置完成后软件回读寄存器的值,以确认连接的正确性,确认无误后fcm控制对应的nandflash实现数据的读写操作。

例如:当传递到底层的页面号为1148576,此时映射逻辑查表得到该页面属于第二片nandflash,然后处理器向片选寄存器写入nandflash片号0x0002,fpga内部逻辑产生对应的片选信号。

在fpga内片选电路为方案2时,映射逻辑向需要片选的nandflash对应的外围存储器物理地址写入0x0001,fpga根据内部逻辑片选到底层的nandflash块,同时需要对上次片选的nandflash对应的外围存储器物理地址写入0x0000以取消片选,片选完成后fcm控制对应的nandflash实现数据的读写操作。

例如:当传递到底层的页面号为1148576,此时映射逻辑查表得到该页面属于第二片nandflash,然后向第二片nandflash对应的外围存储器物理地址写入值0x0001,还需要对上一次的片选如第一片nandflash对应的外围存储器物理地址写入值0x0000,以取消对第一块的片选。

4、nandflash读写访问性能提升

利用fcm的双缓存区块实现nandflash芯片访问速度的提高,软件对底层的高速存取是通过更改原有的线性利用缓存区块的用法,实现双重流水线的读写方式,具体方式为:缓存区块0接收上层软件dma传递数据的同时,缓存区块1对底层nandflash芯片进行读写访问,缓存区块0在缓存区块1等待nandflash完成指令执行的空隙操控指定的空闲nandflash芯片,充分利用nandflash执行指令时的硬件等待时间,双缓存区块依次交替工作实现流水线操作。利用逻辑中硬件执行命令的等待时间,将数据和指令提前装载入fcm空闲缓存区块中,在其他缓存区块处于等待时间时,按固定时序执行指定命令和数据传递,这样使得底层驱动可以同时对多块nandflash操作,成倍提升速度。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1