用于手機(jī)SoC設(shè)計(jì)的部件級(jí)多媒體功能模塊
視頻編碼過(guò)程如圖1所示。首先,SoC主處理器通過(guò)指令配置Diamond視頻引擎,然后將未編碼的視頻幀發(fā)送給該引擎,由它對(duì)視頻幀進(jìn)行編碼,并將編碼后的圖像數(shù)據(jù)(VDE)送回主處理器。進(jìn)行視頻解碼時(shí),主處理器首先通過(guò)指令配置Diamond視頻引擎,然后將VDE發(fā)送給它,由它進(jìn)行圖像解碼,最后將已解碼的幀傳回主處理器。音頻解碼過(guò)程,主處理器將壓縮的音頻流發(fā)送給Diamond音頻引擎,以解壓成音頻數(shù)據(jù)流。
圖1:已編碼和未編碼視頻數(shù)據(jù)出入Diamond視頻引擎示意圖
Diamond視頻引擎內(nèi)核中有兩個(gè)配置好的處理器,它們共同執(zhí)行視頻壓縮的任務(wù),而集成的DMA控制器則負(fù)責(zé)將壓縮前后的圖像送入和送出該內(nèi)核,并在內(nèi)核中的兩個(gè)處理器之間傳遞。Diamond視頻引擎內(nèi)核中的這兩個(gè)處理器都采用了Tensilica的可配置Xtensa處理器架構(gòu),引擎的流處理器則通過(guò)增加額外指令來(lái)完成比特流解析和熵編碼。
這些新指令中一部分基于Tensilica的可變長(zhǎng)度指令擴(kuò)展(FLIX),并采用每條指令執(zhí)行兩次獨(dú)立操作的VLIW指令格式。Diamond視頻引擎的像素處理器也增加了可同時(shí)操作多個(gè)像素的單指令多數(shù)據(jù)(SIMD)指令。
流處理器和像素處理器中添加的指令使Diamond視頻引擎能夠在時(shí)鐘速率低于200MHz時(shí)以標(biāo)準(zhǔn)清晰度(SD或D1)顯示分辨率和30幀/秒的速度編碼MPEG4 ASP比特流或解碼H.264/AVC MP、MPEG4 ASP、MPEG2 MP、和VC-1/WMV9 MP視頻比特流。
Diamond視頻引擎的所有內(nèi)部操作對(duì)主處理器都是不可見的,這正符合其作為部件級(jí)SoC模塊的身份。主處理器通過(guò)調(diào)用一組預(yù)定義API來(lái)操作Diamond視頻引擎。在運(yùn)行視頻應(yīng)用時(shí),主處理器使用主系統(tǒng)內(nèi)存中的兩個(gè)隊(duì)列向Diamond視頻引擎發(fā)送指令消息和數(shù)據(jù),而用另兩個(gè)隊(duì)列接收來(lái)自Diamond視頻引擎的狀態(tài)消息和數(shù)據(jù)?;陉?duì)列的消息事務(wù)處理則由主處理器和Diamond視頻引擎之間的固件驅(qū)動(dòng)型中斷啟動(dòng)。
圖2:包含Tensilica Diamond視頻引擎的音、視頻SoC設(shè)計(jì)實(shí)例
結(jié)合Tensilica的Diamond視頻引擎的硬件設(shè)計(jì)也并不復(fù)雜。與其他系統(tǒng)部件一樣,Diamond視頻引擎是連接到主系統(tǒng)總線上的,如圖2所示。同時(shí),Diamond 330HiFi音頻引擎內(nèi)核可以進(jìn)行數(shù)字音頻解碼以配合Diamond 視頻引擎,并由主處理器對(duì)它們進(jìn)行同步。Diamond 330HiFi音頻引擎的軟件庫(kù)中包含大量可直接運(yùn)行(ready-to-run)的數(shù)字音頻編解碼程序。在某些設(shè)計(jì)中,該引擎也可用作主處理器。
目前在多媒體設(shè)備和手機(jī)SoC中已實(shí)現(xiàn)量產(chǎn)的Diamond標(biāo)準(zhǔn)音、視頻引擎說(shuō)明處理器和可直接運(yùn)行的固件是如何構(gòu)成一個(gè)復(fù)雜的高性能低功耗的IP內(nèi)核的。采用這種面向模塊的設(shè)計(jì)方法,SoC開發(fā)團(tuán)隊(duì)就能利用復(fù)雜并已得到驗(yàn)證的IP核快速搭建起非常復(fù)雜的SoC,然后利用應(yīng)用程序代碼對(duì)這些SoC編程,從而為市場(chǎng)提供獨(dú)特的產(chǎn)品。由于多媒體壓縮標(biāo)準(zhǔn)發(fā)展迅速,設(shè)計(jì)時(shí)間也日益縮短,因此這種黑盒式設(shè)計(jì)方法已變得越來(lái)越重要。