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