《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計應(yīng)用 > 基于FPGA的ITU-656標(biāo)準(zhǔn)視頻解碼及存儲系統(tǒng)設(shè)計
基于FPGA的ITU-656標(biāo)準(zhǔn)視頻解碼及存儲系統(tǒng)設(shè)計
2016年微型機與應(yīng)用第07期
王水魚,李艷婷
(西安理工大學(xué) 自動化與信息工程學(xué)院,陜西 西安 710048)
摘要: 本文主要從視頻圖像采集系統(tǒng)出發(fā),針對基于FPGA視頻采集系統(tǒng)中需要實時顯示和高效存儲視頻數(shù)據(jù)的問題,設(shè)計了視頻解碼和SDRAM存儲模塊。在整個系統(tǒng)中使用CCD攝像頭將采集到的模擬信號經(jīng)解碼芯片ADV7181B解碼后,轉(zhuǎn)換為數(shù)字信號,并使用乒乓存儲方法存儲在SDRAM中,以方便提供給后期其他操作。在分析了視頻解碼及SDRAM的基本原理和主要參數(shù)的基礎(chǔ)上,利用Verilog語言實現(xiàn)了將有效視頻數(shù)據(jù)分離出來并串行輸出,同時也將圖像分辨率調(diào)整為符合VGA顯示的像素大小。另一方面通過乒乓緩存也保證了實時性、高速度的數(shù)據(jù)存儲。最后,經(jīng)過Modelsim仿真驗證,證明了本設(shè)計的有效性。
關(guān)鍵詞: 視頻解碼 ITU-656 SDRAM 乒乓緩存
Abstract:
Key words :

  王水魚,李艷婷

  (西安理工大學(xué) 自動化與信息工程學(xué)院,陜西 西安 710048)

      摘要:本文主要從視頻圖像采集系統(tǒng)出發(fā),針對基于FPGA視頻采集系統(tǒng)中需要實時顯示和高效存儲視頻數(shù)據(jù)的問題,設(shè)計了視頻解碼SDRAM存儲模塊。在整個系統(tǒng)中使用CCD攝像頭將采集到的模擬信號經(jīng)解碼芯片ADV7181B解碼后,轉(zhuǎn)換為數(shù)字信號,并使用乒乓存儲方法存儲在SDRAM中,以方便提供給后期其他操作。在分析了視頻解碼及SDRAM的基本原理和主要參數(shù)的基礎(chǔ)上,利用Verilog語言實現(xiàn)了將有效視頻數(shù)據(jù)分離出來并串行輸出,同時也將圖像分辨率調(diào)整為符合VGA顯示的像素大小。另一方面通過乒乓緩存也保證了實時性、高速度的數(shù)據(jù)存儲。最后,經(jīng)過Modelsim仿真驗證,證明了本設(shè)計的有效性。

  關(guān)鍵詞:視頻解碼;ITU-656;SDRAM;乒乓緩存

0引言

  圖1視頻采集系統(tǒng)框圖視頻圖像采集系統(tǒng)應(yīng)用非常廣泛,隨著計算機通信技術(shù)的不斷發(fā)展,F(xiàn)PGA以其高性能、低開發(fā)成本等優(yōu)點廣泛應(yīng)用于視頻和圖像處理領(lǐng)域[1],因此,更加深入地研究基于FPGA的實時圖像采集系統(tǒng), 對于視頻監(jiān)控系統(tǒng)、高性能的圖像處理等都具有極其重要的作用。本文主要研究的內(nèi)容是基于FPGA的視頻采集及顯示系統(tǒng)中的視頻解碼和視頻數(shù)據(jù)存儲的問題,對于提取有效視頻數(shù)據(jù)流和高效實時存儲大量數(shù)據(jù)具有顯著性的意義。

1視頻圖像數(shù)據(jù)采集系統(tǒng)的總體架構(gòu)

001.jpg

  圖1為視頻圖像采集的系統(tǒng)框圖,主要由I2C配置模塊、ITU656視頻解碼模塊、SDRAM控制器模塊、視頻格式轉(zhuǎn)化模塊和VGA控制器模塊組成[2]。為了使視頻數(shù)據(jù)能實時、高速的顯示,視頻解碼模塊和SDRAM控制模塊就顯得尤為重要。

2ITU-656解碼

  ITU-656是國際電信聯(lián)盟制成的視頻標(biāo)準(zhǔn),是國際電信聯(lián)盟建議為實現(xiàn)在專業(yè)視頻設(shè)備之間傳輸BT.601標(biāo)準(zhǔn)、4∶2∶2的YCrCb數(shù)字視頻信號而定義的一個并行接口和一個串行接口。其中,并行接口在傳輸4∶2∶2的YCrCb視頻數(shù)據(jù)流的同時,也會輸出水平同步信號HS及垂直同步信號VS控制。

  本文中ITU656標(biāo)準(zhǔn)的視頻數(shù)據(jù)以27 MB/s的速率按Cb,Y, Cr,Y, Cb,Y, Cr,…的順序分時傳送[3]。其中,Cb,Y,Cr是同一個地址的亮度和色差信號,Y對應(yīng)于下一個亮度采樣信號。 Y采樣頻率為13.5 MHz,Cb采樣頻率是6.75 MHz,使用8位PCM編碼表示每個采樣點。ITU656 標(biāo)準(zhǔn)的數(shù)據(jù)傳輸格式如圖2所示,每行采樣1 728個樣本點,其中Y為720個,Cb,Cr各360個。消隱期間的數(shù)據(jù)為288個(包括EAV和SAV)。

  

002.jpg

  行控制信號有兩個定時基準(zhǔn)信號:SAV和EAV。 EAV和SAV之間有280個固定填充數(shù)據(jù)。 SAV和EAV具有相同的前同步碼:FF,00,00,而后面的XY決定著該行在整個數(shù)據(jù)幀的位置,并且SAV和EAV信號可以通過XY的值來區(qū)別,同時XY也包含有奇偶場識別、狀態(tài)和信息、場消隱行消隱狀態(tài)。

011.jpg

  F:F=0奇場,F(xiàn)=1偶場;V:V=1消隱數(shù)據(jù),V=0有效行數(shù)據(jù);H:H=0表示SAV,H=1表示EAV;P3,P2,P1,P0:保護比特位,其值由F、V、H 決定。

  ITU656數(shù)字解碼模塊[4]的功能是根據(jù)ITU656視頻數(shù)據(jù)流的特點將有效視頻數(shù)據(jù)YCbCr和F、V、H 控制信號分離開來,并通過計算像素行列的坐標(biāo),確定圖像中像素的具體位置,根據(jù)ITU656數(shù)據(jù)傳輸時序,通過行內(nèi)計數(shù)方式去除行消隱數(shù)據(jù),并分離出SAV、EAV 信號,留下只包括YCbCr信號的數(shù)據(jù)流,并將其串行輸出。ITU656數(shù)字解碼模塊另一個功能是通過計算水平數(shù)據(jù)的像素坐標(biāo),將圖像分辨率由720×576調(diào)整為640×480,以便在VGA中顯示。

  根據(jù)SAV 和EAV 都是以FF、00、00 的順序開始的特點,設(shè)置一個序列移位器,采用4級寄存器級聯(lián)的形式,每個寄存器緩存8 bit數(shù)據(jù),并監(jiān)測后面3個寄存器的值,當(dāng)這三個寄存器緩存的數(shù)據(jù)不是FF、00、00時,序列移位器向右移,當(dāng)檢測到這3個寄存器的值為FF、00、00、時,即認(rèn)為是SAV或EAV的到來,就將第一個寄存器的 bit6、bit5、bit4分別存放到3個一位寄存器中,從而提取出 F、V、H 信號。H(bit4)如果為0,即表示有效數(shù)據(jù)開始。再通過 V、F是否為0可判斷出是有效行數(shù)據(jù)還是消隱數(shù)據(jù),是奇場還是偶場的數(shù)據(jù)。解碼過程如圖3所示。

003.jpg

  調(diào)整圖像分辨率,定義一個Active_Vedio信號,如果Active_Vedio在0~1 440之間,則為有效視頻數(shù)據(jù)。首先720行數(shù)據(jù)調(diào)整為640行數(shù)據(jù),把SAV和EAV信號提取出來后,此處設(shè)計一個FVAL信號,如果FVAL為1,則得到一行720個有效像素值,因此要在這720個有效像素中裁剪掉80個像素。本設(shè)計使用Verilog語言,水平方向的像素提取用一個除法器iskip來實現(xiàn),定義一個水平計數(shù)器OTY_X,即除法器iskip=OTV_X%9,若iskip為0,則該像素點被丟棄,否則保留。在丟棄像素點時遵循兩個原則[5]:(1)像素數(shù)據(jù)為只包含亮度信息的像素點,則將此像素點的亮度值Y丟棄,并且將上一個像素點的色度分量Cr同時丟棄;(2)像素數(shù)據(jù)為一個完整的像素點,包含了Y、Cb、Cr分量值:將分量Y和Cb丟棄,保留Cr;其次576行數(shù)據(jù)調(diào)整為480行數(shù)據(jù),根據(jù)PAL制式視頻信號的特點,分別取偶數(shù)場24~264行240個數(shù)據(jù),奇數(shù)場312~552行240個數(shù)據(jù),組成480行VGA數(shù)據(jù),其他數(shù)據(jù)丟棄,由于丟棄的僅是一副圖像的最邊緣部分,所以對整幅圖像影響不大。

  提取有效視頻數(shù)據(jù),PAL制式的視頻信號的場消隱一共是49行,其中偶數(shù)場和奇數(shù)場的消隱期分別為24行和25行。通過設(shè)計一個4位行計數(shù)器TY_Y實現(xiàn),當(dāng)Hs=1時對Vs進行計數(shù),如果YV_Y大于或等于24,就可以輸出穩(wěn)定的有效視頻數(shù)據(jù)。

004.jpg

  解碼模塊如圖4所示。

005.jpg

  圖5是ITU656 數(shù)字解碼模塊在Modelism6.6中的仿真圖,圖中TD_DATA是輸入的視頻流,當(dāng)它出現(xiàn)FF0000同時XY中的H、V 都為0時,開始輸出有效的視頻數(shù)據(jù),輸出信號oYCbCr的高8 位為Y,低8位為Cb和Cr交替出現(xiàn)。

3SDRAM控制器設(shè)計

  視頻采集模塊中,采用ITU656同步時鐘27 MHz,而SDRAM的工作時鐘通常在100 MHz以上。為解決讀寫時鐘不同步的問題,本設(shè)計中,采用了四個異步FIFO[6]用于跨時鐘域的同步化,其作用是將CCD攝像頭采集進來的圖像數(shù)據(jù)進行緩存,通過寫FIFO讀入SDRAM,讀FIFO輸出給VGA控制器。讀寫FIFO是利用FPGA的片上資源從IP核中調(diào)用過來的,將SDRAM的數(shù)據(jù)端口仿真成四個虛擬端口(兩個寫端口兩個讀端口),控制器根據(jù)緩存FIFO的狀態(tài)對SDRAM發(fā)出讀寫請求,采用頁模式突發(fā)傳輸和Bank切換的方式來匹配時序要求。

  異步FIFO的宏模塊設(shè)計如圖6所示。

006.jpg

  圖6FIFO宏模塊  SDRAM 本身要進行刷新、預(yù)充電等操作,不能時刻處于傳輸數(shù)據(jù)的狀態(tài),而且控制邏輯比較復(fù)雜,不能和其他器件進行透明連接,為此,設(shè)計一個 SDRAM控制器,其他模塊就可通過 SDRAM控制器模塊接口和 SDRAM 相連接,從而對 SDRAM 進行操作,實現(xiàn)乒乓緩存。

  本文設(shè)計的SDRAM控制器[7]主要由系統(tǒng)讀寫控制模塊、SDRAM控制接口模塊、命令解析響應(yīng)模塊、數(shù)據(jù)通道模塊組成,其內(nèi)部結(jié)構(gòu)如圖7所示。

007.jpg

 ?。?)系統(tǒng)讀寫控制模塊

  該模塊的功能是與外設(shè)接口相連,接受外部發(fā)來的控制信號,并對控制信號進行編碼。根據(jù)FIFO的空滿狀態(tài)發(fā)出對SDRAM的讀寫請求信號。當(dāng)寫FIFO里面所存儲的數(shù)據(jù)大小為SDRAM一頁數(shù)據(jù)時,則寫FIFO通過讀請求信號往SDRAM里面?zhèn)鬏敂?shù)據(jù)。因為每個端口FIFO里面可以緩存兩頁大小的SDRAM數(shù)據(jù),所以當(dāng)寫FIFO向SDRAM里面?zhèn)鬏敂?shù)據(jù)時也可以繼續(xù)緩存輸入進來的圖像數(shù)據(jù)。同理,當(dāng)VGA控制器向讀FIFO讀取數(shù)據(jù)時,讀FIFO里面緩存的數(shù)據(jù)大小小于SDRAM每頁的大小時就可以進行讀出了,此時SDRAM也可以繼續(xù)向讀 FIFO里面緩存數(shù)據(jù)。以此輪流進行緩存操作。

 ?。?)SDRAM 控制接口模塊

  該模塊主要完成初始化功能以及分析系統(tǒng)指令。初始化結(jié)束后,系統(tǒng)開始接收并分析指令信號和地址信息,同時還要分析來自命令模塊的CMD_ACK反饋信號,并產(chǎn)生相應(yīng)的SADDR信息給命令響應(yīng)模塊。

 ?。?)命令解析響應(yīng)模塊

  該模塊接受來自SDRAM控制接口模塊的指令并進行判斷,根據(jù)發(fā)來的指令產(chǎn)生對SDRAM進行控制的信號:地址信號(ADDR)、控制信號(CS、CKE)和指令信號(RAS、CAS、WE)。此外,可以通過LOAD-MODE命令,對預(yù)設(shè)的模式寄存器進行配置,從而實現(xiàn)對SDRAM工作模式的操控。最后,該模塊通過使能信號OE來判斷讀、寫請求信號,以此來控制數(shù)據(jù)通路模塊數(shù)據(jù)的發(fā)送方向。

 ?。?)數(shù)據(jù)通路模塊

  數(shù)據(jù)通路模塊的功能是:在寫數(shù)據(jù)時將輸入的數(shù)據(jù)送入到SDRAM中或者在讀數(shù)據(jù)時將SDRAM中的數(shù)據(jù)送到數(shù)據(jù)輸出口。

008.jpg

  SDRAM控制器的頂層模塊如圖8所示。

  設(shè)計好 SDRAM控制器后,采用2個SDRAM,利用乒乓緩存[8]結(jié)構(gòu)的方式來實現(xiàn)對視頻信號的緩存。在第1個緩存周期,輸入的數(shù)據(jù)流在SDRAM控制器控制下被寫入到SDRAM1中。在第2個緩存周期,通過選擇信號的切換,將輸入的數(shù)據(jù)流寫入到SDRAM2中;同時,將SDRAM1中寫入的第1個緩存周期的數(shù)據(jù)讀出,輸出到運算處理單元進行處理。在第3個緩存周期,再次通過選擇信號切換數(shù)據(jù)的輸入與輸出緩存單元。如此循環(huán),從而將緩沖的數(shù)據(jù)流不停頓地送到下一模塊進行處理。

  圖9為SDRAM控制接口模塊的時序仿真圖。圖中,完成初始化后,該模塊根據(jù)CMD指令,解析出對應(yīng)的SDRAM操作命令。

009.jpg

010.jpg

  圖10是指令解析響應(yīng)模塊仿真時序圖,該模塊根據(jù)發(fā)來的讀、寫、刷等命令,對SDRAM的控制信號RAS_N、CAS_N、WE_N、CKE進行編碼。

4結(jié)論

  本文首先介紹了基于FPGA視頻采集系統(tǒng)的整體設(shè)計,對于采集和存儲過程中實時性和高效性的要求,分別討論了ITU656視頻解碼中需要從采集到的視頻數(shù)據(jù)中提取出有效視頻數(shù)據(jù)流,以及將其調(diào)整為符合VGA顯示的像素大小。在存儲模塊中,SDRAM的工作時鐘和視頻采集系統(tǒng)的時鐘不同,為解決讀寫時鐘不同步的問題,采用異步FIFO實現(xiàn)跨時鐘域的同步化,同時采用了兩片SDRAM實現(xiàn)乒乓緩存設(shè)計,對SDRAM控制器各個模塊分別進行Modelsim仿真驗證,得出正確結(jié)果,可以滿足系統(tǒng)的整體要求。

  參考文獻

 ?。?] 馬峰,徐和根,趙曼,等.基于FPGA的智能卡控制器的實現(xiàn)[J].微型機與應(yīng)用,2013,32(1):2022.

 ?。?] 沙晶晶.基于CPLD的VGA時序彩色信號的實現(xiàn)[J].微型機與應(yīng)用,2013,32(1):5758,61.

  [3]范興山,彭軍,黃樂天,等.基于OpenCL的FPGA設(shè)計優(yōu)化方法研究[J].電子技術(shù)應(yīng)用,2014,40(1):1619.

 ?。?] 趙清華.基于FPGA的目標(biāo)跟蹤算法的設(shè)計與實現(xiàn)[D].西安:中國科學(xué)院西安光學(xué)精密機械研究所,2014.

 ?。?] 祝長鋒,肖鐵軍.基于FPGA的實時圖像檢測技術(shù)的研究[D].鎮(zhèn)江:江蘇大學(xué),2008.

 ?。?] 占文慶.基于FPGA的視頻監(jiān)控系統(tǒng)的設(shè)計[D].武漢:武漢理工大學(xué),2014.

  [7] 何云斌,張玉芬.多端口SDRAM控制器的設(shè)計與實現(xiàn)[D].哈爾濱:哈爾濱理工大學(xué),2009.

 ?。?] 黃彪.基于FPGA的高清視頻信號實時處理系統(tǒng)的研究[D].西安:國科學(xué)院西安光學(xué)精密機械研究所,2013.


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