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