基于NiosII的視頻采集與DVI成像
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)生行、場(chǎng)、幀、視頻有效標(biāo)志及每場(chǎng)視頻行數(shù)、每行像素點(diǎn)數(shù)。本設(shè)計(jì)利用這些信號(hào)組合作為存儲(chǔ)地址控制字寫(xiě)入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寫(xiě)入一次32 bit數(shù)據(jù)。
每場(chǎng)視頻可視行為288行,占用2進(jìn)制位9 bit,奇偶場(chǎng)標(biāo)志1 bit,每行像素有640個(gè),存入SSRAM時(shí)按照每2個(gè)像素寫(xiě)入一次,故每行像素為360個(gè)寫(xiě)入次,設(shè)計(jì)為9 bit,總共為19 bit,正好占用完19 bit地址線(xiàn)。
奇偶場(chǎng)標(biāo)志就是上述EAV/SAV狀態(tài)字中的F,電視視頻中,首先傳輸?shù)氖桥紨?shù)場(chǎng),此時(shí)A9=0;其次傳輸?shù)氖瞧鏀?shù)場(chǎng),此時(shí)A9=1。幀控制位frame定義為1 bit,當(dāng)完成一幀的傳輸后就使frame=frame+1,這樣幀控制位就是0-1-0-1-0-1序列,完成一幀傳輸就翻轉(zhuǎn)一次。幀控制位用來(lái)切換存儲(chǔ)體,當(dāng)幀控制位切換在第一片SSRAM上時(shí),偶數(shù)場(chǎng)先存入到SSRAM中,然后奇數(shù)場(chǎng)數(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像素處理,像素處理后按照行、場(chǎng)同步信號(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×(Y-16)+1.596×(Cr-128)
G=1.164×(Y-16)-0.813×(Cr-128)-0.392×(Cb-128)(1)
B=1.164×(Y-16)+2.017×(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×Y+817×Cr-114 131
G=596×Y-416×Cr-200×Cb+69 370(2)
B=596×Y+1 033×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)灰度處理、像素水平線(xiàn)性放大插值處理、水平縮小處理、原三彩色輸出和無(wú)定義。
若進(jìn)行灰度處理,則按照下式計(jì)算:
Y=0.299×R+0.587×G+0.114×B(3)
在計(jì)算時(shí)也需要先左移9 bit,采用3路乘法MULT_
ADD宏單元計(jì)算,計(jì)算結(jié)果右移9 bit。如果進(jìn)行水平像素放大,則采取線(xiàn)性插值法,其他圖像處理按照相應(yīng)算法進(jìn)行。
4.2 視頻數(shù)據(jù)輸出和DVI配置
DVI輸出刷新頻率為75 Hz,輸出屏幕像素為640×480,查VGA時(shí)序表得到在640×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)為高電平,否則為低電平。行、場(chǎng)同步信號(hào)由在FPGA片內(nèi)編寫(xiě)的DVI模塊產(chǎn)生時(shí)序控制。通過(guò)I2C口配置SiI178芯片,設(shè)置其為正常工作方式,VSYNC、HSYNC為正常輸入狀態(tài),輸入總線(xiàn)為24 bit寬,IDCK+下降沿將數(shù)據(jù)打入DVI編碼芯片。
系統(tǒng)采用FPGA為主控芯片,通過(guò)一片F(xiàn)PGA完成視頻解碼數(shù)據(jù)的采集和圖像處理,并在FPGA片內(nèi)配置NiosII軟核,作為初始化TVP5146和SiI178使用,在圖像處理模塊中掛接Avalon從設(shè)備,YCbCr轉(zhuǎn)換為RGB后可以通過(guò)NiosII處理器編寫(xiě)C算法處理或者通過(guò)NiosII的標(biāo)志信號(hào)進(jìn)行處理,處理結(jié)果直接送DVI編碼器。采用乒乓交織算法,保證了圖像不閃爍和無(wú)鋸齒現(xiàn)象。本文引用地址:http://butianyuan.cn/article/195400.htm
評(píng)論