新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于C6000系列DSP的MPEG-4編碼器實(shí)現(xiàn)

基于C6000系列DSP的MPEG-4編碼器實(shí)現(xiàn)

作者: 時(shí)間:2008-11-27 來源:網(wǎng)絡(luò) 收藏

基于C6000系列DSP的MPEG-4編碼器實(shí)現(xiàn)  

  3.2 利用VLIW結(jié)構(gòu)設(shè)計(jì)程序

  利用VLIW結(jié)構(gòu)設(shè)計(jì)程序可以充分利用多個(gè)功能單元并行工作的特性。的每一個(gè)通道都有四個(gè)功能單元(L、S、M、D),每個(gè)功能單元負(fù)責(zé)完成一定的邏輯或者算術(shù)運(yùn)算,另外A、B兩個(gè)通道的互訪可以通過交叉單元1x、2x完成。程序2中,在一個(gè)時(shí)鐘周期內(nèi)并行執(zhí)行八條指令,使用了所有的功能單元S2、S1、L1、M2、L2、M1、D1、D2,同時(shí)使用了所有的交叉單元1x、2x,已經(jīng)達(dá)到極限。但是這種并行指令的使用也有一定的限制,其最根本的要求就是不能引起資源沖突,例如:

  ·不能用同一個(gè)功能單元;

  ·不能對(duì)同一通道的寄存器進(jìn)行兩次long型寫操作;

  ·不能對(duì)同一通道的寄存器同時(shí)進(jìn)行l(wèi)ong型讀操作和存儲(chǔ)操作;

  ·讀同一寄存器不能超過4次;

  ·在同一個(gè)時(shí)鐘周期不能有兩個(gè)指令寫入同一寄存器,這不是說向同一寄存器寫的兩條指令不能放在同一個(gè)并行指令包內(nèi),而是說兩個(gè)指令不能在寫寄存器的那個(gè)時(shí)鐘周期并存。

  基于C6000系列DSP的MPEG-4編碼器實(shí)現(xiàn)

  仍然以中的DCT算法為例說明VLIW結(jié)構(gòu)在程序優(yōu)化中的作用。進(jìn)行DCT變換的原始數(shù)據(jù)是short型的,因此可以將兩個(gè)數(shù)據(jù)合成一個(gè)32位的數(shù)據(jù)來訪問;為了使兩個(gè)通道并行訪問數(shù)據(jù)和運(yùn)算,應(yīng)盡量把要訪問的數(shù)據(jù)平均地分配給不同的通道寄存器;并且通過交叉單元使兩個(gè)通道相互訪問,從而達(dá)到很高的并行性,大大提高了編碼效率。

  編碼的其它算法,例如逆DCT、運(yùn)動(dòng)估計(jì)、運(yùn)動(dòng)補(bǔ)償?shù)人惴ǘ及罅康难h(huán)運(yùn)算和數(shù)據(jù)訪問。因此利用的VLIW結(jié)構(gòu)和流水線結(jié)構(gòu)優(yōu)化編碼算法就成為一種非常合適的方法。

  當(dāng)然,編寫程序時(shí)不是將DSP的VLIW結(jié)構(gòu)和流水線結(jié)構(gòu)分開考慮,而是將兩者結(jié)合起來,在編寫每一條指令時(shí)都要清楚這條指令的執(zhí)行周期以及使用的功能單元,這樣才能編寫出高效的程序。

  表1對(duì)1-D Chen 8×8 DCT、100點(diǎn)點(diǎn)積和FIR濾波器算法的C語言實(shí)現(xiàn)與利用VLIW及流水線結(jié)構(gòu)的匯編代碼實(shí)現(xiàn)進(jìn)行比較。從統(tǒng)計(jì)數(shù)據(jù)可以看出,利用DSP結(jié)構(gòu)編寫的匯編代碼執(zhí)行效率要比C語言編寫的代碼執(zhí)行效率高40倍左右。因此充分利用DSP的VLIW結(jié)構(gòu)和流水線結(jié)構(gòu)設(shè)計(jì)匯編程序能夠使效率大幅度提高。

  基于C6000系列DSP的MPEG-4編碼器實(shí)現(xiàn)

  本文對(duì)MPEG-4編碼卡進(jìn)行了設(shè)計(jì),主要難點(diǎn)是MPEG-4編碼算法的優(yōu)化,MPEG-4的編碼復(fù)雜、代碼量大。利用C6000系列DSP的VLIW結(jié)構(gòu)和流水線結(jié)構(gòu)設(shè)計(jì)出了MPEG-4編碼算法。實(shí)驗(yàn)證明,算法效率得到了大幅度提高。


上一頁 1 2 3 4 5 下一頁

關(guān)鍵詞: DSP MPEG-4 視頻編碼

評(píng)論


相關(guān)推薦

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

關(guān)閉