由于操作过于频繁,请点击下方按钮进行验证!

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

  由于图像采集系统采集的数据量大,带宽要求高,以往的图像采集系统通常使用PCI总线实现。但是计算机本身配置的PCI接口数量非常有限,而且拆装PCI接口设备需要打开机箱,一般操作人员并不具备这样的能力,导致系统应用受到限制。USB(通用串行总线)接口列可以完全解决以上难题。首先,USB2.0接口的速度已经达到480Mbps,完全可以满足图像采集系统对速度的要求。另外,USB接口是真正支持即插即用,且允许热插拨的接口,所以目前大量数据采集系统都选择使用USB2.0接口实现。
  本文利用SAA7113H实现模拟视频信号解码,并借助EZ-USB FX2单片机CY7C68013将数字图像数据直接通过USB2.0接口传输到计算机,通过PC机程序实现图像的无损采集,大大简化了采集卡的硬件设计,降低了采集卡硬件要求,有效降低了图像采集卡的成本。

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


1.1 视频解码芯片—SAA7113H
  SAA7113H是飞利浦公司出品的一款视频解码芯片,它的作用是将输入的模拟视频信号解码为标准的8位VPO数字信号。它可以输入4路模拟视频信号,通过I2C总线对内部寄存器的不同配置可以对4路复合视频输入进行转换,改变亮度、对比度等参数。SAA7113H兼容PAL、NTSC等多种制式,可以自动检测场频,可以在PAL、NTSC之间自动切换控制。SAA7113H解码后输出的是标准的YUV 4:2:2格式数字信号。
1.2 USB控制芯片——CY7C68013A
  CYTC68013A(EZ—USB FX2)是Cypress半导体公司推出的一款USB2.0芯片,它内部集成了增强的8051内核,支持最大48 MHz的时钟频率,在相同时钟频率下,FX2的平均指令执行速度可达到标准8051的2.5倍。CY7C68013芯片内部集成了一个与8051内核相对独立的SIE(串行接口引擎),在不需要8051内核参与的情况下,通过USB端口和外部逻辑共享FIFO的方式,实现外部数据与USB端口的数据交换,大大加快了数据传输的速度,可实现的最大速度为480Mbps。
1.3 系统硬件实现
  硬件连接方面,利用CY7C68013的I2C端口连接24C01,以便在系统上电后提取24C01中的信息,实现设备枚举,下载相应固件。利用CY7C 68013模拟I2C端口连接SAA7113H,对其内部寄存器进行配置,实现解码芯片初始化操作。CY7C68013工作在Slave FIFO(从属的FIFO)模式,将SAA7113H的VPO数据总线直接连接到CY7C68013的FD总线,使用CY7C68013的IOAO端口检测数字视频的场标志信号,用于实现帧同步。将CY7C68 013的SLWR*(从属写)信号量为有效,SLRD(从属读)和SLOE(输出有效)置为无效,由SAA7113H通过自身输出的27MHz同步时钟将数字视频信号以同步方式直接写入CY7C68013内部的FIFO,再通过SIE将FIFO中的数据以高速方式直接传送到PC机,实现视频数据的采集。

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

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


  通过模拟的I2C端口初始化SAA7113H,使其能够接收CCD摄像机的模拟视频信号,以标准的ITU656格式输出,并设置RSTO输出奇偶场标志,然后等待上位机的开始采集命令。
  在收到PC机开始图像采集命令后,固件程序首先通过IOAO端口检查SAA7113H的奇偶场信号。如果外部模拟视频信号源未连接,该信号将一直维持高电平。固件在一段时间等待并确认外部视频信号未连接的情况下,向PC机回传设备尚未准备好的信息,否则一直清空FIFO,将FIFO中已有效据清除,直到奇场信号到来,固件回送设备准备好信息给PC,以实现视频图像帧同步采集。图像数据传输过程将由SIE完全控制,固件不参与传输操作。
2. 2 驱动程序设计
  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代码数组替换EZ-Loader Driver中firmwa re.c中的数组。
3)在WindowsXP DDK中使用build命令在新建目录中创建固件下载驱动程序。
4)改写驱动安装信息文件。
2.3 PC机采集程序
  PC机采集程序用Visual Studio.net 2003调用CyAPI函数库实现。为提高图片采集速度,程序使用两个线程分别实现图像数据采集和图像甄别和处理。程序总流程图如图3所示。


  每次启动采集程序时,系统通过创建USBDeviee实例获得设备句柄,并尝试打开USB设备。当点击程序界面开始采集按钮后,程序通过USB控制端点发送一个开始采集信号,并要求采集卡回传一个设备状态信号。如果设备提示无模拟视频信号连接,则提示用户连接。如果设备准备好,则开始接收图像数据。
  由于USB主控制器工作于Slave FIFO模式,采集卡上传到上位机的数据量固定为27MB/S,如果上位机没能及时接收数据必然会导致图像数据丢失,所以程序中使用一个线程(线程1)以异步方式做图像数据接收,实际效果非常好。线程1主要代码如下:


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


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

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


声明:本网站所收集的部分公开资料来源于互联网,转载的目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。本站部分作品是由网友自主投稿和发布、编辑整理上传,对此类作品本站仅提供交流平台,不为其版权负责。如果您发现网站上所用视频、图片、文字如涉及作品版权问题,请第一时间告知,我们将根据您提供的证明材料确认版权并按国家标准支付稿酬或立即删除内容,以保证您的权益!联系电话:010-58612588 或 Email:editor@mmsonline.com.cn。

网友评论 匿名:

分享到

相关主题