<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > FPGA與DSP協(xié)同處理系統設計之:典型實(shí)例-整數DCT變換的設計與實(shí)現

FPGA與DSP協(xié)同處理系統設計之:典型實(shí)例-整數DCT變換的設計與實(shí)現

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

本文引用地址:http://dyxdggzs.com/article/201706/348796.htm

11.6典型實(shí)例21:的設計與實(shí)現

11.6.1實(shí)例的內容及目標

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

本節旨在設計實(shí)現了視頻壓縮標準算法中的部分,幫助讀者了解并行流水設計技巧在算法優(yōu)化中的作用。

2.實(shí)例目標

通過(guò)本實(shí)例,讀者應達到以下目標。

·了解數字域變換的基本原理和用處。

·掌握DCT和的變換方法。

·學(xué)習硬件結構設計方法。

·學(xué)習流水線(xiàn)設計方法。

·編程實(shí)現DCT變換。

11.6.2整數DCT變換的原理

1.DCT簡(jiǎn)介

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

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

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

2.DCT設計原理

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

(11.1)

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

(11.2)

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

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

(11.3)

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

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

(11.4)

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

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

11.6.3實(shí)例步驟

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

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

2.添加測試文件,并添加激勵

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

圖11.22創(chuàng )建新工程并添加設計文件 圖11.23添加測試文件

在測試文件中為測試添加激勵,如圖11.24所示。

圖11.24添加激勵

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

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

在上面的對話(huà)框里面,“IntegratedTools”復選頁(yè)里面的ModelTechSimulator里面選擇modelsim.exe的路徑,單擊“OK”按鈕。

圖11.25設置仿真工具參數

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

圖11.26刷新設置

刷新后就會(huì )看見(jiàn)ProcessView里面的圖標變成ModelsimSimulator的一些功能,如圖11.27所示。

圖11.27ModelSim仿真選項

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

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

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

圖11.29行為仿真結果

11.6.4小結

本節介紹視頻壓縮標準H.264算法中的整數DCT變換模塊的設計與實(shí)現方法,并通過(guò)ModelSim軟件仿真驗證的設計結果。



評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>