• 沒有找到結果。

A. Part 1: Audio Coding

A.2 研究步驟

我們將 AAC 的編碼器和解碼器作了最佳化之後,放在 DSP 上執行。我們希望能夠進一 步提高 AAC 解碼器的效能,因此統計 AAC 解碼程式在 DSP 上執行的時間,結果如圖 A-2 所示。

圖 A-2. 霍夫曼解碼方塊圖

我們根據圖 A-2的結果,發現反修正離散餘弦轉換 IMDCT 和霍夫曼解碼 Huffman Decoding 所需的時間分別佔了 66%以及 21%,不過由於處理器運算方式的限制,我們在 DSP 上所能作的改進有限,因此打算將這兩個部分移到 FPGA 來實現,期待 DSP/FPGA 的共同 運作方式,能達到更高的效率。

A.2.1 霍夫曼解碼 Huffman Decoding:

首先我們先討論霍夫曼解碼的改進方式,AAC 解碼器對於霍夫曼解碼的流程如圖 A-3 所示。首先從位元流 bitstream 中,取出 1 到 19 位元長度不等的位元,以此來解出 0 到 120 的編碼索引 code index,然後根據側訊 side information 決定去那個霍夫曼編碼書 Huffman codebook 裡找出正確的碼字 codeword。

圖 A-3. 霍夫曼解碼方塊圖

A.2.1.1 變動輸入速率、固定輸出速率的實現方式:

這個動作對於處理器的架構來說,由於其無法確定要從位元流中取出多少的位元,所以 只能一個時脈週期取出一個位元來比編碼索引書 Code index table 中是否有符合的位元串,

這個動作變的浪費很多時間在抓一個位元,因此我們希望將其移到 FPGA 上來完成這個動 作,達到每個時脈週期能固定輸出一個正確的碼字 codeword,這樣能大幅提昇其執行效率。

因此我們作了以下的規劃,將編碼索引書 code index table 的部分放到 FPGA 上來實現,將 固定長度的編碼索引 code index 傳回給 DSP 解出正確的碼字 codeword。

圖 A-4. 霍夫曼解碼的 DSP/FPGA 工作分配圖

A.2.1.2 變動輸入速率、變動輸出速率的實現方式:

根據[3],固定輸出速率的霍夫曼解碼會受限於編碼索引書 code index table 一次比對的數 目,所以將解碼索引書 code index table 拆成多個小的區塊來作比對,這樣對較短的編碼索引 code index 可以較快的比對出來,但是對於較長的編碼索引則需要較多的時脈週期來完成,

不過原則上較長的編碼索引出現的機會也較低,因此整體來說還是有比較大的機會能增加處 理效率。

圖 A-5. 左邊為固定輸出速率的架構圖,右邊為變動輸出速率的架構圖

A.2.2 反修正餘弦轉換 IMDCT:

接下來討論反修正離散餘弦轉換 IMDCT,我們先看看 AAC 原來的要求,他要能對長 窗 Long window 作 2048 點的 IMDCT,或是對短窗 short window 作 256 點的 IMDCT。我們 根據[4],IMDCT 的以用 N/4 點的快速傅立葉轉換 Fast Fourier Transform 來完成,其轉換關 係如下。

圖 A-6. IMDCT Complex Registers Radix-2 SDF log2N-2 2 log2N N-1

圖 A-7. 左邊為 8 點 Radix-2 的訊號圖,右邊 8 點為 Radix-23的訊號圖

圖 A-8. 512 點的 Radix-23管線化架構圖

相關文件