基于EZ-USB FX2的图像采集系统的设计与实现

2011-05-21 00:41
电子设计工程 2011年11期
关键词:视频信号PC机固件

刘 胜 , 陈 华 , 聂 雄

(1.广西大学 计算机与电子信息学院,广西 南宁 530004;2.广西财经学院 计算机与信息管理系,广西 南宁 530003)

由于图像采集系统采集的数据量大,带宽要求高,以往的图像采集系统通常使用PCI总线实现。但是计算机本身配置的PCI接口数量非常有限,而且拆装PCI接口设备需要打开机箱,一般操作人员并不具备这样的能力,导致系统应用受到限制。USB(通用串行总线)接口则可以完全解决以上难题。首先,USB2.0接口的速度已经达到480 Mbps,完全可以满足图像采集系统对速度的要求。另外,USB接口是真正支持即插即用,且允许热插拔的接口,所以目前大量数据采集系统都选择使用USB2.0接口实现[1]。

本文利用SAA7113H实现模拟视频信号解码,并借助EZ-USB FX2单片机CY7C68013将数字图像数据直接通过USB2.0接口传输到计算机,通过PC机程序实现图像的无损采集,大大简化了采集卡的硬件设计,降低了采集卡硬件要求,有效降低了图像采集卡的成本。

1 系统硬件设计

系统硬件结构如图1所示。系统主要由视频解码芯片SAA7113H、USB控制芯片CY7C68013和一块容量为1 kB的24C01EEPROM芯片组成。

1.1 视频解码芯片——SAA7113H[2]

SAA7113H是飞利浦公司出品的一款视频解码芯片,它的作用是将输入的模拟视频信号解码为标准的8位VPO数字信号。它可以输入4路模拟视频信号,通过I2C总线对内部寄存器的不同配置可以对4路复合视频输入进行转换,改变亮度、对比度等参数。SAA7113H兼容PAL、NTSC等多种制式,可以自动检测场频,可以在PAL、NTSC之间自动切换控制。SAA7113H解码后输出的是标准的YUV 4∶2∶2格式数字信号。

图1 系统硬件框图Fig.1 Hardware block diagram of system

1.2 USB控制芯片——CY7C68013A[3]

CY7C68013A (EZ-USB FX2)是Cypress半导体公司推出的一款USB2.0芯片,它内部集成了增强的8051内核,支持最大48 MHz的时钟频率,在相同时钟频率下,FX2的平均指令执行速度可达到标准8051的2.5倍。CY7C68013芯片内部集成了一个与8051内核相对独立的SIE(串行接口引擎),在不需要8051内核参与的情况下,通过USB端口和外部逻辑共享FIFO的方式,实现外部数据与USB端口的数据交换,大大加快了数据传输的速度,可实现的最大速度为480 Mbps。

1.3 系统硬件实现

硬件连接方面,利用CY7C68013的I2C端口连接24C01,以便在系统上电后提取24C01中的信息,实现设备枚举,下载相应固件。利用CY7C68013模拟I2C端口连接SAA7113H,对其内部寄存器进行配置,实现解码芯片初始化操作。CY7C68013工作在 Slave FIFO (从属的 FIFO)模式,将SAA7113H的VPO数据总线直接连接到CY7C68013的FD总线,使用CY7C68013的IOA0端口检测数字视频的场标志信号,用于实现帧同步。将CY7C68013的SLWR*(从属写)信号置为有效,SLRD(从属读)和SLOE(输出有效)置为无效,由SAA7113H通过自身输出的27 MHz同步时钟将数字视频信号以同步方式直接写入CY7C68013内部的FIFO,再通过SIE将FIFO中的数据以高速方式直接传送到PC机,实现视频数据的采集。

2 系统软件设计

系统软件设计主要包括固件程序设计、驱动程序设计和PC机采集程序3大部分。

2.1 固件程序设计

固件程序流程图如图2所示。该固件在采集卡上电后初始化CY7C68013,使其工作在Slave FIFO模式,设置总线位数为8位,以便接收SAA7113H的8位数字视频信号。将EP2端点设置为批量AUTO IN传输方式,512字节4倍FIFO缓冲。一次最大传输数据包大小为512字节。利用SAA7113H的时钟信号实现同步从属FIFO写数据。

通过模拟的I2C端口初始化SAA7113H,使其能够接收CCD摄像机的模拟视频信号,以标准的ITU656格式输出,并设置RST0输出奇偶场标志,然后等待上位机的开始采集命令。

图2 固件程序流程Fig.2 Firmware program flow

在收到PC机开始图像采集命令后,固件程序首先通过IOA0端口检查SAA7113H的奇偶场信号。如果外部模拟视频信号源未连接,该信号将一直维持高电平。固件在一段时间等待并确认外部视频信号未连接的情况下,向PC机回传设备尚未准备好的信息,否则一直清空FIFO,将FIFO中已有数据清除,直到奇场信号到来,固件回送设备准备好信息给PC,以实现视频图像帧同步采集。图像数据传输过程将由SIE完全控制,固件不参与传输操作。

2.2 驱动程序设计[4-5]

Cypress开发包中提供了一个通用驱动程序,即cyUSB.sys,该驱动程序符合Windows硬件质量实验室WHQL标准,系统直接使用该驱动程序实现图像数据采集。由于CY7C68013采用的是软配置的方案,芯片中并没有提供用于永久存放固件程序的存储器,固件程序需要在每次上电后通过外部存储器加载或从PC机下载到内部RAM中。驱动程序主要实现固件程序的装载功能,以便系统上电后,可以自动从PC机下载固件到CY7C68013,然后使用通用驱动程序完成采集卡的设备重枚举。

在Cypress提供的开发包中包含了一个固件下载驱动模板,即EZ-Loader Driver。系统固件下载驱动主要依赖它来实现。具体的步骤为:

1)利用hex2c.exe将Intel HEX格式文件转换成C代码数组。

2)将所有的EZ-Loader Driver文件连同子文件复制到一个新建的目录中。并利用第一步得到的C代码数组替换EZLoader Driver中firmware.c中的数组。

3)在Windows XP DDK中使用build命令在新建目录中创建固件下载驱动程序。

4)改写驱动安装信息文件。

2.3 PC机采集程序

PC机采集程序用Visual Studio.net 2003调用CyAPI函数库实现。为提高图片采集速度,程序使用两个线程分别实现图像数据采集和图像甄别和处理。程序总流程图如图3所示。

图3 PC程序总流程Fig.3 Main flow chart of PC program

每次启动采集程序时,系统通过创建USBDevice实例获得设备句柄,并尝试打开USB设备。当点击程序界面开始采集按钮后,程序通过USB控制端点发送一个开始采集信号,并要求采集卡回传一个设备状态信号。如果设备提示无模拟视频信号连接,则提示用户连接。如果设备准备好,则开始接收图像数据。

由于USB主控制器工作于Slave FIFO模式,采集卡上传到上位机的数据量固定为27 MB/S,如果上位机没能及时接收数据必然会导致图像数据丢失,所以程序中使用一个线程(线程1)以异步方式做图像数据接收,实际效果非常好。线程1主要代码如下:

OVERLAPPED oRec[QUEUESIZE]; //数据接收队列for(;dlg->bLooping;){ //线程 1 主循环

for(QNum=0;QNum <QUEUESIZE;QNum++)//初始化

oRec[QNum].hEvent=CreateEvent(NULL,false,false,"CYUSB_IN");

for(QNum=0;QNum<QUEUESIZE;QNum++){

dlg->FIFOInEndpt->SetXferSize(inlens); //一次接收的数据量

inContext[QNum]=dlg->FIFOInEndpt->BeginDataXfer(inData+QNum*INSIZElEN;linsize;&oRec[QNum]); //开始异步接收

}

for(QNum=0;QNum <QUEUESIZE;QNum++{

if(!dlg->FIFOInEndpt->WaitForXfer(&oRec[QNum],200))//等待数据传输完成

dlg->FIFOInEndpt->Abort();//复位管道

}

for(QNum=0;QNum<QUEUESIZE;QNum++){ //将数据写入数据缓冲区

sus=dlg->FIFOInEndpt->FinishDataXfer(inData+QNum*INSIZElEN,linsize,&oRec[QNum],inContext[QNum]);

if(!sus) Success=false;

}……}

SAA7113H输出的是隔行视频信号,每秒25帧图像,一帧图像需要分两次传输,先传输全部奇场(奇数行)数据,然后传输全部偶场(偶数行)数据[6],采集卡中将SAA7113H的输出设置为标准 YUV4∶2∶2数据,分辨率为 720×576。 系统将所有的解码数据不做任何处理直接传送到PC机,数据格式如图4所示。其中,“80 10……”为消隐数据。“FF 00 00 SAV”为一行数据块的开始标志,作为奇场有效行,SAV的值为8X,作为偶场有效行,该值为CX。“FF 00 00 EAV”为一行数据块结束标志,作为奇场有效行结束,EAV的值为9X,作为偶场有效行结束,该值为DX。作为720像素的YUV4∶2∶2数据,每行一共有720×2=1 440个字节,PC程序需要从所有的数据中找出每一行中有效的1 440个字节数据,并按照实际行顺序将奇场行和偶场行数据重新组合,转换成RGB24位像素点并最终写入BMP文件,实现图像的采集、显示和保存。

图4 YUV4:2:2 数据格式[2]Fig.4 YUV4:2:2 data format[2]

数据查找及重组过程中,PC程序会根据YUV4∶2∶2数据格式做数据块判别,如果发现有出错数据程序会做自动抛弃处理,在对采集数据要求非常严格及单张采集间隔时间较长的场合,程序将发送重新采集信号给采集卡,再一次采集。系统实际使用过程中发现,数据出错情况很少出现,且重发请求后可以得到正确数据。

3 结 论

利用本方案设计的图像采集卡可以实现图像的连续采集,并最终以bmp图像格式保存,采集速率每秒最大25帧,适用于所有支持PAL模拟视频格式的摄像机及监控摄像头的图像无损采集,具有成本低、图像清晰等特点,在光学显微镜序列切片图像采集系统中得到了很好的应用。另外,系统经过简单修改后也可实现4个复合视频源输入的分时采集功能。

[1]王红凯.基于CY7C68013A的USB接口系统设计[J].现代机械,2008(1):77-78.WANG Hong-kai.Design of USB interface basedon CY7C68-013A[J].ModernMachinery,2008(1):77-78.

[2]PhilipsSemiconductors.SAA7113H 9-bitvideoinput processor data sheet[EB/OL].(1999).http://www.21icsearch.com/download.shtml?id=02CFFE222F07FDC5.

[3]Cypress Semiconductor Corporation.EZ-USB FX2 Manual Technical Reference[EB/OL].(2001).http://www.cypress.com/?docID=27092.

[4]胡文静,陈松.基于EZ-USB芯片CY7C68013的驱动程序设计[J].计算机应用研究,2005,22(9):220-221.HU Wen-jing,CHEN Song.Design of USB driver based on EZ-USB CY7C68013[J].Application Research of Computers,2005,22(9):220-221.

[5]钱峰.EZ-USB FX2单片机原理、编程及应用[M].北京:北京航空航天大学出版社,2006.

[6]钱敏,李富华,黄秋萍,等.基于HDL的PAL制数字视频图像采集控制器设计 [J].微电子学与计算机,2007,24(12):191-192.QIAN Min,LI Fu-hua,HUANG Qiu-ping,et al.The controller design of digital video data acquisition of PAL based on HDL[J].Microelectronics&Computer,2007,24(12):191-192.

猜你喜欢
视频信号PC机固件
浅析新一代视频信号ICtCp
基于三菱FXPLC的感应淬火机床与PC机的串行通信实现
短距视频信号无线通信网络
VC.NET下实现dsPIC单片机与PC机的通信
排除OLT设备登录故障
基于固件的远程身份认证
提取ROM固件中的APP
VIVID3彩色超声仪结构原理及维修
一种通过USB接口的可靠固件升级技术
多路手机固件升级工具设计