《电子技术应用》

高速CMOS图像存储与实时显示系统设计

2017年电子技术应用第6期
马 林1,2,李锦明1,2,张虎威1,2,侯天喜1,2,降 帅1,2
(1.中北大学 电子测试国家重点实验室,山西 太原030051; 2.中北大学 仪器科学与动态测试教育部重点实验室,山西 太原030051)
摘要: 针对遥测系统图像单元存在数据量大、速度快、无法直接存储显示等问题,设计了一种高速图像存储与实时显示系统。系统以Spartan 6系列现场可编程门阵列(FPGA)作为核心处理器,使用Full模式Camera Link接口采集CMOS相机输出的图像数据,利用DDR3乒乓缓存技术将图像数据写入由SATA控制器组成的磁盘阵列中,并且通过千兆以太网接口将处理后的数据上传至计算机;图像数据采用抽帧以及降低分辨率的形式,将其转换为1 024×768像素的VGA分辨率格式,最后通过VGA接口对图像进行实时显示。实验结果表明,该系统能够对分辨率为2 048×2 048像素、帧频为150 f/s的高速图像数据进行长时间存储与实时显示。
中图分类号: TN919.5
文献标识码: A
DOI:10.16157/j.issn.0258-7998.2017.06.002
中文引用格式: 马林,李锦明,张虎威,等. 高速CMOS图像存储与实时显示系统设计[J].电子技术应用,2017,43(6):7-10,14.
英文引用格式: Ma Lin,Li Jinming,Zhang Huwei,et al. Design of high-speed CMOS image storage and real-time display system[J].Application of Electronic Technique,2017,43(6):7-10,14.

Design of high-speed CMOS image storage and real-time display system

Ma Lin1,2,Li Jinming1,2,Zhang Huwei1,2,Hou Tianxi1,2,Jiang Shuai1,2
(1.National Key Laboratory for Electronic Measurement Technology,North University of China,Taiyuan 030051,China; 2.Key Laboratory of Instrumentation Science & Dynamic Measurement of Ministry of Education, North University of China,Taiyuan 030051,China)
Abstract: A high-speed image storage and real-time display system is designed for telemetry system of aiming at the problems of large data volume, high-speed and inability to store display directly. The system takes the Spartan 6 series FPGA as the core processor, and uses the full mode Camera Link interface to gather the image data of CMOS camera output. The system of possessing high-speed image storage and real-time display uses technology of DDR3 Ping-Pong cache to write image data into a disk array consisting of SATA controllers as well as through Gigabit Ethernet interface upload to computer after analysis and processing. Image data is converted to the VGA resolution format of the 1 024×768 pixels in the form of pumping frames and reducing resolution. Finally the system conduct the image real-time display through the VGA interface. What the experimental results show that the system can store and display the high-speed image data with 2 048×2 048 pixels and frame frequency with 150 f/s resolution.

0 引言

    在航空航天图像监测领域,高分辨率、高帧频的工业相机有着广泛的应用,它可以有效捕捉高速飞行器的飞行姿态,最终通过计算机对图像进行分析与处理,提取出其运行速度、加速度等重要参数[1]。随着工业相机分辨率以及帧频的不断提高,对图像存储系统的要求也越来越高,特别是在载人航天测试领域,存储系统必须能够应对复杂的工况环境。传统的Nand Flash以及机械硬盘等存储介质存在容量小、操作复杂以及抗干扰能力差等缺点,而SSD固态硬盘凭借其容量大、速度快、环境特性好等特点,在科研、航空航天以及军事测试等领域,有广阔的应用前景。

    现阶段,主要使用传统的Flash对图像数据进行采集。文献[2]和[3]采用Flash阵列进行数据的存储,虽然在一定程度上提高了读写速度,但是存在接口操作复杂、稳定性差等缺点。文献[4]使用图像采集卡进行图像数据的实时显示,增加了系统的体积与复杂度,而且图像的分辨率不高。本文通过采用FPGA对系统功能进行开发,利用4块SSD固态硬盘构成存储阵列对高速图像进行存储,可以在飞行器回收后读取原始图像数据,同时以抽帧并降低分辨率的形式对图像数据进行实时显示,以减小遥测数据回传时的带宽占用,实现了图像数据的大容量高速存储与实时显示,并且具有可移植性。

1 系统总体设计

    系统设计总体框图如图1所示。系统选用Point Grey公司生产的GZL-CL-41C6型号高速灰度相机,通过Camera Link接口发送图像数据和同步信号,串口接收相机控制命令,图像分辨率为2 048×2 048像素,帧频为150 f/s,像素格式为8 bit[5]。由于相机产生的数据量约为600 MB/s,而SATA2.0接口的单块固态硬盘的写入速度约为180 MB/s[6],所以使用4块固态硬盘构成RAID0阵列进行存储。系统采集工业相机输出的高速图像数据,并将数据发送到FPGA后分成两路,一路经过DDR3缓存后,并行存入固态硬盘整列中;另一路经过格式转换后存入DDR3缓存中,然后通过VGA接口实时显示图像数据。

htdz2-t1.gif

2 系统硬件电路设计

2.1 图像采集模块

    系统前端工业相机使用了8-tap模式输出像素数据,即一次输出8个像素数据,所以使用Full模式Camera Link接口电路。在Full模式下,Camera Link接口使用两个连接器,需要使用3个数据接口芯片、一个相机控制芯片和一个串行通信芯片。通过接口芯片将Camera Link电缆所传输的LVDS差分信号转换为FPGA可以直接进行处理的TTL电平信号。

    相机与FPGA连接示意图如图2所示。系统选用TI公司生产的DS90CR288A作为数据接收芯片,DS90LV-047ATM为控制芯片,DS90LV019TM为串行通信芯片。其中,D0~D23为数据信号,FVAL、LVAL、DVAL为同步信号,CC1~CC4为相机控制信号,SerTC与SerTFG为串行通信信号。

htdz2-t2.gif

2.2 VGA驱动电路

    FPGA的输出为3.3 V的电平信号,而VGA接口要求的输入信号为0~0.714 V的模拟信号,所以为了满足VGA显示要求,必须对FPGA的输出信号进行D/A转换,以实现0~0.714 V的模拟信号输入[7]。系统选用ADI公司生产的视频转换芯片ADV7123实现VGA驱动,由于相机输出的图像数据为灰度图像,所以将R、G、B三个通道中的任意一个与FPGA相连,并且将其他两路接地。本设计将FPGA输出与红色输入端口相连,并将未使用的绿色和蓝色模拟信号连接37.5 Ω终端电阻。

2.3 千兆以太网接口电路

    系统使用了Realtek公司生产的以太网收发器RTL8211EG实现千兆以太网数据传输。链路层、传输层以及网络层使用UDP/IP协议,由FPGA实现。RTL8211EG与FPGA的电路连接示意图如图3所示,RTL8211EG通过GMII接口与FPGA进行连接,主要用来连接以太网的MAC层和PHY层。当使用千兆以太网进行数据传输时,接口时钟为125 MHz。其中,接收时钟由RTL8211EG的E_RXC提供;发送时钟由FPGA的E_GTXC提供,接收与发送数据均在时钟上升沿进行采样。

htdz2-t3.gif

3 系统软件设计与仿真

3.1 图像实时显示模块

    系统相机输出的图像分辨率为2 048×2 048像素、150 f/s帧频的图像,无论是分辨率还是帧频都超过了通用VGA接口显示器的显示格式,所以可以采取抽帧并降低分辨率的方式对图像进行显示。

3.1.1 图像压缩单元设计

    系统对原始分辨率为2 048×2 048像素的图像进行如图4所示的缩小,将3×3范围内的9个像素数据合成为1个像素数据,最终得到分辨率为682×682像素格式的图像。为了降低噪声信号在图像中的影响,使用了对9个像素数据取中值的方式进行合成。

htdz2-t4.gif

    在FPGA程序设计中,使用了9个FIFO对算法进行实现,实现方法如图5所示。每个FIFO的大小为1 024×8 bit,通过9个FIFO对3行像素数据进行缓存。其中,首先用FIFO1、FIFO2、FIFO3分别存储第一行的第1、2、3个数据,紧接着再存储第一行的第4、5、6个数据,直到第一行存储完毕;之后使用FIFO4、FIFO5、FIFO6以相同的方式缓存第二行数据,FIFO7、FIFO8、FIFO9缓存第三行数据。前三行数据缓存完之后,再使用另外9个FIFO存储第4、5、6行数据,与第一组FIFO构成乒乓缓存结构。这样,每一组FIFO可以在一个周期读出需要处理的9个像素数据,并对这9个数据提取中值。

htdz2-t5.gif

    对于N为奇数的中值运算,若N为9,则需要比较的次数为36次,结合FPGA并行处理的优势,同时使用36个比较器,可以达到最大处理速度[8]。此外,VGA显示器分辨率为1 024×768像素,而经过处理后的图像分辨率为682×682像素,所以图像应在显示器中央显示,在进行VGA驱动显示时,可以将其他像素补0,即黑色图像。

3.1.2 抽帧缓存模块

    由于相机输出图像的帧频为150 f/s,而常用VGA分辨率格式的帧频一般都在75 Hz以下,为了匹配VGA接口分辨率,对相机图像进行抽帧缓存处理,每两帧抽取一帧,依次存入两片DDR3中,最终以1 024×768@75格式的VGA分辨率进行显示。

    抽帧显示时序图如图6所示。将相机帧同步信号FVAL进行4分频,得到抽帧控制信号F_Control,再生成一个以F_Control的边沿为复位信号的FVAL上升沿计数器CNT。当F_Control为低电平时,将CNT为1的帧图像存入缓存1;当F_Control为高电平时,将CNT为1的帧图像存入缓存2。读缓存与写缓存正好相反,在F_Control为低电平时读取缓存2中的数据;在F_Control为高电平时读取缓存1中的数据。

htdz2-t6.gif

    在程序设计时,对图像分辨率、图像缩放因子、图像帧频、抽帧系数等关键参数使用Verilog HDL语言中的`define语法进行宏定义,实现任意分辨率和帧频的图像格式转换,以便相机和显示器型号的改变以及系统移植。

3.2 图像存储模块

    系统以Spartan6-T系列FPGA中的GTP高速串行收发器为基础,实现SATA2.0控制器的物理层,并使用Verilog HDL语言实现链路层、传输层以及命令层的开发,最终实现SATA2.0协议的DMA传输。

    在进行图像存储时,首先将图像采集模块采集到的数据先通过异步FIFO进行位宽转换,系统使用FPGA中的MCB(Memory Controller Block)硬核来控制DDR3存储器,为了最大化带宽,其用户端口位宽选择为128 bit,所以需要把Camera Link接口64 bit位宽的数据转换为128 bit位宽数据,再把数据输入数据分配模块。数据分配模块流程如图7所示。系统使用的DDR3存储器型号为MT41J256M16,容量为512 MB,将其分为上、下半页,数据以256 MB为单位按照流水线方式依次存入两片DDR3之中。

htdz2-t7.gif

    系统使用的SATA控制器的寻址方式为逻辑块寻址,每个逻辑块的大小为512 B。为了最大化利用存储带宽,使用突发读写模式,其中写突发读写控制端口cmd_bl的位宽为18 bit,最大读写深度为262 144,一次可以读写262 144×512 B,即128 MB的数据。硬盘存储数据分配流程图如图8所示,以128 MB为单位将DDR存储器每半页再次分块,SATA控制器0~SATA控制器4分别按照命令读取DDR3_0和DDR3_1中的数据,并以流水线的方式存入固态硬盘中。

htdz2-t8.gif

4 系统测试

    为了验证系统功能的正确性,对系统存储模块以及显示模块分别进行了测试。使用三星公司的750 EVO固态硬盘进行测试,在SATA控制器数据端口插入触发信号,当控制器读取或写入硬盘数据时,记录数据流量及时间,当计满1GB的数据后,计算读写速度,同时对计数器清零,之后将速度信息通过串口模块发送到上位机。系统存储模块读写速度测试如图9、图10所示。

htdz2-t9.gif

htdz2-t10.gif

    通过Camera Link串行通信芯片发送命令,将相机图像设定为测试图像。相机测试图像在同一行中灰度值逐渐递减,可以清晰地反映图像数据的传输过程,并且可以根据每一个像素的相邻数据判断图像传输是否发生错误。通过上位机回读显示的图像与实时显示的图像均显示良好,没有发生像素缺损和错位现象。

5 结束语

    本文设计了一种高速CMOS图像存储与实时显示系统,主要包括系统图像接口模块、VGA驱动电路以及图像回读模块等硬件电路,同时对图像显示模块及存储模块的软件进行设计。经过读写速度测试以及图像显示测试,表明该系统可以对分辨率为2 048×2 048像素、帧频为150 f/s的高速图像进行存储与实时显示,具有较高的可移植性以及实用价值。

参考文献

[1] 韩帅.基于工业相机的图像采集与回放系统研究[D].太原:中北大学,2015.

[2] 张惠臻,周炎,王成.基于NAND Flash的嵌入式大规模数据存储机制[J].华中科技大学学报(自然科学版),2017,45(1):46-51.

[3] 徐永刚,任国强,吴钦章,等.NAND Flash图像记录系统底层写入控制技术[J].光电工程,2012,39(9):138-144.

[4] 马志刚,刘文怡,凌伟.基于PCI和LVDS的高速数据存储系统的设计[J].电子技术应用,2014,40(4):80-83.

[5] BARRERA E,RUIZ M,SANZ D,et al.Test bed for real-time image acquisition and processing systems based on F1exRI0,Camera Link and EPICS[J].Fusion Engineering and Design,2014,89(5):633-637.

[6] 刘伟.SATA接口双硬盘控制技术研究与实现[D].太原:中北大学,2016.

[7] 吴伟学.基于FPGA的图像采集与处理系统设计[D].广州:华南理工大学,2015.

[8] 李飞飞,刘伟宁,王艳华.改进的中值滤波算法及其FPGA快速实现[J].计算机工程,2009,35(14):175-177.



作者信息:

马  林1,2,李锦明1,2,张虎威1,2,侯天喜1,2,降  帅1,2

(1.中北大学 电子测试国家重点实验室,山西 太原030051;

2.中北大学 仪器科学与动态测试教育部重点实验室,山西 太原030051)

继续阅读>>