SAR高速海量数据存储与回放系统设计
3.2 系统工作流程
系统工作流程如下:上电后,由坏块管理程序扫描所有存储块,同时记录坏块地址值,并存入FPGA内建立的RAM坏块表中;然后系统等待接收并解析USB控制命令;若控制命令为数据存储,首先进行写数据目标块擦除操作,然后在坏块管理程序监管下,由写时序发生模块存储SDRAM接口准备好的数据,数据存储完毕后系统进入待命状态。若控制命令为数据读取,首先从USB控制命令中解析出目标数据地址,之后由读取时序发生模块将数据读入USB芯片的FIFO中;最后系统根据FIFO标志位将数据上传至PC机。整个存储系统工作的流程图如图6所示。
3.3存储速度优化
从存储芯片的存储机制出发,优化控制器软件结构可以达到提高系统存储速度的目的[4]。单片NAND Flash将数据写入的过程是:通过数据总线向存储芯片发送写数据命令80 h,紧接着写目的页地址,然后写4 096 B数据(计算数据写入所需要时间为Tdata-in),最后输入结束命令10 h[2]。这一系列操作完成后Flash进入忙碌状态,同时将4 KB数据从数据缓存区搬移到内核,计算搬移所需要的时间为Tprog。则4 KB数据写入的总时间如下:
由此可得到单片写入速度为96 Mb/s。系统硬件结构设计时将4片存储器作为最小单元级联,采用该方式数据写入速度可以提高到384 Mb/s。为进一步提高速度,可将数据搬移时间Tprog充分利用起来。控制器软件能实现对两个不同的单元进行乒乓操作,即在一个存储单元进入忙状态时,另一个存储单元开始写。这样交替操作,写入速度可达到768 Mb/s。控制器同时驱动4个存储器组并行工作,则其数据存储速度可进一步提升到3 072 Mb/s(即3 Gb/s)。
3.4 NAND Flash坏块管理
由于NAND Flash 在出厂和使用过程中都会出现坏块 (无法或错误地存储数据),这将对所存储数据的准确性造成影响。为了准确无失真地存储数据,必须对NAND Flash中随机出现的坏块进行有效的处理。本设计采用一种自适应(可变长度)状态机方法,简单有效地实现了坏块的管理。系统上电运行时,将由主控制器扫描得到的所有坏块地址值存入FPGA内建立的RAM表中[5]。
采取这样的方式,可使片上RAM资源消耗降低[6]。在进行数据写操作时(地址线性增加),判断坏块地址与当前写地址之间的距离,通过内部计数器操作可避开坏块。坏块管理状态转换图如图7所示。
坏块管理状态机包括3个状态:Idle(空状态)、Get_timer(取坏块距离状态)、Addr_change(块地址改变状态)。其操作流程如下:(1)系统复位时状态机进入Idle状态,等待不执行任何操作。(2)当页地址标志位不为0时(写操作开始),状态机进入Get_timer状态,此状态下取下一个坏块到当前块的距离,并赋给定时器timer,若timer为“0”继续停留在该状态,同时连续坏块地址自加;若timer不为“0”,则状态跳转到Addr_change。(3)在Addr_change状态下,等待一个Block中所有页写完后,判断timer是否为非“0”,若是块地址自加,同时timer自减;反之输出块地址为原地址加上连续坏块寄存器的值。
该方法实现的坏块管理程序,能有效避开随机出现的坏块,降低片上资源消耗,提高了工作效率,确保了雷达数据存储的完整性与准确性。
4 系统实验结果
通过软硬件协同设计,最终实现了整个存储控制系统,包括板载32片Flash芯片(正面16片,背面16片)、主控FPGA芯片、USB控制芯片、SDRAM芯片、配置芯片等。
将同一帧灰度图像数据分别存储在经过坏块管理的存储器组1和未经过坏块管理的存储器组2中,然后通过读时序操作分别读取数据,在PC机上整合成一帧完整的图像并做对比,其结果如图8所示。可见未经坏块管理存储的图像数据出现失真,坏块区域输出成片“0”值,图像出现带状白色噪声点,这些干扰噪声会严重影响后续信号处理结果。
经过坏块管理后读出的数据形成如图8(b)的图像可以发现,完全不存在图8(a)所示现象,图像中只有包含有真实目标的匹配成像信息。说明经过坏块处理后数据被完整准确地存储起来,不会对后续的信号处理造成影响。
本文介绍的系统作为子模块已在SAR成像系统中成功应用。实践证明,本存储回放系统能够高效、稳定、可靠地工作,而且数据存储无失真。在后续工作中,可在Flash控制逻辑上采用双线程操作(Two Plane)方式,能将数据写入速度提高约1.6倍;也可验证控制器的通用性,在存储板上搭载单片容量更大的存储芯片,简单修改配置参数就可将目前板载总容量为128 GB的存储系统将其容量扩至4 TB,使其适应未来大容量存储设备的发展趋势。
- 在采用FPGA设计DSP系统中仿真的重要性 (06-21)
- 基于 DSP Builder的FIR滤波器的设计与实现(06-21)
- 基于FPGA的快速并行FFT及其在空间太阳望远镜图像锁定系统中的应用(06-21)
- 3DES算法的FPGA高速实现(06-21)
- 用FPGA实现FFT算法(06-21)
- FPGA的DSP性能揭秘(06-16)