<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è) > 嵌入式系統 > 設計應用 > 定制DSP設計MPEG-4無(wú)線(xiàn)視頻產(chǎn)品

定制DSP設計MPEG-4無(wú)線(xiàn)視頻產(chǎn)品

作者: 時(shí)間:2011-10-10 來(lái)源:網(wǎng)絡(luò ) 收藏
1. 比特流/可變長(cháng)度解碼DDCU

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

  在視頻編碼中常常會(huì )遇到可變長(cháng)度解碼。比特流/可變長(cháng)度解碼DDCU 可以加快從輸入比特流中取出可變長(cháng)度字段的速度,這是一種基本操作。如果用軟件來(lái)實(shí)現這種比特流管理,會(huì )消耗大量的時(shí)鐘周期來(lái)處理指針的移位、屏蔽和管理,而采用比特流/可變長(cháng)度解碼DDCU則可以在一個(gè)簡(jiǎn)單的硬件單元里快速完成同樣的功能。

  

  在比特流/可變長(cháng)度解碼DDCU中,由用戶(hù)的指令組集中完成普通比特的提取和插入操作。這種DDCU不但能加快處理速度,提高整個(gè)視頻引擎的性能,還可以解放處理器中的其他資源,使之得以用于周?chē)钠渌幚磉^(guò)程。因此,采用這種DDCU不但可以減小指令長(cháng)度,同時(shí)還增強了系統性能。實(shí)際上,在中加入這種計算單元會(huì )使可變長(cháng)度解碼的速度增快23.2%。

  2. 量化/反量化DDCU

  量化和反量化是視頻編解碼中的兩種基本操作,其計算量占整個(gè)視頻編解碼計算量的10%甚至更多。量化/反量化DDCU允許在單周期內處理多像素,其內部操作可以滿(mǎn)足多種等級的量化需求。在比特流/可變長(cháng)度解碼DDCU中,將可變長(cháng)度解碼模塊的計算需求降低15.4%時(shí),指令存儲空間也會(huì )減小,這一特性同樣適用于量化、反量化DDCU。

  3. 半像素內插/運動(dòng)補償DDCU

  這種運算單元用于加速半像素內插操作,該操作所需計算量相當大。在解碼器中,內插/補償操作所消耗的時(shí)鐘周期約為總時(shí)鐘周期的40%。該單元中所涉及的運算其實(shí)很簡(jiǎn)單,只需要面積很小的硅片就能完成,因此很容易移入DDCU中去。就算是邊緣擴展這樣的涉及大量計算的操作,只要不需要進(jìn)行優(yōu)化處理,也還是可以較好地移入硬件中。

  不論采用哪種內插類(lèi)型,內插/運動(dòng)補償DDCU中的指令組都允許每周期內插4個(gè)像素,這一特性也減少了需要執行的指令數。通過(guò)使用內插/運動(dòng)補償DDCU,半像素內插/運動(dòng)補償操作的速度可以增快74.6%。

  4. DCT/IDCT DDCU

  IDCT(反離散余弦變換)和DCT(離散余弦變換)都是視頻編碼中固有的運算。眾所周知,這兩種運算需要占用大量的時(shí)鐘周期,并要求在編寫(xiě)其匯編代碼時(shí)非常小心。本文談到的這種專(zhuān)用DCT/IDCT DDCU單元(依據IEEE 1180-1990規范)可模仿DCT/IDCT中的“蝶形”運算。通過(guò)使用這種計算單元可以大大提高視頻的性能和生產(chǎn)力,從而使開(kāi)發(fā)人員能夠集中精力開(kāi)發(fā)視頻應用中的其他方面,以達到使其產(chǎn)品區別于其他同類(lèi)產(chǎn)品的目的。

  5. 運動(dòng)估計(MEMC)DDCU

  MEMC單元用于幫助完成運動(dòng)估計這一計算量最大的操作。視頻應用中,在每個(gè)運動(dòng)矢量的位置上都必須進(jìn)行誤差測量。MEMC DDCU可以完成兩種最常見(jiàn)的誤差測量計算:絕對誤差和(SAD)測量和平方誤差和(SSE)測量。平臺中若加入該運算單元,那么每周期誤差測量時(shí)所比較和累加的像素位置就可以多達4個(gè)。

  6. 四分之一像素運動(dòng)補償單元

  基本來(lái)說(shuō),該單元所提供的功能是對半像素內插單元的一種必要的擴展。四分之一像素算法比半像素算法稍微復雜一些,因為它首先采用了一個(gè)2維FIR 濾波器來(lái)獲取半像素值,然后才使用線(xiàn)性插值法來(lái)計算四分之一像素值。這個(gè)2維濾波器直接并入半像素內插單元,致使半像素內插單元的硅片面積稍有增大,但這種方式仍然保持了較高的像素處理速度,這一速度遠遠超過(guò)只采用Simple Profile 引擎。

  7. 全局運動(dòng)補償單元

  在視頻應用中有一種變形函數(warping functiON)專(zhuān)門(mén)用來(lái)描述當前視頻對像相對于參考視頻對像的變化。全局運動(dòng)補償(GMC)單元就是為加速這種函數的運算而設計的。該單元最大可支持 3點(diǎn)變形(即參考VOP的仿射變換)。一旦從比特流中分析出變形點(diǎn)的個(gè)數后,就用這個(gè)數值來(lái)初始化GMC。GMC計算變形等式的速度遠遠快于純軟件實(shí)現方式的計算速度。

  8. 語(yǔ)境自適應算法編/解碼DDCU

  構成語(yǔ)境需要進(jìn)行逐位操作,而逐位操作只能在標準的32位DSP中實(shí)現。為了打破這一限制,語(yǔ)境自適應算法編/解碼DDCU采用硬件方法形成語(yǔ)境值。該DDCU內部有一個(gè)查找表,用于存放所有可能的語(yǔ)境值,以便快速查找判斷。語(yǔ)境自適應編解碼運算單元支持以1b/周期的速度進(jìn)行算法編、解碼。怎樣創(chuàng )建一個(gè)工作平臺

  設計者定義了需要用到的DDCU之后,就可以用它們來(lái)創(chuàng )建滿(mǎn)足其特殊要求的用戶(hù)應用引擎,并由此構建起工作平臺,從而設計出具有視頻功能的產(chǎn)品。

  為清楚起見(jiàn),讓我們來(lái)看一個(gè)例子,例中的引擎是專(zhuān)門(mén)針對可傳送信息的3G移動(dòng)電話(huà)設計的。這樣的引擎要想在3G移動(dòng)電話(huà)上實(shí)現預期的視頻功能,就必須以低于20MHz的速度處理第1級和第2級MPEG-4簡(jiǎn)單視覺(jué)等級,這樣才能為諸如音頻和語(yǔ)音處理等其他DSP功能留有一定的可規劃帶寬。

  在開(kāi)始設計用戶(hù)DSP時(shí),分配1 ALU、1 SHIFT和1MAC單元作為起始基準平臺是比較合理的。要想增加并行性,只需將這些計算單元再分配給兩個(gè)單獨的指令段:ALU和SHIFT分配給同一段, MAC分配給另一段。如果該視頻應用采用的是幀處理速度為每秒15幀的CIF格式,那么要在這個(gè)用戶(hù)平臺上編譯視頻應用程序就需要40MHz的帶寬,若采用QCIF格式則只需10MHz帶寬。盡管這樣的帶寬已經(jīng)很具競爭力了,但仍然不能滿(mǎn)足前面提到的具有MPEG-4功能的3G移動(dòng)電話(huà)的需要。

  

  降低帶寬要求的解決方案

  首先,要分析在用戶(hù)平臺中加入不同的計算單元對其性能的影響(這些計算單元全部來(lái)自MPEG-4 DDCU庫)。也就是說(shuō),我們定義了一系列的引擎,以此分析不同的計算單元混用方式所造成的性能影響。分析表明,應該保留兩段型引擎定義,因為這可以限制指令寬度,使之不至于過(guò)寬。

  然后再定義一些新的引擎,經(jīng)過(guò)編譯,分析其結果。新引擎定義分析的整個(gè)過(guò)程用了1或2個(gè)小時(shí)。由于DDCU庫是提前創(chuàng )建好的,因此許多引擎可以在一天時(shí)間內就分析完。接著(zhù)從這些引擎中選出最能滿(mǎn)足目標產(chǎn)品要求的,用來(lái)構建工作平臺。

  這樣得到的工作平臺與基準平臺相比,增加了一個(gè)ALU和四個(gè)MPEG-4 DDCU:比特流DDCU、量化/反量化DDCU、半像素DDCU和DCT/IDCT DDCU(見(jiàn)圖2)。在起始平臺的基礎上添加這些運算單元,目的就是在不增大指令存儲或數據存儲的前提下,盡可能降低對時(shí)鐘速率(MHz)的要求。完成這些操作之后,我們得到了這樣一個(gè)用戶(hù)應用引擎,該引擎可以用帶寬只有18MHz的DSP完成每秒15幀的CIF格式圖像的解碼,同時(shí)還能滿(mǎn)足這種3G視頻應用的其他關(guān)鍵要求(低功率、小晶片尺寸以及低時(shí)鐘速率)。

  從圖3中可以看出DDCU對加快整個(gè)應用運行速度的作用。圖中第一條表示在標準CU構成的基準平臺上,整個(gè)運算時(shí)間在IDCT、運動(dòng)補償(MC)以及可變長(cháng)度編碼和反量化(VLD/DQnt)這幾種DDCU之間的分布情況。

  可以看出,在這幾種DDCU中,MC部分占用時(shí)鐘周期最多。因此我們在工作平臺上添加了一個(gè)DDCU來(lái)加速半像素內插操作,提高M(jìn)C部分的速度。一旦MC部分所占用的時(shí)鐘周期數大幅降低,VLD/DQnt馬上就上升成為了限制整個(gè)應用性能的最主要因素。針對這一情況,再添加一個(gè)比特流 DDCU和一個(gè)量化/反量化DDCU,又進(jìn)一步提高了性能。這樣,最初的基準平臺已經(jīng)經(jīng)過(guò)了兩次組合。此時(shí),再將IDCT DDCU加入其中,整個(gè)應用的性能就得到了更大的提高。圖3中的最后一條給出了三次組合后整個(gè)應用需要耗費的時(shí)鐘周期。

超級電容器相關(guān)文章:超級電容器原理



上一頁(yè) 1 2 下一頁(yè)

評論


相關(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>