<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > EDA/PCB > 設(shè)計(jì)應(yīng)用 > 基于FPGA的H.264 DCT算法的硬件實(shí)現(xiàn)

          基于FPGA的H.264 DCT算法的硬件實(shí)現(xiàn)

          作者: 時(shí)間:2012-07-30 來(lái)源:網(wǎng)絡(luò) 收藏

          摘要:二維離散余弦()在H.視頻編碼中承擔(dān)者信號(hào)從時(shí)域到頻域變換的作用。在現(xiàn)場(chǎng)可編程邏輯門(mén)陣列()上設(shè)計(jì)了高效的采用流水線結(jié)構(gòu)的H. 硬件電路。首先,把二維4×4 變換轉(zhuǎn)換成二次一維DCT變換;其次,DCT變換之間加一個(gè)兩端口的RAM,以實(shí)現(xiàn)數(shù)列的轉(zhuǎn)置;最后,在頂層設(shè)計(jì)一個(gè)有限狀態(tài)機(jī)控制整個(gè)流程。該設(shè)計(jì)采用較少的資源實(shí)現(xiàn)了較好的功能,獲得了可靠的實(shí)驗(yàn)結(jié)果。
          關(guān)鍵詞:二維離散余弦變換;;H.;DCT

          0 引言
          目前,基于分塊DCT的編碼技術(shù)已成為圖像/視頻編碼國(guó)際標(biāo)準(zhǔn)的核心技術(shù),一方面是因?yàn)镈CT具有良好的去相關(guān)性和能量壓縮性,另一方面是因?yàn)镈CT具有快速實(shí)現(xiàn)。隨著數(shù)字多媒體技術(shù)的快速發(fā)展,H.264視頻壓縮標(biāo)準(zhǔn)在多個(gè)領(lǐng)域得到了廣泛的應(yīng)用。然而,在當(dāng)前有限的網(wǎng)絡(luò)帶寬、有限的資源以及要求更高壓縮速率情況下,對(duì)二維離散余弦變換(DCT)提出了更高的要求。H.264對(duì)圖像或預(yù)測(cè)殘差采用了4×4整數(shù)離散余弦變換技術(shù),避免了以往標(biāo)準(zhǔn)中使用的通用8×8離散余弦變換、逆變換經(jīng)常出現(xiàn)的失配問(wèn)題。

          1 H.264的整數(shù)DCT變換
          一維N點(diǎn)離散余弦變挽(DCT)可以表示為:
          b.JPG
          式中:xn是輸入時(shí)域序列中第n項(xiàng);yK是輸出頻域序列中的第K項(xiàng);系數(shù)CK定義如下:
          c.JPG
          H.264對(duì)4×4圖像塊進(jìn)行操作,則相應(yīng)的4×4DCT變換矩陣A為:

          本文引用地址:http://www.ex-cimer.com/article/190096.htm

          d.JPG
          d.JPG
          A中的a,b和c是實(shí)數(shù),而圖像塊X中的元素是整數(shù)。對(duì)實(shí)數(shù)的DCT,由于在解碼端的浮點(diǎn)運(yùn)算精度問(wèn)題,會(huì)造成解碼后的數(shù)據(jù)的失配,進(jìn)而引起漂移。H.264比其他圖像編碼使用了更多的預(yù)測(cè)過(guò)程,甚至內(nèi)部編碼模式也依賴于空間預(yù)測(cè)。因此,H.264對(duì)預(yù)測(cè)漂移是十分敏感的。為此,H.264對(duì)4×4 DCT中的A進(jìn)行了改造,采用了整數(shù)DCT技術(shù),有效地減少計(jì)算量,同時(shí)不損失圖像準(zhǔn)確度。式(1)可以等效為:
          e.JPG
          式中:d=c/b≈0.414;符號(hào)e1.jpg表示結(jié)果中的每個(gè)元素乘以矩陣E中對(duì)應(yīng)位置上系數(shù)值的運(yùn)算。為了簡(jiǎn)化計(jì)算,去d為0.5,同時(shí)又要保持變換的正交性,對(duì)b進(jìn)行修正,取f1.jpg。對(duì)矩陣C中的第2行和第4行,以及矩陣CT中的第2列和第4列元素乘以2,相應(yīng)地改造矩陣E為Ef,以保持式(7)成立,得到:
          g1.jpg
          式中運(yùn)算e1.jpg對(duì)每個(gè)矩陣元素只進(jìn)行一次乘法,同時(shí)它將被歸納到量化運(yùn)算中。這樣,h1.jpg中只剩下整數(shù)的加法、減法和移位運(yùn)算。式(8)的矩陣乘法運(yùn)算可以改造成兩次一維整數(shù)DCT變換,例如先對(duì)圖像或其殘差塊的每行進(jìn)行一維整數(shù)DCT,然后對(duì)經(jīng)行變換塊的每列再應(yīng)用一維整數(shù)DCT變換。每次一維整數(shù)DCT可以采用蝶形快速,以節(jié)省時(shí)間,如圖1所示。

          f.JPG


          整數(shù)DCT變換是基于DCT的,但是又有一些不同:
          (1)它是一個(gè)整數(shù)變換(所有的操作都可以使用整數(shù),而不丟失解碼精度);
          (2)它可以實(shí)現(xiàn)編碼端正變換與解碼端反變換之間的零誤差匹配;
          (3)變換的核心部分可以僅僅使用加法和移位操作實(shí)現(xiàn);
          (4)變換中的一部分尺度乘法運(yùn)算可以和量化器結(jié)合到一起,減少了乘法的數(shù)量。

          2 H.264整數(shù)DCT變換的FPGA實(shí)現(xiàn)
          H.264中以4×4塊為單位,運(yùn)算過(guò)程中只有移位和加法,降低了算法的復(fù)雜度,易于硬件實(shí)現(xiàn)。設(shè)計(jì)時(shí)可把二維DCT變換分割為兩次一維整數(shù)變換,而一維變換可以用蝶形快速算法實(shí)現(xiàn),整個(gè)過(guò)程只需64次加法和16次移位運(yùn)算。

          g.JPG


          圖2為H.264整數(shù)DCT變換的框圖。首先,輸入的數(shù)據(jù)在控制單元的控制下進(jìn)行一維DCT變換;然后,將結(jié)果存入雙端口RAM中,待整個(gè)4× 4塊一維變換后,將數(shù)據(jù)按照轉(zhuǎn)置的概念取出,再進(jìn)行一維DCT變換;最后,將其結(jié)果輸出即可。在設(shè)計(jì)中,為了加快系統(tǒng)的速度,采用兩個(gè)一維DCT變換模塊。
          2.1 一維DCT蝶形算法模塊
          根據(jù)圖1所示的快速算法,在加法器之間插入寄存器,以提高時(shí)鐘頻率和流水線處理,乘法運(yùn)算可用移位操作,因此可以快速地實(shí)現(xiàn)一維DCT蝶形算法。產(chǎn)生的結(jié)果存入雙端口RAM,以實(shí)現(xiàn)二維矩陣的轉(zhuǎn)置。在設(shè)計(jì)中,為了實(shí)現(xiàn)并行處理和最大的速率,設(shè)置兩個(gè)一維DCT蝶形算法模塊和4個(gè)雙端口RAM,在雙端口RAM的前后分別設(shè)計(jì)了數(shù)據(jù)選擇通路。第一個(gè)一維DCT實(shí)現(xiàn)行變換,第二個(gè)一維DCT實(shí)現(xiàn)列變換,由于在從行變換到列變換中間經(jīng)過(guò)1個(gè)矩陣轉(zhuǎn)置過(guò)程,所以在給列變換單元輸入數(shù)據(jù)時(shí),輸入的數(shù)據(jù)需要重新組合后再送給每個(gè)列變換單元。
          在設(shè)計(jì)矩陣轉(zhuǎn)置是用4個(gè)RAM代替1個(gè)RAM,再增加兩個(gè)4通道的旋轉(zhuǎn)多路器,同時(shí)配合對(duì)4個(gè)RAM的編址讀操作,一次輸入原始矩陣的一列。并行矩陣轉(zhuǎn)置模塊的寫(xiě)操作:每個(gè)時(shí)鐘周期變換一次RAM_BANK的接入順序,每個(gè)RAM_BANK每次寫(xiě)入地址隨時(shí)鐘周期按順序遞增。
          2.2 控制單元FSM
          圖3顯示共有11個(gè)狀態(tài),主要對(duì)2個(gè)一維DCT變換模塊,4個(gè)RAM塊和2個(gè)數(shù)據(jù)選擇通路進(jìn)行控制,采用獨(dú)熱編碼,較好地實(shí)現(xiàn)了各底層模塊電路的鏈接。在設(shè)計(jì)中,采用異步復(fù)位,其好處是:重要綜合工具工藝庫(kù)有可異步復(fù)位觸發(fā)器,那么該觸發(fā)器的數(shù)據(jù)輸入通道就不需要額外的組合邏輯。同時(shí),采用了專用握手信號(hào)實(shí)現(xiàn)各模塊間有序的數(shù)據(jù)交換。

          h.JPG



          3 結(jié)論
          通過(guò)圖4可以看出,在50 MHz的時(shí)鐘頻率下電路很好地完成了二維DCT的轉(zhuǎn)換,遲滯也比較小,實(shí)驗(yàn)結(jié)果與所設(shè)計(jì)的電路功能完全一致。仿真界面如圖5所示。

          a.JPG


          在Altera的CycloneⅡ平臺(tái)上,通過(guò)QuartusⅡ編譯報(bào)告可以看出,此電路共消耗了732個(gè)LE和256 b的RAM。

          4 結(jié)語(yǔ)
          本文采用高效的流水線結(jié)構(gòu),并基于FPGA設(shè)計(jì)實(shí)現(xiàn)了H.264硬件電路,無(wú)論是硬件占用資源,還是處理精度,完全可以滿足H.264視頻偏碼的需要。

          fpga相關(guān)文章:fpga是什么




          關(guān)鍵詞: FPGA 264 DCT 算法

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();