基于Flash芯片的弹载记录系统设计

    

    

    

    摘要: 针对弹载记录系统大容量、 高速率数据的记录需求, 设计了一种基于Flash芯片的弹载记录系统。 该系统以FPGA芯片为控制核心, 通过并行总线操作、 流水线操作等技术实现数据的高速存储, 并利用下载软件的多线程功能实现数据的快速下载。 具有存储速率高、 可靠性高、 扩展性好等优点。

    关键词: 记录系统; Flash芯片; USB接口; 无效块管理

    中图分类号: TJ760.3; TP216.2文献标识码: A文章编号: 1673-5048(2016)05-0077-04

    Abstract: In order to meet the requirement of recording system used in airtoair missile such as large capacity and high rate data, the design method of recording system for airtoair missile based on flash chip is introduced. The system takes the FPGA chip as the control core, through the parallel bus operation, pipeline operation and other technologies to achieve highspeed data storage, and the download software is used to achieve the fast download of data. This system has the advantages of high storage rate, high reliability and good expansibility.

    Key words: recording system; flash chip; USB interface; invalidblock management

    0引言

    随着空空导弹的发展, 弹载记录系统在空空导弹研制过程中的作用越来越重要, 对弹载记录系统的要求也越来越高, 高速、 大容量是目前弹载记录系统的发展趋势。 已应用到弹载记录系统中的控制电路有PC104 CPU控制板、 FPGA和单片机(MCU), 存储器有EEPROM、 DOC(Disk on Chip)、 CF卡存储器和电子硬盘[1]。 但受采样速率、 存储容量、 价格成本等限制, 已无法满足未来弹载记录系统的需要。

    近年来, 闪速存储器(Flash Memory)作为固态存储器以其独有的特点得到越来越广泛的应用, 其具有抗振动、 存储密度大、 可擦写、 非易失、 环境适应能力强以及命令、 地址、 数据线复用和接口便利等特点[2], 并且还有擦写速度快、 单位存储容量价格低和可靠性高等优点。

    基于上述原因, 设计了一种基于Flash芯片的弹载记录系统, 采用高速大容量Flash Memory芯片作为存储器, 通过FPGA芯片作为控制和缓冲, 完成高速大容量数据的存储, 并通过高速USB接口进行数据下载。

    1系统组成

    某项目对记录系统的采集要求如下:

    (1) 采集信号: 图像信号、 模拟信号、 422信号;

    (2) 采集速率: 不小于13.5 MB/s;

    (3) 记录时间: 不小于1 h;

    (4) 下载速度: 不小于10 MB/s。

    记录系统主要由输入接口电路、 二次电源电路、 FPGA芯片、 Flash存储阵列、 USB下载接口电路和下载软件等组成, 系统原理框图如图1所示。

    航空兵器2016年第5期王晖: 基于Flash芯片的弹载记录系统设计FPGA芯片是记录系统的核心, 其产生的控制时序控制交换子、 A/D转换器和Flash存储阵列等协调有序工作, 准确采集数据并按照规定的帧格式将数据写入Flash芯片。 在数据下载时将Flash芯片中的数据写入USB接口芯片的FIFO中, 通过USB接口传输给计算机。

    2主要技术

    由于NAND型Flash芯片本身存在写入带宽低、 写入速度慢、 存在无效块等缺点, 因此必须通过合理设计和有效控制逻辑来克服上述缺点。 可以采用并行总线技术、 流水线编程技术来增加带宽、 写入速度和容量; 通过建立无效块管理表, 避免对无效块的操作; 通过USB接口设计、 多线程数据下载技术来提高数据下载速度, 从而实现高速、 大容量数据的可靠存储。

    2.1并行总线处理技术[3]

    采用Micron公司的NAND型高速大容量固态存储芯片MT29F64G08AJABA[4], 该芯片单片容量为8 GB, 页面(Page Size)大小为(4 K+224)Byte, 页面编程时间 (Page Program Time)典型值为230 μs, 块大小(Block Size)为(5 124 K+8 K)Byte, 块擦除时间(Block Erase Time)典型值为700 μs, 单片芯片的数据写入速度约为5 MB/s。 该芯片只有8个I/O管脚, 命令、 地址和数据是通过分时复用来完成不同操作的, 通过控制信号区分命令和地址。

    Flash芯片的传统操作方式是存储完一片Flash芯片后, 再进行下一片Flash芯片的操作, 存储速度约为5 MB/s, 无法满足高速数据的存储要求。 通过并行总线处理技术可以很直观地提高存储速度, 即将N片Flash芯片并联起来, 使用相同的控制线、 片选线和读写信号线, 构成Flash存储阵列, 以此来提高系统读写带宽和读写效率。

    所设计的Flash存储阵列采用4片Flash芯片并联, 使用相同的控制线、 片选线和读写信号线, 构成一个32位带宽的芯片组, 将4个芯片组串联构成一个存储速度20 MB/s以上、 容量128 GB的存储阵列, 能够满足弹载记录系统高速、 大容量数据存储要求。

    2.2流水线编程技术

    MT29F64G08AJABA的内部由2片4 GB的Target(Target1, Target2)构成, 通过片选信号CE1/CE2进行选择控制, 为提高Flash芯片的存储速度, 可以采用流水线操作技术, 即时间复用。 数据存储时对Target1, Target2进行乒乓操作, 当Target1加载完一页数据后, 即进入自动编程状态, 这期间不能进行其他操作, 只有当编程结束后, Target1恢复空闲状态, 才能进行下一页数据的加载。 在Target1编程期间, 同时对Target2执行下一页数据的命令、 地址和数据加载。 当Target2编程期间, 同时对Target1执行一页数据的命令、 地址和数据加载。 依次递推, 可以实现对页编程时间复用, 提高存储速度。

    在设计中, 单片Flash芯片的存储速度约为5 MB/s, 运用流水操作技术的Flash芯片存储速度将是单片Flash芯片存储速度的2倍, 可达10 MB/s以上, 同时结合并行总线处理技术, 能够满足弹载记录系统高速数据的存储要求。

    2.3Flash芯片无效块管理

    无效块是指包含一位或者多位无效位信息的存储块[5], Flash芯片在出厂时就可能存在无效块, 无效块不允许进行擦除和编程操作, 因此在Flash芯片操作过程中, 需要建立一个无效块管理列表, 将芯片内部的所有坏块信息写入列表中。 出厂时本身含有的无效块厂家已经标明, 通过读取每块第一页和第二页的第4 096个字节来进行判断, 如果均是“FFh”, 则认为是有效块, 否则认为是无效块[6]。 无效块的判断逻辑见图2。

    无效块管理是在FPGA芯片内部开辟一个专门存储无效块信息的RAM, RAM的每个数据位与Flash芯片的每块一一对应, “1”代表有效块, “0”代表无效块。 在对Flash芯片的每一块进行操作之前, 需要先读取RAM中对应此块地址单元的信息, 如果发现是无效块就跳过不进行操作, 然后再进行下一块的判断, 直至找到有效块时再进行操作。 无效块判断流程见图3。

    设计中, Flash存储阵列的无效块信息存储在Flash芯片第一块第一页中, 记录系统加电后, 将无效块信息读出并写入RAM中, 可以避免系统断电后无效块信息丢失。

    2.4USB接口设计

    记录数据的下载、 清除通过计算机、 数据处理软件和USB接口进行。 设计采用Cypress公司的通用USB2.0接口芯片CY7C68013A[7], 其内部包括USB2.0收发器、 串行接口引擎(SIE)和增强型51内核, 遵从USB2.0协议, 可提供高达480 Mbps的传输率。 CY7C68013A与外设有主/从两种接口方式, Slave FIFO是从机方式, 外部控制器可以像对待普通FIFO一样对芯片内的FIFO进行读写[8]。 主机向记录系统发出读无效块信息、 读工作信息、 读数据、 擦除等操作命令, FPGA芯片根据命令进行相应的操作, 命令及其描述如表1所示。

    2.5多线程数据下载

    数据下载中首次使用多线程技术完成USB缓冲区的数据读写功能, 数据下载时, 调用读线程下载USB缓冲区的数据, 通过信号量控制写线程处于等待状态; 当下载的记录数据量达到预先设定的存储文件大小时, 运行写线程完成存储文件的功能, 同时继续读线程完成数据下载。 和单线程读写数据文件相比, 读线程和写线程可同时运行, 节约了单线程读写文件时需要等待完成写数据的时间, 减少了数据下载时间, 提高了程序运行效率。

    3FPGA设计

    FPGA芯片选择Altera公司StratixⅡ系列的EP2S60F484I4, 该芯片有48 352个ALUTs, 334个I/O管脚, 内存总量2 544 192 bits, 12个PLL, 36个DSP blocks[9], 既作为控制器产生所需的逻辑和时序, 又作为输入数据的缓存, 最后通过计算机USB接口实现人与系统的通信[10]。 输入接口数据总线、 Flash存储阵列的地址数据总线和控制总线、 USB接口的数据和控制总线都连接在FPGA芯片的I/O管脚上, 大大简化了硬件电路。

    3.1缓存FIFO的实现

    由于输入数据是突发式, 一段时间发送数据, 一段时间空闲, 因此需要利用EP2S60内部的M4K[11]存储块设置FIFO, 用于缓存输入数据和编排帧格式。 Flash芯片是基于页来读写的, 在每次通电写入数据前需先写入4个字节的包头, 用于区分每次通电的起始位置, 用FIFO缓存数据。

    在FPGA内部开辟五块内存, 分别用于缓存模拟数据(缓存A)、 422数据(缓存B)、 图像数据(缓存C)、 合并后的数据(缓存D)以及包头数据(缓存E)。 当缓存D的数据达到预定值时, 产生标志信号, 数据存储模块根据标志信号从缓存D中读取数据, 在第一组数据前添加包头(表示每次加电的起始位置, 后续数据不加)存入缓存E, 然后再将数据写入Flash存储阵列。 当数据读完后, 标志信号消失, 直至下一个标志信号出现, 数据存储模块继续从缓存D中读取数据, 存入缓存E并写入Flash存储阵列, 如此循环。 当写满一个有效块后, 数据写入下一个有效块; 当写满一组Flash芯片后, 数据写入下一组Flash芯片, 当所有Flash芯片写满后, 系统停止记录。 在写数据的过程中, 系统自动屏蔽Flash芯片的所有坏块。 FPGA内部缓存如图5所示。

    3.2Flash的控制时序

    Flash存储阵列的控制时序由FPGA芯片产生, 通过片选信号选择不同组的Flash芯片, 通过读信号、 写信号、 命令使能信号、 地址使能信号控制Flash芯片进行写、 读、 擦除等操作, 以完成数据记录、 数据下载、 数据清除等功能。

    Flash芯片的写操作是以页为单位进行, 首选写入命令字80 h, 随后写入5个时钟周期的地址, 并在WE的上升沿将4 096个字节的数据写入数据存储器中, 最后写入页编程确认命令字10 h以启动存储操作, 然后进入等待状态(R/B=0), 当R/B=1时表示数据写入成功, 可以进行下一次写操作。

    Flash芯片的读取操作时序、 擦除操作时序与写操作时序类似, 即依次写入命令字、 地址、 确认命令字以启动相应操作, 此处不再细述。

    4系统实现

    设计实际实现的弹载记录系统采用4片Flash芯片(MT29F64G08AJABA)并联构成1个芯片组, 4个芯片组串联形成Flash芯片阵列, FPGA芯片采用EP2S60F484I4, USB接口采用通用接口芯片CY7C68013A, 辅以外围信号的接口电路, 系统实现的主要指标如下:

    (1) 准确采集图像信号、 模拟信号、 422信号等;

    (2) 存储容量: 128 GB;

    (3) 存储速率: 不小于40 MB/s;

    (4) 记录时间: 不小于2 h;

    (5) 下载速度: 不小于20 MB/s。

    5结论

    简要介绍了Flash芯片在弹载记录系统的应用, 以FPGA、 Flash芯片、 USB接口芯片构成了新型弹载记录系统的核心, 设计中的记录系统具有良好的扩展性, 通过增加Flash芯片的并联数和位宽, 可以进一步提高存储速度; 通过增加Flash芯片的串联数, 可以扩展记录系统的存储容量, 以满足未来记录系统的要求。 随着NAND型Flash芯片的发展, 其在弹载记录系统中的应用将会越来越广泛。

    参考文献:

    [1] 王晖, 高先锋. 弹载记录系统的发展趋势[J]. 遥测遥控, 2009(4): 69-72.

    [2] 胡世明, 康怀祺, 滕云龙. 高速大容量存储系统的应用设计[J].火控雷达技术, 2012(1): 34-38.

    [3] 雷磊. NAND型Flash海量存储系统的设计与实现[D].北京: 北京理工大学, 2008.

    [4] Micron. 16Gb, 32Gb, 64Gb Asynchronous/Synchronous NAND Flash Memory Data Sheet[Z].Boise, Idaho:Micron Technology, Inc., 2011.

    [5] 陆浩, 王振占.高速大容量固态存储器设计[J].计算机工程, 2011, 37(15): 226-227.

    [6] 朱知博. 基于NAND Flash的高速大容量存储系统设计[J].现代电子技术, 2011(8): 170-173.

    [7] Cypress Semiconductor Corporation. CY7C68013A EZUSB FX2LP USB Microcontroller[Z].San Jose, California: Cypress Semiconductor Corporation, 2005.

    [8] 李强, 伍坚, 姚冬苹. CY7C68013芯片的USB接口固件设计[J].单片机与嵌入式系统应用, 2006(10): 70-72.

    [9] Altera Corporation. Stratix Ⅱ Device Handbook[Z]. San Jose, California: Altera Corporation, 2005.

    [10] 韩茜, 罗丰, 吴顺君. 高速大容量固态存储系统的设计[J].雷达科学与技术, 2005(2): 110-114.

    [11] 王诚, 吴继华, 范丽珍. Altera FPGA/CPLD设计(基础篇) [M].北京: 人民邮电出版社, 2011.