基于USB 2.0的红外数字图像注入式仿真器设计
2014-06-25汤心溢高思莉
张 昊,汤心溢,李 争,高思莉
(中国科学院上海技术物理研究所,上海200083)
1 引言
红外光电成像探测设备通常是由红外成像传感器和实时图像信号处理平台两部分构成。实时图像信号处理平台的主要任务是将红外成像传感器发送过来的图像信号进行分析处理,利用相应的算法,从复杂背景中检测出特定目标,对目标进行跟踪或识别。红外光电成像探测设备的性能好坏在很大程度上取决于目标检测和跟踪算法的实现情况,在研制过程中需要反复验证。正因为如此,各种仿真试验和仿真系统的设计便应运而生了。
仿真试验主要有两种类型,数字注入式仿真与半实物仿真[1]。前者花费低且灵活性高。本文将提出一种基于USB2.0的红外数字图像注入式仿真器的实现方案。该方案的仿真数据源为实际外场试验获得的红外图像数据,真实可靠;通过USB总线从主机获得仿真数据,利用大容量FIFO作为缓存,保证数据高速连续传输;同时由FPGA完成传输控制和接口工作;最后通过Camera Link接口输出有效的仿真图像。
2 技术指标与总体方案
本文设计的红外注入式仿真器技术指标如下:
(1)红外注入式仿真器接收PC机发出的红外仿真图像数据,图像分辨率为320×256,帧频为100 f/s,数据精度为14-bit;
(2)仿真器能将接收到的图像数据按照Camera Link协议高速、实时、不间断地传送给后级红外成像设备,保证传递的过程中没有丢帧的情况发生。Camera Link输出时钟频率不超过20 MHz。
根据技术指标要求,所设计的系统由图像注入控制软件、USB2.0 接口、FPGA、Camera Link 接口组成。系统结构框图如图1所示。
图1 系统结构框图
如果将320×256像素图像的每个像素用2byte来表示,即最高2位添0扩展,那么结合帧频要求算出的数据传输速率S为:
USB2.0最高总线传输速率能达到60MByte/s,考虑到协议开销、数据发送进程优先级等因素,实际的数据速率要低一些[2]。经测试,CYPRESS 公司的CY7C68013A使用批量(Bulk)传输,可达到20MByte/s的平均传输速度,满足指标中对传输速率的要求。其他高速总线(比如PCI总线)虽然也能达到设计要求,但是不如USB接口应用广泛,携带方便。
FPGA具有可重复配置,实时性控制性能好的特点。所以用它来完成与USB接口、数据传输缓存模块、Camera Link接口的数据交换控制和时序逻辑控制。
3 红外注入式仿真器
红外注入式仿真系统的设计根据功能分工可以划分为:USB2.0固件设计,FPGA模块设计以及图像注入控制软件设计。其中FPGA模块设计又可分为图像数据接收模块、缓存模块和发送模块三个部分。
3.1 USB2.0 固件设计
CY7C68013A是CYPRESS公司EZ-USB FX2系列芯片中使用最广泛的一款。它支持USB的四种数据传输类型:控制传输、批量传输、中断传输和同步传输。其中批量传输适合传输大量数据,且能够保证数据的准确性。
当数据通过USB接口在主机和外部逻辑设备(比如FPGA)之间传输时,通常不需要FX2芯片的CPU参与,而是经过FX2内部端点FIFO来传输。对于外部逻辑器件来说,这些端点FIFO特别为其提供了时序信号、握手信号,读写信号和输出允许信号等。这种状态下,FX2即工作在 Slave FIFO模式[3]。其数据传输示意图如图2所示。
图2 Slave FIFO的传输示意图
通过对固件相关寄存器的配置即可以控制FX2芯片工作在Slave FIFO模式下。而本设计在此基础上进一步提出了一种实现设备绑定的方法,以提供软硬件加密功能。由于仿真图像数据都是通过真实外场试验获得,其数据内容和数据格式具有一定的保密性,如果能够将上位机软件和硬件测试平台做一个绑定,防止使用任意相似硬件平台即可读出仿真数据,这在实际应用中具有非常大的意义。
本设计在图像注入控制软件中增添了发送Vendor专用请求,通过 CY7C68013A的控制端点EP0传递,等待USB设备的响应。正常情况下,设备响应主机Vendor请求,将一个字节的“密钥”放在控制端点 EP0的 Buffer中,并设置 EP0BCH和EP0BCL寄存器告知主机已向Buffer提交一个字节数据;主机通过 Read操作,读取设备提交的“密钥”,判断是否为绑定设备。这种主机 -设备的问-答机制通过固件下载的形式固化在仿真器中,而未绑定的其他任意USB硬件平台是很难做出相同应答或者提交正确“密钥”的。
3.2 图像数据接收模块
图像数据接收模块实现从Slave FIFO不间断读取主机发送过来的数据,并存入IPFIFO缓存模块中。其在整个FPGA时序设计中的位置如图3所示。
图3 FPGA各模块关系图
参考CY7C68013A的数据手册可知,Slave FIFO同步读操作时序图如图4所示。
图4 Slave FIFO同步读操作时序图
SLRD、SLOE等引脚的电平高低必须统一在IFCLK的有效时钟沿变化。因此本设计将CY7C68013A的IFCLK引脚输出驱动FPGA的输入引脚,经DCM的全局缓冲优化后作为接收模块的时钟信号。在读取有效数据阶段,SLRD的时序设定为两个IFCLK周期读取一个字节数据,所以接收模块最高数据读取速度为24MByte/s>15.625MByte/s。
3.3 图像数据缓存模块
PC机的操作系统是多任务的,发送的数据先经过USB缓冲区Slave FIFO,而USB2.0的批量传输不具有严格的实时性,会有突发读写操作产生,并且两次突发读写之间会有随机的空闲时间间隔,最终导致发送到FPGA的图像数据传输速度会出现时快时慢的情形。因此不能将接收自USB2.0的图像数据直接输出,必须有一个较大的缓存来暂时保存这些数据。
本次仿真器设计使用的Spartan6系列FPGA内部配备有32个18kbit的Block RAM,考虑利用IP核生成FIFO模块作为缓存,充分利用FPGA内部资源,在保证达到既定性能要求的前提下降低系统复杂度。FIFO的写入深度为8位,读出深度为16位。对于FIFO容量的设定,经过测试得知传输所用端点缓冲区EP2为空的最长时间不超过1 ms,在前端模块保证平均发送速率大于15.625MByte/s条件下,32kByte的FIFO缓冲区可以满足要求。
3.4 图像数据发送模块
Camera Link是一种专门针对机器视觉应用领域的串行通信协议,它在Channel Link协议的基础上多加了6对差分信号线。Camera Link协议使用低压差分信号LVDS传输,全部的发送信息包括14位数据信号和4位视频控制信号。其中视频控制信号包括:帧同步信号(FVAL),行同步信号(LVAL),数据有效信号(DVAL)和像素时钟信号(CLOCK)[4]。
要求发送的图像共有320×256=81920个像素,帧频为100 f/s,为满足低于20 MHz这一指标,仿真器设定的分频后CLOCK时钟频率为10 MHz,按照每个像素时钟信号上升沿发送一个像素的方式,理论上如果不停地发送有效数据,帧频最高可以达到122 f/s。通过FVAL,LVAL,DVAL信号的时序控制,适当增加一定量的无效像素时钟周期,可以实现将帧频稳定在100帧/s左右。
3.5 图像注入控制软件设计
红外注入式仿真器需要PC主机一直不停地发送数据,操作耗时较长,如果不作特殊处理只是让发送函数处于while循环中,那么一旦发送开始,整个系统都会等待数据发送操作,而无法响应键盘、鼠标等动作。使用多线程技术,将耗时长的操作置于一个新的线程中,可以很好地避免这种情况,提高应用程序响应能力,使得软件设计更加稳定、可靠[5]。同时为了保证PC机发送图像数据的实时性,将发送线程的优先级设为最高。
进程是资源分配的基本单元,创建和切换进程会消耗比较多的内存和资源。而线程是进程内一个相对独立的、可调度的执行单元。它属于某一个进程,并与进程内的其他线程共享进程的资源和同一地址空间。使用多线程技术可提高应用程序的响应能力,当进程的一个线程被阻塞的时候,该应用程序还能继续运行。同时由于线程之间资源共享的特点,使得一个应用程序可以有多个占用相同地址空间的不同线程在运行。在软件设计时,遇到耗时的消息处理,多线程机制是个不错的选择。
本设计中,主线程负责设备初始化、载入图像文件以及启动从线程,实现人机接口,等待用户操作;从线程实现每一帧图像数据的高速、准确传输,通过调用Bulk传输的相关函数,以一定的数据格式向USB接口传输红外图像[6]。
4 试验结果及分析
红外注入式仿真器的试验测试主要是观察连续多帧的红外数字图像能否成功注入到红外成像探测设备中,并且以要求的帧频速率连续播放,即一段完整的视频。因此后端接收部分可以采用图像采集卡代替红外成像探测设备[7]。本次试验使用的是Camera Link图像采集卡。
打开图像注入控制软件,界面如图5所示。
图5 图像注入控制软件界面
上述界面中,“载入图像文件”将仿真图像数据读入到PC机开辟的内存单元中;“打开设备”将调用函数初始化USB设备,若初始化成功,发送Vendor专用请求等待设备应答“密钥”,判断是否为绑定的设备。若判断结果为肯定,将弹出对话框“设备打开成功并已识别!”;否则界面上的所有按钮控件将不被使能。
加载图像文件并成功打开设备后,即可点击“BULK开始”注入图像。
接收端使用专业软件Sapera CamExpert观察采集卡所得到的数字图像。发送端连续传输2100帧320×256的红外灰度图像,数据精度为14 bit,抓取到的其中一帧图像显示如图6所示。
图6 采集卡采集到的图像
采集到的红外图像为空中目标,采集卡软件测得的帧频速率为100.0 f/s,满足设计要求。
为了测试仿真器稳定性,在不同时间段多次发送同一段视频图像信号,通过连续拷机,发现视频播放流畅,图像稳定可靠,无抖动及丢帧现象。记录下每次测试的传输时间,得到试验结果如表1所示。
表1 实测红外注入式仿真器试验结果
测试中平均传输帧频可以达到100.2 f/s,达到预期技术指标的要求。
5 结论
红外成像目标探测是当今信息对抗领域的关键技术和研究热点。本文设计了一种基于USB2.0的红外数字图像注入式仿真器实现方案,经过验证,输出图像连续无间断,稳定性高,实时性好,能够为红外图像实时信号处理平台提供一个很好的仿真环境,大大缩短设备的开发周期,节约开发成本,具有很大的实用价值。
[1] James A.Buford,Jr,David E.King,Mark H.Bowden.Low-cost real-time infrared scene generation for image projection and signal injection[C].SPIE,1998,3368:290 -299.
[2] Jan Axelson.USB complete:the developer's guide,fourth edition[M].Li Hongpeng,et al Transl.Beijing:Posts &Telecom Press,2011.(in Chinese)阿克塞尔森.USB开发大全,第四版[M].李鸿鹏,等译.北京:人民邮电出版社,2011.
[3] Cypress Semiconductor Corporation.CY7C68013A EZ -USB FX2LP USB microcontroller high-speed USB peripheral controller.(38 - 08032)January 26,2006,http://www.cypress.com.
[4] Wang Xiaoyan,Zhang Huixin,Sun Yongsheng,et al.Design of numeral picture signal source based on camera link standard and FPGA [J].International Electronic Elements,2008,16(7):59 -61.(in Chinese)王小艳,张会新,孙永生,等.Camera Link协议和FPGA的数字图像信号源设计[J].国外电子元器件,2008,16(7):59-61.
[5] Yu Yang,Gao Sili,Tang Xinyi.Research on real- time simulation technologies for IR system based on digital signal injection [J].Semiconductor Optoelectronics,2008,29(2):272 -275.(in Chinese)于洋,高思莉,汤心溢.数字注入式红外实时仿真技术研究[J].半导体光电,2008,29(2):272 -275.
[6] WangXianjun,Yuan Xianghui.Study on image dynamic display of infrared system[J].Laser& Infrared,2007,37(3):285 -287.(in Chinese)王贤均,袁祥辉.实时红外系统图像动态显示的研究[J].激光与红外,2007,37(3):285 -287.
[7] Guan Muqiang.Design and implementation of IR image injection system[D].Changchun:Changchun Institute of Optics,Fine Mechanics and Physics,Chinese Academy of Science,2011.(in Chinese)管目强.红外图像注入系统的设计及实现[D].长春:中国科学院长春光学精密机械与物理研究所,2011.