《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 設(shè)計應(yīng)用 > 基于FPGA的實時圖像處理實驗平臺設(shè)計
基于FPGA的實時圖像處理實驗平臺設(shè)計
2014年微型機與應(yīng)用第11期
張 歡,,汪 紅,,王芳芳
中南民族大學(xué) 計算機科學(xué)學(xué)院,,湖北 武漢
摘要: 現(xiàn)場可編程門陣列FPGA(Field-Programmable Gate Array)是目前應(yīng)用十分廣泛的一種現(xiàn)場可編程邏輯器件,其性能優(yōu)越,,資源豐富,,采用并行處理方式,,在數(shù)字信號處理領(lǐng)域具有很大的優(yōu)勢,。數(shù)字圖像處理技術(shù)應(yīng)用廣泛,目前處理算法通常是由軟件串行計算來完成,,但由于實時圖像數(shù)據(jù)量大,,對于處理運算的速度要求高,因此利用FPGA來對實時圖像進行硬件處理成為一個新的發(fā)展趨勢,。本文介紹了一種采用CMOS攝像頭作為視頻源輸入,,SDRAM作為幀緩沖器,F(xiàn)PGA作為主控器和圖像處理模塊,,ADV7123作為視頻D/A轉(zhuǎn)換器,,UART和VGA作為輸入輸出接口的系統(tǒng)設(shè)計方案,對相關(guān)設(shè)計人員具有一定的參考價值,。
Abstract:
Key words :

  摘  要: 結(jié)合FPGA高速并行,、重配置靈活和實時圖像處理中數(shù)據(jù)吞吐量大,、運算速率要求高的特點,設(shè)計了一種基于FPGA的實時圖像處理實驗平臺,。該平臺結(jié)構(gòu)簡單,、擴展性較好,無需修改前端采集和終端顯示模塊,,即可實現(xiàn)實時圖像處理的算法驗證,,適用于相關(guān)人員利用FPGA來進行視頻圖像處理

  關(guān)鍵詞現(xiàn)場可編程門陣列,;視頻圖像處理,;硬件描述語言

  現(xiàn)場可編程門陣列FPGA(Field-Programmable Gate Array)是目前應(yīng)用十分廣泛的一種現(xiàn)場可編程邏輯器件,其性能優(yōu)越,,資源豐富,,采用并行處理方式,在數(shù)字信號處理領(lǐng)域具有很大的優(yōu)勢,。數(shù)字圖像處理技術(shù)應(yīng)用廣泛,,目前處理算法通常是由軟件串行計算來完成,但由于實時圖像數(shù)據(jù)量大,,對于處理運算的速度要求高,,因此利用FPGA來對實時圖像進行硬件處理成為一個新的發(fā)展趨勢。本文介紹了一種采用CMOS攝像頭作為視頻源輸入,,SDRAM作為幀緩沖器,,F(xiàn)PGA作為主控器和圖像處理模塊,ADV7123作為視頻D/A轉(zhuǎn)換器,,UART和VGA作為輸入輸出接口的系統(tǒng)設(shè)計方案,,對相關(guān)設(shè)計人員具有一定的參考價值。

  1 實時圖像處理實驗平臺架構(gòu)

  本系統(tǒng)由視頻采集模塊,、幀緩存模塊(處理前),、圖像處理模塊、幀緩存模塊(處理后),、視頻顯示模塊以及調(diào)試配置模塊組成,。處理流程如下:FPGA上電配置后,利用SCCB通信協(xié)議對視頻采集單元OV7670進行功能配置并捕獲視頻流,,緩存到幀緩存模塊,;配置調(diào)試模塊利用UART對參數(shù)配置寄存器進行設(shè)置;FPGA圖像處理模塊讀取參數(shù)配置寄存器的值并從幀緩存模塊(處理前)中讀取圖像進行處理,,處理完后緩存到幀緩存模塊(處理后),;視頻顯示模塊從幀緩存模塊(處理后)中讀取圖像送到ADV7123并根據(jù)VGA協(xié)議送出相應(yīng)的行同步和場同步信號,實現(xiàn)實時圖像處理后的顯示,。系統(tǒng)結(jié)構(gòu)設(shè)計如圖1所示,。

001.jpg

  2 視頻采集模塊

  2.1 CMOS攝像頭OV7670

  本設(shè)計中采用的是OmniVison公司生產(chǎn)的CMOS圖像傳感器OV7670,。圖像傳感器陣列為656×488(320 128像素),有效的為640×480(307 200像素),,輸出格式有YUV(4∶2∶2),、YCbCr(4∶2∶2)、RGB(GRB4∶2∶2,,RGB565/555/444),、Raw RGB,圖像尺寸支持VGA,、CIF以及從CIF縮放至40×30的任意尺寸,,標(biāo)準(zhǔn)的SCCB接口,兼容I2C接口,。

  2.2 SCCB通信控制

  SCCB(Serial Camera Control Bus)是OmniVision公司定義的一種3線的總線,,它由SCCB_E、SIO_C和SIO_D組成,。為減少芯片引腳,,縮減為兩根線,即SIO_C和SIO_D,。

  在進行讀寫操作前后,,需要有起始和終止信號。當(dāng)SIO_C為高電平時,,SIO_D出現(xiàn)下降沿跳變代表操作開始,,上升沿跳變代表操作結(jié)束,而在具體數(shù)據(jù)傳輸過程中,,只有當(dāng)SIO_C為低電平時,,SIO_D才可以變化。起始信號產(chǎn)生的實現(xiàn)如下,。

  0:begin

  done<=1′b0,;isout<=1′b1;sclk<=1′b1,;

  if(cnt==0)sdata<=1′b1,;

  else if(cnt==SCCB_SPEED_HALF)sdata<=1′b0;

  if(cnt==SCCB_SPEED-1)begin state<=state+1′b1,;cnt<=16′d0;sclk<=1′b0,;end

  else cnt<=cnt+1′b1,;end

  done<=0代表操作開始;isout<=1是將SIO_D設(shè)置為FPGA輸出,;sclk<=1是將SIO_C拉到高電平,;state是狀態(tài)機標(biāo)識,;cnt是一個計數(shù)器,用來對25 MHz的輸入時鐘記數(shù),,利用cnt可以形成100 kHz的工作時序,;在0 ?滋s~5 ?滋s內(nèi)SIO_D為高電平,5 ?滋s~10 ?滋s內(nèi)SIO_D為低電平,,而SIO_C一直保持為高電平,。需要注意的是,在起始信號的最后一個時鐘周期,,將SIO_C拉到低電平是為了下一個狀態(tài)即寫設(shè)備地址時保證SIO_C為低,。

  讀寫操作由幾個步驟組成,每個步驟包括8 bit串行數(shù)據(jù)(MSB優(yōu)先)和1 bit X(Don′t care bit)或NA,。寫操作由3步構(gòu)成,,先寫設(shè)備地址,再寫寄存器地址,,最后寫寄存器的值,。讀操作由4步或5步構(gòu)成,因為讀周期只有兩個階段,,無法確定寄存器的地址,,所以在此之前需要有兩個階段或者3個階段的寫操作。需要注意的是,,在讀周期結(jié)束時主機需要將NA拉高,。本系統(tǒng)中采用的是4步讀,OV7670的設(shè)備地址為0x42,,最后一位用來判斷讀寫,,所以讀的時候為0x43。圖2是用邏輯分析儀捕獲到寫,、讀時序,。

002.jpg

  由圖可知,寫操作由起始信號,、8′h42,、1′b0、8′h1e,、1′b0,、8′h1f、1′b0和結(jié)束信號組成,;而隨后的讀操作由起始信號,、8′h42、1′b0、8′h1e,、1′b0,、結(jié)束信號、起始信號,、8′h43,、1′b0、8′h1f,、1′b1,、結(jié)束信號組成。整體功能是對0x1e寄存器寫0x1f,,隨后從0x1e寄存器中讀出數(shù)據(jù)0x1f,,跟寫入的數(shù)據(jù)一致,即SCCB讀寫功能正常,。

  2.3 CMOS圖像捕獲

  設(shè)置好OV7670的工作模式后,,就可以對圖像進行捕獲了。本系統(tǒng)配置的是VGA 30FPS,,分辨率為640×480,,輸出格式為RGB565。要捕獲圖像數(shù)據(jù),,只需要在VSYNC為0,,HREF為1,PCLK上升沿時對D[7:0]進行采樣即可,,具體實現(xiàn)如下,。

  if(!i_vsync && i_href && i_start)begin

  if(i==0)begin rgb565_buf[7:0]<=i_data[7:0];o_valid<=0,;end

  else begin o_rgb565[15:0]<={rgb565_buf[7:0],,i_data[7:0]};o_valid<=1,;end

  i<=~i,;

  end else o_valid<=0;

  圖像捕獲單元直接把RGB565的信號輸出到異步FIFO中緩存,,需要注意的是,,這里需要根據(jù)VSYNC信號從一幀的起始來進行圖像的緩存,否則緩存到幀緩沖區(qū)的圖像數(shù)據(jù)會出錯,。

  3 幀緩存模塊(處理前,,處理后)

  幀緩存模塊(處理前)完成從異步FIFO中讀取圖像數(shù)據(jù),并實現(xiàn)幀緩存的功能,。當(dāng)圖像處理模塊需要圖像數(shù)據(jù)進行處理時,,可以通過FIFO獲取幀緩存中的圖像數(shù)據(jù),。幀緩存由SDRAM和FPGA內(nèi)部的SDRAM控制器實現(xiàn),。

  SDRAM選用的是韓國三星公司生產(chǎn)的K4S641632K-UC60,,刷新周期為64 ms,CAS latency設(shè)置為3和2時,,最高可達166 MHz和100 MHz工作頻率,。本系統(tǒng)設(shè)置CL為3,工作頻率為100 MHz,。SDRAM控制器由FPGA實現(xiàn),,主要完成對SDRAM的初始化以及讀、寫和自動刷新操作,。SDRAM初始化包括4階段:(1)上電保持時鐘穩(wěn)定,,空指令200 ?滋s以上;(2)對所有的Bank進行預(yù)充電,;(3)8個以上自動刷新命令,;(4)模式寄存器設(shè)置命令。

003.jpg

  初始化如圖3所示,,其中TRP為40 ns(4 cycles),,TRFC為80 ns(8 cycles),TMRD為50 ns(5 cycles),,BL為8 Words,,BT為sequential,CL為3 cycles,,OP為burst write & burst read,。

004.jpg

  讀仿真如圖4所示,其中TRCD為20 ns(2 cycles),,CL為30 ns(3 cycles),,采用自動預(yù)充電。

005.jpg

  寫仿真如圖5所示,,其中TRCD為20 ns(2 cycles),,采用自動預(yù)充電。

  幀緩存模塊(處理后)與幀緩存模塊(處理前)類似,,完成從異步FIFO中讀取圖像數(shù)據(jù),,并實現(xiàn)幀緩存的功能。當(dāng)視頻顯示模塊需要圖像數(shù)據(jù)進行顯示時,,可以通過FIFO獲取幀緩存中的圖像數(shù)據(jù),,此處不再贅述。

  4 調(diào)試配置模塊和視頻顯示模塊

  調(diào)試配置模塊實現(xiàn)的功能是通過PC的UART接口對FPGA圖像處理模塊進行參數(shù)配置,,以獲得不同的處理結(jié)果,,可以利用該模塊對二值化的閾值進行設(shè)置以實現(xiàn)對應(yīng)操作,。

  視頻顯示模塊產(chǎn)生VGA協(xié)議所需的行場同步信號,并通過異步FIFO請求圖像處理模塊的幀數(shù)據(jù),,送到ADV7123完成RGB數(shù)據(jù)的D/A轉(zhuǎn)換,,從而在VGA顯示器上完成實時圖像處理后的顯示。VGA(640×480@60 Hz)行周期由96個同步信號,,48個消隱后肩,,640個行有效數(shù)據(jù),16個消隱前肩的像素構(gòu)成,;場周期由兩個同步信號,,33個消隱后肩,480個場有效數(shù)據(jù),,10個消隱前肩的行周期構(gòu)成,。相關(guān)時序如圖6、圖7所示,。

006.jpg

  圖6展示了VGA的行周期,,實現(xiàn)了紅、綠,、藍,、青、黑,、白,、黃,品紅8色顯示,,每一色是80個像素,,共640個像素。圖7展示了VGA的場周期,,由480個有效行組成,。

  5 圖像處理模塊

  圖像處理模塊完成圖像處理工作,通過異步FIFO從幀緩存模塊(處理前)取數(shù)據(jù),,處理以后,,再通過異步FIFO把處理后的數(shù)據(jù)流存到幀緩存模塊(處理后)。由于該模塊與整個系統(tǒng)的接口簡單(輸入是流式讀FIFO,,輸出是流式寫FIFO),,并且與其他模塊耦合性極小,因此該模塊很容易擴展,,基于流水線和并行操作的圖像處理算法基本上都可以通過此模塊實現(xiàn),。圖8是對實時圖像(上半部分)640×240區(qū)域進行RGB到Y(jié)CbCr色彩空間轉(zhuǎn)換后,取閾值分別為50,、100,、150進行二值化處理后的效果,。

007.jpg

  本文采用Altera公司的Cyclone II EP2C35系列FPGA設(shè)計并實現(xiàn)了一種視頻圖像處理實驗平臺,該平臺具有結(jié)構(gòu)簡單,、擴展性好等優(yōu)勢,。在該系統(tǒng)的具體實現(xiàn)當(dāng)中,所有的數(shù)據(jù)流處理和控制均采用FPGA硬件邏輯實現(xiàn),,因此該系統(tǒng)具有數(shù)據(jù)處理效率高的特點,,但也因此引入了對FIFO和SDRAM的控制難點,,這是相關(guān)設(shè)計人員最需要注意的,。由于視頻處理前和處理后均引入了SDRAM幀緩存,因此對于各種視頻圖像處理算法,,只需在FPGA內(nèi)對圖像處理模塊作相應(yīng)修改,,而前端采集模塊和終端顯示模塊無需任何改變就可實現(xiàn)實時圖像的各種不同的數(shù)據(jù)處理與相關(guān)驗證。由于目前該系統(tǒng)中沒有涉及到復(fù)雜的圖像處理算法,,所以下一步的工作是研究如何在該平臺上實現(xiàn)更多的圖像處理算法,。

  參考文獻

  [1] 祝長鋒,肖鐵軍.基于FPGA的視頻圖像采集系統(tǒng)的設(shè)計[J].計算機工程與設(shè)計,,2008,,29(17):4404-4407.

  [2] 李衛(wèi),王杉.SDRAM控制器的FPGA設(shè)計與實現(xiàn)[J].電子工程師,,2004,,30(10):29,32.

  [3] 宋還吒,,唐立軍.基于FPGA和OV7620的圖像采集及VGA顯示[J].電視技術(shù),,2011,35(5):45-47.

  [4] Samsung Electronics. 64 Mb K-die SDRAM Specification ds_k4s64xx32k_rev11[Z]. 2006.

  [5] JEDEC Standard No.21-c [S]. JEDEC,, Page3.11.5.1(1-19).

  [6] OmniVision Technologies. OV7670 datasheet[Z].2006.

  [7] OmniVision Technologies. OminiVision serial camera control bus(SCCB) functional specification[Z]. 2003.


此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載。