由于图像采集系统采集的数据量大,带宽要求高,以往的图像采集系统通常使用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.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写数据。
图2 固件程序流程图
通过模拟的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所示。
图3 pc和谐总流程图
每次启动采集程序时,系统通过创建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文件,实现图像的采集、显示和保存。
图4 yuv4:2:2数据格式
数据查找及重组过程中,pc程序会根据yuv4:2:2数据格式做数据块判别,如果发现有出错数据程序会做自动抛弃处理,在对采集数据要求非常严格及单张采集间隔时间较长的场合,程序将发送重新采集信号给采集卡,再一次采集。系统实际使用过程中发现,数据出错情况很少出现,且重发请求后可以得到正确数据。
3 结论
利用本方案设计的图像采集卡可以实现图像的连续采集,并最终以bmp图像格式保存,采集速率每秒最大25帧,适用于所有支持pal模拟视频格式的摄像机及监控摄像头的图像无损采集,具有成本低、图像清晰等特点,在光学显微镜序列切片图像采集系统中得到了很好的应用。另外,系统经过简单修改后也可实现4个复合视频源输入的分时采集功能。
各领域都在争夺低功耗 看MCU如何成为低功耗争夺之战的焦点
我国集成电路产业快速发展,但却仍被光刻机“掐脖子”?
以嵌入式系统作为移动终端的软件平台浅析
英伟达宣布将于1月12日举办一场新闻发布会
Fundamental VR手术应用最新增加眼球追踪功能
如何采用CY7C68013芯片设计图像采集系统
芯片制造业企业的模式
种质资源库管理系统软件具有哪些功能
比亚迪半导体"摄像头和车辆"专利获授权
微生物健康公司SEED正在利用人工智能平台来检测人体的肠胃健康
怎么设计一个基于单片机的交通灯控制系统?
以价格为导向,高性价比Mini LED背光技术介绍
固定频率工作的降压稳压器设计
安兔兔表示:在数以万机的安兔兔手机用户中高端手机的用户占比颇高
品牌选择是重头戏 智能家居要重视生活理念的传递
索尼A9的发布 体育摄影师会转投索尼A9而放弃佳能尼康吗?
坚持“场景+技术”路线,以匠心行走世界!
DRAM制程产能滞后 技术是很大问题
“无人机载红外探测系统”应用于沥青混凝土路面施工温度均匀性控制
重金属镉快速检测仪的技术参数都有哪些