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