毛奎章
摘要:信息時代對視頻圖像的實時采集與處理,提出了更高的要求,FPGA以其自身特點,成為了視頻圖像采集傳輸平臺的重要選擇。本論文研究了在合理選擇攝像頭、FPGA芯片等器件的基礎上,采用FPGA實現對攝像頭的配置,圖像采集,數據緩存,圖像數據處理等各模塊的設計、仿真,并實現了系統的下載調試,在Xilinx的Spantan6芯片實現了一種圖像分辨率是640*480,幀頻為30的實時圖像采集系統。
關鍵詞:實時圖像采集;圖像顯示;FPGA
中圖分類號:TP391.41 文獻標識碼:A 文章編號:1007-9416(2018)08-0147-02
隨著信息社會的不斷發展,實時圖像處理被廣泛應用于各個領域中。實時圖像數據量大,數據率高,對其處理器提出更高的要求。FPGA芯片以其豐富的可編程邏輯資源,高速的運行時鐘,良好的性價比、大量的集成IP核成為視頻圖像處理平臺的重要選擇。
本次設計目標是建立通用圖像處理平臺,實現對實時圖像的采集與顯示。
1 系統總體設計
1.1 器件選擇
本次設計使用的核心器件是:攝像頭、FPGA芯片和片外SDRAM。
根據攝像頭成像質量與后端數字信號處理的要求,本次設計選擇CMOS數字圖像傳感器,選定是OV7670模組,其輸出的圖像分辨率可達640*480,幀頻可達30幀/秒,滿足大多數圖像處理的需要。
由于圖像數據的采集與后端圖像處理的速度不一致,需要使用片外SDRAM對采集的圖像數據進行緩存。緩存采用乒乓操作,即,FPGA將攝像頭傳來的圖像數據存入一片SDRAM中,同時讀取另一片SDRAM中的數據送入算法模塊;當一幀圖像的數據存儲在一片SDRAM后,切換到另一片SDRAM進行下一幀圖像的存儲,循環操作,使得圖像數據無丟失,實現數據存儲讀取連貫。
FPGA芯片選擇的是Xilinx公司的Spartan6系列XC6SLX16-2CSG324芯片,該款芯片的可編程邏輯資源較多,其中CLB采用雙寄存器、6輸入的LUT,芯片包含18Kb Block Ram,SDRAM存儲器接口(DDR接口)、復合時鐘層等資源,適合多媒體系統開發。
據此選擇實驗室自主開發的開發板。該開發板包括:FPGA芯片及其下載電路,兩塊SDRAM,攝像頭接口,VGA接口,板上50MHz有源晶振等,符合系統要求。
1.2 系統總體設計
FPGA需要完成:攝像頭工作狀態設定,數據采集,數據存入SDRAM,從SDRAM讀出數據,驅動VGA接口等工作。系統總體框圖如圖1所示。
系統首先按用戶需求,通過I2C配置模塊對攝像頭進行工作狀態設定,隨后圖像數據采集模塊將攝像頭輸入的數據,送入圖像數據緩存模塊,該模塊將數據緩存到異步FIFO后,送往片外SDRAM,同時從另外一片SDRAM 中讀出以前存入的圖像數據,送入另一個異步FIFO,圖像數據顯示模塊讀出該FIFO數據后,按照VGA接口要求,輸出數字信號,通過D/A芯片ADV7123,送VGA接口,驅動顯示屏重現圖像。
2 FPGA模塊設計
2.1 I2C配置模塊設計
OV7670的寄存器組的數值定義了攝像頭的工作狀態。本次設計根據圖像采集與處理的要求對選定的寄存器進行設置,其它寄存器保留默認值,配置寄存器如表1所示。
通過I2C總線,FPGA與OV7670模組建立通信,FPGA首先產生一個開始信號,發出器件地址和寫控制:0×42,得到應答后,FPGA發出寄存器地址,然后等待尋址成功的應答,最后FPGA發出配置數據,寄存器配置成功后,返回應答信號。
2.2 圖像數據采集模塊設計
OV7670圖像傳感器配置完后,可以進行圖像數據的采集。在采集圖像數據的過程中,主要通過幀同步信號VSYNC、行同步信號HREF,確認像素在圖像中的位置。幀同步信號VSYNC的上升沿表示新一幀圖像的到來,VSYNC的下降沿指示著場消隱結束,是一幀圖像數據采集的開始時刻;行同步信號HREF的上升沿表示一行的數據的開始,下降沿表示該行結束。
本設計配置的攝像頭輸出格式為RGB565,在有效采集區域,像素同步信號PCLK的上升沿采集數據,一個像素數值由兩個字節組成,第一個字節, R4-R0,G5-G3,第二字節,G2-G0,B4-B0,通過2個周期的采集,完成一個像素數據的采集;在計數器的控制下完成一行像素,直至一幀圖像的采集。設計使用在線測試儀對圖像數據采集模塊進行了驗證。
2.3 數據緩存模塊設計
2.3.1 異步FIFO及其控制邏輯設計
由于SDRAM時鐘是100MHz,攝像頭時鐘是24MHz,考慮SDRAM需要同時進行讀寫,所以調用IP核生成兩個異步FIFO。
控制邏輯是,當數據采集端FIFO中的數據個數達到預設數時,數據從FIFO寫入SDRAM;當在SDRAM數據讀取端的FIFO中的數據個數小于預定數,從SDRAM讀出數據寫入FIFO。
2.3.2 SDRAM 讀寫控制模塊設計
這部分功能由以下3個模塊完成,即:SDRAM狀態控制模塊(sdram_ctrl.v):主要完成SDRAM的上電初始化以及定時刷新、讀寫控制等狀態,模塊通過設計兩個狀態機完成相關功能;SDRAM命令模塊(sdram_cmd.v):該模塊根據sdram_ctrl的不同狀態指示輸出相應的SDRAM控制命令和地址;SDRAM數據讀寫模塊(sdram_wr_data.v),該模塊根據sdram_ctrl模塊的狀態指示完成SDRAM數據總線的控制,完成數據的輸入,輸出。模塊連接示意圖如圖2所示。
SDRAM控制模塊的測試過程:首先通過FPGA的片上ROM提供數據,寫入SDRAM,隨后從SDRAM中讀出,通過串口發送模塊將數據輸出到PC,最后驗證了SDRAM存儲數據的正確。
2.4 圖像數據顯示模塊設計
FPGA按照VGA顯示標準輸出垂直同步信號VSYNC、水平同步信號HSYNC和RGB(紅、綠、藍顏色)信號到視頻圖像轉換芯片,驅動VGA接口。
3 系統總體測試
例化以上的FPGA子模塊,整合為一個系統,進行下載,現已調試成功。目前,本系統已應用于焊接機器人系統的焊縫圖像采集,顯示,效果良好,如圖3所示。
4 結語
FPGA芯片以其豐富的可編程邏輯資源,良好的性價比,可以建立靈活多樣的實時圖像采集、處理平臺。
參考文獻
[1]高宏亮,劉彪,李龍龍.基于FPGA的圖像采集和預處理技術的研究[J].制造業自動化,2013,35(13):72-75.
[2]楊帆,張皓,馬新文,姜勇.基于FPGA的圖像處理系統[J].華中科技大學學報(自然科學版),2015,43(02):119-123.