0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

利用PLB總線和FPGA技術(shù)對H.264整數(shù)變換量化軟核實(shí)現(xiàn)優(yōu)化設(shè)計(jì)

電子設(shè)計(jì) ? 來源:郭婷 ? 作者:電子設(shè)計(jì) ? 2019-09-24 07:58 ? 次閱讀

H.264以其高復(fù)雜度為代價(jià)獲得了優(yōu)異的編碼效率, 其中除部分控制流程的復(fù)雜模塊外,H.264中的很多模塊適合用硬件實(shí)現(xiàn)。應(yīng)用中通常使用CPU+FPGA結(jié)構(gòu),將耗時(shí)較多的模塊用FPGA實(shí)現(xiàn),CPU僅負(fù)責(zé)一些低復(fù)雜度的算法和編碼流程參數(shù)的設(shè)置。

介紹了整數(shù)變換量化的硬件實(shí)現(xiàn),但沒有考慮數(shù)據(jù)在處理過程中的寬度問題,因此會(huì)造成FPGA資源的浪費(fèi)。本文充分考慮了數(shù)據(jù)在處理過程中的動(dòng)態(tài)范圍,使用更少的FPGA資源來實(shí)現(xiàn)H.264中的整數(shù)變換量化模塊。

結(jié)合實(shí)際應(yīng)用,文中對該軟核在計(jì)算速度和硬件資源方面分別做了優(yōu)化。經(jīng)過速度優(yōu)化的軟核性能明顯優(yōu)于設(shè)計(jì),經(jīng)過消耗資源優(yōu)化的軟核也完全能夠勝任高分辨率的實(shí)時(shí)編碼。

1 整數(shù)變換

在完成幀內(nèi)和幀間預(yù)測以后,需要對圖像參差數(shù)據(jù)進(jìn)行整數(shù)變換和量化,使圖像數(shù)據(jù)的能量集中到一小部分系數(shù)上,進(jìn)一步降低碼流速率。

1.1 整數(shù)變換原理

H.264中對圖像參差進(jìn)行二維DCT變換,表達(dá)式為:

利用PLB總線和FPGA技術(shù)對H.264整數(shù)變換量化軟核實(shí)現(xiàn)優(yōu)化設(shè)計(jì)

其中:

利用PLB總線和FPGA技術(shù)對H.264整數(shù)變換量化軟核實(shí)現(xiàn)優(yōu)化設(shè)計(jì)

X為輸入數(shù)據(jù),A為變換矩陣,Y為變換結(jié)果。H.264對4×4的圖像塊進(jìn)行操作,則相應(yīng)的4×4 DCT變換矩陣A為:

利用PLB總線和FPGA技術(shù)對H.264整數(shù)變換量化軟核實(shí)現(xiàn)優(yōu)化設(shè)計(jì)

與E的乘法被歸納到量化運(yùn)算中,這樣(CXCT)中只剩下整數(shù)的加法、減法和移位運(yùn)算,因此可以大大降低硬件實(shí)現(xiàn)的復(fù)雜度,變換結(jié)果最多只需要16位的數(shù)據(jù)。

1.2 整數(shù)變換硬件結(jié)構(gòu)

本設(shè)計(jì)H.264中的4×4整數(shù)變換采用蝶形快速算法,如圖1所示。首先對4×4塊的每一行做一維整數(shù)變換,然后再對行變換結(jié)果做列的一維整數(shù)變換,最終得到4×4的整數(shù)變換結(jié)果。圖1模塊需要32個(gè)加法器和32個(gè)減法器,這樣在一個(gè)時(shí)鐘周期內(nèi)就可以完成一個(gè)4×4塊的整數(shù)變換。

利用PLB總線和FPGA技術(shù)對H.264整數(shù)變換量化軟核實(shí)現(xiàn)優(yōu)化設(shè)計(jì)

整數(shù)變換通常的做法是全部使用16位加法器和減法器,這樣可以簡化設(shè)計(jì)。然而在實(shí)際應(yīng)用中,輸入的像素點(diǎn)范圍是[0,255],如果第一級變換就使用16位,則數(shù)據(jù)寬度無疑會(huì)占用更多的硬件資源。根據(jù)分析可知,計(jì)算一維行變換以后,數(shù)據(jù)輸出范圍為[-765,1020],只需使用11位二進(jìn)制數(shù)表示。計(jì)算一維列變換以后,數(shù)據(jù)輸出范圍是[-3 060,4 080],需要使用13位二進(jìn)制數(shù)表示。因此整數(shù)變換模塊的數(shù)據(jù)寬度可以確定為:進(jìn)行一維行變換時(shí)的加法器和減法器使用11位數(shù)據(jù)寬度,一維列變換的加法器和減法器使用13位數(shù)據(jù)寬度。

由于數(shù)據(jù)單向流動(dòng)的特點(diǎn),即沒有反饋,可以使用流水線提高系統(tǒng)性能。使用流水線時(shí)需要注意前后模塊處理速率的匹配。如本模塊中在行變換與列變換插入緩存構(gòu)成前后模塊,前后模塊用同一時(shí)鐘,并且整個(gè)模塊的工作頻率以最低工作頻率的模塊來確定。本設(shè)計(jì)用1級流水線來提高工作頻率。如果流水線級數(shù)過多會(huì)消耗大量FPGA資源,仿真實(shí)驗(yàn)證明,此模塊使用1級流水線時(shí),只增加極少FPGA資源。

2 量化

為了進(jìn)一步降低圖像傳輸碼率,需要對圖像進(jìn)一步壓縮,方法是使用變換編碼及量化技術(shù)。

2.1 量化原理

H.264中采用標(biāo)量量化器。標(biāo)量量化器的原理是:

利用PLB總線和FPGA技術(shù)對H.264整數(shù)變換量化軟核實(shí)現(xiàn)優(yōu)化設(shè)計(jì)

其中,y為輸入樣本點(diǎn)編碼,Qstep為量化步長,F(xiàn)Q為y的量化值。H.264標(biāo)準(zhǔn)支持52個(gè)量化步長。量化的簡化操作如下:

利用PLB總線和FPGA技術(shù)對H.264整數(shù)變換量化軟核實(shí)現(xiàn)優(yōu)化設(shè)計(jì)

其中,Wij為輸入樣本點(diǎn)編碼,MF是標(biāo)準(zhǔn)中定義的值,QP為量化系數(shù),f為偏移量,對幀內(nèi)預(yù)測圖像塊f取2qbits/3,對幀間預(yù)測圖像塊f取2qbits/6。

2.2 量化器實(shí)現(xiàn)

量化器硬件結(jié)構(gòu)如圖2所示,其結(jié)果是實(shí)現(xiàn)對式(4)和式(5)的組合電路。W是需要量化的數(shù)據(jù),MF是根據(jù)QP和當(dāng)前點(diǎn)位置在查找表中得到的值。f和qbits是根據(jù)QP查表的輸出。

利用PLB總線和FPGA技術(shù)對H.264整數(shù)變換量化軟核實(shí)現(xiàn)優(yōu)化設(shè)計(jì)

為了硬件資源消耗最少,需要分析數(shù)據(jù)在計(jì)算過程中的動(dòng)態(tài)范圍,使用最少的數(shù)據(jù)寬度來表示傳輸?shù)臄?shù)據(jù),從而使用最少的硬件資源來實(shí)現(xiàn)組合運(yùn)算邏輯。W是整數(shù)變換結(jié)果,根據(jù)整數(shù)變換部分的分析,其取值范圍是[-3 060,4 080],MF最大取13 107,乘法器輸出動(dòng)態(tài)范圍是[-40 107 420,53 476 560],至少用27位二進(jìn)制數(shù)表示。本量化器的乘法器使用Vetex-Ⅱ中的18×18硬件乘法器,因此在輸入加法器之前需要將數(shù)據(jù)寬度調(diào)整為27bit。加法器輸出的27位數(shù)據(jù)通過移位模塊調(diào)整為16位數(shù)據(jù)寬度。

綜合考慮工作頻率和資源占用率,設(shè)計(jì)中使用2級流水線來提高性能。

2.3 量化器優(yōu)化

本量化器一次只能量化一個(gè)點(diǎn),無法滿足高質(zhì)量圖像編碼的要求。針對高質(zhì)量圖像編碼對此量化器進(jìn)行速度優(yōu)化,即將n個(gè)量化器并聯(lián),一個(gè)時(shí)鐘周期計(jì)算n個(gè)點(diǎn)。n根據(jù)實(shí)際需要進(jìn)行選擇。考慮到與變換模塊的速度匹配,選擇16個(gè)量化器并聯(lián)。

3 軟核設(shè)計(jì)及測試

3.1 PLB總線的軟核結(jié)構(gòu)

PLB(Processor Local Bus)總線是IBM開發(fā)的一種高性能片上總線,主要應(yīng)用于PowerPC405處理器系統(tǒng)中,它支持32位、64位和128位數(shù)據(jù)寬度。本設(shè)計(jì)使用64位總線寬度,最大速據(jù)傳輸速率達(dá)800Mb/s。

如圖3,PLB的軟核設(shè)計(jì)分為總線接口和H.264整數(shù)變換量化模塊兩部分。PLB總線接口是與硬件體系結(jié)構(gòu)相關(guān)的部分,它是整數(shù)變換量化模塊與PLB總線上其他設(shè)備進(jìn)行交互的橋梁。整數(shù)變換量化模塊與體系結(jié)構(gòu)無關(guān),它也可以被移植到ARM體系結(jié)構(gòu)中。

利用PLB總線和FPGA技術(shù)對H.264整數(shù)變換量化軟核實(shí)現(xiàn)優(yōu)化設(shè)計(jì)

整數(shù)變換量化模塊的硬件結(jié)構(gòu)如圖4。寄存器組包含9個(gè)32bit的寄存器,0、1、2、3為輸入的4×4參差數(shù)據(jù)寄存器;5、6、7、8為輸出數(shù)據(jù)寄存器;4為控制寄存器,包括go、done、reset、intra、DCT、ZSCAN、QP、datacount,分別對應(yīng)啟動(dòng)、完成、復(fù)位、幀內(nèi)/幀間、DCT/Hadamard變換、Z掃描輸出、量化級數(shù)、數(shù)據(jù)輸出計(jì)數(shù)器。第二個(gè)模塊對寄存器組中數(shù)據(jù)進(jìn)行4×4整數(shù)變換,使用1級流水線。第三個(gè)模塊對輸入的整數(shù)變換結(jié)果按QP進(jìn)行量化,量化模塊中的MF、f、qbits使用FPGA中的查找表保存。數(shù)據(jù)輸出模塊受ZSCAN位控制,當(dāng)ZSCAN=1時(shí),輸出數(shù)據(jù)寄存器中的數(shù)據(jù)按Z掃描排列;ZSCAN=0時(shí),按矩陣排列。

利用PLB總線和FPGA技術(shù)對H.264整數(shù)變換量化軟核實(shí)現(xiàn)優(yōu)化設(shè)計(jì)

3.2 軟核的測試

首先使用IBM的CoreConnect工具和Modelsim6.0a來仿真設(shè)計(jì)的軟核并使用虛擬平臺(tái)進(jìn)行測試,仿真的目的是保證PLB總線接口能被處理器正確訪問。仿真測試平臺(tái)結(jié)構(gòu)如圖5所示。通過虛擬處理器將虛擬內(nèi)存中的數(shù)據(jù)寫入待測軟核,然后讀取待測軟核中的數(shù)據(jù)并判斷是否正確。

利用PLB總線和FPGA技術(shù)對H.264整數(shù)變換量化軟核實(shí)現(xiàn)優(yōu)化設(shè)計(jì)

仿真通過以后,再將軟核集成到系統(tǒng)中,以便驗(yàn)證軟核在實(shí)際系統(tǒng)中的工作是否符合要求。驗(yàn)證平臺(tái)系統(tǒng)結(jié)構(gòu)如圖6,軟核驗(yàn)證使用PC機(jī)和目標(biāo)板相結(jié)合的方法,目標(biāo)板使用Xilinx公司XUP Virtex-II PRO開發(fā)板,內(nèi)部含有兩個(gè)PowerPC內(nèi)核。

利用PLB總線和FPGA技術(shù)對H.264整數(shù)變換量化軟核實(shí)現(xiàn)優(yōu)化設(shè)計(jì)

驗(yàn)證流程如圖7。首先通過USB下載目標(biāo)板程序,程序開始運(yùn)行以后通過RS232上位機(jī)下載待編碼的圖像參差數(shù)據(jù),下載的數(shù)據(jù)保存在目標(biāo)板上的256MB DDR SDRAM中。數(shù)據(jù)下載完畢后,程序?qū)⒋幋a數(shù)據(jù)依次寫入軟核并啟動(dòng)轉(zhuǎn)換,并將計(jì)算完的數(shù)據(jù)寫入DDR SDRAM,待全部數(shù)據(jù)編碼完畢,PowerPC將處理結(jié)果一起發(fā)送給上位機(jī)。上位機(jī)將結(jié)果與本機(jī)C代碼執(zhí)行結(jié)果相比較,最終確認(rèn)軟核是否正確工作。

利用PLB總線和FPGA技術(shù)對H.264整數(shù)變換量化軟核實(shí)現(xiàn)優(yōu)化設(shè)計(jì)

4 綜合結(jié)果分析

本設(shè)計(jì)中的整數(shù)變化量化模塊在Xilinx的XC2VP30 FPGA中進(jìn)行綜合。XC2P30含有13 696個(gè)Slices和136個(gè)18×18乘法器。綜合工具使用Xilinx的ISE9.1。

整數(shù)變換模塊綜合結(jié)果如表1。

利用PLB總線和FPGA技術(shù)對H.264整數(shù)變換量化軟核實(shí)現(xiàn)優(yōu)化設(shè)計(jì)

對量化器在速度和硬件資源上分別做了優(yōu)化,表2給出了兩種優(yōu)化的綜合結(jié)果。

利用PLB總線和FPGA技術(shù)對H.264整數(shù)變換量化軟核實(shí)現(xiàn)優(yōu)化設(shè)計(jì)

表3給出本設(shè)計(jì)整數(shù)變換量化模塊與文獻(xiàn)[1]的比較結(jié)果。對照發(fā)現(xiàn)速度優(yōu)化軟核編碼性能遠(yuǎn)遠(yuǎn)高于文獻(xiàn)[1]的設(shè)計(jì),資源優(yōu)化的軟核性能也略高于文獻(xiàn)[1]的設(shè)計(jì)。

利用PLB總線和FPGA技術(shù)對H.264整數(shù)變換量化軟核實(shí)現(xiàn)優(yōu)化設(shè)計(jì)

軟核綜合結(jié)果如表4。目前該軟核中的PLB接口部分資源占用較大,后續(xù)工作對這部分進(jìn)一步優(yōu)化。

利用PLB總線和FPGA技術(shù)對H.264整數(shù)變換量化軟核實(shí)現(xiàn)優(yōu)化設(shè)計(jì)

本文將H.264中的整數(shù)變換量化與微處理器系統(tǒng)相結(jié)合,針對不同的應(yīng)用場合實(shí)現(xiàn)了兩個(gè)基于PLB總線的H.264 整數(shù)變換量化軟核,并在Xilinx XUP Virtex-II PRO開發(fā)板中做了驗(yàn)證。實(shí)驗(yàn)結(jié)果表明,兩個(gè)軟核均能在系統(tǒng)中穩(wěn)定工作,并能滿足不同分辨率的實(shí)時(shí)應(yīng)用。


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • FPGA
    +關(guān)注

    關(guān)注

    1620

    文章

    21510

    瀏覽量

    598886
  • 微處理器
    +關(guān)注

    關(guān)注

    11

    文章

    2212

    瀏覽量

    81978
  • 總線
    +關(guān)注

    關(guān)注

    10

    文章

    2817

    瀏覽量

    87700
收藏 人收藏

    評論

    相關(guān)推薦

    基于Blackfin533的H.264編碼

    系數(shù)逆變換后的重建圖像進(jìn)行濾波;圖像緩存管理模塊負(fù)責(zé)管理對參考圖像的存取。從圖3中可以看出,整系數(shù)變換量化結(jié)合在一起作為一個(gè)模塊。主要因?yàn)?一方面H.264中,
    發(fā)表于 07-13 17:12

    如何利用PLB總線FPGA技術(shù)H.264整數(shù)變換量化核實(shí)現(xiàn)優(yōu)化設(shè)計(jì)?

    求一款基于PLB總線H.264整數(shù)變換量化核的設(shè)
    發(fā)表于 04-08 06:46

    請問怎樣實(shí)現(xiàn)H.264量化?

    量化的功能有哪些?量化的算法是什么?怎樣用Verilog語言實(shí)現(xiàn)H.264量化?如何運(yùn)用Modelsim對
    發(fā)表于 04-28 06:12

    分享一款不錯(cuò)的一種基于FPGA高性能H.264變換量化結(jié)構(gòu)設(shè)計(jì)

    分享一款不錯(cuò)的一種基于FPGA高性能H.264變換量化結(jié)構(gòu)設(shè)計(jì)
    發(fā)表于 05-08 07:56

    基于FPGAH.264去塊濾波系統(tǒng)的優(yōu)化設(shè)計(jì)

    提出一種H.264去塊濾波系統(tǒng)的優(yōu)化設(shè)計(jì)方法。通過合理設(shè)計(jì)流水線級數(shù)提高并行性,適當(dāng)增加內(nèi)部SRAM來提高系統(tǒng)速度和總線利用率,使用一種層次化的有限狀態(tài)機(jī)設(shè)計(jì)方法,
    發(fā)表于 04-21 09:07 ?33次下載

    H.264視頻編碼在DM642上的實(shí)現(xiàn)優(yōu)化

    設(shè)計(jì)并實(shí)現(xiàn)了基于DSP 芯片TMS320DM642 的H.264 編碼器。詳細(xì)介紹了H.264 算法在DSP上的移植和優(yōu)化。為使編碼器達(dá)到實(shí)時(shí)應(yīng)用的要求,采用基于C64x CPU 的軟
    發(fā)表于 09-03 14:30 ?23次下載

    基于TMS320DM642平臺(tái)的H.264編碼器優(yōu)化

    H.264 實(shí)時(shí)編碼器的研究和實(shí)現(xiàn)是目前視頻通信研究領(lǐng)域的一個(gè)熱點(diǎn)問題,本文介紹了基于TMS320DM642 平臺(tái)的H.264 編碼器的優(yōu)化,重點(diǎn)介紹了基于DM642 的
    發(fā)表于 12-18 12:13 ?19次下載

    基于H.264量化IP的硬件實(shí)現(xiàn)

    本文提出了基于H.264的逆量化IP的優(yōu)化結(jié)構(gòu)及其硬件實(shí)現(xiàn)。它能夠按照標(biāo)準(zhǔn)處理各種4×4塊的逆量化,該IP可以嵌入到編碼器也能用于解碼器,可
    發(fā)表于 02-24 11:51 ?10次下載

    H.264/AVC中量化的Verilog方法介紹及實(shí)現(xiàn)

    H.264/AVC中量化的Verilog方法介紹及實(shí)現(xiàn) 0  引  言   H.264作為新一代的視頻壓縮標(biāo)準(zhǔn),是由ITU-T的視頻編碼專家組和ISO/IEC
    發(fā)表于 11-12 10:08 ?1080次閱讀
    <b class='flag-5'>H.264</b>/AVC中<b class='flag-5'>量化</b>的Verilog方法介紹及<b class='flag-5'>實(shí)現(xiàn)</b>

    H.264_AVC視頻編碼變換量化核實(shí)現(xiàn)

    本文主要研究H.264/AVC編碼模塊中的4×4整數(shù)變換量化核,提出硬件實(shí)現(xiàn)優(yōu)化方法。
    發(fā)表于 02-08 11:07 ?1691次閱讀
    <b class='flag-5'>H.264</b>_AVC視頻編碼<b class='flag-5'>變換</b><b class='flag-5'>量化</b><b class='flag-5'>核實(shí)現(xiàn)</b>

    H.264視頻編碼器在DM6437上的優(yōu)化實(shí)現(xiàn)

    為了實(shí)現(xiàn)基于DSP的H.264視頻編碼器的實(shí)時(shí)性能,提出了一系列優(yōu)化實(shí)現(xiàn)方法。首先結(jié)合TMS320DM6437硬件特點(diǎn),描述了X264代碼向
    發(fā)表于 05-22 15:10 ?63次下載
    <b class='flag-5'>H.264</b>視頻編碼器在DM6437上的<b class='flag-5'>優(yōu)化</b><b class='flag-5'>實(shí)現(xiàn)</b>

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

    二維離散余弦(DCT)在H.264視頻編碼中承擔(dān)者信號(hào)從時(shí)域到頻域變換的作用。在現(xiàn)場可編程邏輯門陣列(FPGA)上設(shè)計(jì)了高效的采用流水線結(jié)構(gòu)的H.264 DCT硬件電路。首先,把二維4
    發(fā)表于 07-31 15:26 ?5734次閱讀
    基于<b class='flag-5'>FPGA</b>的<b class='flag-5'>H.264</b> DCT算法的硬件<b class='flag-5'>實(shí)現(xiàn)</b>

    基于DM642的H.264編碼算法優(yōu)化實(shí)現(xiàn)

    基于DM642的H.264編碼算法優(yōu)化實(shí)現(xiàn)
    發(fā)表于 05-18 09:22 ?1次下載

    基于FPGA硬件實(shí)現(xiàn)H.264變換量化整體結(jié)構(gòu)的設(shè)計(jì)方案

    H.264高效的編碼效率是以其高復(fù)雜性為代價(jià)的,因此制約了它在高分辨率、實(shí)時(shí)處理等方面的應(yīng)用。而FPGA器件采用流水控制策略和并行處理方式,可為H.264復(fù)雜的編碼模塊提供硬件加速引擎。變換
    的頭像 發(fā)表于 08-01 08:04 ?2203次閱讀

    如何在Linux下實(shí)現(xiàn)H.264解碼器的優(yōu)化

    H.264解碼器進(jìn)行優(yōu)化。本文首先分析了H264標(biāo)準(zhǔn)所采用的一些先進(jìn)技術(shù),如基于多種運(yùn)動(dòng)矢量模塊的運(yùn)動(dòng)佔(zhàn)計(jì)、幀內(nèi)預(yù)測、整數(shù)
    發(fā)表于 02-25 11:06 ?5次下載
    如何在Linux下<b class='flag-5'>實(shí)現(xiàn)</b><b class='flag-5'>H.264</b>解碼器的<b class='flag-5'>優(yōu)化</b>