• 正文
    • 11.6  典型實(shí)例21:整數(shù)DCT變換的設(shè)計(jì)與實(shí)現(xiàn)
  • 相關(guān)推薦
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

FPGA與DSP協(xié)同處理系統(tǒng)設(shè)計(jì)之:典型實(shí)例-整數(shù)DCT變換的設(shè)計(jì)與實(shí)現(xiàn)

2013/08/30
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

?

11.6??典型實(shí)例21:整數(shù)DCT變換的設(shè)計(jì)與實(shí)現(xiàn)

11.6.1??實(shí)例的內(nèi)容及目標(biāo)

1.實(shí)例的主要內(nèi)容

本節(jié)旨在設(shè)計(jì)實(shí)現(xiàn)了視頻壓縮標(biāo)準(zhǔn)H.264算法中的整數(shù)DCT變換部分,幫助讀者了解并行流水設(shè)計(jì)技巧在算法優(yōu)化中的作用。

2.實(shí)例目標(biāo)

通過(guò)本實(shí)例,讀者應(yīng)達(dá)到以下目標(biāo)。

·??了解數(shù)字域變換的基本原理和用處。

·??掌握DCT和整數(shù)DCT變換的變換方法。

·??學(xué)習(xí)硬件結(jié)構(gòu)設(shè)計(jì)方法。

·??學(xué)習(xí)流水線(xiàn)設(shè)計(jì)方法。

·??編程實(shí)現(xiàn)DCT變換。

11.6.2??整數(shù)DCT變換的原理

1.DCT簡(jiǎn)介

H.264是一種圖像壓縮編碼方法,它的變換編碼和以前各種標(biāo)準(zhǔn)中的DCT有所不同。以前標(biāo)準(zhǔn)中直接采用DCT的定義進(jìn)行變換,會(huì)帶來(lái)兩個(gè)問(wèn)題。第一,需要進(jìn)行浮點(diǎn)數(shù)操作,從而造成系統(tǒng)設(shè)計(jì)及運(yùn)算上的復(fù)雜性;第二,由于變換核都是無(wú)理數(shù),而有限精度的浮點(diǎn)數(shù)不可能精確地表示無(wú)理數(shù),再加上浮點(diǎn)數(shù)的運(yùn)算可能會(huì)引入舍入誤差,這就使得在具體實(shí)現(xiàn)時(shí)會(huì)導(dǎo)致編解碼的不匹配(mismatch),即反變換的輸出結(jié)果和正變換的輸入不一致。

為了解決這些問(wèn)題,H.264采用基于4×4塊的整數(shù)操作而不是實(shí)數(shù)運(yùn)算,使得變換操作僅用整數(shù)加減和移位操作就可以完成。這樣既降低了設(shè)計(jì)復(fù)雜度,又避免了編解碼誤匹配,能夠得到與4×4?DCT變化類(lèi)似的編碼效果,而由此帶來(lái)的編碼性能的減少微乎其微。

由于變換中無(wú)乘法,采用基于提升結(jié)構(gòu)的無(wú)乘法二進(jìn)制DCT(Bin?DCT),只包括加法和16位算術(shù)移位,這樣大大減小了運(yùn)算復(fù)雜度。尤其是對(duì)低端處理,減少了乘法運(yùn)算且保持了整數(shù)變換的優(yōu)點(diǎn),精確的整數(shù)排除了編碼器解碼器之間反變換的誤匹配,保證了變換的效果。

2.DCT設(shè)計(jì)原理

我們可以通過(guò)各種公式推導(dǎo)出整數(shù)DCT正變換的公式。

(11.1)

?

公式(11.1)中,雖然乘以1/2的操作可以用右移來(lái)實(shí)現(xiàn),但這樣會(huì)產(chǎn)生截?cái)嗾`差,因此,我們將1/2提到矩陣外面,并與右邊的點(diǎn)乘合并,得到公式(11.2)。

(11.2)

這就是H.264中所用到的整數(shù)變換公式,其變換核僅用加減法(和左移)即可以實(shí)現(xiàn),而后面的點(diǎn)乘操作可以合并到隨后的量化過(guò)程中去。

H.264中所用到的反DCT變換公式如下:

? (11.3)

其中與Y點(diǎn)乘的操作與反量化合并,乘以系數(shù)1/2的操作由右移來(lái)實(shí)現(xiàn),由于反量化后的結(jié)果足夠地大,所以這里不會(huì)出現(xiàn)截?cái)嗾`差的問(wèn)題。以上各式中,,。

H.264的整數(shù)DCT變換可以分做兩步完成:先對(duì)需要做變換的矩陣的每一列做一維變換,再對(duì)其結(jié)果的每一行做一維變換,這個(gè)次序也可以反過(guò)來(lái),先行后列。這樣二維變換就可以用一維變換來(lái)實(shí)現(xiàn)。在具體實(shí)現(xiàn)過(guò)程中,為了減少運(yùn)算量,每一步可以采用蝶型算法,以公式(11.2)的第一步對(duì)X的第一列進(jìn)行一維變換為例,其運(yùn)算過(guò)程如下式所示。

????????? ???? (11.4)

其中為第一列的元素,為濾波結(jié)果。由公式(11.4)可見(jiàn)計(jì)算有很多重復(fù),如就同時(shí)被計(jì)算的公式所使用,所以可以將其暫時(shí)保存起來(lái)以避免重復(fù)計(jì)算,對(duì)應(yīng)的蝶型算法如圖11.21所示。

從圖中可以看見(jiàn),若按公式(11.4)計(jì)算需要進(jìn)行12次加法、4次乘法。而按圖11.19中的蝶型算法僅需8次加法、2次乘法,它利用了運(yùn)算中的冗余,大大降低了運(yùn)算量。

?

11.6.3??實(shí)例步驟

1.創(chuàng)建新工程并添加源文件

如圖11.22所示,首先創(chuàng)建一個(gè)新工程并為工程添加源文件。

2.添加測(cè)試文件,并添加激勵(lì)

如圖11.23所示,為工程添加測(cè)試文件。

??????

圖11.22??創(chuàng)建新工程并添加設(shè)計(jì)文件???? 圖11.23??添加測(cè)試文件

?

在測(cè)試文件中為測(cè)試添加激勵(lì),如圖11.24所示。

圖11.24??添加激勵(lì)

3.使用ModelSim進(jìn)行仿真

要使用ModelSim對(duì)工程進(jìn)行仿真首先要在計(jì)算機(jī)上面安裝ModelSim軟件。安裝好以后在ISE?7.1i的菜單里面選擇Edit→Preferences,如圖11.25所示。

在上面的對(duì)話(huà)框里面,“Integrated?Tools”復(fù)選頁(yè)里面的Model?Tech?Simulator里面選擇modelsim.exe的路徑,單擊“OK”按鈕。

圖11.25??設(shè)置仿真工具參數(shù)

然后再選擇菜單里面的View→Refresh,刷新剛才更改的設(shè)置,如圖11.26所示。

圖11.26??刷新設(shè)置

刷新后就會(huì)看見(jiàn)Process?View里面的圖標(biāo)變成Modelsim?Simulator的一些功能,如圖11.27所示。

圖11.27??ModelSim仿真選項(xiàng)

?

此時(shí)雙擊“Simulate?Behavioral?Model”就可以對(duì)工程進(jìn)行行為仿真了,如圖11.28所示。

圖11.28??打開(kāi)ModelSim進(jìn)行行為仿真

?

在ModelSim的波形窗口中觀察到的行為仿真結(jié)果如圖11.29所示。

圖11.29??行為仿真結(jié)果

11.6.4??小結(jié)

本節(jié)介紹視頻壓縮標(biāo)準(zhǔn)H.264算法中的整數(shù)DCT變換模塊的設(shè)計(jì)與實(shí)現(xiàn)方法,并通過(guò)ModelSim軟件仿真驗(yàn)證的設(shè)計(jì)結(jié)果。

相關(guān)推薦

登錄即可解鎖
  • 海量技術(shù)文章
  • 設(shè)計(jì)資源下載
  • 產(chǎn)業(yè)鏈客戶(hù)資源
  • 寫(xiě)文章/發(fā)需求
立即登錄

華清遠(yuǎn)見(jiàn)(www.farsight.com.cn)是國(guó)內(nèi)領(lǐng)先嵌入師培訓(xùn)機(jī)構(gòu),2004年注冊(cè)于中國(guó)北京海淀高科技園區(qū),除北京總部外,上海、深圳、成都、南京、武漢、西安、廣州均有直營(yíng)分公司。華清遠(yuǎn)見(jiàn)除提供嵌入式相關(guān)的長(zhǎng)期就業(yè)培訓(xùn)、短期高端培訓(xùn)、師資培訓(xùn)及企業(yè)員工內(nèi)訓(xùn)等業(yè)務(wù)外,其下屬研發(fā)中心還負(fù)責(zé)嵌入式、Android及物聯(lián)網(wǎng)方向的教學(xué)實(shí)驗(yàn)平臺(tái)的研發(fā)及培訓(xùn)教材的出版,截止目前為止已公開(kāi)出版70余本嵌入式/移動(dòng)開(kāi)發(fā)/物聯(lián)網(wǎng)相關(guān)圖書(shū)。企業(yè)理念:專(zhuān)業(yè)始于專(zhuān)注 卓識(shí)源于遠(yuǎn)見(jiàn)。企業(yè)價(jià)值觀:做良心教育、做專(zhuān)業(yè)教育,更要做受人尊敬的職業(yè)教育。