本文包含原理图、PCB、源代码、封装库、中英文PDF等资源
您需要 登录 才可以下载或查看,没有账号?注册会员
×
摘 要: 为了解决SAR匹配成像数据以及合成孔径雷达中频采样后高速海量数据的存储问题,介绍了一种基于FPGA控制的NAND Flash数据存储及回放系统设计方案。实验证明,该系统能以3 Gb/s码流实时存储数据具有强实时性,且性能稳定,有很好的工程使用价值。
关键词: 数据存储; FPGA; NAND Flash; 坏块管理
随着合成孔径雷达(SAR)对分辨率的要求不断提高,其中频采样后回波信号的数据量与信号处理后的二维雷达图像的数据量大大增加。为了便于后续分析与处理,通常会将这些海量回波数据以及雷达图像数据进行无失真数据存储。这对数据存储系统的设计提出了两个方面的要求:(1)接口简单且有较高的数据存储速率;(2)由于所需存储数据数量巨大,要求存储系统有足够的容量。
传统的SDRAM存储方案随着存储器容量的增加,其复杂性和实现成本也迅速提高,且在系统掉电后所存储数据会丢失,不适合数据的回放分析及处理的应用场合[1]。而采用基于Flash的存储方案,存储容量大(单片容量可以达到32 GB),不但数据存储的效率较高(单片读写速度可以达到160 Mb/s),而且其接口通用、设计简单,方便频繁读写操作,因此是大容量雷达数据实时存储的优选方案。
1 系统设计
1.1系统设计指标
本系统是SAR雷达信号处理系统中的子系统,主要实现对中频采样数据和合成孔径雷达匹配景象数据进行存储与回放。根据应用需求分析,设计的系统应具有数据存储和数据回传(上传至PC机)两项基本功能,其中以数据存储为核心功能。在数据存储过程中,最关键的两个指标分别是数据存储速率和数据存储量。这两项指标直接影响系统设计的优劣。根据表1列出的SAR工作典型参数,就上述两个指标进行分析。
(1) 存储速率分析
由表1可知,经过信号处理后的一帧图像为4 096×4 096像素。极限情况下,每秒钟信号处理模块会送出3.5帧匹配景象数据,则图像存储的速率必须大于448 Mb/s。存储中频采样数据时,根据上述采样率以及A/D的采样位宽,可估算每秒采集到的正交两路中频雷达信号数据量为350 MB,即中频采样数据的存储速率要求高于2.8 Gb/s。
(2) 存储量分析
由于系统采用非易失存储介质,存储量与系统开机运行时间相关。根据分析,设定存储系统工作在最长时间5 min时,可估算规定时间内系统需要存储102.6 GB的中频采样数据和16.5 GB的图像数据。这就要求设计系统板载总数据存储容量大于118.1 GB。
1.2 系统结构
为了满足设计技术指标要求,对构成系统的主要器件选择如下: (1)存储系统主控器选取Altera 公司型号为EP2S90F780 的FPGA芯片。(2)存储芯片选取三星公司型号为K9LBG08U0M的NAND Flash。(3)选取Cypress Semiconductor公司的EZ-USB FX2作为数据回传USB2.0的微处理控制器。(4)选用美光公司型号为ML48LC8M16的SDRAM作为数据缓存芯片。系统硬件结构框图如图1所示。
2 硬件设计
2.1 SDRAM接口设计
SDRAM与FPGA的连接示意图如图2所示。左边是SDRAM芯片ML48LC8M16的引脚,右边是FPGA中SDRAM数据接口模块对应的信号。系统中运用了两片ML48LC8M16,图2是一片SDARM的接口,另一片接口与之相同。两片SDRAM乒乓缓存高速数据,可以增加系统存储的稳定性和可靠性。
2.2 NAND Flash存储模块设计
系统数据存储基本单元由型号为K9LBG08U0M的NAND Flash芯片组成,K9LBG08U0M是一款低功耗、高效率的NAND Flash存储芯片。其内部采用典型“块-页”组织结构方式,片内总共分为8 192块,每块包括128页,每页可存储4 KB,总存储空间达到4 GB[2]。其典型编程和擦除时间分别为0.8 ms、1.5 ms,存储速度较快,存储容量适中,适合SAR海量数据存储的应用场合。系统以FPGA为主控制器,并行控制4个NAND Flash存储器工作组,其接口电路原理图如图3所示。每个存储器组分别由8片K9LBG08U0M芯片组成。每组中又以4片为一个最小存储单位。每个最小存储单位中,将地址锁存信号ALE、命令锁存信号CLE等控制信号线通过并接的方式连接到一起,各片数据地址复用线IO0~IO7独立连接至FPGA的通用I/O中。
这样将数据通道可扩展至32 bit,有效地拓宽了数据存储带宽,提高了数据吞吐量。同时,因采用了32片NAND Flash芯片,板载存储容量达到了128 GB。
2.3 回传模块设计
数据回传通道通过EZ USB 68013与PC连接,集成了USB2.0收发器、串行接口引擎(SIE)、增强型8051微控制器和可编程的外围接口。设计中采用USB 68013的GPIF接口,并运用8 bit的传输方式。EZ-USB FX2可配置成Ports、GPIF Master(主)和Slave FIFO(从)三种不同的接口模式,在设计中使用Slave FIFO模式[3]。在该模式下,外部逻辑直接连接到FX2的端点FIFO,GPIF并没有被激活。因为外部逻辑可以直接控制FIFO,所以FIFO的基本控制信号(标志、片选、使能)由EZ-USB FX2的引脚引出,外部控制可以是同步或异步。图4为在Slave模式下USB芯片外围电路以及与FPGA连接的原理图。
3 存储系统软件设计
3.1控制器软件模块
数据传输与存储控制电路的开发工作主要集中在FPGA上。根据上述分析与介绍,结合NAND Flash以及USB 68013芯片的操作特点,考虑控制器的通用性与系统的可扩展性,存储系统软件设计如图5所示。其中包括USB操作命令解析模块、写时序发生模块、坏块管理模块、数据上传控制模块、块擦除时序发生器模块、读时序发生器模块等。
图5中,虚线框标定的软件模块均运用硬件描述语言编写,在Quarters II编译环境下编译、综合并得到了实现。
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,使其适应未来大容量存储设备的发展趋势。
参考文献
[1] 黄伟,罗新民.基于FPGA的高速数据采集系统接口设计[J].单片机与嵌入式系统设计,2006(4):35-36
[2] Samsung.NAND flash assignment recommendation [EB/OL].www.sumsung.com.2008.
[3] 李鹏勃,张洪平.基于USB2.0的高数数据采集系统[J].电子技术应用,2009,35(10):109-111.
[4] 邱华,黄少珉,张萌.提高Nand Flash性能的方法[J].计算机工程与应用,2009,45(8):84-86.
[5] 夏宇闻.Verilog数字系统设计教程[M].北京:北京航空航天大学,2003.
[6] 张胜勇,高世杰.基于FPGA的NAND Flash坏块处理方法[J].计算机工程,2010(6):239-240. |