1 概述
印品质量检测系统是一种基于视觉在线的检测系统,通过摄像机在线扫描印品图像,然后送至内存通过图像处理软件处理, 结果与标准数据比较,找出两者之间的差异并分析产生误差原因,进而重新设计参数。实际中,通常需要对大面积印品进行高精度的检测,而单个摄像头只适于摄取小范围的图像,为了保证精度、同步测量、协作状态检测,本文使用了多个CCD摄像头同步获取不同位置信息,利用CPLD的逻辑控制功能配合PCI总线以DMA方式同步传输数据供上层的应用软件对采集到的数据进行实时处理。从而很好地满足尺寸、精度和实时性的要求。
2 系统硬件结构与工作原理
系统框图如图1所示,该图像采集系统由四路CCD相机、PCI图像采集卡和计算机组成。其中,四路高速CCD摄相机同步获取大面积被检测印纸图像信息;PCI多路采集卡由PCI接口芯片、配置EEPROM、CPLD逻辑控制芯片、高速缓存(FIFO)、视频解码芯片等构成,主要实现CCD图像的采集、缓存和传输;PC机完成采集工作的控制、图像数据的传输控制、图像处理、存储及在显示器上显示的功能。
其工作原理如下: PC机应用程序通过PCI总线向CPLD控制逻辑电路发出“采集开始”命令,CPLD控制逻辑收到开始采集指令后通过虚拟I2C总线控制方式来控制四路视频解码器开始解码,解码后同步输出的高速图像数据及同步信号到FIFO数据输入端缓存,当存储空间将要满时,向PCI总线控制器发出中断请求信号,PCI总线控制器将中断信号转发到PCI图像采集卡,PC机响应此中断信号,通过PCI总线控制器读取FIFO中的数据,直至读取FIFO空为止,数据经由PCI总线,以DMA方式将图像数据快速送入计算机的内存缓冲区,由应用程序根据需要提供对其进行数据图像处理,及在屏幕上显示处理后的结果。
系统由硬件部分和软件部分构成。硬件部分设计主要指四路CCD摄像机图像采集卡的电路设计、CPLD的逻辑控制功能设计;软件部分设计包括底层的设备驱动程序设计和上层的应用程序设计,其功能是控制硬件电路实现对四路CCD图像数据的采集、图像处理、存储和显示。3 系统各功能模块介绍 3.1 CCD选型 CCD器件采用加拿大DALSA公司的IL-E2线阵2048像素的TDICCD,它以3500行/s速度对印品逐行扫描。四路CCD相机通道同步采样,采样信号数据块大小默认为:20484150=1.17Mb。这里150为扫描行数(根据五号字体计算得出),行数程序可调,即扫描块面积可调。扫描这样一幅图像所需要的时间为 150/3500=42.85ms。
3.2 PCI接口设计
PCI接口是外部总线与PCI总线的通信接口,完成PCI总线与外部总线间的通信,PCI总线协议复杂,接口电路实现比较困难。目前实现PCI接口的方案一般分为两种:一种是全部用可编程逻辑器件完成;另一种是用PCI接口芯片与逻辑电路配合实现。相对而言,后者设计简单,开发周期短,兼容性好。本系统采用AMCC公司专用的PCI接口芯片AMCCS5933,其复杂的PCI接口规范完全由S5933实现,只需将其PCI接口信号与PCI总线相连,不需要额外的驱动电路,从而加快了设计进程。
采集卡利用S5933通过DMA实现采集数据的实时传输。S5933支持3个物理总线接口, PCI总线、ADD-ON总线及一个可选的非易失性存储器总线接口,其中PCI接口完全符合PCI总线规范,它的引脚和PCI总线信号一一对应,用户可以根据自己的需要选择其中部分管脚和总线相连。用户真正所需要做的就是设计S5933与ADD-ON总线接口相连接的逻辑电路和配置空间的初始化,而不用去考虑PCI总线规范上面众多的协议。
3. 3 视频解码器
采用Philps公司提供的可编程数字图像视频解码芯片SAA7110对视频图像信号进行采集, 它应用I2C总线的配置方式。内部包括6通道的模拟输入,能实现视频源的选择、模数变换、自动嵌位、自动增益控制、抗混叠滤波、多制式(PAL、PALN、PALM、NTSCM、NTSC-Japan、NTSC4.43和SECAM ) 解码、放大或缩小数字图像以及亮度、饱和度和对比度的控制等。为视频采集系统的设计与实现提供了极大的方便。
3.4 高速缓存(FIFO)
高速缓存FIFO,在CCD输出信号和S5933之间作为数据缓冲,防止数据的丢失。采用IDT公司的双端口异步FIFO IDT7207作为外接FIFO,其容量为32k×9bit(其中8bit是数据,1bit是做奇偶校验)。该FIFO具有很高的存取速度(12ns);标准的满标志位( FF)、空标志位( EF),可禁止数据继续写入或读出。同时,还有可编程快满标志(PAF)以及可编程快空标志(PAE)。3.5 CPLD逻辑控制电路设计 采用ALTEra公司的MAX7000A系列的复杂可编程逻辑器件(CPLD)EPM7128A芯片实现数据传输通道的逻辑控制,完成对四路CCD摄像机控制、FIFO控制以及S5933的控制。利用QuartusII6.0软件进行设计、调试、和仿真,实现各种复杂的组合逻辑和时序逻辑,大大提高了控制电路的集成度。
3.5.1 CPLD对四路视频解码器的控制
对四路SAA7110, 我们设计了利用CPLD虚拟I2C总线技术来实现SAA7110的初始化控制。首先根据I2C总线的原理写出启动、结束、发送应答信号及读、写一个字节的程序,然后根据SAA7110的寄存器操作格式写出读、写寄存器的程序,最后根据以上子程序写出初始化程序员段。系统复位完成CPLD程序加载,先由CPLD的I2C总线模块对SA7110初始化,然后等待采集图像的命令。初始化成功后,SAA7110实时处理模拟视频信号,输出亮度和色度信号,同时输出像素时钟信号,行、场同步信号和参考信号等。本系统只需要灰度图像,不用色度信号,所以数据线为8位。
3.5.2 CPLD对FIFO的控制
对FIFO的控制主要是涉及到读取数据的时序匹配和FIFO存储器满或空后的电路控制问题。从SAA7110来的数据,当帧同步信号VSYNC由低变高时,表示一个有效的数据帧开始,在每帧数据的开头, CPLD 都要置FIFO复位,同时设置偏移量。然后等待行同步信号HSYNC由低变高(表示输出一行有效数据),忽略开头和末尾几十个时钟周期内的无效数据,取中间2048个有效像元,在每个像元时钟PIXCLX的下降沿采集像元数据。
CPLD对采集到的四路有效像元数据具体操作为: CPLD将像元数据放到FIFO输入数据线上,同时设定FIFO的写允许信号W#有效,并给出WCLK信号,在WCLK信号的上升沿把FIFO输入数据线上的数据存入FIFO。当本行的数据传输完毕,HSYNC就变低,等HSYNC再次变高,即下一行数据到来时再开始对下一行的像元数据进行同样的操作。这里置W#信号有效与否要受FIFO满信号(FF#)控制,如果FIFO已满则W#信号无效,即只有在FIFO不满的情况下才能将数据写入。当VSYNC和HSYNC都变低时,表示一帧数据输出完毕。当VSYNC再次变高,就可以开始下一帧图像的采集了。
3.5.3 CPLD对S5933的控制
由于SAA7110来的数据位为8位,我们把S5933的32位数据线分四路分别与四路8位数据线相接。当S5933发起一次DMA读FIFO数据到计算机时,则CPLD置FIFO读允许(REN)、输出允许(OE)有效,同时给出读时钟(RCLK),在RCLK的每一个上升沿,FIFO会把内部存储中的图像数据输出到S5933的数据线上,这里RCLK信号的给出与否受FIFO空信号(FE#)的控制,如果FIFO已经为空,则RCLK信号不应该给出,即只有在FIFO非空的情况下才能将其中数据读出。此后的处理由S5933来实现。
3.6 串行EEPROM的配置
系统上电后,PCI总线的RST#信号有效,同时,S5933 输出局部复位信号 DEVSET#,并且检查 EEPROM 是否存在,若存在,则S5933根据预先烧入EEPROM的内容设置内部寄存器,否则设为缺省值,PCI配置寄存器只能通过EEPROM或PCI主机CPU进行设置,因此有必要要对寄存器进行说明。要注意各属性寄存器和控制寄存器的设置不要前后矛盾,地址范围和基址寄存器的设置要符合要求。EEPROM的内容很重要,它直接关系到PCI图像采集卡能否正常工作。
系统选用2K的ST93CS56串行EEPROM作为S5933的配置芯片,其中存储的是厂家标识、设备标识以及局部总线的基地址空间、I/O空间、中断控制信号等信息。
4 系统软件设计
系统的软件设计包括两部分:底层的设备驱动程序和上层的应用程序设计。
编写驱动程序需要开发环境的支持,现在流行的开发环境有:DevICe Driver Kit,DDK系列、DriverStudio系列和WinDriver系列,由于开发套件对底层函数的封装要引入额外的延时,所以对于这种实时性强、高质量的设备,我们选择MicroSOFt提供的DDK。
底层的设备驱动软件编程主要对PCI接口芯片S5933进行相关的底层操作,如:向系统申请物理地址连续的内存块;为采集卡申请板上中断;设备的初始化;端口的读写操作;内存的直接读写以及中断的设置、响应和调用;启动DMA向内存送数据,DMA完成后响应DMA中断,并通知应用程序数据准备好等。如图2驱动程序流程图 上层的应用程序主要对采集到的四路CCD图像数据转换成标准Windows位图文件格式(本文采用了非压缩格式的BMP文件格式),然后对位图文件数据进行图像处理及显示。具体过程是:首先将由DMA通道从FIFO送到送到内存数据送入图像处理模块,经二值化,倾斜校正,行字切分等图像顶处理操作后,得到待识文字的点阵,汉字识别模块从点阵中提取识别特征,通过分类,精确匹配得出识别结果,然后送人编辑模块进行识别后的人工校对。
5 结 束 语
本文作者创新点是提出了一种基于PCI总线的印品质量检测系统能实时采集和处理、分析多通道数据,实现大容量数据的传送。采集卡已制作完成, 经测试性能完全达到设计要求,由于采用了专用的PCI接口控制芯片, 简化了设计工作, 缩短了设计周期。而且现场可编程器件CPLD,实现了对PCI、FIFO、虚拟I2C、SA7110的控制,使这一设计方案集成度和自动化程度高、检测控制周期短、人为因素干扰少等优点,在印品工业自动化中会起到很重要的作用,有着很好的发展前景。