王光兴, 李洪祚, 黄 勇, 杨 帆
(1.长春理工大学电子信息工程学院,吉林长春 130022;2.吉林省博安消防设备有限公司,吉林长春 130022)
机器视觉就是用机器代替人眼来做测量和判断。机器视觉系统是指通过机器视觉产品(即图像摄取装置,分CMOS和CCD两种)将被摄取目标转换成图像信号,传送给专用的图像处理系统,根据像素分布和亮度、颜色等信息,转变成数字化信号;图像系统对这些信号进行各种运算来抽取目标特征,进而根据判别的结果来控制现场的设备动作。文中将MT9V034这种帧曝光图像传感器作为机器视觉的传感器,通过DSP对采集的图像进行分析和处理,完成对背景光源的亮度和传感器电子快门时间的控制,设计出一款背景光源亮度可调的工业化智能相机为贴片机服务。
系统整体结构框图如图1所示。
图1 系统整体结构框图
主控芯片采用DSP28335,该芯片没有独立的图像采集接口,不能与CMOS图像传感器无缝连接。在CMOS图像传感器和DSP直接加了一个FIFO芯片,此FIFO芯片内存非常大,可以将一帧图像完整地存在内部。SRAM作为图像存储芯片,CPLD与CY7C68013A相连作为图像的传输芯片,将图像数据经过USB总线传至上位机。CY7V68013A是一款集成SIE收发器的USB协议芯片,内置51内核接口简单,数据传输速度快。DSP28335具有内部PWM模块,可以进行光源的控制。通过不同的占空比,使光源的亮度可调。
CMOS图像传感器选用MT9V034——一款36 W像素的帧曝光图像传感器。帧曝光图像传感器在曝光的时候采取整帧曝光,同一时间将整个传感器暴露出来,在对运行中的物体进行采集的时候,不会发生形变。CMOS图像传感器输出的图像数据包括:帧同步信号、行同步信号、像素输出时钟、图像数据。帧同步信号标志着一帧图像的开始和结束;行同步信号标志着一帧中一行图像的开始和结束;加上像素输出时钟的约束,即可以将图像完美地表示出来。
AL422B是内存为3 Mbits的双口FIFO芯片,可以存放393 216*8 bits数据。图像传感器设置为输出尺寸640*480*8 bits=307 200*8 bits,可以清晰地看出在AL422B芯片内部正好可以存上完整的一帧图像。MT9V034寄存器配置引脚与DSP相连,使得DSP可以完成对MT9V034内部寄存器的配置工作,配置总线采用IIC总线。MT9V034传感器的帧同步信号(FRAME_VALID)连接DSP并在DSP配置引脚的时候配置成下降沿中断触发模式,检测帧头帧尾功能。MT9V034的行有效信号(LINE_VALID)与DSP一个普通IO与非后控制AL422B的写使能。MT9V034的数据输出引脚和时钟引脚与AL422B相连,在DSP的控制下将图像数据传输到AL422B中,做图像的缓存工作。
DSP28335内部存在一个DMA控制器,直接存储访问(DMA)模块是在不需要CPU仲裁的情况下提供的一种在外设和内存之间传递数据的硬件办法。DMA技术可以在后台完成数据传输,减轻CPU的工作量,对于DSP28335这样的没有视频接口的DSP芯片的图像采集和图像传输工作有很大的帮助。根据DSP内部的DMA控制器的时序要求,需要将FIFO芯片AL422B连接在地址和数据总线上。AL422B在DSP地址总线上的编码为0x200000。
高速可读写存储器SRAM作为图像的存储芯片,型号为IS61LV51216,DSP的外设接口可以与此SRAM芯片无缝连接,地址分配为0x100000~0x17FFFF。
USB芯片使用 Cpress公司的CY7C68013A,此USB芯片内部含有一个51内核,通过对内部固件程序的编写,可以使CY7C68013A工作在SLAVE_FIFO模式,使用非常简单,Cpress公司提供基本的固件程序模块,仅需要简单修改即可。在与上位机连接时,Cpress公司同时提供了可以正常使用的驱动程序,大大简化了DSP与上位机通过USB总线连接的方法[1]。
DSP的数据总线同时与CY7C68013A和CPLD相连,地址总线XA8~XA11与CPLD相连,进行部分地址的编码。当CY7C68013A的FIFO中存到2 KB数据时,CY7C68013A将此数据包打包发往上位机。CY7C68013A的FIFO状态引脚与CPLD相连,并可以通过总线传到DSP内部,完成对FIFO状态的监控。当DSP检测到FIFO为非满时,启动下一次传输,继续向FIFO中写入数据。由于USB发送数据比DSP向FIFO中发送数据快,所以,这样既可以加快传输速度又避免了出错[2]。
LM3410为LED驱动芯片,最大输出电流为2.8 A。工作时外围电路非常简单,而且芯片具有反馈引脚,在芯片内部可以完成自动控制功能。LM3410芯片和其外围电路构成一个升压斩波电路。在DIMM引脚处接占空比可调的PWM信号,就可以完成对背景光源的控制。LM3410光源驱动芯片外围电路如图2所示。
图2 LM3410光源驱动芯片外围电路
整个系统的软件分为4个部分,USB芯片固件程序、DSP程序、CPLD程序和上位机程序。USB芯片的固件程序使USB芯片CY7C68013A运行在SLAVE_FIFO模式,USB芯片负责完成上位机和DSP芯片的数据交流工作;DSP程序是整个系统的核心,负责采集图像、处理图像、传输图像以及背景光源的控制等工作;CPLD程序负责将DSP系统的地址扩展以便DSP连接USB芯片;上位机程序使用Lab View软件,负责向DSP芯片发送指令以及显示图像数据[3]。
通过对USB芯片CY7C68013A固件程序的编写,使此芯片工作在异步SLAVE_FIFO模式。当FIFO内数据到达2 KB时,由内置的51内核将图像数据打包通过USB总线发送到上位机。下面为3个比较重要的寄存器配置,这3条程序位置在void TD_Init(void)函数中。
DSP作为整个系统的核心模块,启动后DSP一直等待上位机发来的指令。如果上位机发送来的指令是快速模式的话,DSP会直接采集图像然后传给上位机。如果为慢速模式时,DSP会依据具体指令对光源亮度和电子快门时间进行设定,再进行图像采集、图像处理和图像传输等工作。程序整体流程如图3所示。
图3 整体软件流程
3.2.1 图像采集程序
图像传感器的配置使用IIC总线,DSP通过IIC总线完成图像传感器的配置工作[4]。图像采集部分按数据流向分为两个阶段:第一阶段图像数据流由CMOS图像传感器到FIFO芯片;第二阶段图像数据流由FIFO芯片到SRAM中。
第一阶段,利用下降沿检测中断检测图像传感器的帧同步信号,DSP连接在与非门的引脚输出高电平。在CMOS传感器行同步信号的限制下,图像数据流入FIFO芯片中。当再次检测到下降沿时,标志着图像数据的帧尾标志,关闭流向FIFO的数据通道,到此第一阶段完成。第二阶段,利用DMA控制器将FIFO芯片地址(0x200000)的数据传输到SRAM芯片地址(0x100000)中,完成图像数据流向SRAM中。至此完成图像数据采集工作,图像数据由图像传感器到达SRAM中。
3.2.2 图像传输和图像处理程序
图像处理部分由很多个图像处理子函数组成[5],还可以根据个人需要再次添加图像处理函数,在SRAM中可以存3帧图像数据,在进行图像处理时可以作为图像数据的缓存。
图像传输部分同样是由DMA模块控制的,由DMA控制器将存在SRAM中的图像数据发送到CY7C68013A芯片内部的FIFO中,再由CY7C68013A芯片打包发送到上位机。由于图像数据量特别大且CY7C68013A片内的FIFO尺寸问题,所以图像传输时需要经过很多次DMA传输。其传输子函数如下:
3.2.3 DSP发送的占空比可调的PWM
DSP28335内部具有一个强大的PWM模块,可以完成很多功能,这里仅用到它的很简单的功能,发送一个占空比可调的方波。EPwm5Regs.TBPRD寄存器设置方波的周期,EPwm5Regs.CMPA.half.CMPA寄存器设置方波的占空比,通过设置不同的值来调整方波的占空比。
NI-VISA(Virtual Instrument Software Architecture)是美国国家仪器公司开发的一种用来与各种仪器总线进行通信的高级应用编程接口[6]。在Lab View上使用NI-VISA进行USB通信时,使用USB RAW设备,USB RAW设备是指除了明确符合USB TMC规格的仪器之外的任何USB设备,通信时需要进行配置。通过查询USB设备的PID和VID的数值,建立驱动程序。之后即可以很方便使用PID和VID的值,在Lab View程序中调用这个USB设备。
上位机通过USB总线与DSP系统连接在一起,通过发送不同的数据指令,完成多种功能[7]。
USB指令格式(共66 bits)见表1。
表2 PDO1通信参数设置
传输的后面具有CRC16的32位数据校验区,保证数据的可靠传输。
MODE:0为慢速图像采集模式,在图像采集时可以进行背景光源的控制,电子快门的控制以及进行一些图像处理功能;1为高速图像采集模式,DSP接到此命令以后仅进行图像采集,然后立即将图像数据上传到上位机,其它位的数值均被忽略;
LED:LED的值为0时,背景光源采集自动控制,首先进行一次图像采集,然后对此图像进行判断,根据判断的结果调整光源亮度;LED的值为1时,LEDVALUE的值有效,根据此值调整光源亮度;
LEDVALUE:当LED为1时,有效。其值为PWM的占空比,即亮度程度。范围在10~90之内,代表10%~90%;
SHUTTER:当SHUTTER为0时,自动控制图像传感器的电子快门时间;为1时,根据S_VALUE的值,手动设置电子快门时间;
S_VALUE:图像传感器的电子快门时间;范围在10~32 765之内;
PROCESS:为1时,图像采集以后进行图像处理,进行何种图像处理功能由P_TYPE确定;为0时,不进行任何图像处理;
P_TYPE:图像处理类型;
SEND:为1时,图像通过USB数据总线发送到上位机;为0时,不发送。
硬件连接图及实验平台如图4所示。
图4 实物图
系统通过总线隔离和地址译码,只使用简单的双口FIFO芯片AL422B接入DSP,仅占用DSP少量软件开销和总线资源就完成图像数据的采集。与采用视频接口芯片、外围FIFO和CPLD/FPGA等方案相比[8],很大程度上降低了系统成本,缩短了开发周期,对系统总线的占用却并没有增加。利用CY7C68013A大大简化了DSP与上位机通过USB总线连接的方法;利用LM3410可使工作时外围电路非常简单并完成对背景光源的控制,减少系统中断次数,优化系统性能,能够将图像处理的结果直观地显示出来。与其它DSP系统相比,本系统具有处理速度快、接口简单、成本低、能实时显示的特点,适用于视觉导航、视频实时处理等要求高速处理图像以及有实时演示要求的场合。
[1] 王文杰.USB2_0加密接口芯片的设计及其FPGA验证[D]:[硕士学位论文].长沙:中南大学,2008.
[2] 赵彦全.基于FX2的数据源设计与USB2_0高速传输探讨[D]:[硕士学位论文].北京:中国科学院电子学研究所,2006.
[3] 段雷.基于DSP+FPGA的图像处理电路板硬件设计[D]:[硕士学位论文].成都:西南交通大学,2008.
[4] 何维.一种高速数据采集及存储系统的研究[D]:[硕士学位论文].西安:西北工业大学,2007.
[5] 冈萨雷斯.数字图像处理[M].2版.北京:电子工业出版社,2004:59-98.
[6] 余志荣,杨莉.基于NI-VISA与Lab VIEW的USB接口应用设计[J].单片机与嵌入式系统应用,2007(1):66-69.
[7] 杨乐平,李海涛,赵勇,等.Lab VIEW高级程序设计[M].北京:清华大学出版社,2003:37-44.
[8] 闫丰.一种基于FPGA的实时图像处理系统[J].长春工业大学学报:自然科学版,2003,24(4):50-52.