USB 2.0工业相机的图像采集鲁棒性研究
2016-10-21田劲东
李 东,陈 烁,田劲东,田 勇
深圳大学光电工程学院,广东深圳 518060
USB 2.0工业相机的图像采集鲁棒性研究
李东,陈烁,田劲东,田勇
深圳大学光电工程学院,广东深圳 518060
针对通用串行总线(universal serial bus, USB)2.0工业相机传输带宽使用接近满载时,出现图像数据丢失现象进行深入分析,提出一个新的整体解决方案,包括3部分:利用帧校验的方式实现图像数据的帧同步,使系统具备容错校正机制;添加数据缓存模块克服非实时操作系统轮询工作模式对数据传输的影响;通过数据钳位的方式消除USB 2.0非归零反向编码方式对传输带宽的影响,保证传输带宽的稳定. 在此基础上,研制一款1 280×1 024@30 帧/s的USB 2.0工业相机. 实验结果表明,该相机传输速率可达39 Mbyte/s,实现了接近USB 2.0实际带宽上限的稳定传输,具备图像帧自动纠错功能,解决了传统方案里图像传输丢帧和图像错乱的问题.
集成电路技术;通用串行总线2.0;现场可编程门阵列;工业相机;帧同步;先入先出队列;非归零反向编码;鲁棒性
通用串行总线(universal serial bus, USB)具备传输速率快、可靠性强、价格低廉、支持即插即用以及便于扩展等特点,现已广泛用于外设与计算机的数据交换[1],近年来,在工业相机应用领域也出现了USB的身影.然而,在工业领域,对于图像采集的要求越来越高,如实时性、高速率传输和系统尺寸要求等,如何确保USB工业相机的图像采集鲁棒性,成为一个不可回避的问题.在实际应用过程中,如果采取直传直取的方式,将会出现图像数据丢失的情况,特别是当所需传输带宽接近满载时,该情况更为凸显.
针对上述问题,本研究分析其根源,认为主要受帧同步的实现方式、数据缓存、USB 2.0非归零反向编码(no return to zero inverse code, NRZI)方式等的影响.为此,提出相应的解决方案,研制了一款1 280×1 024@30 帧/s的USB 2.0工业相机,并进行实验测试.结果表明,所提方案传输速率达到39 Mbyte/s,实现了接近USB 2.0实际传输带宽上限的稳定传输,解决了传统方案里图像传输丢帧和图像错乱的问题,并使相机具备图像帧自动纠错功能.
1 帧同步的实现
在图像采集的过程中,需实现帧同步,即确定一帧图像数据的起始与终止,而所采取的帧同步方式将会影响图像采集的鲁棒性,这对基于USB 2.0的图像采集也不例外.
一种常用的帧同步方式可通过触发USB 2.0控制器外部中断的方案来实现.根据图像传感器的时序特点,如图1,图像的场信号与行信号均为高电平有效,当场信号处于上升沿时预示着一帧图像的起始位置,下降沿时预示着一帧图像的结束.通常情况下,USB 2.0工业相机会使用到现场可编程门阵列(field programmable gate array, FPGA)等可编程逻辑器件,若FPGA检测到场信号上升沿,进而触发中断,使能USB 2.0控制器的片选信号,以此处作为图像采集的起始位置,之后通过数据包计数的方式确定一帧图像的数据,再将其显示,即可实现图像的帧同步.然而,这种帧同步方式未能使图像采集具备鲁棒性,一旦发生图像数据的丢失,将出现错帧现象,图像被分割成多部分,即一帧图像中既包含了当前帧的数据又包含了上一帧的数据,由于该方案并不具备容错校正机制,所以只能通过再次重启传输来消除错帧现象.
图1 CMOS图像传感器时序图Fig.1 Timing diagram of CMOS sensor
为此,本研究提出一种利用帧校验实现帧同步的方案.当检测到一帧图像数据的起始位置时,触发FPGA填充一段特殊的数字序列.为确保FPGA有足够的时间填充数据,选择场下降沿做为一帧图像数据传输的起始,该段序列可称为“帧头”.上位机通过校验“帧头”数据来确定一帧图像的起始位置,若在下一个“帧头”到来之前,接收到的数据量满足一帧图像对应的数据量,则将该图像进行显示;否则,认为图像数据在传输过程中发生数据丢失,将舍弃该帧图像数据,从而使图像数据传输具备容错校正机制,以此方法确保上位机采集到的图像都是正确的,从而提升了图像采集的鲁棒性.
2 数据缓存
通过帧校验的方式在一定程度上能提升图像采集的鲁棒性.但通过分析可知,若在数据采集过程中,持续发生数据丢失,将会出现无法采集到图像的现象.
表1展示了USB 2.0工作于不同传输类型时的数据传输速度.由表1可知,当USB 2.0工作于批量传输时的传输速度最快,此时的带宽可达53 Mbyte/s.但由于计算机系统会带有一些输入/输出的人机接口设备,如鼠标和键盘等,会占用一部分USB 2.0的带宽,实际用于数据传输的最大带宽应以42 Mbyte/s做为参考[2].然而,实验表明,当数据传输使用直传直取的方式,且所需带宽接近USB 2.0实际传输带宽上限(>32 Mbyte/s)时,数据丢失将非常严重.
分析发现,上述问题的根源并非带宽不足,而是此带宽均为平均带宽,并非实时带宽.同时,Windows操作系统是一种基于时间片轮询多任务非实时操作系统[3],当多个任务同时运行时,基于USB 2.0的图像采集线程有可能在某些时刻未能及时读取来自USB 2.0接口的数据,而对一个实时图像采集系统而言,来自前端图像传感器的数据是不间断传输的.虽说一般情况下,USB 2.0控制器具备一定容量先入先出(first input first output, FIFO)队列的数据缓存空间,但容量较小,随时都可能发生数据的溢出和覆盖,从而导致错帧,进而影响图像采集的鲁棒性.
表1 USB 2.0的数据实际最大传输速度[2]
综上可见,若额外添加数据缓存空间,则可降低数据溢出覆盖的风险,提高图像采集的鲁棒性.常见的数据缓存方案可通过FPGA实现对静态随机存取存储器(static random access memory,SRAM)[4]或双倍速率同步动态随机存储器(double data rate,DDR)[5]的读写控制,以实现异步FIFO功能,虽说这可使缓存的空间较大,但该方案需要较多的FPGA逻辑资源,因此要选用较高端的FPGA.此外,由于USB 2.0的带宽和传输速度限制,只需较小的数据缓存空间即可满足稳定传输的需求,所以该方案会造成资源浪费,令成本增加,且该方案亦会增加电路系统的复杂度,提高了空间需求,在一些要求系统尺寸较小的情况下,该方案并非较佳选择.
为此,本研究提出使用FPGA内部资源实现数据缓存的方式来规避使用SRAM和DDR器件的不足.通过使用FPGA厂家提供的异步FIFO IP核(intellectual property core)例化1个FIFO,用以增大数据缓存的空间,只需使用FPGA内部的随机存取存储器(random access memory,RAM)资源,无需外部存储器件的支持,且因该FIFO为异步的,其读写控制和读写时钟均可独立,所以不会影响到数据的不间断传输,从而保证了图像采集的实时性.该FPGA 中的FIFO操作需配合USB 2.0控制器进行.以CY7C68013为例,其内置的FIFO标志位FLAGA和FLAGB可分别配置为FIFO满信号和FIFO将满信号,将满标志位使能的阈值是可编程的.此处需注意:由于标志位传递至FPGA具有一定的延迟,若使用FLAGA将有可能导致FIFO溢出,所以需使用FLAGB作为判据.此外,还需使用FPGA中的FIFO空标志位rdempty来判断是否可对其进行读操作,以避免读取无效的图像数据.实现数据缓存的流程如图2.
图2 数据缓存流程图Fig.2 Flow chart of data cache
3 NRZI编码的影响
USB 2.0作为一种串行总线,使用的编码方式为NRZI[6],其基本原理如图3.用信号的翻转代表一个逻辑,信号保持不变代表另外一个逻辑.在USB 2.0串行总线的传输中,电平翻转代表逻辑0,电平不变代表逻辑1.
图3 NRZI的基本原理Fig.3 The basic principle of NRZI
在基于NRZI的传输过程中,发送者先发送一段固定的比特码,称之为同步域;接收者通过该同步域计算得出发送者的发送频率,并在传输过程中通过电平的翻转不断调整同步频率,以确保数据传输的正确性.然而,在USB 2.0传输的过程中,可能会出现一种较极端的情况,即传输的数据信号是很长的一段逻辑1,即使有同步域进行频率的匹配,但由于缺乏电平翻转的校准,难免会出现误差.所以,在NRZI的传输协议中,使用了位元填塞(bit-stuffing)机制来解决该问题,即如果传输的数据中有连续6个逻辑1,则在第6个逻辑1后插入1个逻辑0,使信号强制翻转,进而达到同步频率的校正,接收方在接收时剔除该逻辑0,则可得到原始数据.图3(b)为触发位元填塞机制时的数据传输.
分析图3可知,位元填塞机制会影响USB 2.0的实际带宽,因为强制填塞的逻辑0也占用传输带宽,且此码为无效编码,当传输的数据为长时间的逻辑1时,该无效的逻辑0将不断出现,即每7个数据中有1个数据无效,在此情况下数据传输的带宽将下降1/7.而在图像采集的过程中,该情况是可能出现的,如图像过曝时,以模数转换器(analog-to-digital converter, ADC)分辨率为8 bit为例,则此时传输的大部分数据均为255,换算成二进制即为11111111,此时将会不断触发位元填塞机制.以全帧图像过曝做个简易分析,此时USB 2.0的有效带宽为原来的6/7,对于数据传输所需带宽接近满载的情况,将会因带宽不足而发生严重的数据丢失.
为消除NRZI编码带来的影响,本研究提出一种数据钳位的方案,以消除NRZI编码方式对USB 2.0传输带宽的影响.该方案在FPGA中将来自前端图像传感器的数据限制在0~248范围内,248对应的二进制数为11111000,避免了长时间的逻辑1,从而降低触发位元填塞机制的几率.当数据上传至上位机时,再将其映射到0~255范围,从而使基于USB 2.0的数据传输具备较高且稳定的有效带宽.
4 系统实现
本研究所研制的USB 2.0工业相机的总体框架如图4.
图4 USB 2.0工业相机架构Fig.4 Architecture of USB 2.0 industrial cameras
实验中所使用的图像传感器为MT9M001,最大分辨率可达1 280×1 024,每个像素数据大小为1 byte,帧率可达30帧/s,全速运行时所需带宽为39 Mbyte/s,接近USB 2.0实际有效传输带宽42 Mbyte/s.如式(1),当发生位元填塞时,USB 2.0的有效带宽为原来的6/7,即36 Mbyte/s,无法满足MT9M001全速运行的需求的,所以该图像传感器可用于验证数据钳位方式的可行性,以及所采取的帧同步方式和数据缓存带来的改善.
(1)
实验表明,如果采用直传直取的方式,只能进行1 280×1 024@15帧/s稳定的图像采集,若只使用前文所提的帧同步和数据缓存方案,以1 280×1 024 @30帧/s采集过曝图像时,将会发生数据丢失的现象.
FPGA部分使用的是Altera MAX 10系列产品中的10M02SCM153I7G.该产品价格低廉,封装尺寸小,且集成了配置闪存,有利于系统的精简化,芯片上具备2 kbit 逻辑元件(logical element, LE)资源和108 kbit RAM资源,且有丰富的输入/输出(input/output, IO)接口,满足该系统的整体需求.
USB 2.0部分使用的是Cypress的CY7C68013 USB 2.0控制器.该控制器内部集成了1个USB 2.0收发器,串行接口引擎(serial interface engine, SIE),增强型的8051核,4 kbyte的FIFO存储空间、16 kbit RAM资源和通用可编程接口(general programmable interface,GPIF),I2C(inter-integrated circuit)总线接口等资源[7].通过以FPGA作为核心,CY7C68013配置于Slave FIFO从设备的工作模式,并配置其工作于批量传输的模式,根据表1,在该模式下USB 2.0具备较快的传输速度,具体硬件连接如图5.
图5 FPGA与CY7C68013的硬件连接Fig.5 Hardware connections of FPGA and CY7C68013
系统整体工作流程大致为:① CY7C68013通过I2C总线对图像传感器进行初始化配置,图像传感器采集的原始图像数据和其他相关信号传递至FPGA;② FPGA根据图像传感器的行场信号确定有效数据,并参照上述方案实现帧同步、数据缓存和数据钳位,再对CY7C68013进行读写控制,将有效数据经USB 2.0传递至上位机并进行显示.
通过设计相应电路,编写对应的FPGA代码和CY7C68013固件程序,完成系统搭建.表2是该系统FPGA芯片上资源的使用情况.其中,LE资源使用所占的比例为19%;RAM资源使用比例较高,为89%,98 304 bits即12 kbyte,这主要是为了在FPGA中生成较大的缓存FIFO;引脚使用率为32%,主要用于与图像传感器的连接和对CY7C68013 slave FIFO从设备的读写操作,使用1个锁相环(phase locked loop, PLL)资源,用于产生系统所需的时钟资源.
通过上位机可对所搭建的系统进行图像采集测试.图6为实际采图的情况,图的底部显示了图像采集的一些参数,本实验中图像分辨率为MT9M001的最大分辨率1 280×1 024像素,帧率(frame rate)为30,即相机工作于1 280×1 024@30帧/s状态.图中帧率显示非精确的30帧的原因是,上位机采用采集多帧图像数据取平均速率的方式计算帧率,所以帧率显示部分会有所波动.实验中以Success数目代表成功采集的图像数目,以Failed数目代表因发生错帧和数据丢失的图像数目,如图6下方的测试数据所示,经两个多小时的连续采集测试,Success的计数为23 6541,Failed的计数为0,帧率保持在30帧,说明通过上述方案,可使系统在充分利用USB 2.0传输带宽的同时,具备传输鲁棒性.
表2 FPGA片上资源的使用情况
图6 图像采集实验Fig.6 The experiment of image sampling
结 语
本研究针对USB 2.0工业相机传输带宽使用接近满载时,出现的图像数据丢失问题进行了深入阐述与分析,并基于此研究结果研制出一款1 280 × 1 024@30帧/s的USB 2.0工业相机.实验结果表明,该相机可充分利用USB 2.0的有效传输带宽,且具备图像采集容错校正机制,克服了图像传输丢帧和图像错乱问题,系统运行具备鲁棒性.
/
[1] 邓元策,王竹刚.基于USB 2.0协议的通用测控通信接口设计[J].电子设计工程,2015,23(3):139-143.
Deng Yuance, Wang Zhugang. Design of interface for TT&C system based on USB 2.0[J]. Electronic Design Engineering, 2015, 23(3): 139-143.(in Chinese)
[2] 邱文胜,牛丽红,苏秉华,等.基于ARM的嵌入式超分辨率复原系统设计[J].深圳大学学报理工版,2015,32(3):311-316.
Qiu Wensheng, Niu Lihong, Su Binghua, et al. Design of embedded super-resolution restoration system based on ARM[J]. Journal of Shenzhen University Science and Engineering, 2015, 32(3): 311-316.(in Chinese)
[3] 肖灵通,谢琪,何成,等.基于TMS320DM6446的USB数字视频采集显示技术的设计与实现[J].电子测量技术,2014,37(2):40-43.
Xiao Lingtong, Xie Qi, He Cheng, et al. Desgin and realization of USB digital video capturing and displaying based on TMS320DM6446[J]. Electronic Measurement Technology, 2014, 37(2): 40-43.(in Chinese)
[4] 黄振峰,陈海平,邓培,等.基于OpenCV与USB工业相机零件检测系统的图像处理研究[J].现代电子技术,2015,35(18):128-132.
Huang Zhenfeng, Chen Haiping, Deng Pei, et al. Image processing of detection system for parts in industrial camera based on OpenCV and USB[J]. Modern Electronics Technique, 2012, 35(18): 128-132.(in Chinese)
[5] 刘思久,赵蔚.实现USB 2.0高速数据传输的问题探讨[J].计算机工程与应用,2007,43(2):75-77.
Liu Sijiu, Zhao Wei. Research and discussion on high speed data transmission of USB 2.0[J]. Computer Engineering and Application, 2007, 43(2): 75-77.(in Chinese)
[6] 石凌,孙政顺.基于Windows NT的高速大容量数据接收与存储系统[J].计算机工程与应用,2002,38(11):135-137.
Shi Ling, Sun Zhengshun. A kind of Windows NT based high-speed real-time data acquisition and storage system[J]. Computer Engineering and Application, 2002, 38(11): 135-137.(in Chinese)
[7] 骆才华,叶玉堂,刘霖,等.解决线阵CCD大幅面USB扫描仪传输图像失真的新方法[J].电子器件,2013,36(1):33-37.
Luo Caihua, Ye Yutang, Liu Lin, et al. A new method to solve the large format linear CCD scanner’s image distortion in USB transmission[J]. Chinese Journal of Electron Devices, 2013, 36(1): 33-37.(in Chinese)
[8] 李玉发,孙靖国,李涛.一种高速大容量异步FIFO的实现方法[J].航空计算技术,2015,45(5):114-116.
Li Yufa, Sun Jingguo, Li Tao. A realization method of high speed and deep asynchronous FIFO[J]. Aeronautical Computing Technique, 2015, 45(5): 114-116.(in Chinese)
[9] 徐渊,周清海,张智,等.基于FPGA的实时CMOS视频图像预处理系统[J].深圳大学学报理工版,2013,30(4):416-422.
Xu Yuan, Zhou Qinghai, Zhang Zhi, et al. FPGA-based real-time CMOS video preprocessing system[J]. Journal of Shenzhen University Science and Engineering, 2013, 30(4): 311-316.(in Chinese)
[10] 董剑,李同合.位填充导致USB数据传输紊乱的一种解决方案[J].电子设计工程,2012,20(16):119-121.
Dong Jian, Li Tonghe. A solution for USB 2.0 data transfer disorder caused by bit stuffing[J]. Electronic Design Engineering, 2012, 20(16): 119-121.(in Chinese)
[11] 马凯,杨峰,王彦文.高速数据采集系统中USB 2.0传输接口研究[J].计算机工程与设计,2013,34(11):3862-3866.
Ma Kai, Yang Feng, Wang Yanwen. Research on USB 2.0 transfers interface of high speed data acquisition system[J]. Computer Engineering and Design, 2013,34(11):3862-3866.(in Chinese)
[12] 张超,李洪文,朱丹丹,等.基于USB的高速数据传输系统设计[J].计算机应用,2013,33(S2):54-56.
Zhang Chao, Li Hongwen, Zhu Dandan, et al. Design of a high-speed data transmission system based on USB[J]. Journal of Computer Applications, 2013, 33(S2): 54-56.(in Chinese)
【中文责编:英子;英文责编:子兰】
2016-06-19;Accepted:2016-07-19
The robustness of image capture of USB 2.0 industrial camera
Li Dong, Chen Shuo, Tian Jindong†, and Tian Yong
College of Optoelectronic Engineering, Shenzhen University, Shenzhen 518060, Guangdong Province, P.R.China
Image data loss occurs when the universal serial bus (USB) 2.0 transmission bandwidth is close to full load. In this paper, facts caused data loss are analyzed, and a new solution is put forward to avoid data loss for USB 2.0 industrial cameras. The new method includes three parts. Firstly, a frame check mode is established to guarantee image data frame synchronization, which creates a fault-tolerant correction mechanism in the system. Secondly, in order to overcome the influence of non-realtime operating system polling work mode, a data cache module is designed. Thirdly, a data-clamp mechanism is proposed to eliminate the effect on transmission bandwidth via a no return to zero inverse code transfer protocol of USB 2.0. With these steps, the USB 2.0 industrial camera achieves an image capture of 1 280×1 024@30 frame/s, close to the actual bandwidth limit of USB 2.0 with stability and the transmission rate of 39 Mbyte/s, and the problems of image data loss and disorder during transmission in traditional scheme are solved.
integrated circuit technology; universal serial bus 2.0; field programmable gate array; industrial camera; frame synchronization; first input first output; no return to zero inverse code; robustness
Li Dong,Chen Shuo,Tian Jindong,et al.The robustness of image capture of USB 2.0 industrial camera[J]. Journal of Shenzhen University Science and Engineering, 2016, 33(5): 525-530.(in Chinese)
TP 752.1;TP 274.2
Adoi:10.3724/SP.J.1249.2016.05525
国家自然科学基金资助项目(E051102);广东省自然科学基金资助项目(2014A030313550)
李东(1982—),男,深圳大学副教授、博士.研究方向:2D和3D视觉信息获取与处理,机器人技术及工程应用,嵌入式系统技术.E-mail:lidong@szu.edu.cn
Foundation:National Natural Science Foundation of China(E051102); Natural Science Foundation of Guangdong Province(2014A030313550)
† Corresponding author:Professor Tian Jindong.E-mail: jindt@szu.edu.cn
引文:李东,陈烁,田劲东,等.USB 2.0工业相机的图像采集鲁棒性研究[J]. 深圳大学学报理工版,2016,33(5):525-530.