微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于闪存的大容量存储阵列

基于闪存的大容量存储阵列

时间:04-26 来源:互联网 点击:

图3中信号是第一级存储芯片的接口信号,是以cle_wrl的上升沿来作为触发的,其中dio_wrl信号对应于上面编程时序图的I/Ox信号,ale_wrl、cle_wrl、we_wrl、re_wrl、wp_wrl信号为Flash芯片的地址锁存、命令锁存、写使能、读使能、写保护信号。其中写命令h80后的00、40、1B是上位机通过控制板发至存储板的行地址,由时序可知,与Flash芯片的所需要的编程时序一致。
3.2 流水的缓存模块设计
根据NAND Flash芯片的特点,高速数据控制模块的数据流按照页访问方式进行管理。设计选取的Flash芯片的页大小为4 kB,因此在写入的数据进入高速数据控制模块后,首先进行按照页大小进行数据分割。
在FPGA内开辟出40个容量为4 kB的双口RAM的缓冲区,每10个为一组,相对应一组Flash阵列中的10片芯片。数据传输通道工作时序如图4所示。

当数据率为200 MB·s-1时,数据传输周期是Tc1=5 ns,传送1页的时间是Tp1=4 096×Tc1=20.48μs,4级高速FIFO的延迟时间为△Tm=20 ns。在数据传输开始后,第1个10页数据(P1,P3,P5,P7,P9,P11,P13,P15、P17,P19)以200 MB·s-1的速率分别写入对应的存储器组缓冲区G0,第2个10页的数据以200 MB·s-1的速率分别写入相应的存储器组缓冲区G1,第3个10页的数据以200 MB·s-1的速率分别写入相应的存储器组缓冲区G2,第4个10页的数据以200 MB·s-1的速率分别写入相应的存储器组缓冲区G3。
当存储器组缓冲区G0写满之后,同时启动对该组内的10片Flash的数据传输然后进行编程,编程时间约为300 s。类似地,当存储器组缓冲区G1/G2/G3写满后,也按照相同的发送启动对其组内的10片Flash的数据传输和编程。

这种过程可以看出,对存储器组的写入是顺序和串行的,而对存储器组的读出是同时和并行的。利用存储器组缓冲区的写入和读出速度之差,将输入数据速率降低为20 MB·s-1,同时又不会丢失数据。按照上述设计,后续的数据也以存储器组为单位,交替的被分配给4个存储器组的Flash阵列,并且完成对它的编程。数据缓存RAM组第一组与第二组各取一片的示意图如图5所示。

4 调试问题及其解决方案
4.1 行与数据不同步问题
存储板需要从控制板接收行信号和数据,其中行信号与数据是同步的传输的,但是在实际的存储板接收数据采集的结果来看,行信号下的数据有时会丢失,有时会错乱,情况不太确定。而存储板与控制板的接口中,存储板接收控制板发送的写命令后,会在行信号的触发下进行写入操作,这种不确定性造成了整个Flash中数据的混乱。
4.2 异步时钟域数据同步的思想
查阅资料后,发现这是属于异步时钟域同步问题中的同频异相问题。行信号与数据在传输过程中由于路径的不同,造成两者相位出现了偏差。而且在编程初期,为程序简单,在数据进行存储板时,未在随路时钟的控制下进入FIFO缓存,由此造成数据与行的不同步。选取的触决办法是在数据进入双口RAM缓存以前,用随路时钟对数据采样两次,即通常所述的用寄存器打两次。这样的做法可以有效地减少亚稳态的传播,使后级电路数据都是有效电平值。

5 结束语
文中介绍了基于Virtex-4为控制核心的以NAND Flash芯片为基本存储单元所构成的大容量数据存储系统,对固态存储技术进行了探索。重点在于FPGA内部实现了并行流水处理技术,将高速数据无丢失地存入相对慢速的Flash芯片中。本文是在实际工程项目的基础上完成的,经过实践检验,达到了系统设计要求。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top