李达伦,李彬华,晏 佳
(昆明理工大学信息工程与自动化学院,云南 昆明 650500)
基于USB3.0的EMCCD相机高速数据传输系统的研究
李达伦,李彬华,晏 佳
(昆明理工大学信息工程与自动化学院,云南 昆明 650500)
自动成像协会(Automated Imaging Association,AIA)在2013年初发布了用于高速图像数据传输的USB3 Vision标准。首先简要介绍了基于该标准的EMCCD相机高速数据传输系统的设计方案,重点介绍了传输系统的构建和图像采集软件的设计。其中,传输系统的构建主要是在QUARTUS II的开发环境下,移植EMCCD相机数字控制器,使用VHDL语言编程设计一个控制器,产生USB3.0芯片USB3014的读写时序以及相关的逻辑信号,并且完成模拟图像产生和针对USB3 Vision标准的数据传输格式转换的功能;图像采集软件的编写是在VS2010开发环境下利用CYPRESS公司提供的应用程序接口(API),采用C++语言实现。最后进行了模拟图像的采集实验,并且进行了误码率估算。
CCD相机;USB3 Vision;图像采集;VHDL;C++
CN53-1189/P ISSN1672-7673
电子倍增CCD(通常记为EMCCD)是一种具有高速读出能力的微光成像器件,能对微弱光电子信号在CCD芯片内部进行放大[1],等效读出噪声很低。使用EMCCD相机可方便地观测光变周期在毫秒量级至秒量级的暗弱天体。为了实现EMCCD的高速读出功能,EMCCD相机需要配备与之相应的高速数据传输通道。
目前,图像传输常用的方法有4种:千兆以太网(Gigabit Ethernet)、IEEE 1394(Fire wire火线)、Camera Link协议、USB总线。千兆以太网最大带宽为1 Gb/s,缆线最大长度可达100 m,可同时连接多个设备,但是占用CPU较多(Filtered模式);IEEE 1394最大传输速度为3.2 Gb/s,传输距离可达100 m,占用CPU较多[2];Camera Link最大传输速度为7.14 Gb/s,但是缆线最大长度为10 m,通过扩展,可以到20 m(如多功能经纬仪[3]);USB总线中USB2.0最大速度较小,USB3.0最大速度为5 Gb/s,而且支持热插拔等功能[4-5]。
USB3.0是USB标准的下一个重要版本。它的最高理论传输速率可达5 Gb/s。但USB3.0不仅仅是速率的提高,它在很多方面做了新标准的设定。自动成像协会在2013年1月发布了USB3 Vision标准Version 1.0。USB3 Vision标准定义了设备(例如相机)在USB3.0总线上工作时的某些行为,比如设备识别方式、设备控制管理、图像数据传输方式以及电缆长度/接口等配件设备参数。这是很多机器视觉厂商参与并制定的标准,这个标准是专门为USB3.0相机而设计的,规范了相机如何使用USB3.0接口。所以,与以往USB相比,结合了USB3 Vision的USB3.0具有这些显著的优势:一是可提供USB3.0相机更大的带宽,理想带宽可达到5 Gb/s;二是更强的供电能力;三是新接口标准比先前的更加稳定可靠,因而USB3.0相机具备更高的效率。
本文根据实验室研制的EMCCD相机对传输通道的要求,设计了一种基于USB3.0的高速数据传输系统,编写了图像采集软件,对系统进行了多次模拟图像采集的实验,并且进行了误码率估算。
整个系统要实现的功能是图像工作站/PC通过USB3.0接口与EMCCD相机数字控制器通信,实现相机成像指令的下传,从而控制时序发生器产生相应的时序。然后,EMCCD相机成像后的图像数据通过USB 3.0接口高速上传至图像工作站,同时,图像采集软件开始采集并且将图像数据以RAW格式保存在硬盘中。在图像数据缓存方面,采用DDR2存储器,为批量传输提供足够的缓存,保证图像数据高速稳定地上传。整个系统主要以USB3.0数据传输为基础构建。因此,在系统设计时,首先要考虑USB3.0芯片和DDR2存储器的选取,其次是现场可编程门阵列(Field-Programmable Gate Array,FPGA)器件的选型。最后,在相机控制方面,要根据USB3 Vision标准[6]的要求,并且结合实验室的EMCCD成像系统中上位机与Nios II的临时通讯协议,制定新传输系统中上位机与Nios II的临时通讯协议。新传输系统的临时通讯协议如表1。
表1 上位机与Nios II的临时通讯协议Table 1 Temporary communication protocol between the PC and Nios II
prefix:长度4个字符,用于表示USB3 Vision control;
flags:长度2个字符,用来表示是否需要应答,00表示不需要应答,01表示需要应答;
command_id:长度2个字符,相机工作指令的ID,每个ID对应唯一一个要执行的操作。
length:长度2个字符,指示控制命令的总长度;
request_id:长度2个字符,请求相机状态返回的ID;
数据1~10:长度6个字符,命令的参数,可加+、-号;
有些命令中不用的数据可以写成0,但必须填写,具体命令说明这里不赘述。
生产USB3.0芯片的主要厂商有CYPRESS公司(如USB3014)和TI公司(如TUSB1310/9260)。CYPRESS公司提供USB解决方案的完整系列,包括应用程序接口(API)、参考程序、驱动程序套件。高度集成的灵活特性,可帮助开发人员为任何系统添加USB3.0功能,缩短开发周期。USB3014具有高性能通用可编程接口GPIF II,此接口能实现从器件FIFO接口功能,工作频率高达100 MHz,支持8/ 16/32位数据总线。使用该器件实现USB3.0方式的数据传输比较简单,只需要配置GPIF II为从器件FIFO接口,然后根据FIFO接口的操作时序进行数据传输。因此,USB3.0芯片选择CYPRESS公司的USB3014。DDR2存储器操作时序比较复杂,而且没有开放的IP核,所以DDR2存储器的选取,主要考虑是否提供IP核。因为实验室已经研制了一台基于Camera Link协议的EMCCD相机[7-8],根据经验,现场可编程门阵列器件需要至少10 000个逻辑资源、两个锁相环(PLL)、32 KB片上存储器、240个用户I/O,而且PLL可倍频至240 MHz。
根据以上分析,本传输系统需要一块具有CYPRESS公司USB3.0芯片USB3014和满足上述条件的现场可编程门阵列以及具有DDR2存储器的开发板。综合考虑,最后选择北京华诺铭科电子科技中心的USB3.0开发板(企业版)。该开发板上现场可编程门阵列器件为ALTERA公司的EP3C40F484C6N,具有两片1 Gbits的DDR2芯片,DDR2芯片采用独立的地址、控制总线和数据总线,保证数据高速稳定地传输。而且还提供了一个DDR2虚拟FIFO模块,从而使得操作DDR2就像读写FIFO一样简单。传输系统结构图如图1。
图1 传输系统结构图Fig.1 A block diagram of the transmission system
2.1 EMCCD相机数字控制器移植
使用的EMCCD是TI公司的TC285芯片,成像时主要有清零、曝光、垂直转移、水平读出4个工作阶段。每个阶段都要求不相同的时序,要使EMCCD正常工作,就必须有对应的数字控制器。本实验室已研制了一台基于Camera Link协议的EMCCD相机,因此,可以将这台相机的数字控制器移植到USB3.0开发板上,这样可减小工作量,且便于后续的研发。
EMCCD相机数字控制器的移植主要包括时序发生器[9]和基于Nios II处理器的控制器移植。因为新的传输系统中EMCCD器件同样是TI公司的TC285,所以时序发生器不需做任何修改,直接移植到USB3.0传输系统中。在移植过程中,只需在QUARTUS II 13.0开发环境下的对应工程中加入时序发生器的VHDL代码,并且分配对应引脚,最后编译即可。时序发生器移植成功后,实测成像区清零的波形如图2。图2中D0~D7这8个信号分别对应TC285芯片所需要的8个时钟:CMG、RST、SRG2、SRG1、SAG2、SAG1、IAG2、IAG1。垂直时钟IAG1、IAG2相位差900,占空比50%,SAG1、SAG2与IAG1、IAG2类似;水平时钟SRG1、SRG2和倍增时钟CMG占空比50%,SAG1与SAG2反相,CMG超前SRG2约60°;复位时钟RST上升沿与SRG1对齐,占空比约1/6(16.7%)。对比TC285数据手册可知[10],这8个时钟实测波形满足该EMCCD的时序要求。
图2 成像区清零实测波形图Fig.2 The measured waveform of the imaging area during the clearing
基于Nios II处理器的控制器需要稍作修改。在构建SOPC硬件系统时,只需要在原来EMCCD相机SOPC硬件系统上,添加控制USB3.0控制器片选的IO口即可。控制器的C语言代码主要是根据表1的临时通讯协议,修改了原EMCCD相机控制系统[11]的命令解析部分的代码。
2.2 USB3.0控制器的VHDL设计
通过对USB3.0芯片USB3014数据手册的分析,并结合成像系统的要求可知,USB3.0控制器需要产生对DDR2存储器读写的时序和对USB3014芯片的同步FIFO写操作的逻辑信号。对DDR2操作只需调用对应的DRR2虚拟FIFO模块,该模块是开发板公司提供的。重点是要设计对USB3014芯片同步FIFO写操作的模块,此模块设计根据USB3014数据手册上同步Slave FIFO写操作时序图进行。在设计过程中要注意DDR2操作与同步Slave FIFO写操作之间的匹配。
在Altera Quartus II 13.0的开发环境下,采用VHDL语言分别对顶层模块和底层模块进行编程设计。顶层模块主要定义总体框架设计中所用信号与端口的映射关系,约定了整个硬件逻辑的输入、输出端口、基准时钟输入、片选信号等。顶层模块的VHDL程序流程图如图3。
图3 顶层模块的程序流程图Fig.3 The flowchart of the top module
底层模块设计主要是将DDR2中的图像数据写入USB3014。由USB3014数据手册中同步Slave FIFO写操作时序图可知,对同步Slave FIFO写操作时,因为同步Slave FIFO有4个内部缓冲区,首先需要选定一个FIFO地址,然后使能SLCS信号,接着SLWR信号有效,此时数据写至FIFO,FIFO指针在PCLK的上升沿递增。因此可以使用状态机的方式设计,上述过程可以分为3个状态:FIFO地址选择(S1)、SLCS使能(S2)、SLWR信号有效(S3),并且设置一个初始状态(S0)。分别设置各状态间转换的标志信号,来控制状态间的有序转移,状态转换图如图4。
当顶层模块DDR2中数据准备好时,底层模块写同步Slave FIFO开始运行。在该模块下面首先进入状态机的初始状态(S0),在初始状态下主要完成Slave FIFO接口相关逻辑信号的初始化赋值。初始化完成后进入选定一个FIFO地址状态,完成FIFO地址选定,为了保证地址总线上数据稳定可靠,在经过三个周期后进入下一个状态。在SLCS使能(S2)状态下,经过两个周期后进入SLWR信号有效(S3)状态,在该状态下主要完成写数据到USB3014,并且开始计数,一次向USB3014写256×32个字节,写完后从新开始进入初始状态。
图4 写同步Slave FIFO状态转换图Fig.4 The state-transition diagram of writing into the synchronous slave FIFO
2.3 模拟图像产生模块设计
为便于测试、验证传输系统,还需实现一个产生模拟图像数据的模块。该模块产生一幅512 ×512个像素的图像,每一行的第N个像素用16 bits的(N-1)二进制表示。每行的像素值从0到511依次递增,即每行的输出从0000000000000000到0000000111111111递增。该模块仿真波形如图6。
2.4 USB3 Vision标准的数据传输格式转换模块设计
分析USB3 Vision标准可知数据流传输的格式如图5。从图中可以看出,在每一帧数据中,都有一个Leader和Trailer。Leader和Trailer包含USB3 Vision标准的具体数据。该部分模块的设计就是要在每帧图像数据块的基础上增加一个Leader和Trailer,使用一个计数器实现此功能。
USB3.0传输系统上位机端图像采集软件是在VS2010开发环境下,基于MFC单文档设计框架,利用C++语言编写的。编程过程中,需要使用CYPRESS公司提供的应用程序接口函数。而且在带USB3.0接口的图像工作站/PC上,需要安装CYPRESS公司提供的USB3.0通用设备驱动程序。该图像采集软件要完成固件下载、器件信息显示、相机控制、单帧采集、连续采集并且自动存盘等主要功能,具体流程图如图7。
图5 数据流格式Fig.5 The data-stream format
图6 数据产生模块仿真波形Fig.6 A simulated waveform of the data-generating module
图像采集软件设计主要包括固件下载、图像采集控制、器件信息3部分。该部分的编程需要使用CYPRESS公司提供的库文件[12],并且参照相应的使用手册[13]。在利用对应库的时候,必须将库文件以及头文件添加到建立的MFC工程中去,然后才能调用相关的类函数。固件下载和器件信息只需要分别调用CyFX3Device类的DownloadFw()和CyUSBDevice类的FriendlyName()函数,就可以完成固件下载和获取器件信息。
图像采集控制里面包括AD器件参数设置、存盘设置、采集图像数量设置等。参数设置好后,调用CyControlEndPoint类的BeginDataXfer()函数完成上位机命令的下传。是否存盘、存盘路径、采集图像的数量分别对应g_Save、FilePath、nImg全局变量保存,在自动采集线程里根据这些变量判断是否存盘、采集数量。考虑到连续采集图像的数量可能比较大,而且需要保存,因此这部分创建一个工作者线程,在工作者线程被启动后会转入对应函数,并且函数退出时线程就会结束。在连续采集中,使用批量传输的方式,调用CyBulkEndPoint类的BeginDataXfer()函数。每采集完一幅图像后就自动保存为RAW格式,并且刷新图像显示窗口,图像的显示采用设备无关位图读入数据,并且利用应用程序接口函数进行绘制。
在图像工作站上进行模拟图像采集的测试。下位机端使用现场可编程门阵列的JTAG接口下载程序,然后运行Nios II EDS 13.0软件中的对应工程。在上位机端运行图像采集软件,进行固件下载、刷新器件信息等操作,然后设置AD参数,选择连续采集模式,连续采集10幅图像,并且自动存盘。图像采集软件采集到模拟图像并且显示的界面如图8。
图7 图像采集软件流程图Fig.7 The flowchart of the image-acquisition software
图9是运行基于Nioss II处理器的EMCCD成像系统控制器,接收到上位机的相机控制指令,并且进行命令解析后输出的命令解析结果。第1条指令是ADC设置,第2条指令是图像采集控制设置并且开始连续采集,其中nccd_command[0-3]依次对应表1中的Flags、Command_id、Length、Request_id,可以看出命令解析无误,并且采集到模拟图像,在WinView软件中打开模拟图像,图像数据正确,证明传输系统工作正常。
USB3.0 Vision标准中给出的实际最大传输速率为375 MByte/s,传输距离可达5 m[6]。在本传输系统中,USB3.0芯片USB3014的32 bits同步FIFO理论最高频率为100 MHz,实际运行时需要留有一定裕量,最高至90 MHz。但由于目前用在图像工作站上的USB3.0扩展卡的限制(最大带宽为266 MByte/s),并且开发板所配备USB3.0线缆为1.5 m,因此,目前的测试工作是在传输速率小于266 MByte/s、传输线长度为1.5 m时进行的。这已经能够满足当前研制的EMCCD相机实验系统的要求。如果将来能够选用的扩展卡速率可至375 MByte/s,且USB3.0线缆质量足够好,那么该传输系统的速率可达360 MByte/s,传输距离可至5 m。
图8 EMCCD成像系统图像采集软件Fig.8 The interface of the image-acquisition software of the EMCCD imaging system
图9 EMCCD成像系统控制器命令解析Fig.9 The analysis of commands of the controller of the EMCCD imaging system
本文结合实验室研制的一个天文用EMCCD相机系统,设计一种用于图像数据高速传输的USB3.0传输系统。根据EMCCD相机系统要求以及USB3 Vision标准,介绍了传输系统的设计方案,并且构建了传输系统,编写了上位机采集软件,对系统的高速图像数据传输进行了实测,同时估算了误码率。分析结果表明,传输系统能正常稳定工作,估算的误码率也符合USB通信对误码率的要求。目前使用的USB3.0传输线只有1.5 m,而且速度低于266 MByte/s,设计更高速率以及更长传输距离的传输系统的工作将在下一步进行。
[1] 胡泊,李彬华.低温下EMCCD电子倍增模型[J].电子学报,2013(9):1826-1830.
Hu Po,Li Binhua.Electron multiplication model of EMCCD in low temperature[J].Acta Electronica Sinica,2013(9):1826-1830.
[2] Lee C,Jang J,Park E K,et al.A simulation study of TCP performance over IEEE 1394 home networks[J].Computer Communications,2003,26(7):670-678.
[3] Li B H,Zhang Y G,Yang L,et al.Image acquisition system with three CCD cameras[C]// Software and Cyberinfrastructure for Astronomy II:Proceedings of the SPIE.2012,8451.
[4] Wei M Z,Stover R J.A USB 2.0 computer interface for the UCO/Lick CCD cameras[C]// Garnett J D,Beletic J W.Optical and Infrared Detectors for Astronomy:Proceedings of the SPIE. 2004,5499:476-480.
[5] 美国迈舍尔公司.USB系统体系[M].孟文,译.北京:中国电力出版社,2003.
[6] Automation Imaging Association.USB Vision version 1.0[EB/OL].[2013-02-24].http://www.visiononline.org/vision-standards-detailscfm?id=200&type=11.
[7] Li B H,Song Q,Jin J H,et al.Circuit design of an EMCCD camera[C]//High Energy,Optical,and Infrared Detectors for Astronomy V:Proceedings of the SPIE.2012,8453.
[8] Li B H,Rao X H,Yan J,et al.Interface circuit design and control system programming for an EMCCD camera based on Camera Link[C]//International Symposium on Photoelectronic Detection and Imaging:Proceedings of the SPIE.2013,8908.
[9] 陈小明,李彬华.EMCCD时序发生器的VHDL设计[J].计算机工程与应用,2012,48 (1):72-75.
Chen Xiaoming,Li Binhua.VHDL design of EMCCD timing generator[J].Computer Engineering and Applications,2012,48(1):72-75.
[10] Texas Instruments Ltd.TX285SPD 10041002 pixel IMPACTRONTM CCD image sensor[EB/ OL].[2013-04-07].http://www.ti.com/sc/docs/stdterms.htm.
[11] 谢云.基于FPGA的TC253 EMCCD相机数字控制系统设计[D].昆明:昆明理工大学,2013.
[12] Cypress Semiconductor.CyAPI.lib[EB/OL].[2013-05-05].http://www.cypress.com/?rID=57990&source=support.
[13] Cypress Semiconductor.Cypress CyAPI Programmer’s Reference[EB/OL].[2013-05-06]. http://www.cypress.com/?docID=41365.
[14] 李汉青,李彬华,王春荣,等.一种天文图像的光纤传输系统的设计[J].天文研究与技术——国家天文台台刊,2010,7(4):325-331.
Li Hanqing,Li Binhua,Wang Chunrong,et al.Design of an optical-fiber transmission system for astronomical images[J].Astronomical Research&Technology——Publications of National Astronomical Observatories of China,2010,7(4):325-331.
[15] 郑剑锋.水下远程数据有线传输技术研究[D].北京:中国科学院研究生院,2004.
A Study of a High-Speed Data-Transmission System Based on a USB3.0 Chip for EMCCD Cameras
Li Dalun,Li Binhua,Yan Jia
(Faculty of Information Engineering and Automation,Kunming University of Science and Technology,Kunming 650051,China,Email:lbh@bao.ac.cn)
Electron-Multiplying CCDs(EMCCDs)are high-speed devices to record images of dim objects.For the high-speed recording capability of an EMCCD to be actually used,it is necessary to equip a high-speed data-transmission channel in the camera incorporating the EMCCD.The USB3 Vision standard was released by the Automated Imaging Association(AIA)in early 2013 to be used for high-speed image-data transmission.The standard defines the camera behavior for working with a USB3.0 bus and the approach to use a USB3.0 interface.Based on the characteristics of EMCCDs of high-speed readouts and the USB3 Vision standard,we have designed a high-speed data-transmission system for EMCCD cameras.The paper first briefly describes the design of the system.It then mainly discusses the transmission system and the associated imageacquisition software.The system was constructed by using an old digital controller of an EMCCD camera and designing a new USB3.0 controller.The USB3.0 controller was designed within the QUARTUS II development environment using the VHDL language.The USB3.0 controller is used to generate read-write timing signals and other logic-operation signals required by the USB3014 chip,to output simulation images,and to convert the data-transmission format according to the USB3 Vision standard.The image-acquisition software is programmed with the C++by utilizing some API(Application Programming Interface)functions provided by the CYPRESS Semiconductor Corporation.We have carried out experiments to test the transmission system after its full construction.The image-acquisition software can download the configurable firmware for the USB3014,display the device information,provide the interface for setting the ADC parameters,and capture image frames.With the software,image frames can be captured separately or in a batch,and the images within the frames can be saved automatically or manually.A measured bit error rate of the system is less than 7.28×10-13if the transmission line is 1.5m long and the transmission rate is less than 266MB/s.The experiments show that our system meets the requirements on the transmission speed of an EMCCD camera,and its bit error rate also fits USB communications.
CCD camera;USB3 Vision;Frame capture;VHDL;C++
TP309
A
1672-7673(2014)03-0255-09
2013-09-26;
2013-11-05
李达伦,男,硕士研究生.研究方向:电子成像技术.Email:lidalunjy@163.com
李彬华,男,教授.研究方向:天文技术与方法,电路与系统.Email:lbh@bao.ac.cn