1 引言 USB、串口、并口是PC機和外設進(jìn)行通訊的常用接口,但對于數據量大的圖像來(lái)說(shuō),若利用串行RS-232協(xié)議進(jìn)行數據采集,速度不能達到圖像數據采集所需的要求;而用USB進(jìn)行數據采集,雖能滿(mǎn)足所需速度,但要求外設必須支持USB協(xié)議,而USB協(xié)議與常用工程軟件的接口還不普及,給使用帶來(lái)困難。有些用戶(hù)為了利用標準并行口(SPP)進(jìn)行數據采集,但SPP協(xié)議的150kb/s傳輸率對于圖像數據采集,同樣顯得太低。因此,為了采集數據量大的圖像數據,本文采用了具有較高傳輸速率的增強型并行口協(xié)議(EPP)和FPGA,實(shí)現對OV7620CMOS圖像傳感器進(jìn)行高速數據采集,它最高速率可以達到2Mb/s。 2 硬件電路方案 圖1為基于FPGA和EPP技術(shù)對OV7620CMOS圖像傳感器的高速數據采集系統原理框圖,它主要由三部分組成:OV7620的參數配置電路、圖像采樣電路以及PC讀取數據電路。 圖1 系統原理框圖 2.1 OV7620的參數配置電路 系統在上電后需要對CMOS采像芯片進(jìn)行初始化,以確定采集圖像的開(kāi)窗位置、窗口大小和彩色或黑白工作模式等。這些參數的配置是通過(guò)OV7620芯片上提供的SCCB接口進(jìn)行的。 SCCB接口是采用一種簡(jiǎn)單、雙向二線(xiàn)制的同步串行總線(xiàn)I2C總線(xiàn),接口引線(xiàn)有SCL和SDA。由于89C2051沒(méi)有標準的I2C總線(xiàn)接口,可以用軟件程序來(lái)模擬I2C總線(xiàn),OV7620開(kāi)窗位置和開(kāi)窗大小、黑白和彩色模式以及掃描方式均可通過(guò)相應寄存器來(lái)設置。這些寄存器都是可讀/寫(xiě)的,具體操作方法如下:可以采用頁(yè)寫(xiě)的方式,即在寫(xiě)寄存器過(guò)程中要先發(fā)送寫(xiě)允許指令OX42,然后發(fā)送寫(xiě)數據的目的寄存器地址,接著(zhù)為要寫(xiě)的數據。寫(xiě)完一個(gè)寄存器后,CMOS會(huì )自動(dòng)把寄存器地址加一,程序可繼續向下寫(xiě),而不需要再次輸入地址。讀寄存器是同樣過(guò)程,只不過(guò)指令改為OX43。 I2C總線(xiàn)功能的實(shí)現完全是依靠SCL、SDA線(xiàn)上電平的狀態(tài)以及兩者之間的相互配合實(shí)現的。I2C總線(xiàn)規約中規定的條件如下: 啟動(dòng)時(shí)序:SCL為高電平時(shí), SDA出現一個(gè)下降沿; 傳輸時(shí)序:在啟動(dòng)條件滿(mǎn)足后,SDA為穩定數據狀態(tài), SCL產(chǎn)生一個(gè)正脈沖,將傳送一位數據; 應答時(shí)序: 在從機接收到一個(gè)完整的數據字節時(shí),在主機釋放SDA的情況下,主機給SCL輸出一個(gè)正的時(shí)鐘脈沖,從機將SDA拉低,以表應答; 停止條件:當SCL為高電平時(shí),SDA出現一個(gè)上升沿,該條件可以解決多機競爭的問(wèn)題,即在兩個(gè)器件對話(huà)時(shí),第三者插入會(huì )終止前者的數據通信,其主要特點(diǎn)在于各器件每一位都在判斷總線(xiàn)的狀態(tài)。 I2C總線(xiàn)的啟動(dòng)和停止條件如圖2所示。 圖2 I2C總線(xiàn)的啟動(dòng)和停止條件 2.2 圖像采樣電路 在隧道的平行度、無(wú)損檢測、垂直度測量?jì)x中常選用的圖像分辨率為320×320,用黑白模式就能基本滿(mǎn)足圖像識別對圖像特征點(diǎn)的要求。 因此本系統采樣的參數是在圖像分辨率取為320×320、黑白模式、ZV圖像格式中進(jìn)行的。 CMOS圖像芯片ZV端口格式的輸出波形如圖3所示。圖中VSYNC是垂直場(chǎng)同步信號,其下降沿表示一幀圖像的開(kāi)始(CMOS是按列采集圖像的),HREF是水平場(chǎng)同步信號,其上升沿表示一列圖像數據的開(kāi)始。PCLK是輸出數據同步信號,Y是圖像灰度信息。下面介紹FPGA如何對圖像傳感器的數據采樣。 圖3 OV7620在ZV端口格式的輸出時(shí)序 為了進(jìn)行速度匹配,FPGA和PC之間有兩根握手信號: READY和ACK。它們來(lái)協(xié)調FPGA對同一個(gè)數據存儲芯片的讀寫(xiě)過(guò)程。READY是FPGA通知PC圖像數據已經(jīng)讀完信號;ACK是PC通知FPGA數據已讀完信號,兩者都是低電平有效。 在數據采樣期間,將READY拉高,表示正在采集,這時(shí)FPGA根據OV7620的VSYNC、HREF、PCLK產(chǎn)生圖像MEM_WR(寫(xiě)信號)和ADDRESS(地址),讀取OV7620的數據到高速緩存,到下一個(gè)VSYNC信號時(shí),表示一幀數據已經(jīng)采完,接著(zhù)向PC機發(fā)送申請READY信號,表示圖像采集完成,如果PC不給應答信號ACK,FPGA開(kāi)始采樣下一幀數據放到高速緩存中,并覆蓋原有的數據;若PC響應,FPGA停止采樣數據。 2.3 PC讀取數據電路 PC讀取數據是通過(guò)并口的EPP模式進(jìn)行的。在EPP模式下讀時(shí)序如圖4所示。 在讀模式下,nWRITE(EPP寫(xiě)信號)保持高電平, 當nDATASTB(EPP讀信號)變低時(shí),準備讀取外設數據;當外設數據準備好后,使nWAIT(外設忙標志)為高,這時(shí)PC程序向基址+4的端口(EPP數據端口)執行一個(gè)I/O讀操作(nDATASTB信號);在讀脈沖nDATASTB信號的上升沿,PC讀取數據總線(xiàn)上數據。整個(gè)過(guò)程是在一個(gè)ISA周期內完成的。 圖4 EPP模式下讀時(shí)序 FPGA完成對EPP協(xié)議實(shí)現的時(shí)序如圖5。PC不停查詢(xún)READY信號是否有效,直到READY有效時(shí),PC才可以讀取圖像數據,同時(shí)將ACK置高,表示PC正在讀取數據緩存中的圖像數據。這時(shí)FPGA停止采集圖像(不產(chǎn)生寫(xiě)信號),FPGA檢測PC通過(guò)EPP發(fā)出讀脈沖(CPU_DS),產(chǎn)生高速緩存MEM_RD(讀信號)和地址,從高速緩存中讀取一個(gè)字節放到并口上,同時(shí)向PC上發(fā)送一個(gè)BUSY信號,PC在這個(gè)時(shí)刻之后可以讀取一個(gè)字節數據,完成整個(gè)數據讀寫(xiě)。讀取數據過(guò)程中EPP端口的PC_WRITE(寫(xiě)信號)要一直保持為高電平。 圖5 FPGA對EPP協(xié)議的實(shí)現時(shí)序 3 結語(yǔ) FPGA對CMOS高速數據采集方法,可以把CMOS的主動(dòng)器件通過(guò)FPGA變成可控制的方式,PC可間接對存儲體進(jìn)行尋址運算。在該系統中用PC的并口實(shí)現了CMOS信號的高速采集處理,按前述軟硬件方法制作的系統,實(shí)際穩定的采樣速率達到了15幀/s, 該系統已應用在管道無(wú)損檢測樣機中,效果良好。這種信號采集方法還可以在其它諸多需要高速圖像數據采集的場(chǎng)合應用。 |