基于A(yíng)VS-M和DM642視頻服務(wù)器的研究

發(fā)布時(shí)間:2010-9-20 12:14    發(fā)布者:eetech
關(guān)鍵詞: AVS-M , DM642 , 服務(wù)器 , 視頻
1 引言  

AVS是具有自主知識產(chǎn)權的數字音視頻編解碼技術(shù)標準,其包括系統、視頻、音頻、數字版權管理等四個(gè)主要技術(shù)標準和一致性測試等支撐標準。其中,移動(dòng)視頻標準AVS-M (AVS第七部分)適用范圍包括視頻會(huì )議、可視電話(huà)、移動(dòng)多媒體等領(lǐng)域。

TMS320DM642是TI公司開(kāi)發(fā)研制的一款專(zhuān)門(mén)面向多媒體應用的專(zhuān)用數字信號處理芯片,使用此DSP芯片并利用AVS-M算法來(lái)進(jìn)行視頻壓縮,可大幅提高視頻壓縮率,減少傳輸流量,即使在低帶寬情況下也可以有效保證實(shí)時(shí)性和監控需求。

我們開(kāi)發(fā)的IMlab6421視頻服務(wù)器,是基于Internet 的視/音頻監控設備。核心DSP芯片采用DM642芯片。而應用軟件、視頻壓縮算法是根據AVS-M標準進(jìn)行設計、優(yōu)化的。下面針對這款視頻服務(wù)器的系統結構、視頻優(yōu)化的軟件設計等進(jìn)行詳細的介紹。音頻壓縮的優(yōu)化本文不做介紹。

2 硬件設計

視頻服務(wù)器IMlab6421原理框圖如圖1所示,系統采用TMS320DM642 用于音視頻壓縮。DM642芯片包含一個(gè)64位的外部存儲器接口,可驅動(dòng)4個(gè)片選地址空間(CE0,CE1,CE2,CE3), 它支持8,16,32,64位寬度的同步和異步訪(fǎng)問(wèn)。我們在 DM642的片外擴展了16M Bytes的SDRAM,位于EMIF的CE0地址空間,用于存放程序和數據。SDRAM工作時(shí)鐘為100MHz,是由DM642芯片的CPU工作時(shí)鐘6分頻產(chǎn)生的。數據更新由DM642自動(dòng)完成。還在DM642板上設計有512K Bytes的Flash存儲器,位于DM642的CE1地址空間,寬度為8 bits。另外能實(shí)現與Internet連接的以太網(wǎng)處理器采用的是CRYSTAL公司的CS8900A,它高度集成設計使其不再需要其它以太網(wǎng)控制器所必需的昂貴外部器件。

視頻編碼工作原理大致為:輸入的模擬視頻信號經(jīng)TVP5150(支持PAL和NTSC兩種制式)被數字化為YUV4:2:2的數字視頻格式,經(jīng)由I2C總線(xiàn)被送至輸入緩沖區(采用三緩沖機制), DM642的CPU把捕捉到的視頻數據從一個(gè)輸入緩沖區中取出待編碼圖像數據進(jìn)行壓縮編碼處理,形成的壓縮碼流放到輸出緩沖區,然后打包通過(guò)網(wǎng)口直接傳輸到Internet。



圖1 IMlab6421硬件原理框圖

3 軟件設計

DSP嵌入式程序受硬件資源的限制,對程序流程和數據組織需要從硬件資源和代碼運行效率上做仔細的考慮。通過(guò)分析AVS-M編碼器的程序流程,借助實(shí)驗中積累的經(jīng)驗,本文給出了AVS-M編碼器的優(yōu)化方案,主要介紹Cache性能優(yōu)化、存儲空間的分配以及CPU與DMA的并行性設計等。

3.1 存儲結構及CACHE性能優(yōu)化

(1)存儲結構:DM642的存儲器系統由片內內存L1、 L2和片外外存兩部分組成,L1, L2和片外SDRAM構成了整個(gè)存儲器系統的三級層次結構,如圖2所示。其中,片內內存采用兩級緩存結構,第一級由L1P和L1D組成,L1距離DSP核最近,數據訪(fǎng)問(wèn)速度最快,只需一個(gè)時(shí)鐘周期,只能作為不能尋址的Cache使用。第二級L2是一個(gè)統一的程序/數據空間,可以整體作為SRAM映射到存儲空間,也可以整體作為第二級Cache,或是二者按比例進(jìn)行組合。第三級是片外外存,一般由SDRAM構成。L1P cache大小為16KB,直接映射,每行大小32 字節;L1D cache大小16KB, 2路映射,每行大小64 字節。L2是L1和外存儲器的中間層,容量較大有256KB,訪(fǎng)問(wèn)速度較慢,根據 L2 配置為Cache 或SRAM 的不同選擇,訪(fǎng)問(wèn)速度需8個(gè)或6個(gè)時(shí)鐘周期。片外存儲器容量很大但訪(fǎng)問(wèn)速度很慢,一般都會(huì )遠遠大于 8 個(gè)時(shí)鐘周期。



圖2 三級存儲系統

(2)CACHE性能優(yōu)化:要優(yōu)化Cache的使用性能需了解Cache的具體結構,如Cache容量、行大小、組相聯(lián)數等。下面總結了一些優(yōu)化Cache性能的方法:合理配置L2;合理布置程序代碼段和數據段的內存布局,為防止有效代碼、數據在緩沖存儲器中相互排擠,應盡量把順序執行的代碼、同時(shí)使用的數據放在相互鄰接的物理空間當中;若函數模塊和數據包含在一個(gè)循環(huán)中,循環(huán)體的大小應和Cache的容量相吻合,以便能把整個(gè)循環(huán)體全部放入Cache中。為了提高Cache中數據的重復利用率,把數據操作構成一條數據處理鏈,鏈中的下一級操作就能直接使用上一級操作留在Cache中的數據。此外還可以根據Cache行數據寬度信息調節數據在物理內存中的存放位置,從而利用數據預取增加Cache的命中率;挖掘L1D的不命中流水處理能力,加速待使用數據的讀入速度;通過(guò)合理的數據填充策略,避免同一時(shí)鐘周期對相同存儲體的讀寫(xiě)操作將造成存儲器的存取沖突。

3.2 存儲空間的分配

在DSP上由于內存空間有限,需要合理分配內存空間,這對于程序的運行效率十分重要。使用的一個(gè)原則是:應盡量把數據和代碼放入片內存儲器。因為外存比CPU工作的速度要慢很多,如果用CPU來(lái)處理訪(fǎng)問(wèn)外部存儲器的工作,大量時(shí)間將浪費在存取等待上。

DM642的L2片內存儲器可以配置為SRAM或Cache。由于編碼器的數據流程是有規律的,因此我們考慮用程序控制DMA控制器來(lái)進(jìn)行內存和外存之間的數據交換,這樣比硬件自動(dòng)地來(lái)處理效率要高。

由于片內存儲器容量的限制,不可能將編碼器的所有數據都放入片內存儲器。原始圖像和重構圖像是無(wú)法完全放到片內存儲器中的。事實(shí)上,沒(méi)有必要將這些數據放在片內,因為編碼器的處理過(guò)程是以宏塊為單位的,我們只需要在片內維護一個(gè)宏塊的數據結構,CPU訪(fǎng)問(wèn)這些數據進(jìn)行計算。每編碼一個(gè)宏塊的時(shí)候把該宏塊需要的數據從外存調入內存,填到相應的這些數據結構中。利用DM642提供的QDMA機制,CPU發(fā)出QDMA請求后就可以繼續對其它數據進(jìn)行計算,由DMA負責將數據從外存調到內部存儲器。因此如何設計使CPU與DMA之間協(xié)調工作很重要,本文2.3部分將詳細討論這個(gè)問(wèn)題。

需要注意的問(wèn)題是當前宏塊編碼過(guò)程中需要用到前面編碼已經(jīng)獲得的一些信息。參考代碼中是保留所有宏塊的編碼信息,這樣的做法是不適合DSP實(shí)現的,需要的存儲空間太大,片內存儲器無(wú)法容納。實(shí)際上編碼當前宏塊只需要參考它上面和左面的宏塊。因此設計編碼器中各模塊的局部數據結構如圖3所示。該數據結構保留上面一行的值和左邊宏塊的值,每編碼完一個(gè)宏塊,確定當前宏塊的信息后更新這些緩沖區,這些數據可以放在L2中,不用訪(fǎng)問(wèn)外存。而且實(shí)驗證明用來(lái)維護這樣的數據結構所需要的計算時(shí)間很小。

經(jīng)過(guò)優(yōu)化的程序和常用的數據結構的大小可以放在L2中。所以按照上面的分析將L2配置為256KB SRAM,將程序代碼段(.text)、變量初值表(.cint)、常量字符串(.const)、全局變量靜態(tài)變量(.bss/.far)、堆棧段(.stack)等放入L2 SRAM當中,全局堆(.sysmem用于動(dòng)態(tài)存儲器分配)置于外部存儲器。表1總結了編碼器所要用到的存儲空間分配情況。



圖3模塊的局部數據結構

表1 編碼器存儲空間的分配


其中整像素運動(dòng)估計參考緩沖區包括亮度和色度。因為參考幀有兩個(gè),整像素運動(dòng)估計參考緩沖區也有兩個(gè)。分像素運動(dòng)估計參考緩沖區也是兩個(gè):一個(gè)用來(lái)調入SKIP編碼模式的預測值,一個(gè)用來(lái)做分像素運動(dòng)估計。

3.3 CPU與DMA并行性設計

I幀編碼可以說(shuō)是P幀編碼的特例,如果P幀中不用運動(dòng)估計的話(huà),則與I幀編碼流程相同。因此下面對于CPU與DMA的并行性的討論只針對P幀。

我們要解決的問(wèn)題是CPU什么時(shí)候發(fā)QDMA請求,命令DMA控制器將需要的數據調入內存中。而且這種調度方式要保證CPU發(fā)命令之后可以進(jìn)行其它的計算,等CPU需要這些數據的時(shí)候,DMA已經(jīng)將其調入內存中了。

為了解決這個(gè)問(wèn)題需要了解編碼器各個(gè)模塊的運行時(shí)間,以及DMA調度數據到內存所需要的時(shí)間。通過(guò)在DM642上運行優(yōu)化過(guò)的程序,一個(gè)參考幀情況下測得各部分占程序運行時(shí)間的比例大致如表2所示:

表2 程序各部分運行時(shí)間所占比例


圖4中由CPU指向DMA的箭頭表示啟動(dòng)QDMA傳輸。每個(gè)DMA傳輸所用的時(shí)間相對于程序運行的時(shí)間比例是:傳輸原始像素占1%,傳輸SKIP和分像素運動(dòng)估計參考區各占3%,傳輸整像素亮度和色度參考區共15%,傳輸環(huán)路濾波結果5%。整個(gè)DMA傳輸的時(shí)間大概占CPU計算時(shí)間的30%。通過(guò)這些數據可以看出,按照圖4進(jìn)行安排可以達到上面所述目標。



圖4 CPU與DMA并行工作

只依靠上面這些方法進(jìn)行優(yōu)化,視頻壓縮還不能達到實(shí)時(shí)要求,還需要進(jìn)行算法級優(yōu)化,以及對編碼器中各個(gè)模塊進(jìn)行程序代碼級的優(yōu)化。常通過(guò)采用內聯(lián)函數、軟件流水、線(xiàn)性匯編優(yōu)化等方法,以及合理使用針對視頻處理而設計的特殊指令集,充分利用DM642內部的并行計算單元,提高了程序的運行速度。由于篇幅有限,對這些優(yōu)化方法本文不再重點(diǎn)論述。

4. 結論

結合AVS-M視頻壓縮處理流程的特點(diǎn),本文完成了一個(gè)基于DM642平臺的編碼器的設計與實(shí)現。通過(guò)對編碼流程的合理安排使得CPU能與DMA控制器并行工作,CPU不用等待數據,需要的數據已經(jīng)被DMA調到內存中。實(shí)驗表明通過(guò)系統級優(yōu)化、程序級優(yōu)化、匯編級優(yōu)化、算法級優(yōu)化等優(yōu)化之后,基于這款視頻服務(wù)器(實(shí)物圖見(jiàn)圖5),能達到2路CIF352x288格式實(shí)時(shí)視頻壓縮,以及音頻實(shí)時(shí)編碼、解碼處理,且圖像主觀(guān)效果及音頻效果良好。  

本文創(chuàng )新點(diǎn)是:把具有自主知識產(chǎn)權的數字音視頻編解碼技術(shù)標準第七部分(AVS-M)應用于視頻服務(wù)器的視頻壓縮,目前市場(chǎng)上還沒(méi)有采用此壓縮標準的產(chǎn)品,此產(chǎn)品具有極高得性?xún)r(jià)比,采用此壓縮標準還可以避免產(chǎn)品產(chǎn)業(yè)化之后知識產(chǎn)權之爭,具有很好的應用前景。



圖5 IMlab6421視頻服務(wù)器實(shí)物圖
本文地址:http://selenalain.com/thread-28172-1-1.html     【打印本頁(yè)】

本站部分文章為轉載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀(guān)點(diǎn)和對其真實(shí)性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問(wèn)題,我們將根據著(zhù)作權人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評論 登錄 | 立即注冊

相關(guān)在線(xiàn)工具

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復 返回頂部 返回列表
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页