1 概述
印品質(zhì)量檢測系統(tǒng)是一種基于視覺在線的檢測系統(tǒng),通過攝像機在線掃描印品圖像,然后送至內(nèi)存通過圖像處理軟件處理,結(jié)果與標準數(shù)據(jù)比較,找出兩者之間的差異并分析產(chǎn)生誤差原因,進而重新設計參數(shù)。實際中,通常需要對大面積印品進行高精度的檢測,而單個攝像頭只適于攝取小范圍的圖像,為了保證精度、同步測量、協(xié)作狀態(tài)檢測,本文使用了多個CCD攝像頭同步獲取不同位置信息,利用CPLD的邏輯控制功能配合PCI總線以DMA方式同步傳輸數(shù)據(jù)供上層的應用軟件對采集到的數(shù)據(jù)進行實時處理。從而很好地滿足尺寸、精度和實時性的要求。
2 系統(tǒng)硬件結(jié)構(gòu)與工作原理
系統(tǒng)框圖如圖1所示,該圖像采集系統(tǒng)由四路CCD相機、PCI圖像采集卡和計算機組成。其中,四路高速CCD攝相機同步獲取大面積被檢測印紙圖像信息;PCI多路采集卡由PCI接口芯片、配置EEPROM、CPLD邏輯控制芯片、高速緩存(FIFO)、視頻解碼芯片等構(gòu)成,主要實現(xiàn)CCD圖像的采集、緩存和傳輸;PC機完成采集工作的控制、圖像數(shù)據(jù)的傳輸控制、圖像處理、存儲及在顯示器上顯示的功能。
其工作原理如下:PC機應用程序通過PCI總線向CPLD控制邏輯電路發(fā)出“采集開始”命令,CPLD控制邏輯收到開始采集指令后通過虛擬I2C總線控制方式來控制四路視頻解碼器開始解碼,解碼后同步輸出的高速圖像數(shù)據(jù)及同步信號到FIFO數(shù)據(jù)輸入端緩存,當存儲空間將要滿時,向PCI總線控制器發(fā)出中斷請求信號,PCI總線控制器將中斷信號轉(zhuǎn)發(fā)到PCI圖像采集卡,PC機響應此中斷信號,通過PCI總線控制器讀取FIFO中的數(shù)據(jù),直至讀取FIFO空為止,數(shù)據(jù)經(jīng)由PCI總線,以DMA方式將圖像數(shù)據(jù)快速送入計算機的內(nèi)存緩沖區(qū),由應用程序根據(jù)需要提供對其進行數(shù)據(jù)圖像處理,及在屏幕上顯示處理后的結(jié)果。
系統(tǒng)由硬件部分和軟件部分構(gòu)成。硬件部分設計主要指四路CCD攝像機圖像采集卡的電路設計、CPLD的邏輯控制功能設計;軟件部分設計包括底層的設備驅(qū)動程序設計和上層的應用程序設計,其功能是控制硬件電路實現(xiàn)對四路CCD圖像數(shù)據(jù)的采集、圖像處理、存儲和顯示。
3 系統(tǒng)各功能模塊介紹
3.1 CCD選型
CCD器件采用加拿大DALSA公司的IL-E2線陣2048像素的TDICCD,它以3500行/s速度對印品逐行掃描。四路CCD相機通道同步采樣,采樣信號數(shù)據(jù)塊大小默認為:20484150=1.17Mb。這里150為掃描行數(shù)(根據(jù)五號字體計算得出),行數(shù)程序可調(diào),即掃描塊面積可調(diào)。掃描這樣一幅圖像所需要的時間為150/3500=42.85ms。
3.2 PCI接口設計
PCI接口是外部總線與PCI總線的通信接口,完成PCI總線與外部總線間的通信,PCI總線協(xié)議復雜,接口電路實現(xiàn)比較困難。目前實現(xiàn)PCI接口的方案一般分為兩種:一種是全部用可編程邏輯器件完成;另一種是用PCI接口芯片與邏輯電路配合實現(xiàn)。相對而言,后者設計簡單,開發(fā)周期短,兼容性好。本系統(tǒng)采用AMCC公司專用的PCI接口芯片AMCCS5933,其復雜的PCI接口規(guī)范完全由S5933實現(xiàn),只需將其PCI接口信號與PCI總線相連,不需要額外的驅(qū)動電路,從而加快了設計進程。
采集卡利用S5933通過DMA實現(xiàn)采集數(shù)據(jù)的實時傳輸。S5933支持3個物理總線接口,PCI總線、ADD-ON總線及一個可選的非易失性存儲器總線接口,其中PCI接口完全符合PCI總線規(guī)范,它的引腳和PCI總線信號一一對應,用戶可以根據(jù)自己的需要選擇其中部分管腳和總線相連。用戶真正所需要做的就是設計S5933與ADD-ON總線接口相連接的邏輯電路和配置空間的初始化,而不用去考慮PCI總線規(guī)范上面眾多的協(xié)議。
3.3 視頻解碼器
采用Philps公司提供的可編程數(shù)字圖像視頻解碼芯片SAA7110對視頻圖像信號進行采集,它應用I2C總線的配置方式。內(nèi)部包括6通道的模擬輸入,能實現(xiàn)視頻源的選擇、模數(shù)變換、自動嵌位、自動增益控制、抗混疊濾波、多制式(PAL、PALN、PALM、NTSCM、NTSC-Japan、NTSC4.43和SECAM)解碼、放大或縮小數(shù)字圖像以及亮度、飽和度和對比度的控制等。為視頻采集系統(tǒng)的設計與實現(xiàn)提供了極大的方便。
3.4 高速緩存(FIFO)
高速緩存FIFO,在CCD輸出信號和S5933之間作為數(shù)據(jù)緩沖,防止數(shù)據(jù)的丟失。采用IDT公司的雙端口異步FIFO IDT7207作為外接FIFO,其容量為32k×9bit(其中8bit是數(shù)據(jù),1bit是做奇偶校驗)。該FIFO具有很高的存取速度(12ns);標準的滿標志位(FF)、空標志位(EF),可禁止數(shù)據(jù)繼續(xù)寫入或讀出。同時,還有可編程快滿標志(PAF)以及可編程快空標志(PAE)。
3.5 CPLD邏輯控制電路設計
采用Altera公司的MAX7000A系列的復雜可編程邏輯器件(CPLD)EPM7128A芯片實現(xiàn)數(shù)據(jù)傳輸通道的邏輯控制,完成對四路CCD攝像機控制、FIFO控制以及S5933的控制。利用QuartusII6.0軟件進行設計、調(diào)試、和仿真,實現(xiàn)各種復雜的組合邏輯和時序邏輯,大大提高了控制電路的集成度。
3.5.1 CPLD對四路視頻解碼器的控制
對四路SAA7110,我們設計了利用CPLD虛擬I2C總線技術來實現(xiàn)SAA7110的初始化控制。首先根據(jù)I2C總線的原理寫出啟動、結(jié)束、發(fā)送應答信號及讀、寫一個字節(jié)的程序,然后根據(jù)SAA7110的寄存器操作格式寫出讀、寫寄存器的程序,最后根據(jù)以上子程序?qū)懗龀跏蓟绦騿T段。系統(tǒng)復位完成CPLD程序加載,先由CPLD的I2C總線模塊對SA7110初始化,然后等待采集圖像的命令。初始化成功后,SAA7110實時處理模擬視頻信號,輸出亮度和色度信號,同時輸出像素時鐘信號,行、場同步信號和參考信號等。本系統(tǒng)只需要灰度圖像,不用色度信號,所以數(shù)據(jù)線為8位。
3.5.2 CPLD對FIFO的控制
對FIFO的控制主要是涉及到讀取數(shù)據(jù)的時序匹配和FIFO存儲器滿或空后的電路控制問題。從SAA7110來的數(shù)據(jù),當幀同步信號VSYNC由低變高時,表示一個有效的數(shù)據(jù)幀開始,在每幀數(shù)據(jù)的開頭,CPLD都要置FIFO復位,同時設置偏移量。然后等待行同步信號HSYNC由低變高(表示輸出一行有效數(shù)據(jù)),忽略開頭和末尾幾十個時鐘周期內(nèi)的無效數(shù)據(jù),取中間2048個有效像元,在每個像元時鐘PIXCLX的下降沿采集像元數(shù)據(jù)。
CPLD對采集到的四路有效像元數(shù)據(jù)具體操作為:CPLD將像元數(shù)據(jù)放到FIFO輸入數(shù)據(jù)線上,同時設定FIFO的寫允許信號W#有效,并給出WCLK信號,在WCLK信號的上升沿把FIFO輸入數(shù)據(jù)線上的數(shù)據(jù)存入FIFO。當本行的數(shù)據(jù)傳輸完畢,HSYNC就變低,等HSYNC再次變高,即下一行數(shù)據(jù)到來時再開始對下一行的像元數(shù)據(jù)進行同樣的操作。這里置W#信號有效與否要受FIFO滿信號(FF#)控制,如果FIFO已滿則W#信號無效,即只有在FIFO不滿的情況下才能將數(shù)據(jù)寫入。當VSYNC和HSYNC都變低時,表示一幀數(shù)據(jù)輸出完畢。當VSYNC再次變高,就可以開始下一幀圖像的采集了。
3.5.3 CPLD對S5933的控制
由于SAA7110來的數(shù)據(jù)位為8位,我們把S5933的32位數(shù)據(jù)線分四路分別與四路8位數(shù)據(jù)線相接。當S5933發(fā)起一次DMA讀FIFO數(shù)據(jù)到計算機時,則CPLD置FIFO讀允許(REN)、輸出允許(OE)有效,同時給出讀時鐘(RCLK),在RCLK的每一個上升沿,F(xiàn)IFO會把內(nèi)部存儲中的圖像數(shù)據(jù)輸出到S5933的數(shù)據(jù)線上,這里RCLK信號的給出與否受FIFO空信號(FE#)的控制,如果FIFO已經(jīng)為空,則RCLK信號不應該給出,即只有在FIFO非空的情況下才能將其中數(shù)據(jù)讀出。此后的處理由S5933來實現(xiàn)。
3.6 串行EEPROM的配置
系統(tǒng)上電后,PCI總線的RST#信號有效,同時,S5933輸出局部復位信號DEVSET#,并且檢查EEPROM是否存在,若存在,則S5933根據(jù)預先燒入EEPROM的內(nèi)容設置內(nèi)部寄存器,否則設為缺省值,PCI配置寄存器只能通過EEPROM或PCI主機CPU進行設置,因此有必要要對寄存器進行說明。要注意各屬性寄存器和控制寄存器的設置不要前后矛盾,地址范圍和基址寄存器的設置要符合要求。EEPROM的內(nèi)容很重要,它直接關系到PCI圖像采集卡能否正常工作。
系統(tǒng)選用2K的ST93CS56串行EEPROM作為S5933的配置芯片,其中存儲的是廠家標識、設備標識以及局部總線的基地址空間、I/O空間、中斷控制信號等信息。
4 系統(tǒng)軟件設計
系統(tǒng)的軟件設計包括兩部分:底層的設備驅(qū)動程序和上層的應用程序設計。
編寫驅(qū)動程序需要開發(fā)環(huán)境的支持,現(xiàn)在流行的開發(fā)環(huán)境有:Device Driver Kit,DDK系列、DriverStudio系列和WinDriver系列,由于開發(fā)套件對底層函數(shù)的封裝要引入額外的延時,所以對于這種實時性強、高質(zhì)量的設備,我們選擇Microsoft提供的DDK。
底層的設備驅(qū)動軟件編程主要對PCI接口芯片S5933進行相關的底層操作,如:向系統(tǒng)申請物理地址連續(xù)的內(nèi)存塊;為采集卡申請板上中斷;設備的初始化;端口的讀寫操作;內(nèi)存的直接讀寫以及中斷的設置、響應和調(diào)用;啟動DMA向內(nèi)存送數(shù)據(jù),DMA完成后響應DMA中斷,并通知應用程序數(shù)據(jù)準備好等。如圖2驅(qū)動程序流程圖。
上層的應用程序主要對采集到的四路CCD圖像數(shù)據(jù)轉(zhuǎn)換成標準Windows位圖文件格式(本文采用了非壓縮格式的BMP文件格式),然后對位圖文件數(shù)據(jù)進行圖像處理及顯示。具體過程是:首先將由DMA通道從FIFO送到送到內(nèi)存數(shù)據(jù)送入圖像處理模塊,經(jīng)二值化,傾斜校正,行字切分等圖像頂處理操作后,得到待識文字的點陣,漢字識別模塊從點陣中提取識別特征,通過分類,精確匹配得出識別結(jié)果,然后送人編輯模塊進行識別后的人工校對。
5 結(jié)束語
本文作者創(chuàng)新點是提出了一種基于PCI總線的印品質(zhì)量檢測系統(tǒng)能實時采集和處理、分析多通道數(shù)據(jù),實現(xiàn)大容量數(shù)據(jù)的傳送。采集卡已制作完成,經(jīng)測試性能完全達到設計要求,由于采用了專用的PCI接口控制芯片,簡化了設計工作,縮短了設計周期。而且現(xiàn)場可編程器件CPLD,實現(xiàn)了對PCI、FIFO、虛擬I2C、SA7110的控制,使這一設計方案集成度和自動化程度高、檢測控制周期短、人為因素干擾少等優(yōu)點,在印品工業(yè)自動化中會起到很重要的作用,有著很好的發(fā)展前景。