基于FPGA的實時視頻圖像采集與顯示系統的設計與實現
摘要:主要針對目前視頻圖像處理發(fā)展的現狀,結合FPGA技術,設計了一個基于FPGA的實時視頻圖像采集與顯示系統。系統采用FPGA作為主控芯片,搭栽專用的編碼解碼芯片進行圖像的采集與顯示,主要包括解碼芯片的初始化、編碼芯片的初始化、FPGA圖像采集、PLL設置等幾個功能模塊。采用FPGA的標準設計流程及一些常用技巧來對整個系統進行編程。重點在于利用FPFA開發(fā)平臺對普通相機輸出的圖像進行采集與顯示,最終能在連接的RCA端口顯示屏顯示。
關鍵詞:FPGA;視頻圖像采集;編碼芯片;解碼芯片
0 引言
隨著時代的發(fā)展,人們在圖像處理領域取得了相當多的成果,研究出了很多算法,例如中值濾波、高通濾波等。在圖像的傳輸過程中,各種噪聲源的干擾和影響常常會使圖像的質量變差。由于用一般的軟件實現的圖像預處理算法處理的數據量大,實現起來會比較慢,如果說對于一些實時性要求比較高的系統,那么處理速度往往是要考慮的關鍵要素,因為一旦實時性達不到,就不能第一時間記錄下信息。另外,實時圖像處理技術的日新月異和圖像處理系統的發(fā)展有著千絲萬縷的聯系。在實時圖像處理系統中,關鍵的技術是對實時圖像的采集和處理,圖像采集的速度、質量直接影響到這個系統的性能。
1 系統硬件設計
本系統基于FPGA的實時圖像與顯示系統,由前端視頻采集單元、圖像存儲單元、圖像顯示單元三部分組成。主要功能為對攝像頭送來的視頻數據進行采集,并采用專用視頻解碼芯片將模擬視頻轉化成數字視頻;將采集進來的數據存儲到內嵌的SDRAM中;采用專用視頻編碼芯片將數字視頻信號轉換為模擬信號送顯示器輸出。系統的方案圖如圖1所示。
系統上電后,FPGA管理單元通過I2C總線對SAA7113H解碼芯片進行初始化;CCD攝像頭輸出的PAL制式模擬視頻輸入SAA7113H解碼模塊。FP GA將解碼后的圖像通過輸入緩沖FIFO存放到外部SRAM;再用SDRAM進行奇偶場的合并,滿一幀后圖像進入FPGA進行內部圖像處理,經輸出緩沖進入SAA7121編碼模塊轉換為模擬視頻輸出。通過按鍵的選擇可控制使其輸出圖像亮度增強及字符疊加。本節(jié)將圍繞系統中的視頻圖像解碼芯片及編碼芯片作具體分析。
1. 1 解碼芯片外圍電路
SAA7113H主要由模擬轉換電路、亮度信號電路、色度信號電路、同步電路、輸出信號格式、總線控制及時鐘生成等組成。AI11、AI12、AI21、AI22為四路模擬輸入通道,AOUT為模擬測試輸出通道,VP00~VP07為解碼輸出通道,這些通道的選擇及格式配置都通過I2C總線來完成的。另外,SDA為I2C總線的數據輸入/輸出端,SCL為串行時鐘輸入端,LLC為行鎖定系統時鐘頻率輸出信號,頻率為27 MHz,XTALI、XIAL是外部晶振連接端,TDO/TDI為邊界掃描測試數據的輸出/輸入端,TCK、TMS為邊界掃描的時鐘和測試模式輸入端。SAA7113H的芯片結構圖如圖2所示。
1.2 編碼芯片外圍電路
SAA7121視頻編碼芯片,可以將數字的YUV數字編碼為PAL或者NTSC制式的CVBS輸出或者S端子輸出的模擬視頻信號,單一的3.3 V供電,可通過I2C接口對芯片內部電路進行控制。該芯片內有三個片內10位視頻D/A轉換器分別對應Y,C和CVBS,兩倍過采樣。通過I2C總線協議對SAA7121的各個控制寄存器進行配置就可使其滿足系統要求,芯片的最大特點也是在于僅需一個24. 576 MHz的晶振就可以滿足所有視頻標準的應用。
SAA7121芯片主要由I2C總線控制單元、數據管理單元、編碼單元、同步時鐘單元和D/A轉換器組成。主要通過I2C總線對芯片的內部寄存器進行設置,也就是完成對芯片的工作屬性的設置。輸出數據的格式有兩種:復合視頻輸入信號(CVBS)或分離視頻信號,輸出的制式可以為NTSC制式或PAL制式,支持隔行掃描和連續(xù)掃描方式,并具有Y、C和CVBS三個信號的數膜轉換器。
SAA7121主要由數據管理模塊,總線接口模塊,編碼模塊,D/A模塊組成。MP0~MP7是MPEG端口,輸入CCIR.656的Cb—Y—Cr的編碼數據;RCV1為柵控制端,輸入或輸出各種類型的信號;LLC為線性鎖定時鐘,為芯片提供27 MHz的主頻;CVBS為模擬CVBS信號輸出,C為模擬色度信號輸出,Y為模擬亮度輸出。SAA7121通過設置內部寄存器,對其進行初始化。SAA7121的芯片結構圖如圖3所示。
2 系統軟件實現
通過在FPGA開發(fā)平臺上,使用QuartusⅡ9.0對系統進行硬件語言編程。本系統主要由SAA7113H解碼芯片初始化模塊、SAA7121編碼芯片初始化模塊、FPGA視頻圖像采集與顯示模塊組成。
2.1 SAA7113H初始化模塊
SAA7113H的初始化模塊主要分為I2C控制核模塊,I2C命令模塊,ROM模塊。I2C控制核心模塊完成數據的并/串轉換以及將命令轉換位為I2C總線的SCL/SDA信號線的啟動、停止、寫、應答等具體操作的時序關系;I2C命令模塊則是通過狀態(tài)機(FSM)的方式進行I2C接口間狀態(tài)的轉換以及從ROM模塊中將配置好的數據輸出給I2C控制核模塊,ROM模塊存儲的是配置好的SAA7113H的數據。當啟動I2C開始配置時,從ROM中讀取配置的內容送出即可。
2.2 SAA7121初始化模塊
SAA7121編碼芯片的初始化和SAA7113H有些類似,都是通過I2C總線來控制芯片內部寄存器實現初始化的目的。SAA7113H解碼芯片中的I2C控制模塊分為核心模塊和命令模塊,而SAA7121編碼芯片則只包含一個I2C模塊。
在SAA7121的寄存器配置模塊中,首先,上電復位,確保SDA,SCL為高電平,隨后將SDA從高電平拉到低電平,發(fā)出I2C總線起始信號,開始I2C總線操作。接著向I2C總線寫芯片的從地址,SAA7121芯片地址也與輸入引腳SA電平及讀寫操作有關。SAA7121芯片的輸入引腳SA是接地的,因此芯片地址為SA低電平時的地址。在寫入芯片地址后,再讀應答,并確認有應答時,再寫寄存器的子地址。同樣在確認有應答時,再寫入寄存器數據通過循環(huán)將要配置寄存器的所有數據依次寫入到I2C總線上。最后,在全部數據寫完后,發(fā)出I2C總線中止信號。
2.3 FPGA圖像采集與顯示模塊
系統中最核心的地方就是圖像的采集與顯示,包括FPGA采集與存儲模塊,FPGA顯示模塊兩塊內容。視頻圖像采集模塊的主要作用是接收來自CCD攝像頭的模擬信號,經視頻輸入處理芯片SAA7113H,輸出ITU656 4:2:2格式的數字圖像。完成視頻信號從模擬信號到數字信號的轉換,最終提供后端可以處理的數字視頻數據,存儲到SDRAM中。
3 功能實現與測試
系統連接圖如圖4所示。通過對系統進行編程,完成系統的軟件設計,按照FPGA的設計流程完整的測試了系統的可行性,包括:系統的輸入輸出環(huán)路測試(能否實時的顯示圖像),系統的按鍵調控亮度測試(解碼芯片功能)。測試圖如圖5所示。
4 結語
結合國內實時圖像采集處理系統的現狀,本設計在硬件上采用FPGA作為核心運算器來實現圖像的采集、存儲和顯示;在硬件實現上使用FPGA硬件描述語言Verilog對系統各個功能模塊進行設計。采用FPGA可編程邏輯設計技術實現視頻圖像采集與顯示系統不僅擁有極大的靈活性,可編程性,而且也加快了圖像采集與顯示的速度。由于本文設計的系統中未涉及到復雜的算法,而是用專用的編碼芯片代替了,所以在本文中,圖像的算法未能加入到系統中。下一步的工作就是學習將高端FPGA芯片運用到圖像處理技術當中去,結合網絡技術,研究更新的視頻圖像采集與顯示技術。
評論