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

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 一種高效的分布式的離散余弦變換的硬件結(jié)構(gòu)

          一種高效的分布式的離散余弦變換的硬件結(jié)構(gòu)

          ——
          作者:謝青青 石愛(ài)軍 時(shí)間:2006-07-20 來(lái)源:北京大學(xué)軟件與微電子學(xué)院 收藏

          1. 引言
          DCT是視頻壓縮編解碼器中很重要的一部分,被廣泛應(yīng)用于各種視頻格式的編碼算法中,例如JPEG,MPEGx和H.26x等,這主要是因?yàn)椋阂?nbsp;它能把圖像的能量主要集中到數(shù)目很少的幾個(gè)數(shù)據(jù)上,并打破數(shù)據(jù)間的相關(guān)性;二 它的實(shí)現(xiàn)有快速算法。人們很早以前就開始研究DCT的快速算法和它的硬件實(shí)現(xiàn)電路,到目前為止,基于行列變換的DCT被應(yīng)用的最廣泛。


          分布式算法在二十多年就被提出來(lái),并且現(xiàn)在已被廣泛應(yīng)用于VLSI和DSP的結(jié)構(gòu)中,在這些實(shí)現(xiàn)中,大多數(shù)算法的運(yùn)算量主要集中在乘法器或加法器。分布式算法的優(yōu)點(diǎn)是首先計(jì)算所有可能的中間結(jié)果,并把他們保存在ROM中,然后通過(guò)查表得到我們所需要的結(jié)果,這樣就可以把復(fù)雜的浮點(diǎn)乘法轉(zhuǎn)換為加法,從而加速算法的運(yùn)算速度。

           
           在本文中,我們介紹了一種基于分布式算法的2D DCT結(jié)構(gòu),該結(jié)構(gòu)中,我們充分利用了三角函數(shù)的周期性與對(duì)偶性,并利用簡(jiǎn)單ALU實(shí)現(xiàn)加減法的分時(shí)復(fù)用,從而比已有的分布式DCT結(jié)構(gòu)節(jié)省了很多硬件資源;另一方面,在本文的硬件結(jié)構(gòu)中,用RAM代替了ROM,從而加快了速度又節(jié)省了資源(因?yàn)殡S輸入數(shù)據(jù)的數(shù)量和它們精度的增加ROM的容量呈指數(shù)級(jí)增加)。

          2. 分布式算法的數(shù)學(xué)原理
              首先,我們來(lái)考慮一下以下的求和結(jié)果:
            (2-1)

          這里,A k 是常數(shù),X k 是輸入的數(shù)據(jù)。上式用矩陣可表示為:

           (2-2)

          如果(2-2)中A1, ...AL均為N(包括符號(hào)位)比特的二進(jìn)制有符號(hào)小數(shù),則(2-2)可轉(zhuǎn)化為:

          (2-3)

          在(2-3)式中,我們令矩陣

          把A稱作加法陣列矩陣, 且A中只含有‘0’和‘1’兩種元素。通過(guò)觀察,我們發(fā)現(xiàn)(2-3)式中Y0,Y1,...,YN-1的值都是X0,X1,...,XL中某幾個(gè)數(shù)之和,這樣Y的計(jì)算只要加法和移位兩種運(yùn)算就可以實(shí)現(xiàn)。這樣我們就實(shí)現(xiàn)了把乘法轉(zhuǎn)化成了加法。

          3.(8



          評(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); })();