红外相机数据高速实时存储技术
2011-08-09孟令军胡肖斌尹维汉
严 帅,孟令军,胡肖斌,尹维汉
(中北大学 仪器科学与动态测试教育部重点实验室 电子测试技术国家重点实验室,山西 太原 030051)
责任编辑:孙 卓
0 引言
在航天航空技术领域,经常需要采集大容量高精度的红外图像信息,对于有些信息专业人员无法现场进行数据处理,只能先存储备份,然后读取分析采集到的图像数据并还原显示在计算机上。由于图像传输速度快、容量大,而Flash的存储速度一般不超过40 Mbyte/s,本文充分利用乒乓缓存的思想对高速数据流进行实时无缝缓存,避免了图像快速传输过程中的丢数现象,利用流水线技术写Flash,解决了Flash写入速度的限制。与传统的存储系统相比,该系统具有存储速度快、可靠性强、稳定性高、适用范围广等优点。
1 系统组成及设计框架
系统采用Altera公司Cyclone II系列EP2C35F484C6芯片作为主要控制核心[1],红外相机捕捉到的视频图像信号通过LVDS接口电路进入解码模块,经FPGA处理过的图像数据通过乒乓结构实时无缝缓存,最后用流水线写Flash技术将图像数据存储在NAND Flash闪存阵列。存储的图像数据在需要时可用分析软件通过FT245控制的USB 2.0接口读出并将图像显示在计算机上,系统组成框图如图1所示。
1.1 图像解码模块
本系统采用National公司差分接收芯片DS90CR216作为视频解码芯片,经LVDS接口电路解码后的信号主要有帧同步信号(vsync)、行同步信号(hsync)、像素时钟(mclk)以及8位数据,其中,像素时钟为29.5 MHz,行同步周期为64μs,高电平有效,每行有384个有效像素,帧同步周期为20 ms,高电平有效,每帧有289行有效数据,图像数据在时钟上升沿变化,因此选择2片128 kbyte的SRAM即可满足要求。解码后图像信号时序如图2所示。
1.2 数据无缝缓存设计流程
乒乓缓冲技术是FPGA设计中最常用的一种数据缓冲方法,其最大的特点是能实现实时无缝缓冲与节约缓冲区空间[2]。
本系统每秒传输50帧图像,每帧期间帧同步高电平时间约为18.5 ms,低电平时间约为1.5 ms,如果在帧同步低电平1.5 ms的时间内从SRAM中将数据转存至Flash,会产生丢数。因此,为了给数据处理单元赢得更多的处理时间[3],采用的乒乓缓冲模块工作流程为:当帧同步信号为高电平时,将经过FPGA处理过的图像数据写入SRAM1,同时地址计数器1开始递加计数,此时地址计数器的值一方面为FPGA数据处理模块提供触发参考,另一方面也为缓存空间提供了参考。当帧同步为低电平时,FPGA控制乒乓缓存逻辑切换总线开关,开始选择SRAM2为写空间,将SRAM1切换为读空间以读取缓存在SRAM1中的图像数据,此时地址计数器1开始递减计数,当SRAM1中的数据全部读出后,地址计数器1计数到0。当帧同步信号再次变高后,将图像数据写入SRAM2,地址计数器2递加计数,等待帧同步为低电平时,切换读写信号,选择SRAM2为读空间,SRAM1为写空间,开始读取SRAM2中的数据同时地址计数器2的值开始递减计数,同样当SRAM2中的数据全部读出后,地址计数器2计数到0。待帧同步又一次为高电平时,将图像数据写入SRAM1中,地址计数器1开始递加计数。如此循环切换读写空间,将缓存在2片SRAM中的数据读出并存入Flash中。乒乓操作读写时序如图3所示。
2 Flash阵列流水线存储流程
2.1 芯片简介
选用三星公司容量为1 Gbyte的闪存K9K8G08U0A,它由8192个存储块组成,每个存储块分为64页,每页容量为2 kbyte,其外部有8个I/O引脚和6个信号管脚,而这8个I/O脚既是命令和地址的输入引脚,也是数据的输入输出端口。该闪存是一种高密度非易失性的存储器,主要特点为:1)读、写(编程)操作均以页为单位,擦除以块为单位。2)读取每页时间为20μs,页编程的典型时间是200μs,块擦除的典型时间是1.5 ms。3)页寄存器写入最低时间是50μs,页编程的最大时间是700μs,块擦除的最大时间是2 ms。由于每次进行页编程之前都需要写页地址,不难计算出写一页所需时间为250~750 μs,写入的速度约2.6000~7.8125 Mbyte/s。实验证明,页编程的时间正是限制Flash存储速度的关键因素,因此在对其进行页编程操作时采用流水线技术来实现高速大容量Flash的存储[4]。
2.2 Flash存储设计流程
本系统所采用的流水线技术主要分为3个步骤实现:1)向Flash加载编程指令、地址以及数据;2)待加载完成之后,Flash芯片会自动执行将载入到页数据寄存器的数据写到内部存储单元的编程操作[5];3)当自动编程结束后,由FPGA下发“70h”读状态指令以检测Flash的I/O口最低位是否为“0”,如果是,表示编程成功,页计数器递加并继续对下一页编程,当页计数器从0加到63后,页计数器清0,块计数器加1,继续进行页编程操作,当块计数器递加至8192块时,停止对Flash的页编程操作,等待上位机的读Flash指令。流水线存储的示意图如图4所示。
由于每次对Flash加载数据和地址后总是有大概200μs以上的时间花费在芯片编程上,所以可用多片1 Gbyte的Flash组成流水线工作模式:在第1片加载完成执行编程时可以加载第2片Flash,待第2片Flash编程时又加载第3片Flash,依此操作执行,实现时间的复用,缩短了Flash阵列的有效页编程时间,从而提高了写Flash的整体速度。如果工程项目要求写Flash的速度应为60 Mbyte/s,用5片Flash组成流水线操作模式,那么每片的速度应为12 Mbyte/s,经计算加载一页数据到Flash寄存器的时间大概为162.76 μs,而700 μs÷162.76 μs≈4.3,所以采用5级本系统的流水线技术是可以满足设计要求的。
3 实验结果
本系统经多次实际存储红外相机捕捉视频图像的实验,用读数软件从Flash中将数据读取出来后再经过Mat⁃lab处理还原,验证了系统的可行性和可靠性。图5为捕捉到的一张男士挥手的红外图。
4 小结
实验结果表明,本系统具有以下优点:1)以FPGA为逻辑控制核心,采用乒乓缓存模块将红外相机下发的高速大容量数据进行缓存能避免因传输速度太快而出现数据丢帧的现象。采用流水线阵列存储,打破了传统存储方式下Flash存储速度不能超过40 Mbyte/s的束缚,实现了高速大容量存储技术的突破。2)系统占用体积小,成本低,硬件电路简单,调试方便,能完成大量视频数据的无缝缓存和实时存储。3)为高速大容量数据可靠记录、高速实时准确存储提供了有效的技术方案,并在多次实际应用中以其稳定、可靠的性能得到广泛的应用。
[1]宋海吒,唐立军,谢新辉.基于FPGA和OV7620的图像采集及VGA显示[J].电视技术,2011,35(5):45-47.
[2]姚远,李辰.FPGA应用开发入门与典型实例:修正版[M].北京:人民邮电出版社,2010.
[3]谭树人,张茂军,徐伟.多传感器同步图像采集系统的设计[J].电视技术,2006,30(9):84-87.
[4]杨海涛,苏涛.基于FPGA的高速大容量固态存储设备设计[J].国外电子元器件,2007(5):68-72.
[5]刘瑞,黄鲁,陈楠.基于Flash的高速大容量固态存储系统设计[J].测控技术,2009,28(4):10-14.