《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > 基于FPGA的高清視頻采集與顯示系統(tǒng)設(shè)計(jì)
基于FPGA的高清視頻采集與顯示系統(tǒng)設(shè)計(jì)
來(lái)源:電子技術(shù)應(yīng)用2011年第6期
左事君1,2,劉新朝2,何巧珍2,傅興華1
1.貴州大學(xué) 理學(xué)院電子科學(xué)系,貴州 貴陽(yáng)550025; 2.深圳市艾立克電子有限公司,廣州 深圳518034
摘要: 介紹了一種基于FPGA的視頻采集與顯示系統(tǒng)的設(shè)計(jì)。系統(tǒng)以FPGA為核心,配合高分辨率CCD圖像傳感器、ADC模數(shù)轉(zhuǎn)換、視頻編碼器等,實(shí)現(xiàn)了高清視頻實(shí)時(shí)采集與顯示。詳細(xì)闡述了色彩插值與色彩空間轉(zhuǎn)換算法和BURST傳輸?shù)腇PGA硬件實(shí)現(xiàn)。測(cè)試表明,該系統(tǒng)運(yùn)行良好,能夠滿足高清視頻實(shí)時(shí)監(jiān)控要求。
中圖分類號(hào): TN911.73
文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 0258-7998(2011)06-0056-03
Design of high definition video acquisition and display system based on FPGA
Zuo Shijun1,2,Liu Xinchao2,He Qiaozhen2,F(xiàn)u Xinghua1
1.The Electronic Science Department of Science College, Guizhou University, Guiyang 550025,China; 2.Shenzhen SAE Electronics Co., Ltd, Shenzhen 518034,China
Abstract: A design of high definition video acquisition and display system based on FPGA is presented. The system uses FPGA as the main processor cooperated with the high definition CCD image sensor, ADC analog-digital convertor, video coder etc. The real-time high definition video acquisition and display system is realized. The FPGA implementation of the Bayer interpolation, color space conversion and BURST transmission are detailedly delivered. The test shows that the system works well, can satisfy the real-time video surveillance requirement.
Key words : FPGA;Bayer interpolation;color space conversion;BURST transmission;NIOS processor


 近年來(lái),高清網(wǎng)絡(luò)攝像機(jī)席卷視頻監(jiān)控市場(chǎng),傳統(tǒng)的模擬攝像機(jī)也在尋找新的出路提升圖像質(zhì)量,采用非壓縮方案的高清模擬攝像機(jī)成為首選。一般來(lái)說(shuō),非壓縮方案的硬件平臺(tái)有DSP或ASIC或FPGA。它們各有優(yōu)缺點(diǎn),F(xiàn)PGA是現(xiàn)場(chǎng)可編程門陣列,兼顧了實(shí)時(shí)性與靈活性,而且還可以內(nèi)嵌CPU,因此適合用來(lái)做圖像處理。FPGA的最大缺點(diǎn)是功耗太大,但本文設(shè)計(jì)的不是便攜式消費(fèi)電子,功耗問題可以不考慮。
    本文在數(shù)據(jù)傳輸方式上進(jìn)行了創(chuàng)新,一般的視頻采集與顯示方案均需要使用2個(gè)DMA通道和2片SDRAM做緩存,本文采用自行編寫的BURST模塊傳輸,僅需要一片SDRAM,節(jié)省硬件開銷的同時(shí)降低了PCB板的復(fù)雜度。
1 系統(tǒng)總體設(shè)計(jì)
    系統(tǒng)結(jié)構(gòu)如圖1所示。FPGA是整個(gè)系統(tǒng)的核心,本文采用的FPGA是Cyclone系列的EP3C16,它內(nèi)部集成了15 408個(gè)邏輯單元,56個(gè)18×18乘法器,4個(gè)鎖相環(huán),CCD是SONY的ICX274,其有效分辨率是1 600×1 200,像素時(shí)鐘是36 MHz,并且逐行掃描。SDRAM是Micron的MT48LC2M32B2,容量是2 M×32 bit,完全滿足本設(shè)計(jì)的需要。

    首先ADC驅(qū)動(dòng)CCD,CCD輸出模擬視頻,經(jīng)過(guò)ADC轉(zhuǎn)換成數(shù)字圖像數(shù)據(jù),然后通過(guò)FPGA內(nèi)部的BURST傳輸寫到SDRAM,在SDRAM內(nèi)部開辟三段數(shù)據(jù)空間,如圖2所示。其中code區(qū)域存放NIOS軟件代碼,bufferA和bufferB作為圖像數(shù)據(jù)緩存,當(dāng)圖像數(shù)據(jù)寫入bufferA時(shí),可以讀bufferB用于顯示,當(dāng)一幀數(shù)據(jù)采集完后,切換BURST傳輸?shù)刂?,寫入bufferB,此時(shí)讀bufferA用于顯示,這樣數(shù)據(jù)可以不間斷地采集和顯示,這就是所謂乒乓操作。FPGA輸出的視頻數(shù)據(jù)經(jīng)過(guò)編碼器編碼后形成串行碼流,即SDI數(shù)據(jù),然后經(jīng)過(guò)同軸電纜線傳輸?shù)骄哂蠸DI接口的顯示器顯示。其中,F(xiàn)LASH用來(lái)保存NIOS軟件和FPGA硬件配置信息。

 

 

    在FPGA內(nèi)部實(shí)現(xiàn)的模塊如圖3所示。其中VIDEO IP是根據(jù)AVALON總線規(guī)范編寫的用戶自定義模塊,其余的模塊均是ALTERA提供的標(biāo)準(zhǔn)模塊,只需要在SoPC Builder中調(diào)用即可,因此本系統(tǒng)的設(shè)計(jì)主要是VIDEO IP的設(shè)計(jì)。

2 硬件模塊設(shè)計(jì)
    硬件模塊也就是VIDEO IP模塊,圖4所示為VIDEO IP頂層模塊,主要由色彩插值、色彩空間轉(zhuǎn)換、FIFO三部分構(gòu)成。基于成本與工程復(fù)雜度的考慮,本系統(tǒng)為單CCD系統(tǒng),在CCD表面覆蓋一層色彩濾波陣列(CFA),該濾波陣列采用Bayer格式,如圖5所示。從圖中看出,每個(gè)像素點(diǎn)只有一個(gè)顏色通道,為了實(shí)現(xiàn)彩色顯示,每個(gè)像素點(diǎn)必須要有RGB 3個(gè)通道,要通過(guò)色彩插值才能獲得其余兩個(gè)通道。本文處理的視頻數(shù)據(jù)都是YCbCr格式,因此還需要經(jīng)過(guò)色彩空間轉(zhuǎn)換將RGB格式轉(zhuǎn)換成YCbCr格式。由于NIOS處理器的位寬是32 bit,而YCbCr(4:2:2)是16 bit,所以YCbCr必須經(jīng)過(guò)FIFO,當(dāng)FIFO半滿時(shí),通過(guò)BURST傳輸寫數(shù)據(jù)到SDRAM。值得注意的是:寫入FIFO之前,YCbCr的格式是4:4:4,為了方便顯示,必須轉(zhuǎn)換成4:2:2,本設(shè)計(jì)采取了最簡(jiǎn)單的處理方式,就是Cb和Cr間隔采樣。實(shí)驗(yàn)表明,這種處理不影響顯示效果。

2.1 色彩插值算法
    考慮到本文設(shè)計(jì)的系統(tǒng)主要用于視頻監(jiān)控,因此采用最簡(jiǎn)單的插值算法,即雙線性正交法。該算法的原理是在每個(gè)像素的領(lǐng)域取8個(gè)像素構(gòu)成3×3陣列,該陣列中心的像素為待插值像素,其中一個(gè)色彩通道直接使用該像素的數(shù)據(jù),另外兩個(gè)色彩通道通過(guò)計(jì)算領(lǐng)域的2個(gè)或4個(gè)像素的平均值獲得。從圖6中看出,不同位置的像素四周情況不同,根據(jù)待插值像素所處位置總結(jié)出4種情況,如圖6所示(設(shè)待插值像素坐標(biāo)為(X,Y))。

    (a)R(X,Y)=[R(X,Y-1)+R(X,Y+1)]/2;
        G(X,Y)=G(X,Y);
        B(X,Y)=[B(X-1,Y)+B(X+1,Y)]/2;
    (b)R(X,Y)=[R(X-1,Y-1)+R(X+1,Y-1)+R(X-1,
                Y+1)+R(X+1,Y+1)]/4;
        G(X,Y)=[G(X-1,Y)+G(X,Y-1)+G(X+1,Y)+
                G(X,Y+1)]/4;
        B(X,Y)=B(X,Y);
    (c)R(X,Y)=R(X,Y);
        G(X,Y)= [G(X-1,Y)+G(X,Y-1)+G(X+1,Y)+
                G(X,Y+1)]/4;
        B(X,Y)= [B(X-1,Y-1)+B(X+1,Y-1)+
                B(X-1,Y+1)+B(X+1,Y+1)]/4;
    (d)R(X,Y)=[R(X-1,Y)+R(X+1,Y)]/2;
        G(X,Y)=G(X,Y);
        B(X,Y)= [B(X,Y-1)+B(X,Y+1)]/2
    由于要形成3×3陣列,因此FPGA硬件實(shí)現(xiàn)時(shí),如圖7所示為色彩插值模塊,采用3個(gè)雙口RAM分別保存3行數(shù)據(jù),其中A、B、C、D、E、F表示寄存器,CCD的數(shù)據(jù)是在行場(chǎng)同步控制下從左到右、從上到下輸出,在行場(chǎng)同步下先把第一行數(shù)據(jù)寫到RAM1,寫完第一行再切換到第二行,寫完第二行再寫第三行,第三行寫完第3個(gè)數(shù)據(jù)即可讀出RAM和各寄存器的數(shù)據(jù)做色彩插值,當(dāng)?shù)谌袑懲暌院?,第四行?shù)據(jù)再寫到RAM1,以此類推,一直循環(huán)直到一幀數(shù)據(jù)處理結(jié)束。值得注意的是:3×3陣列各行的數(shù)據(jù)是循環(huán)切換的,當(dāng)RAM1保存的是3×3陣列的第一行數(shù)據(jù)時(shí),3×3陣列第一行數(shù)據(jù)從左到右依次為B、A、RAM1,第二行數(shù)據(jù)從左到右依次D、C、RAM2,第三行數(shù)據(jù)從左到右依次為F、E、RAM3;當(dāng)RAM2保存第一行數(shù)據(jù)時(shí),第一行是D、C、RAM2,以后各行循環(huán)切換,不再贅述。

    3×3陣列的數(shù)據(jù)進(jìn)入多路選擇器,根據(jù)當(dāng)前的位置以及所需的顏色通道選出4個(gè)像素進(jìn)行相加求和運(yùn)算。4個(gè)像素的獲得方法是:當(dāng)是1個(gè)像素時(shí),復(fù)制3次;得到4個(gè)像素,當(dāng)是2個(gè)像素求平均時(shí),每個(gè)像素各復(fù)制1次;當(dāng)是4個(gè)像素求平均時(shí),不用復(fù)制。
    本文采用的CCD為SONY的ICX274,其有效分辨率為1 600×1 200,而用于顯示的分辨率為1 280×720(720P),因此需要截取1 600×1 200為1 282×722進(jìn)行插值,增加兩行兩列是為了做邊界處理。
2.2 色彩空間轉(zhuǎn)換
    本文采用的轉(zhuǎn)換關(guān)系如下:
    Y=0.257×R+0.504×G+0.098×B+16
    Cb=-0.148×R-0.291×G+0.439×B+128
    Cr=0.439×R-0.368×G-0.071×B+128
    在FPGA實(shí)現(xiàn)時(shí),以上轉(zhuǎn)換關(guān)系要調(diào)用乘加單元,圖8所示為乘加單元。其中為了保持?jǐn)?shù)據(jù)的穩(wěn)定,增加處理速度,增加了三級(jí)流水線,由于系數(shù)為小數(shù),因此先左移8位,取整數(shù)后分別與R、G、B相乘,再右移8位輸出,最后與整數(shù)相加輸出YCbCr格式數(shù)據(jù)。

2.3 突發(fā)傳輸模塊
    經(jīng)過(guò)上述兩步處理以后的視頻數(shù)據(jù)即可用于顯示,本文采用的突發(fā)傳輸方案如圖9所示。視頻數(shù)據(jù)首先經(jīng)過(guò)FIFO緩沖,然后經(jīng)過(guò)突發(fā)傳輸寫到SDRAM,數(shù)據(jù)從SDRAM讀出也是采用突發(fā)傳輸,讀出的數(shù)據(jù)再經(jīng)過(guò)另外的FIFO緩沖以后即可用于顯示。突發(fā)(BURST)傳輸一次進(jìn)行多個(gè)數(shù)據(jù)單元的傳輸,而不僅僅是把每個(gè)數(shù)據(jù)單元作為一次單獨(dú)的傳輸。這樣便提高了從端口的數(shù)據(jù)吞吐量,在主端口一次處理多個(gè)數(shù)據(jù)單元時(shí),可以達(dá)到極高的效率。要使用突發(fā)傳輸就必須嚴(yán)格按照突發(fā)傳輸?shù)囊?guī)范設(shè)計(jì)AVALON總線接口。限于篇幅,本文不再詳述AVALON總線接口。

3 測(cè)試結(jié)果
    本系統(tǒng)使用了48%的邏輯單元和40%的存儲(chǔ)器,還有剩余的資源可以給系統(tǒng)增加更多的功能。該系統(tǒng)運(yùn)行良好。
    本文設(shè)計(jì)的基于FPGA的高清視頻處理系統(tǒng),能在FPGA硬件設(shè)備中高速、高質(zhì)量地對(duì)CCD傳感器采集的Bayer圖像進(jìn)行色彩插值和色彩空間轉(zhuǎn)換,經(jīng)過(guò)SDI編碼后能夠?qū)崟r(shí)顯示。在本設(shè)計(jì)的基礎(chǔ)上可以增加更多的功能以改變圖像質(zhì)量,例如3A算法(自動(dòng)曝光,自動(dòng)白平衡,自動(dòng)聚焦)。

參考文獻(xiàn)
[1] 周榮政.數(shù)碼相機(jī)處理器設(shè)計(jì)及系統(tǒng)集成研究[D]:(博士學(xué)位論文).上海:復(fù)旦大學(xué),2004.
[2] 孟楠.基于FPGA的彩色CCD圖像信號(hào)處理技術(shù)的研究[D]:(碩士學(xué)位論文).西安:中國(guó)科學(xué)院西安光學(xué)精密機(jī)械研究所,2009.
[3] 梁海軍,趙建.基于NIOSII的高分辨率圖像采集系統(tǒng)設(shè)計(jì)[J].中國(guó)測(cè)試技術(shù),2008,35(5).
[4] ITU-R BT.1120-7建議書.高清晰度電視演播室信號(hào)數(shù)字接口.國(guó)際電聯(lián)無(wú)線電通信全會(huì),2007.
[5] 王剛,張瀲.基于FPGA的SOPC嵌入式系統(tǒng)設(shè)計(jì)與典型實(shí)例[M].北京:電子工業(yè)出版社,2009.

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