劉 攀,王紅亮,孟令軍
(中北大學(xué) 儀器科學(xué)與動態(tài)測試教育部重點實驗室;電子測試技術(shù)國家重點實驗室,山西 太原 030051)
構(gòu)建了一種基于FPGA的數(shù)字圖像采集存儲系統(tǒng),它主要由FPGA、USB單片機、CMOS圖像傳感器和大容量Flash構(gòu)成。該系統(tǒng)具有通用性好、成本低等優(yōu)點。
數(shù)字圖像采集存儲系統(tǒng)主要完成數(shù)字圖像采集存儲和實時顯示兩大功能。系統(tǒng)硬件主要有數(shù)字圖像采集模塊、FPGA邏輯控制模塊、Flash存儲模塊、CY7C68013數(shù)據(jù)讀取實時顯示模塊(獨立)。當系統(tǒng)沒有數(shù)據(jù)讀取模塊時,可以完成圖像的采集存儲。當連接數(shù)據(jù)讀取模塊時,可以完成Flash存儲器內(nèi)部圖像數(shù)據(jù)的讀取以及對CMOS圖像傳感器實時捕獲的圖像進行顯示存儲的功能。數(shù)字圖像采集存儲系統(tǒng)組成框圖如圖1所示。
本系統(tǒng)采用OmniVision公司生產(chǎn)的OV7660數(shù)字攝像頭模組。OV7660集成了SCCB控制接口用以訪問片內(nèi)寄存器。SCCB接口是OmniVision公司制定的一種用于控制圖像傳感器的總線 (SIO_C,SIO_D)。SIO_C和SIO_D在功能及使用上與I2C總線兼容。因此,通過FPGA模擬I2C完成對攝像頭的配置[1]。
OV7660內(nèi)部共有165個控制寄存器,可通過配置這些控制寄存器來設(shè)定和實現(xiàn)OV7660的各種功能。OV7660寫寄存器的設(shè)備地址為0x42,讀寄存器設(shè)備地址為0x43。本設(shè)計中OV7660的功能是采集模擬視頻信號,并以12 MHz的時鐘頻率進行A/D轉(zhuǎn)換,輸出8 bit寬、格式為YCbCr4∶2∶2的數(shù)字信號。在此要求下,只要對OV7660的部分寄存器進行配置即可,其余的寄存器均為系統(tǒng)復(fù)位以后的缺省值。關(guān)鍵寄存器配置見表1。
綜合考慮采集速率和圖像的連貫性,將CMOS圖像傳感器配置為QVGA工作模式,通過寄存器參數(shù)配置,將PCLK配置為 4 MHz。成功配置后產(chǎn)生 VSYNC,HREF,PCLK 3種同步信號,分別為場同步輸出信號,行同步輸出信號和用來鎖存有效數(shù)據(jù)的時鐘,即像素時鐘。這3種同步信號作為圖像數(shù)據(jù)獲取、傳輸?shù)臓顟B(tài)信號,是整個采集存儲系統(tǒng)的重點。
表1 OV7660關(guān)鍵寄存器配置參數(shù)
三星公司生產(chǎn)的K9NBG08U5A具有4 Gbyte容量,相當于 4 片 1 Gbyte 的Flash[2](K9K8G08U0A),因此,在對其讀、寫、擦除的時候,都要考慮其內(nèi)部片選切換和對應(yīng)R/B信號的判斷,但是,對每片的基本操作和1 Gbyte的Flash都相同。大容量的Flash保證系統(tǒng)完成長時間的數(shù)據(jù)采集。
為了保證一幀數(shù)據(jù)的完整性,系統(tǒng)在收到開始采集命令后在VSYNC場同步的下降沿到來之后才開始采集存儲工作。HREF行同步信號為高期間CMOS圖像傳感器輸出的數(shù)據(jù)才有效,因此,將HREF與PCLK做與處理,再與場同步信號做或處理作為FPGA內(nèi)部FIFO的寫信號。FIFO為FPGA內(nèi)部擴展,用來作為數(shù)據(jù)緩沖和時序的匹配,當FIFO半滿后就會從中讀取數(shù)據(jù)并寫入Flash中。CMOS圖像傳感器成功配置為QVGA(320×240)模式后輸出時序信號如圖2所示。
數(shù)據(jù)輸出格式為 QVGA(320×240),每行 320 個像素點,640 byte。圖像數(shù)據(jù)實際輸出速率為4 Mbyte/s,即像素時鐘 PCLK 為 4 MHz,每幀 QVGA(320×240)圖像大小為320×240×2=150 Kbyte。得到的幀率理論值為27.3幀/秒(f/s),保證了視頻的連貫性。要求存儲器存儲速度也要高于4 Mbyte/s才能保證不丟幀。實際應(yīng)用中經(jīng)過測試,F(xiàn)lash存儲速度完全可以達到4 Mbyte/s,滿足系統(tǒng)要求。
系統(tǒng)預(yù)留接口電路,可以通過計算機應(yīng)用軟件來控制從CMOS圖像傳感器獲得的圖像的實時讀取、存儲、顯示,以及存儲器中圖像數(shù)據(jù)的讀取及播放。
實際應(yīng)用中存儲器數(shù)據(jù)讀取速度受限于存儲器本身和CY7C68013內(nèi)部的USB2.0的速度。由于存儲器數(shù)據(jù)量大,為了提高效率,完成數(shù)據(jù)讀取,CY7C68013芯片采用通用可編程接口(GPIF)數(shù)據(jù)讀取方式。
GPIF是一個對于FX2端點FIFO的內(nèi)部主控制器[3],它代替了外部的“膠合”邏輯電路,如果沒有GPIF,則在FX2與外界之間必須建立接口電路。FX2固件程序能夠分配FIFO讀和寫波形到4個FIFO中的任何一個,并且GPIF將向外界接口產(chǎn)生正確的選通信號,外界接口用于對FIFO數(shù)據(jù)的傳進傳出。
在數(shù)據(jù)讀取過程中充分利用FPGA的可編程特性[4],通過擴展的1 Kbyte的FIFO來匹配時序完成數(shù)據(jù)的讀取,F(xiàn)PGA在收到讀指令后,首先從Flash中讀取數(shù)據(jù)并寫入其內(nèi)部FIFO,并一直判斷FIFO的滿信號,當FIFO未滿則一直寫數(shù)據(jù)到FIFO,否則停止,保證數(shù)據(jù)不丟失。CY7C68013芯片端點FIFO的內(nèi)部主控制器收到外部提供的握手信號(RDY0)變低后,GPIF也將產(chǎn)生CTL0的讀FIFO信號,且當CY7C68013芯片內(nèi)部FIFO數(shù)據(jù)滿512 byte則自動打包上傳,當握手信號(RDY0)變高,即FIFO為空時則停止讀取數(shù)據(jù)。如此循環(huán),直至完成數(shù)據(jù)的讀取操作。
經(jīng)過測試,完成6 Mbyte/s的數(shù)據(jù)讀取速度,實驗測試發(fā)現(xiàn),將FPGA工作時鐘由20 MHz提高到40 MHz,數(shù)據(jù)讀取速度并沒有改變,可以證明6 Mbyte/s已經(jīng)達到了存儲器的數(shù)據(jù)最大輸出速率,通過分析Flash存儲器讀時序各個狀態(tài)建立和保持時間,發(fā)現(xiàn)實驗結(jié)果與理論分析相符。
為了實現(xiàn)數(shù)字圖像的實時傳輸,必須解決影響實時傳輸?shù)膸状笠蛩兀阂皇怯嬎銠C中應(yīng)用軟件接收圖像、處理并顯示圖像的速度;二是CMOS圖像傳感器與CY7C68013的FIFO緩沖區(qū)之間的傳輸速度;三是CY7C68013內(nèi)部的USB2.0與帶有USB2.0接口計算機之間的傳輸速度。針對這3個關(guān)鍵因素都采取了相應(yīng)的解決方法。
計算機中應(yīng)用軟件接收圖像、處理并顯示圖像采用MFC開發(fā),以人機交互界面為主體,通過優(yōu)化代碼,采用多線程的方法,合理分配系統(tǒng)時間,確定優(yōu)先級,完成實時圖像數(shù)據(jù)的讀取、存儲、顯示。計算機應(yīng)用軟件主要用途有:1)建立與外設(shè)的連接,發(fā)現(xiàn)USB設(shè)備,通過USB向圖像采集設(shè)備發(fā)送指令并進行圖像數(shù)據(jù)的實時采集存儲;2)對從USB傳輸來的圖像數(shù)據(jù)進行實時讀取、顯示;3)讀取Flash存儲器中的圖像數(shù)據(jù)。
筆者采用由Cypress公司生產(chǎn)的EZ-USB FX2系列芯片中的CY7C68013芯片,該芯片是針對USB2.0的,它支持 2 種傳輸速率:全速(full speed)12 Mbit/s,高速(high speed)480 Mbit/s。實時數(shù)據(jù)傳輸要求CY7C68013芯片數(shù)據(jù)傳輸速率高于6 Mbyte/s,因此,將數(shù)據(jù)傳輸模式配置為高速(high speed)480 Mbit/s模式,保證數(shù)據(jù)傳輸?shù)膶崟r性。實時上傳CMOS圖像傳感器捕獲的圖像數(shù)據(jù)與存儲器數(shù)據(jù)讀取方式一樣。其速率通過實時傳輸實驗驗證了圖像的連貫性。
通過采集存儲實驗和實時顯示實驗,驗證了該系統(tǒng)的可行性和實時性。圖3是從實時顯示實驗中捕獲的單幀圖片。
數(shù)字圖像采集系統(tǒng)采用FPGA作為采集控制部分,優(yōu)勢有:
1)由于FPGA專門負責采集存儲控制部分的實現(xiàn),降低成本,增加了編程的靈活性。
2)設(shè)計結(jié)構(gòu)簡單,調(diào)試方便。FPGA的外圍硬件電路簡單,可以減小硬件設(shè)計的復(fù)雜程度。FPGA的時序邏輯調(diào)試可在軟件上仿真實現(xiàn),因而大大降低硬件調(diào)試難度。
3)系統(tǒng)具有獨立性,可以獨立完成數(shù)字圖像的采集存儲,不需要計算機的控制。
4)通過對系統(tǒng)添加視頻壓縮模塊,可以實現(xiàn)更長時間視頻信息的采集存儲,作為運動目標檢測跟蹤硬件系統(tǒng)在圖像捕獲模塊中已經(jīng)得到應(yīng)用。
[1]馬利剛,馬鐵華.基于FPGA的實時圖像采集系統(tǒng)設(shè)計[J].計量與測試技術(shù),2009(12):51-56.
[2]Samsung Semiconductor.K9NBG08U5A datasheet[EB/OL].[2010-01-20].http://www.alldatasheet.net/datasheet-pdf/pdf/170554/SAMSUNG/K9NBG08U5A.html.
[3]錢峰.EZ_USB FX2單片機原理、編程及應(yīng)用[M].北京:北京航空航天大學(xué)出版社,2007.
[4]譚樹人,張茂軍,徐偉.多傳感器同步圖像采集系統(tǒng)的設(shè)計[J].電視技術(shù),2006,30(9):84-87.