童 鼎,李訓根,黃 凱,楊 洋
(1.杭州電子科技大學電子信息學院,浙江杭州310018;2.浙江大學超大規(guī)模集成電路設計研究所,浙江杭州310027;3.杭州微納科技有限公司,浙江杭州310012)
杜比AC-3音頻技術是由日本先鋒公司與美國杜比實驗室共同研制而成。杜比AC-3具有5.1聲道的環(huán)繞立體聲系統(tǒng),由5個全頻帶聲道和1個超低音聲道組成[1]。這6個聲道的信息能完美再現(xiàn)高音質的立體聲。杜比AC-3解碼算法的核心是通過逆改進離散余弦變換(Inverse Modified Discrete Cosine Transform,IMDCT)完成頻預到時域的轉換。本文首先在軟件上對IMDCT運算進行了優(yōu)化,使得該運算所需的存儲空間和運算量大幅縮減。之后,將優(yōu)化后的算法移植到了自主的32位WN6102 MCU平臺上,最后結合該芯片所特有的音頻加速模塊(Audio Accelerator,AUAC),將該算法中軟件實現(xiàn)的IMDCT運算進一步優(yōu)化成硬件直接完成運算。實驗證明,優(yōu)化后的算法在完成相同的時頻轉換條件下,顯著提升了系統(tǒng)運算速度,有效節(jié)省了系統(tǒng)資源,使得該算法可以更加廣泛高效地應用于更多的領域。
AC-3輸入碼流由一系列同步幀構成,如圖1所示。每個同步幀包括同步信息、比特流信息、6個音頻數(shù)據(jù)塊、輔助信息單元以及2個CRC校驗字。每個音頻塊內又包含了指數(shù)編碼數(shù)據(jù)、比特分配參數(shù),量化尾數(shù)等信息。
圖1 AC-3碼流幀結構
AC-3解碼器的解碼流程如下:解碼器接收AC-3比特流后先與先進行數(shù)據(jù)校驗,經過誤碼檢測后從數(shù)碼流中提取出控制數(shù)據(jù)、系統(tǒng)配置參數(shù)、編碼后的頻譜包絡及量化后的尾數(shù)等數(shù)據(jù)。然后根據(jù)聲音的頻譜包絡產生比特分配信息,對尾數(shù)部分進行解量化,恢復出變換系數(shù)的指數(shù)和尾數(shù)。再經過合成濾波器組,把數(shù)據(jù)由頻域變換到時域,最后輸出重建的PCM信號。解碼原理框圖如圖2所示。
在整個解碼算法中,綜合濾波器組的作用便是使用IMDCT運算將輸入的256點的頻域采樣序列轉化成512點的時域序列,再乘以時間窗還原出原來的音頻信號。
圖2 AC-3音頻解碼算法框圖
杜比AC-3解碼中的IMDCT變換有短變換和長變換兩種方式,解碼時采用方式取決于比特流中的塊切換標志位。它們的區(qū)別在于使用的正弦、余弦變換表的元素個數(shù)及取值不同。
本文以長塊為例進行優(yōu)化,長塊IMDCT的變換表達式為:
式中,0≤n≤2N-1,x(n)表示時域采樣序列,X(k)表示頻域采樣序列,本文中N=256。
可見直接進行IMDCT運算是相當耗時的,且占用大量存儲空間。因此,本文將512點的IMDCT運算優(yōu)化成128點的FFT進行運算。這樣可以大大減少計算量和存儲空間。
依據(jù)時域混疊特性[2],式1中只需計算x(n)的偶數(shù)項序列,便可得到其奇序列。不論輸入X(k)為實數(shù)還是復數(shù),F(xiàn)FT總是復數(shù)的運算過程[3]。式1可以優(yōu)化成如下表達式:
此時,0≤n≤N/2-1,把式2中的Y(k)W(4k+1)8N看做N/2點的輸入序列,則式2便是一個標準的DFT表達式。而DFT又可以轉化為FFT方式大幅降低運算量,之后再進行時域加窗混疊處理,即可得到2N點的時域采樣序列。
本文先在PC機的平臺上,使用VC6.0編譯工具分別實現(xiàn)了優(yōu)化前與優(yōu)化后兩種IMDCT算法,優(yōu)化前后結果如表1所示,表1中N=256。表1數(shù)據(jù)顯示,優(yōu)化后IMDCT運算所需的計算量和存儲空間都有了顯著的提升。
表1 算法軟件優(yōu)化前后數(shù)據(jù)
本實驗算法的目標硬件開發(fā)平臺是以CK610E CPU處理器為核心的高性能32位MCU—WN6102。CK610E處理器是由浙江大學和杭州中天微系統(tǒng)公司聯(lián)合開發(fā)的32位嵌入式CPU[4]。WN6102的AUAC模塊,使其可以在音頻領域得到廣泛的應用。AUAC內部結構如圖3所示。
圖3顯示AUAC內部結構主要由5部分組成:主數(shù)據(jù)接口、從數(shù)據(jù)接口、邏輯控制、寄存器地址以及運算器。它支持多種運算模式,有加法、乘法、累加、乘累加、減法、快速傅里葉變換等運算。不同運算模式間主要區(qū)別在于運算器運算方式選擇的不同。
實驗顯示軟件優(yōu)化后的IMDCT算法消耗的CPU資源依舊很大,使其應用受到限制。結合AUAC支持乘累加和FFT運算的特點,實驗中將IMDCT運算做了進一步優(yōu)化。優(yōu)化后的IMDCT分為4步來實現(xiàn),分別為:(1)FFT變換前加窗處理;(2)128點FFT運算;(3)FFT變換后加窗處理;(4)時域混疊處理還原出512個時域信號。
就運算量和運算方式而言:第一步加窗運算需2N次乘法運算和N次加法運算,轉換成AUAC的乘累加模式來實現(xiàn);第二步N/2點的FFT運算可以直接由AUAC的FFT模式直接完成;第三步加窗運算需2N次乘法運算和N次加法運算,轉換成AUAC的乘累加模式來實現(xiàn);第四步時域混疊需5N/2次乘法運算和N次加法運算,采用AUAC的乘累加模式來實現(xiàn)。
在這一實現(xiàn)過程中,AUAC需執(zhí)行3次不同的乘累加運算和1次FFT運算才能實現(xiàn)1次IMDCT運算。在此本文將每一步運算都轉換成4個階段來完成。4個階段的運算邏輯結構如圖4所示。
圖3 AUAC內部結構框圖
圖4 AUAC運算邏輯結構圖
圖4顯示的4個階段為:數(shù)據(jù)地址生成、獲取操作數(shù)、運算、回寫。每一階段的實現(xiàn)方式及功能如下:(1)數(shù)據(jù)地址生產階段,配置操作數(shù)的類型、位寬及操作數(shù)所存儲的內存空間等,運算時將生成內存數(shù)據(jù)讀取操作,并發(fā)送讀數(shù)據(jù)指令;(2)獲取操作數(shù)階段,操作數(shù)種類有內存中待計算原始數(shù)據(jù)和中間計算結果數(shù)據(jù)。本文中AUAC所實現(xiàn)的IMDCT運算中有3步是基于乘累加模式實現(xiàn)的,故而每步都需配置相應的中間計算值數(shù)據(jù)的存儲地址以供完成相應的運算;(3)運算階段,在獲取操作數(shù)后,該階段就會根據(jù)運算類型進行相應的運算操作。執(zhí)行乘累加運算模式時,在選擇操作模式后,還需分別配置相應的乘或加的運算次數(shù)。優(yōu)化后的IMDCT運算中第二步的FFT運算則可以直接配置相應寄存器,使得AUAC工作于FFT模式,來直接替代繁瑣的軟件運算;(4)回寫階段,配置計算結果的存儲地址,該階段會將最終的計算結果回寫到指定的的內存空間中。
實驗中進行1次IMDCT運算,用Timer(CPU時鐘頻率為48M)分別測試經過軟硬件優(yōu)化后IMDCT 4個模塊運算消耗的時鐘數(shù),測試結果如表2所示:
表2 兩種優(yōu)化后IMDCT運算的結果
表2顯示軟件實現(xiàn)的IMDCT運算1次需要消耗0.6M的CPU資源,而AUAC硬件實現(xiàn)的IMDCT運算1次只需消耗0.02M的CPU資源。實際音頻解碼中1幀音頻數(shù)據(jù)包含了6個音頻塊,以解壓成雙聲道音頻為例,那么解壓1幀的數(shù)據(jù)就需要進行12次IMDCT運算。軟件實現(xiàn)需要消耗7.6M的CPU資源,而AUAC模塊實現(xiàn)只需要0.24M的CPU資源,它能高效的滿足嵌入式音頻的實時性要求,該方法實現(xiàn)的AC-3解碼算法可以更好得應用于嵌入式領域。
目前國內外對AC-3音頻解碼系統(tǒng)的設計主要可分為:純硬件設計、純軟件設計、軟硬件協(xié)同處理。純硬件實現(xiàn)的解碼速度是最快的,但這樣做成本太大,可移植性低,目前國內外對AC-3解碼純硬件實現(xiàn)的研究還很少。純軟件實現(xiàn)方面,文獻5對AC-3音頻解碼算法的復雜度和解碼運算量方面進行了估算,得出解碼器大致需要40M的運算量。文獻6則只在VC6.0平臺上對標準AC-3解碼算法的IMDCT運算進行了優(yōu)化,使得解碼總時間縮短了16%左右。顯然純軟件的解碼方式效率還是比較低,無法滿足嵌入式的實時性要求。
本文對AC-3音頻解碼中運算量最大的IMDCT進行分析,在對其進行軟件優(yōu)化后,結合WN6102芯片的特性,有效地通過AUAC硬件模塊實現(xiàn)了IMDCT運算。整個解碼的其余部分通過軟件實現(xiàn)。實驗結果表明,經過硬件實現(xiàn)后的IMDCT所占系統(tǒng)資源已相當?shù)土?,這種軟硬件協(xié)同處理實現(xiàn)的AC-3音頻解碼效率遠高于純軟件的實現(xiàn)方式。
[1] 王文卿,韓澤耀.杜比AC-3的MDCT算法分析及定點仿真[J].計算機仿真,2007,24(5):306-310.
[2] Princen J,Brandley A.Analysisi/synthesisi filter bank design based on time domin aliasing cancellation[J].IEEE Trans ASSP,1986,34(5):1 153 -1 161.
[3] 竇維蓓,劉若珩,王建昕,等.基于DSP的IMDCT快速算法[J].清華大學學報(自然科學版),2000,40(3):99-103.
[4] 楊洋,郭斌林,黃凱.一種面向無線傳輸?shù)囊纛l編解碼算法的實現(xiàn)和優(yōu)化[J].計算機系統(tǒng)應用,2010,19(6):70-73.
[5] 劉曉華,陳健.Dolby Digital音頻壓縮技術的研究和仿真[J].電聲技術,1998,12(1):2-7.
[6] 陳瑋,余曄.AC-3音頻解碼的IMDCT算法優(yōu)化[J].微計算機信息,2011,27(4):206-207.