摘 要:介绍了一种高速实时数据采集系统的设计。该系统以FPGA作为逻辑控制的核心,以USB2.0作为与上位机数据传输的接口,能同时支持单端16路和差分8路模拟信号输入,最大采样率为200 kHz,12位的转换精度。描述了系统的主要组成和FPGA模块化设计的实现方法,并给出了其核心模块的时序仿真图。本文介绍了基于影像传感器MT9M111的视频采集系统。在该系统中,图像采集由具有130万像素的SoC影像传感器MT9M111完成,采集到的数据通过USB2.0接口芯片CY7C68013输送到主机,并实时显示。
关键词:SoC影像传感器 USB2.0 FPGA 视频采集卡
Abstract: This paper introduces the design of a high speed real time data acquisition system. The system uses FPGA as the core of logic control, using USB2.0 as the host computer and data transmission interface, which can support 16 channels of single ended and differential 8 analog signal input, the maximum sampling rate of 200 kHz, 12 bit conversion accuracy. The main components of the system and the realization method of FPGA modular design are described. This paper introduces a video acquisition system based on image sensor MT
Key words: SoC image sensor USB2.0 FPGA Video capture card
【中图分类号】TN957.52【文献标识码】B 文章编号1606-5123(2017)05-0000-00
1 引言
CMOS图像采集系统普遍存在图像质量问题,如果没有对图像进行专门的处理,则图像质量难以保障。近些年来,随着SoC技术的快速发展,在图像采集和处理领域,出现了SoC影像传感器,它集成CMOS传感器和图形处理器功能,可以得到令人非常满意的图像质量。本文设计的视频采集系统采用了SoC成像芯片MT9M111和USB2.0接口芯片CY7C68013。
而机器视觉技术的出现和不断成熟改变了这个复杂而又落后的颜色识别方式,并广泛地用于各种成品检测和质量控制等领域。针对目前我国印染工业对布匹颜色测量的高效率、高精度、数字化的不断需求,本文提出了一种基于MT9M111颜色识别系统的设计方案。该设计方案以美光公司的CMOS数字图像传感器MT9M111为前端图像采集传感器,选用低成本高性能的Altera公司的CycloneⅡ系列FPGAEP2C8Q208C8作为下位机图像采集传输平台的核心,并利用EZ-USB FX2LP系列芯片CY7C68013A将采集到的单帧图像数据传输至上位PC机,最后在PC上设计开发了一个基于LabVIEW的图像颜色识别处理的软件方便对被测目标的进行颜色识别操作。本文详细阐述了如何以FPGA为核心控制芯片完成对图像的采集和传输的同时,还介绍了一款基于LabVIEW自行开发的颜色识别系统软件。硬件设计上,主要包含有三大部分:核心控制部分、图像信息捕获部分和通信传输部分。固件设计上,由于MT9M111的工作模式需要通过I2C总线对其进行配置,所以根据MT9M111芯片的采集时序设计了CMOS图像采集模块,并在该模块的控制下,将采集到的单帧图像数据缓存到SRAM中;而图像传输部分,根据CY7C68013A芯片Slave FIFO同步传输的工作原理及其时序关系,设计了Slave_FIFO模块,保证了被采集到的单帧图像数据快速、稳定地传输至上位PC机,方便后续的图像颜色识别操作。软件部分,在EZ-USB通信方面是基于VC++6.0开发设计的;而为了缩减开发周期,在图像颜色识别方面则是在LabVIEW平台上设计的。实验结果表明了本文提出的设计方案的可靠性、可行性。其中,基于LabVIEW的颜色识别软件检测出了待检测样品图像的颜色RGB直方图,并与标准样品进行了相似度分析。为后续更进一步的颜色识别工作做好了充分而直接的参考数据。
图1 基于SoC影像传感器的视频采集系统
2 MT
本系统采用美光公司推出的集成CMOS传感器和图形处理器的SoC产品MT
2.1 IS61WV20488传感器
与图像处理有关的SRAM参数主要是SRAM 的读写速度和容量。在容量方面,本系统采集图像的最大分辨率为1280×1024,数据宽度为8位,
2.2 CY
图像数据传输部分采用Cypress公司推出的专门用于USB2.0的接口芯片CY
3 MT
系统软/硬件设计由3部分构成:图像采集/存储模块、图像传输模块和USB驱动/主机应用程序模块。
3.1 图像采集/存储模块
该模块主要由FPGA的控制逻辑将成像芯片MT
图2 FPGA控制电路框图
3.2 图像传输模块
采集完一帧图像后,要经过USB时钟信号控制模块将外部RAM中的图像数据读入到主机。在本图像采集系统中,使用CY
3.3 USB驱动和主机应用程序模块
USB设备驱动程序的开发是USB系统开发的难点,尤其是在本系统传输数据量大且速度要求高的情况下,就要编写出高效的USB设备驱动程序,才能保证高分辨率图像的实时传输。本系统采用DDK来开发WDM驱动程序。实际上,USB 客户驱动程序中包含大量的例程,对开发驱动程序有很大的帮助。主机应用程序的主要功能是通过USB接口读取图像数据并实时显示动态图像.为提高主机应用程序的效率,可以使用双线程。
4 VxWorks的视频采集系统的设计与应用
多媒体通信技术的发展为信息的获取和传输提供了丰富的手段,视频数据是其中不可缺少的重要组成部分,而视频数据的获取离不开视频采集系统。目前,视频采集系统的应用极为广泛,许多产品和设施,例如远程监控、可视电话、会议电视等等,都需要采集视频信息。而且,随着PC机的普及,人们可以直接利用PC机进行视频采集,采集到的视频数据经过处理后保存在本地或者发送到远方。由于视频的采集、处理和传输都在一台PC机上完成,因此可以大大降低系统的复杂度和价格。我们设计的视频采集系统是基于Intel x86平台和实时操作系统VxWorks,由视频采集卡和驱动程序两部分组成。视频采集卡完成视频数据采集和格式转换,驱动程序在系统启动时对硬件进行初始化,在系统启动之后实现硬件和应用软件之间的数据交互。考虑到视频的数据量极大,视频采集卡通过PCI高速总线与计算机相连。
4.1 视频采集卡设计
为了将由摄像头输入的模拟视频转换为计算机能够接受和处理的数字视频,需要经过模数转换、同步提取、亮色分离等多个步骤。而为了将数字视频传送到PC机的内存中,还需要一定数量的FIFO、总线接口和相应的控制逻辑。这原本是一个比较复杂的过程,但是随着半导体技术的发展,各半导体生产厂家通过不断创新和改进,目前已经能够在单个芯片上实现所有这些功能。Conexant公司的Bt848就是这样的一种芯片。对于在PCI总线上进行NTSC/PAL/SECAM视频捕获的应用来说,Bt848是一种完整的低价格解决方案。作为一种总线主控设备,Bt848不需要任何本地缓存来存储视频像素数据,这样就极大地降低了硬件价格。Bt848能够充分利用基于PCI总线的系统的高带宽和固有的多媒体功能,并且能够与其他多媒体设备实现互操作,这样就能够以模块的方式在系统中添加视频采集和叠加功能,而花费甚少。Bt848的使用与PCI系统总线的拓扑结构无关,可以用于各种系统总线的组织结构,既可以直接集成在主板上,也可以作成插卡插在PCI总线插槽内。Bt848的主要特点是:与PCI 2.1规范全兼容,拥有辅助的GPIO数据端口和视频数据端口,支持的图像分辨率高达768%26;#215;576,支持复杂的裁剪功能,零等待状态的PCI突发写操作,支持场/帧屏蔽以减少带宽,在输出方面支持多种YCbCr和RGB像素格式,支持NTSC/SECAM/PAL模拟输入,可以使用垂直/水平方面的插值滤波将图像尺寸缩小到图标大小,具有多个复合和S视频输入,支持奇偶场不同的目的地址,支持奇偶场不同的颜色空间/缩放因子,支持225个颜色调色板的视频映射,具有用于图文电视的VBI视频捕获功能。这些特点使Bt848适用于PC电视、桌面可视电话、运动视频捕获、静止图像采集和VBI数据服务等应用领域。 Bt848高度集成的结构使其外围电路极其简单,也便于在同一块插卡上增加更多的功能,例如视频数据加密。视频采集卡的结构如图3所示。
图3 视频采集卡结构框图
参见图3所示,一块Bt848最多支持4路模拟视频输入,其中3路是复合视频信号,1路是S视频信号,4路视频输入在Bt848内部完成复用。Bt848通过内部的PCI接口直接与PCI总线相连。单片机通过FIFO与Bt848的GPIO端口相连,单片机软件与主机上的软件一起实现视频采集系统的加密。控制逻辑控制Bt848和FIFO的时序,同步PCI总线、Bt848与单片机的操作。
4.2 驱动程序的编写
应用程序必须通过驱动程序才能与硬件进行数据通信,而驱动程序的编写又是与操作系统密切相关的。本系统所使用的操作系统是实时操作系统VxWorks。VxWorks是由WRS(Wind River Systems)公司开发的一套具有微内核高性能可伸缩的实时操作系统,支持广泛的网络通信协议,并能够根据用户的需求进行组合,其开放式的结构和对工业标准的支持使开发者只需做最少的工作即可设计有效的适合于不同用户要求的实时操作系统。VxWorks的特点主要有:微内核结构(最小结构<8KB),高效的任务管理,灵活的任务间通信,微秒级中断处理,符合POSIX 1003.1b实时扩展标准,满足TCP/IP网络标准,灵活的从ROM、磁盘或网络的引导能力,多处理器支持,快速、灵活的I/O系统,MS-DOS和RT-11文件系统,完全符合ANSI C标准,多于1100种功能例程。除了性能出众的操作系统之外,WRS公司还提供了优秀的实时操作系统开发工具Tornado。Tornado由三个高度集成的部分组成:Tornado工具,是一整套强有力的交叉开发工具;VxWorks运行时系统,是运行在目标机上的高性能、可裁剪的实时操作系统;连接目标机和宿主机的通信选项,如以太网、串行线路、在线仿真或ROM仿真等。Tornado能够支持几乎所有的工作平台和目标处理器,所提供的工具可用于所有目标机,并具有两种调试模式(系统和任务模式)。除了基本的功能和开发工具,Tornado还具有先进的系列网络产品,极大地扩展了Tornado的网络特性并增强了嵌入式微处理器的网络特性。 VxWorks的所有机制和功能都是基于“C子程序”这种简单机构,即:VxWorks的所有功能都是由C程序库提供的,任何C程序都能够从Tornado的命令和调试环境中交互式地调用,任何C程序都能够作为VxWorks的一个任务从Tornado主机工具或者应用程序中产生,C程序能够与中断、看门狗定时器或辅助定时器相连。VxWorks的这种统一性使Tornado成为一种有效的开发系统,因为用户不必再编写特殊的代码来与系统陷阱接口,也不需要进行特殊的处理来建立一个任务,更不需要编写特殊的用户接口程序或交互式的测试程序来测试新代码,用户只要编写子程序就能够完成所有这些工作。
VxWorks的这些特性为编写应用程序和设备驱动程序提供了极大的便利。在VxWorks下,设备驱动程序既可以嵌入内核随系统一起启动,也可以作为可加载模块在系统启动之后运行。前一种方式需要修改并重新编译内核,这需要熟悉内核的结构,实现起来比较困难。而后一种方式则比较简单,与编写一般的应用程序类似。但是,无论采用哪种方式编写驱动程序,其基本结构是相同的,如图4所示。
PCI总线是一种即插即用的总线,在BIOS和操作系统的支持下,能够自动地为设备分配合适的内存映射地址、I/O端口和系统中断控制器的输入(IRQ)。Bt848支持两类地址空间:配置地址空间和内存地址空间。配置地址空间包括预定义的PCI配置寄存器,而内存地址空间包括Bt848使用的所有局部寄存器。初始化PCI总线就是设置PCI配置空间所定义的寄存器,实现主机与PCI局部总线之间的接口,其过程是:首先在系统中根据设备标识(Bt848)和供应商标识(Brooktree)找到设备的位置,确定其总线号、设备号和功能号;然后根据总线号、设备号和功能号确定设备的基地址和IRQ,这个基地址就是Bt848局部寄存器的起始地址,而IRQ在连接中断服务程序时使用;接着将设备的局部寄存器映射到系统内存中,供以后设置局部寄存器使用;最后设置命令寄存器以控制Bt848产生和响应PCI周期的能力,例如使系统能够响应对内存空间的访问,使Bt848成为总线操作发起的一方,使系统报告校验错等等。Bt848的中断屏蔽寄存器INT_MASK中的设置决定了系统能够响应哪些中断,中断服务程序为不同的中断源提供相应的处理代码。中断服务程序的编写必须遵循一定的规则,最主要的一点就是不能造成系统阻塞而影响系统性能。中断服务程序应该尽量简洁短小,使其能够尽可能快速地返回。在中断服务程序中不能有运行时间过长的代码,也不能出现对某些共享资源进行某种访问(例如试图获取信号量)的代码。编写完中断服务程序之后,利用初始化PCI总线时获得的IRQ和操作系统提供的函数将中断服务程序与中断矢量连接起来。Bt848的局部寄存器驻留在4KB的内存寻址空间中,必须通过PCI总线才能访问。通过设置相应的寄存器,就能够控制Bt848的行为。通常,需要设置的内容包括:输入电视信号制式(PAL或NTSC),输入信号源(MUX0、MUX1或MUX2),行同步,场同步,输出格式(CCIR 601、CIF或QCIF),图像放大或缩小参数,图像滤波参数,亮度、色度和对比度调节等等。t848中集成的DMA控制器非常独特,它实际上是一个小RISC处理器,其运行的指令(即RISC程序)位于主机内存中并由Bt848的设备驱动程序提供。由于这种结构能够将采集到的视频数据传输到内存中,从而大大地方便了视频采集系统的实现。在这种结构中,DMA能够动态地逐行改变目标内存地址,这就使用户能够将每一帧视频数据分成不同的部分放在多个内存区域中。RISC程序的起始地址放在Bt848的RISC程序起始地址寄存器RISC_STRT_ADD中。Bt848提供的RISC指令包括:写入WRITE、略过SKIP、同步SYNC和跳转JUMP,利用这些指令就能够控制数据流,得到所需要的数据。RISC程序的基本流程是:帧同步→写入奇场→偶场同步→写入偶场→奇场同步→跳转至写入奇场。系统启动是通过设置GPIO和DMA控制寄存器中的RISC使能位和FIFO使能位来实现。将RISC使能位置为1使DMA控制器能够处理RISC指令,将FIFO使能位置为1使数据FIFO有效。在将这两位置为1后,视频采集开始进行。在整个系统中,由于视频采集的速度通常高于应用软件取得数据并处理的速度,为了保证视频数据的连续性,采用了三缓存结构。缓存A是Bt848视频采集的目标地址,在RISC指令的直接控制下,采集的数据都先存放在这个缓存中。缓存B和C组成“乒乓”式结构,循环往复使用:当某一帧数据采集完毕后产生中断,在中断服务程序中将缓存A的数据复制到缓存B(或C)中,然后采集下一帧;当下一帧数据采集完后,再将缓存A中的数据复制到缓存C(或B)中。当应用程序需要数据时,就从缓存B或C中读取最新的一帧图像。缓存B和C交替使用,能够保证应用程序从缓存读数据的操作和驱动程序向缓存写数据的操作不会发生冲突,避免了数据的损坏和迟延。
利用Bt848,在Intel x86平台和实时操作系统VxWorks上实现了视频采集系统。由于Bt848的高度集成特性,其外围电路极其简单,设计硬件电路时极其方便,同时性能也能够得到保证,而且可以灵活地增加其他功能。而VxWorks优异的性能和方便的接口也便于编写设备驱动程序和应用软件,其性能完全能够满足要求。目前,所实现的视频采集系统已经在视频监控和可视电话中获得应用。
5 结束语
随着现代化工业向着高效化、自动化的方向发展,生产中长期以人眼检测为主的颜色识别工程检验作业也趋向自动化、智能化,而其实现的必要条件是各式各样的颜色识别传感器的出现。起初的颜色识别传感器工作原理是将发光二极管照射在被测物体上反射出来的光通过红、绿、蓝三种颜色滤光片的修正后,输入给后续信号处理电路中对颜色信号进行具体的识别工作。本系统采用具有130万像素的影像传感器MT9M111,保证了图像质量,采用USB2.0接口芯片CY7C68013保证了图像的实时传输,且设计灵活,为实现各种图像处理算法提供了软/硬件支持。
参考文献
[1]张东.基于FPGA与DDR2-SDRAM的高速实时数据采集系统的设计与实现[D].南京理工大学,2007.
[2]张凯.基于FPGA的嵌入式监控系统设计[D].河北科技大学,2011.
[3]张东.基于FPGA与DDR2-SDRAM的高速实时数据采集系统的设计与实现[D].南京理工大学,2007.
[4]张培坤,高伟,宋宗玺.一种空间相机的数据通信系统设计[J].电子技术应用,2011,01.
共0条 [查看全部] 网友评论