王光興, 李洪祚, 黃 勇, 楊 帆
(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.