《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > 基于NiosII的視頻采集與DVI成像研究及實(shí)現(xiàn)
基于NiosII的視頻采集與DVI成像研究及實(shí)現(xiàn)
蔡欣榮,許泰峰,奚冠巍
中國船舶重工集團(tuán)公司江蘇自動(dòng)化研究所,江蘇 連云港222006
摘要: 采用FPGA作為視頻采集控制和圖像處理芯片,配置NiosII軟核,在FPGA片內(nèi)完成圖像處理和圖像顯示控制,簡化了硬件電路和軟件程序的設(shè)計(jì)。在FPGA片內(nèi)編寫視頻采集時(shí)序,并配置NiosII控制軟核,模擬視頻數(shù)據(jù)經(jīng)視頻解碼芯片輸出ITU-RBT.656格式數(shù)據(jù)送入FPGA,通過時(shí)序控制和NiosII軟核把視頻解碼數(shù)據(jù)依序存儲(chǔ)在SSRAM中,并進(jìn)行裁剪、交織、顏色處理。
關(guān)鍵詞: SoPC 圖像采集 FPGA ITU-RBT.656 DVI
中圖分類號(hào): TP274+2
文獻(xiàn)標(biāo)識(shí)碼: A
Research and realization of video capture based on NiosII and DVI imaging
CAI Xin Rong,XU Tai Feng,XI Guan Wei
JiangSu Automation Research Institute of CSIC, Lianyungang 222006,China
Abstract: This paper takes FPGA as video capture control and image processing chip, configure NiosII processor, processing image in FPGA, that simplify hardware circuit design and software design. Designing control program and burning it into FPGA, configuring NiosII processor, analog video signal captured by video decode chip and output the ITU-RBT.656 data sequence, the data sequence is captured by FPGA, through time scheduling and NiosII processor control , put the decoded data sequence into SSRAM, and take image cut out , interlace and color process and so on.
Key words : video capture;FPGA;NiosII processor;ITU-RBT.656;digital visual interface


    視頻采集是進(jìn)行圖像及圖形處理的第一步,目前視頻采集系統(tǒng)一般由FPGA和DSP組成,F(xiàn)PGA作為視頻采集控制芯片,DSP作為圖像處理與成像控制芯片[1]。隨著FPGA技術(shù)的發(fā)展,片內(nèi)的邏輯單元越來越多,片內(nèi)的DSP資源也越來越豐富,因此可直接在FPGA片內(nèi)進(jìn)行圖像處理。目前Altera公司的FPGA支持NiosII[2]軟核,通過Avalon設(shè)備總線掛接自定義模塊,編寫用戶控制程序。本設(shè)計(jì)通過Avalon總線讀取RGB像素值進(jìn)行像素處理,通過I2C總線初始化視頻解碼芯片和DVI視頻編碼芯片。NiosII是一種可配置片內(nèi)外設(shè)的軟核CPU,采用RISC精簡指令系統(tǒng),流水線處理技術(shù),用戶可自定義Avalon總線外設(shè)構(gòu)成SoC系統(tǒng),支持32 bit存儲(chǔ)寬度,支持DDR2、SSRAM存儲(chǔ)器。結(jié)合項(xiàng)目,采用TVP5146[3]視頻解碼芯片,F(xiàn)PGA采集解碼數(shù)據(jù)并進(jìn)行隔行轉(zhuǎn)逐行、像素裁剪處理、像素YCrCb轉(zhuǎn)RGB、RGB轉(zhuǎn)灰度等處理后,采用NiosII軟核配置Avalon總線DVI接口從設(shè)備外設(shè),把儲(chǔ)存在SSRAM中的視頻數(shù)據(jù)依次送入DVI編碼芯片SiI178[4],帶有DVI接口的監(jiān)視器接收解碼并顯示采集的視頻數(shù)據(jù)。
1 視頻采集與DVI成像系統(tǒng)的組成
    視頻采集與DVI成像硬件構(gòu)成如圖1所示。該系統(tǒng)由視頻解碼芯片、FPGA控制芯片、DVI接收編碼芯片、SSRAM和Flash組成。硬件系統(tǒng)分為模擬視頻信號(hào)解碼、視頻數(shù)據(jù)采集、圖像處理和DVI編碼顯示3大部分。

    模擬視頻信號(hào)解碼由TVP5146芯片組成,該部分主要完成PAL-D制式模擬視頻信號(hào)解碼,輸出符合ITU-RBT656[5]且內(nèi)嵌同步字符4:2:2格式數(shù)據(jù)供FPGA采集。TVP5146支持NTSC、PAL、SCEAM、CVBS、S-video制式視頻輸入,具有RGB轉(zhuǎn)換為YCbCr功能。

    視頻數(shù)據(jù)采集部分由FPGA控制芯片、SSRAM、Flash、電源芯片、輔助外圍電路組成。該部分以TVP5146輸出像素時(shí)鐘作為FPGA采集時(shí)鐘采集解碼后的數(shù)據(jù),在系統(tǒng)時(shí)鐘的控制下,交織乒乓存儲(chǔ)于SSRAM芯片,并在幀信號(hào)控制下交換存儲(chǔ)體。FPGA采用Altera公司CycloneII系列EP2C35F672[6]芯片,該芯片具有33 216個(gè)邏輯單元,內(nèi)部RAM高達(dá)484 KB,支持NiosII嵌入式處理器,核心電壓1.2 V,IO電壓3.3 V,具有4個(gè)PLL輸入,12個(gè)PLL輸出。Altera的FPGA采用SRAM工藝,掉電就會(huì)丟失配置數(shù)據(jù),所以外部需要掛接存儲(chǔ)配置數(shù)據(jù)的部件。Altera公司FPGA一般都支持串行被動(dòng)配置、串行主動(dòng)配置、JTAG配置,通過跳線選擇配置方式,JTAG配置在調(diào)試時(shí)很方便。串行主動(dòng)配置一般需要Altera公司的專用配置芯片,在系統(tǒng)上電后主動(dòng)配置芯片。FPGA配置完成后,NiosII從Flash中讀取程序,完成相應(yīng)的功能。TVP5146采用I2C口配置其工作方式,配置的數(shù)據(jù)亦存儲(chǔ)在Flash芯片中。SSRAM采用CY7C1380D,32 bit數(shù)據(jù)位寬,2 MB存儲(chǔ)空間,3.3 V供電,提供高性能3-1-1-1訪問時(shí)鐘周期速率,最高頻率達(dá)250 MHz。
    圖像處理在FPGA片內(nèi)實(shí)現(xiàn),進(jìn)行YCbCr轉(zhuǎn)RGB、RGB轉(zhuǎn)灰度、線性插值等處理,DVI編碼顯示在DVI接收芯片Si178片內(nèi)完成,在系統(tǒng)時(shí)鐘的控制下,依照DVI顯示時(shí)序,控制行、場同步信號(hào),依次把RGB像素送入編碼芯片,完成圖像數(shù)據(jù)的編碼和傳輸。Si178具有25~165 M點(diǎn)像素每秒,24 bit模式,I2C編程接口,支持熱插拔,兼容DVI1.0標(biāo)準(zhǔn),3.3 V供電。
2 模擬視頻信號(hào)解碼
      視頻解碼格式有ITU-RBT.601標(biāo)準(zhǔn)格式和ITU-RBT.656標(biāo)準(zhǔn)格式。ITU-RBT.601標(biāo)準(zhǔn)需要行、場同步信號(hào)線,ITU-RBT.656標(biāo)準(zhǔn)無需同步信號(hào)線。ITU-RBT.656標(biāo)準(zhǔn)采用8 bit傳輸格式,亮度信號(hào)Y和色度信號(hào)Cb/Cr交替?zhèn)鬏?。本設(shè)計(jì)采用ITU-RBT.656標(biāo)準(zhǔn)。我國電視制式為PAL-D,一幀電視圖像有625行,每行可視像素為720個(gè),因?yàn)橛行邢[和場消隱,實(shí)際可視像素面為720×576,電視圖像傳輸采用奇偶場交替?zhèn)鬏?,所以通常奇偶場各傳?88行。圖2是行同步4:2:2輸出時(shí)序圖。

    PAL-D制式一行可視像素有720個(gè),因?yàn)椴捎肐TU-RBT.656標(biāo)準(zhǔn),每2個(gè)DATACLK時(shí)鐘才輸出一個(gè)像素,所以,一行可視像素需要1 440個(gè)DATACLK時(shí)鐘。一行像素輸出完畢后緊接4個(gè)行結(jié)束標(biāo)志,然后進(jìn)入行消隱階段,行消隱階段結(jié)束后,4個(gè)字符的開始標(biāo)志表明一行的開始,從4個(gè)結(jié)束標(biāo)志到4個(gè)開始標(biāo)志,共有288個(gè)DATACLK時(shí)鐘。這288個(gè)DATACLK期間的數(shù)據(jù)不用于顯示,用于同步和消隱,所以對(duì)于PAL-D制式,采用ITU-RBT.656標(biāo)準(zhǔn)傳輸一行視頻需要1 728個(gè)DATACLK時(shí)鐘[7]。
    EAV和SAV分別表示一行有效視頻的結(jié)束和開始,EAV/SAV序列由FF-00-00-XX表示,其中XX是狀態(tài)字,表1為EAV/SAV序列字段位表。

    F場標(biāo)志:F=0是偶場,F(xiàn)=1是奇場;V視頻有無效標(biāo)志:V=0為有效視頻數(shù)據(jù),V=1為無效視頻數(shù)據(jù);H有效視頻結(jié)束起始標(biāo)志:H=0是SAV,H=1是EAV。
    從624行~22行和311行~335行為無效視頻行,此時(shí)V=1;從23行~310行和336行~623行為有效視頻行,此時(shí)V=0。從1行~312行為偶場,此時(shí)F=0;從313行~625行為奇場,此時(shí)F=1。
    配置TVP5146使其正確初始化。設(shè)置正常工作模式,視頻選擇輸入口,色度和亮度AGC自動(dòng)增益,視頻輸入為PAL-D制式625行,解碼輸出格式為10 bit 4:2:2(2倍像素時(shí)鐘速率)內(nèi)嵌同步字符,實(shí)際10 bit輸出時(shí)最低2 bit可丟棄。設(shè)置亮度信號(hào)范圍為16~235,色度信號(hào)范圍為16~240。配置NiosII軟核,設(shè)置CPU類型為經(jīng)濟(jì)型32 bit,CPU時(shí)鐘頻率為100 MHz,復(fù)位向量起始地址為Flash,異常向量起始地址為On-chip-ram,設(shè)置PIO線模擬I2C協(xié)議,用于配置TVP5146,配置Avalon-MM三態(tài)橋用于掛接Flash,配置On-chip-ram為32 KB[8],添加一個(gè)Avalon從設(shè)備。該從設(shè)備為用戶自定義接口,NiosII軟核可以通過該從設(shè)備口實(shí)時(shí)訪問轉(zhuǎn)換后的RGB像素,進(jìn)行圖像處理。
3 視頻圖像數(shù)據(jù)采集
    視頻解碼芯片輸出內(nèi)嵌同步字符8 bit視頻數(shù)據(jù),參照解碼芯片輸出DATACLK時(shí)鐘,F(xiàn)PGA采集視頻解碼數(shù)據(jù)。FPGA采集之前先要進(jìn)行圖像裁剪、交織處理。裁剪處理是為了產(chǎn)生640×480的像素面,交織處理即變隔行視頻數(shù)據(jù)為逐行視頻輸出,即兩場圖像交叉嵌入一個(gè)存儲(chǔ)體中,形成一幀。當(dāng)一幀存儲(chǔ)完畢后,切換存儲(chǔ)體,而先前的存儲(chǔ)體內(nèi)容參照系統(tǒng)時(shí)鐘,依次像素處理送DVI編碼芯片進(jìn)行顯示。
3.1 視頻信號(hào)采集控制
    視頻輸出信號(hào)為內(nèi)嵌同步字符8 bit Y:Cb:Cr=4:2:2輸出,本設(shè)計(jì)中視頻信號(hào)采集采用狀態(tài)機(jī)控制法。視頻信號(hào)采集控制狀態(tài)機(jī)表示如圖3所示。


    Idel:默認(rèn)空閑狀態(tài)。如果視頻采集標(biāo)志capture置位,則進(jìn)入Wait State狀態(tài);如果capture不置位,則停留在Idel狀態(tài)。
    Wait State:此時(shí)如果收到數(shù)據(jù)0xff,則進(jìn)入State1,其他情況仍然循環(huán)停留。
    State1:如果此時(shí)收到數(shù)據(jù)0x00,則進(jìn)入State2;收到其他數(shù)據(jù)則進(jìn)入Error。
    State2:如果此時(shí)收到數(shù)據(jù)0x00,則進(jìn)入New page狀態(tài),否則狀態(tài)返回到Wait State。
    New page:此時(shí)視頻處于消隱狀態(tài),如果收到的視頻數(shù)據(jù)vpo[6:5]=01,則正在消隱,轉(zhuǎn)入第一行數(shù)據(jù)接收狀態(tài)First Line,否則跳回Wait State狀態(tài)。
    First Line:如果收到vpo[6:4]=000,表明下一個(gè)數(shù)據(jù)即視頻圖像數(shù)據(jù),否則返回到Wait State。
    Chroma blue:正確有效的數(shù)據(jù),如果此時(shí)接收到vpo=0xff,則表明數(shù)據(jù)轉(zhuǎn)入End Line,如果收到vpo=0x00,則轉(zhuǎn)入Error狀態(tài)。
    Luma blue:亮度藍(lán)色數(shù)據(jù),接收完轉(zhuǎn)入Chroma red狀態(tài)。
    Chroma red:色度紅色數(shù)據(jù),接收完轉(zhuǎn)入Luma red狀態(tài)。
    Luma red:亮度紅色數(shù)據(jù),接收完轉(zhuǎn)入Chroma blue狀態(tài)。
    End Line:如果vpo[6:4]=011,表示奇數(shù)場結(jié)束,偶數(shù)場將要開始,轉(zhuǎn)入New line狀態(tài);如果vpo[6:4]=111,表示一幀數(shù)據(jù)結(jié)束,轉(zhuǎn)入Idle狀態(tài);如果vpo[5:4]=01,表示一行結(jié)束,下一行將要開始,轉(zhuǎn)入New line狀態(tài);否則進(jìn)入Error狀態(tài)。
    New Line:如果接收到的vpo[5:4]=00,表示有效數(shù)據(jù)接收,轉(zhuǎn)入Chroma blue狀態(tài);否則轉(zhuǎn)到End Line狀態(tài)。
    Error:錯(cuò)誤狀態(tài),ITU-RBT656規(guī)定Y=[16 235] CBCR=[16 240]范圍內(nèi),越此范圍就為錯(cuò)誤狀態(tài)。如果capture=1,跳轉(zhuǎn)到Wait state狀態(tài),否則停留在Error狀態(tài)。該系統(tǒng)具有自動(dòng)錯(cuò)誤恢復(fù)能力。
3.2 圖像剪裁處理
    PAL-D制式視頻在ITU-RBT.656標(biāo)準(zhǔn)下,輸出像素面為720×576大小,而本設(shè)計(jì)中要求輸出大小為640×480像素面,所以必須使得行720像素變?yōu)?40個(gè),采用每9個(gè)像素丟棄1個(gè)像素,因?yàn)閅/Cb/Cr是交替輸出的,即Cb-Y-Cr-Y傳輸,每個(gè)像素都有亮度數(shù)據(jù)Y,但是色度Cr和Cb是交替的。如果第1個(gè)像素是Cb和Y數(shù)據(jù),則第8個(gè)像素即為Cr和Y數(shù)據(jù),第9個(gè)像素為Cb和Y數(shù)據(jù),現(xiàn)在丟棄第9個(gè)像素?cái)?shù)據(jù),先把第10個(gè)素的Cr數(shù)據(jù)和第11個(gè)像素的Cb交換,這樣就保持了Cb和Cr的交替。視頻中采取每6行可視像素丟棄1行,對(duì)于576行可視像素,實(shí)際丟棄96行,即變?yōu)閷?shí)際可顯示480行。
3.3 圖像交織與存儲(chǔ)處理
    視頻信號(hào)采集控制處理后產(chǎn)生行、場、幀、視頻有效標(biāo)志及每場視頻行數(shù)、每行像素點(diǎn)數(shù)。本設(shè)計(jì)利用這些信號(hào)組合作為存儲(chǔ)地址控制字寫入SSRAM,每2個(gè)DATACLK為1個(gè)像素?cái)?shù)據(jù),4個(gè)DATACLK為2個(gè)像素?cái)?shù)據(jù)32 bit,F(xiàn)PGA控制每4個(gè)DATACLK寫入一次32 bit數(shù)據(jù)。
    每場視頻可視行為288行,占用2進(jìn)制位9 bit,奇偶場標(biāo)志1 bit,每行像素有640個(gè),存入SSRAM時(shí)按照每2個(gè)像素寫入一次,故每行像素為360個(gè)寫入次,設(shè)計(jì)為9 bit,總共為19 bit,正好占用完19 bit地址線。
    奇偶場標(biāo)志就是上述EAV/SAV狀態(tài)字中的F,電視視頻中,首先傳輸?shù)氖桥紨?shù)場,此時(shí)A9=0;其次傳輸?shù)氖瞧鏀?shù)場,此時(shí)A9=1。幀控制位frame定義為1 bit,當(dāng)完成一幀的傳輸后就使frame<=frame+1,這樣幀控制位就是0-1-0-1-0-1序列,完成一幀傳輸就翻轉(zhuǎn)一次。幀控制位用來切換存儲(chǔ)體,當(dāng)幀控制位切換在第一片SSRAM上時(shí),偶數(shù)場先存入到SSRAM中,然后奇數(shù)場數(shù)據(jù)嵌入到SSRAM中。
4 圖像處理和DVI編碼顯示
    視頻采集的圖像已經(jīng)交替存入SSRAM中,當(dāng)一幀存儲(chǔ)完畢,該存儲(chǔ)體就可以進(jìn)行處理上傳。圖像處理包括Y/Cb/Cr 4:2:2格式轉(zhuǎn)化為Y/Cb/Cr 4:4:4,Y/Cb/Cr轉(zhuǎn)化為RGB格式,可實(shí)時(shí)RGB像素處理,像素處理后按照行、場同步信號(hào)依次送入DVI芯片。
4.1 YCrCb轉(zhuǎn)RGB處理
    首先處理的是Y/Cb/Cr 4:2:2格式轉(zhuǎn)化為Y/Cb/Cr 4:4:4格式,就是對(duì)每個(gè)像素?cái)U(kuò)展其色度數(shù)據(jù),使得每個(gè)像素為24 bit。其中8 bit為亮度數(shù)據(jù),8 bit為Cr數(shù)據(jù),8 bit為Cb數(shù)據(jù)。
    由YCrCb數(shù)據(jù)轉(zhuǎn)換為RGB數(shù)據(jù)可按照下式:
  R=1.164&times;(Y-16)+1.596&times;(Cr-128)
  G=1.164&times;(Y-16)-0.813&times;(Cr-128)-0.392&times;(Cb-128)(1)
  B=1.164&times;(Y-16)+2.017&times;(Cb-128)
    實(shí)際上FPGA片內(nèi)不能進(jìn)行小數(shù)運(yùn)算,因此把需要運(yùn)算的數(shù)左移9 bit,且運(yùn)用FPGA片內(nèi)的乘法器宏單元完成。則式(1)變?yōu)槭?2):
    R=596&times;Y+817&times;Cr-114 131
    G=596&times;Y-416&times;Cr-200&times;Cb+69 370(2)
    B=596&times;Y+1 033&times;Cb-141 787
    這樣得到的RGB信號(hào)只需要右移9 bit就可以得到正確的8 bit數(shù)據(jù)位寬度的RGB信號(hào),對(duì)RGB像素的處理受NiosII核控制,掛接在NiosII核上的Avalon從設(shè)備有3 bit控制信號(hào),其值從0~7,分別對(duì)應(yīng)灰度處理、像素水平線性放大插值處理、水平縮小處理、原三彩色輸出和無定義。
    若進(jìn)行灰度處理,則按照下式計(jì)算:
    Y=0.299&times;R+0.587&times;G+0.114&times;B(3)
    在計(jì)算時(shí)也需要先左移9 bit,采用3路乘法MULT_
ADD宏單元計(jì)算,計(jì)算結(jié)果右移9 bit。如果進(jìn)行水平像素放大,則采取線性插值法,其他圖像處理按照相應(yīng)算法進(jìn)行。
4.2 視頻數(shù)據(jù)輸出和DVI配置
    DVI輸出刷新頻率為75 Hz,輸出屏幕像素為640&times;480,查VGA時(shí)序表得到在640&times;480@75 Hz時(shí),水平像素總共為840,垂直像素總共為500,行頻為37.5 kHz,點(diǎn)時(shí)鐘頻率為31.5 MHz,這個(gè)頻率由FPGA片內(nèi)PLL倍頻得到。配置DVI芯片引腳,設(shè)置IDCK+為像素時(shí)鐘31.5 MHz,IDCK-接地,DE表示有效像素?cái)?shù)據(jù)使能,其值在有效行和有效列內(nèi)為高電平,否則為低電平。行、場同步信號(hào)由在FPGA片內(nèi)編寫的DVI模塊產(chǎn)生時(shí)序控制。通過I2C口配置SiI178芯片,設(shè)置其為正常工作方式,VSYNC、HSYNC為正常輸入狀態(tài),輸入總線為24 bit寬,IDCK+下降沿將數(shù)據(jù)打入DVI編碼芯片。
    系統(tǒng)采用FPGA為主控芯片,通過一片F(xiàn)PGA完成視頻解碼數(shù)據(jù)的采集和圖像處理,并在FPGA片內(nèi)配置NiosII軟核,作為初始化TVP5146和SiI178使用,在圖像處理模塊中掛接Avalon從設(shè)備,YCbCr轉(zhuǎn)換為RGB后可以通過NiosII處理器編寫C算法處理或者通過NiosII的標(biāo)志信號(hào)進(jìn)行處理,處理結(jié)果直接送DVI編碼器。采用乒乓交織算法,保證了圖像不閃爍和無鋸齒現(xiàn)象。
參考文獻(xiàn)
[1] 錢建良.DSP+FPGA嵌入式多路視頻監(jiān)控系統(tǒng)硬件平臺(tái) [J].電子產(chǎn)品世界,2007(11).
[2] Altera.Nios II Hardware Development Tutorial[DB/OL]. www.altera.com,2004.
[3] TI.TVP5146 Datasheet[DB/OL].www.ti.com,2007.
[4] Silicon Image.SiI178 Datasheet[DB/OL].www.siliconimage.com,2004.
[5] The ITU Radiocommunication Assembly.Recommendation  ITU-R BT.656-4[DB/OL].www.itu.com,1998.
[6] Altera.EP2C35F672 Datasheet.www.altera.com,2004.
[7] 劉韜,樓興華.FPGA數(shù)字電子系統(tǒng)設(shè)計(jì)與開發(fā)實(shí)例導(dǎo)航[M].北京:人民郵電出版社,2005.
[8] 王建校,危建國.SOPC設(shè)計(jì)基礎(chǔ)與實(shí)踐[M].西安:西安電子科技大學(xué)出版社,2006.

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