《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 其他 > 設(shè)計應(yīng)用 > AAC音頻解碼中位數(shù)可選且自動加載移位寄存器設(shè)計
AAC音頻解碼中位數(shù)可選且自動加載移位寄存器設(shè)計
儀器儀表學(xué)報
摘要: 在對采樣率為44.1kHz的AAC音頻進(jìn)行解碼時,一幀的解碼時間須控制在23.22毫秒內(nèi)。且音頻中每一幀可包含1"48個聲道的數(shù)據(jù),若遇時序要求最嚴(yán)格的場合,即一幀包含48個聲道數(shù)據(jù),實時性則很難滿足,因此速度便成為硬件設(shè)計的重要指標(biāo)。所以在系統(tǒng)設(shè)計時,為完成解碼的實時性要求,各模塊應(yīng)以速度為優(yōu)化目標(biāo)。
Abstract:
Key words :

1、引言  

    在對采樣率為44.1kHz的AAC音頻進(jìn)行解碼時,一幀的解碼時間須控制在23.22毫秒內(nèi)。且音頻中每一幀可包含1"48個聲道的數(shù)據(jù),若遇時序要求最嚴(yán)格的場合,即一幀包含48個聲道數(shù)據(jù),實時性則很難滿足,因此速度便成為硬件設(shè)計的重要指標(biāo)。所以在系統(tǒng)設(shè)計時,為完成解碼的實時性要求,各模塊應(yīng)以速度為優(yōu)化目標(biāo)。  

    在AAC音頻解碼" title="AAC音頻解碼">AAC音頻解碼電路的設(shè)計中,需要一塊電路連接AAC比特流的存儲電路和和取數(shù)解碼電路,考慮到它須完成數(shù)據(jù)緩沖和移位的功能,我們選擇用移位寄存器" title="移位寄存器">移位寄存器來實現(xiàn),示意圖如下。  


  
圖1 移位寄存器功能示意圖  

    典型的移位寄存器有兩個特點:1)每個時鐘周期移一位,2)加載的優(yōu)先級別高于移位的優(yōu)先級別,移位需等待加載的完成。而AAC音頻數(shù)據(jù)采用變長編碼技術(shù),即壓縮比特流中的數(shù)據(jù)部分為可變長的哈夫曼編碼,所以每次解碼完畢從移位寄存器中移出的位數(shù)不是固定值,若使用典型移位寄存器一位一位地移數(shù)據(jù)降低了工作效率;且每次移位須等待加載完畢進(jìn)行,耗費了等待時間。所以,典型的移位寄存器在時序要求緊張的場合對速度提高起到了負(fù)面作用,導(dǎo)致整個系統(tǒng)不能完成實時性要求。因此本設(shè)計針對AAC音頻解碼這一特殊應(yīng)用,對典型移位寄存器在速度方面進(jìn)行改進(jìn)設(shè)計,使之每一周期可移出任意位,且移位無須等待加載完成,從而加速了移位過程,使之滿足實時性要求。  

    論文結(jié)構(gòu)如下:首先介紹本設(shè)計的工作原理,對其中一些參數(shù)進(jìn)行配置;其次分模塊進(jìn)行電路設(shè)計;再次,將典型移位寄存器和本設(shè)計分別下載到FPGA開發(fā)板,從速度和面積兩方面進(jìn)行實驗結(jié)果的比較;最后,對設(shè)計展望,提出可優(yōu)化的方向。  

2、工作原理  

    考慮到本設(shè)計的特定使用場合,選擇移位寄存器為64位,移位位數(shù)是1"16可變的整數(shù),存儲空間是位寬為32位的fifo。在其他場合下,可基于同樣的設(shè)計方法通過改變參數(shù)來滿足要求。  

    移位寄存器功能示意如圖1所示,此移位寄存器連接了兩塊電路單元:單元一、需要取數(shù)的AAC音頻解碼電路單元;單元二、數(shù)據(jù)的存儲空間。當(dāng)任意時刻單元一需取數(shù)時,可向移位寄存器發(fā)出取數(shù)信號,并給出要取的位數(shù),移位寄存器就在一個周期內(nèi)將所需長度的數(shù)據(jù)移出。當(dāng)移位寄存器中的數(shù)據(jù)少于一定量時(在此設(shè)為32位),會自動從單元二中加載數(shù)據(jù),且加載與移位同優(yōu)先級別,所以無須等待時間。  

3、位數(shù)可選、自動加載移位寄存器電路設(shè)計  

    以主要寄存器的不同功能依據(jù),將電路劃分為如下圖所示的虛線框內(nèi)的三個模塊。下面將分模塊介紹電路的設(shè)計。  


  
圖2 位數(shù)可選、自動加載移位寄存器電路圖  

3.1 有效數(shù)據(jù)計數(shù)器的設(shè)計  

    有效數(shù)據(jù)計數(shù)器是用來記錄移位寄存器中剩余有效數(shù)據(jù)的位數(shù)。初始化時,存儲器向移位寄存器加載64位有效數(shù)據(jù),計數(shù)器為64;當(dāng)外界從移位寄存器取數(shù)時,計數(shù)器在原有計數(shù)的基礎(chǔ)上減掉所取的位數(shù);當(dāng)移位寄存器從存儲器加載數(shù)據(jù)時,計數(shù)器在原有計數(shù)的基礎(chǔ)上加上加載數(shù)據(jù)的位寬(32);當(dāng)移位和加載同時進(jìn)行時,計數(shù)器進(jìn)行上述的減法和加法的混合運算。  

    使用計數(shù)器的目的是為了產(chǎn)生加載數(shù)據(jù)的標(biāo)志信號(在這里設(shè)為32)。當(dāng)有效數(shù)據(jù)計數(shù)器中的數(shù)目小于等于32時,產(chǎn)生加載信號,而當(dāng)計數(shù)器中的數(shù)目大于32時,撤除加載信號。在這里加載數(shù)據(jù)的標(biāo)志位可以是范圍為16"32的整數(shù),范圍的制定決定于:加載標(biāo)志的下限要滿足一次取數(shù)的最大長度,上限要保證除有效數(shù)據(jù)外的剩余空間足夠下一次的數(shù)據(jù)加載長度。  

3.2 初始化控制狀態(tài)機(jī)的設(shè)計  

    移位寄存器在電路復(fù)位時須加載上有效數(shù)據(jù),以保證第一次的取數(shù)的正確進(jìn)行。而此時加載標(biāo)志不能由有效數(shù)據(jù)計數(shù)器產(chǎn)生,因為有效數(shù)據(jù)計數(shù)器在初始化的狀態(tài)下為64不可能產(chǎn)生加載標(biāo)志,所以加載標(biāo)志需由復(fù)位信號間接產(chǎn)生。且由于移位寄存器的長度(64位)是存儲器的寬度(32位)的2倍,所以需要加載兩次。  

    鑒于以上的功能要求,設(shè)計初始化狀態(tài)機(jī),其中包括三個狀態(tài): IDLE, INIT_0和 INIT_1。當(dāng)復(fù)位產(chǎn)生時,復(fù)位信號的兩級寄存信號(防止亞穩(wěn)態(tài))為觸發(fā)信號,使?fàn)顟B(tài)由IDLE跳轉(zhuǎn)到INIT_0;下一個時鐘周期,狀態(tài)機(jī)自動由INIT_0跳轉(zhuǎn)到INIT_1,并產(chǎn)生輸出信號init_0;再下個時鐘周期,狀態(tài)機(jī)自動由INIT_1跳轉(zhuǎn)到IDLE,并產(chǎn)生輸出信號init_1。狀態(tài)機(jī)產(chǎn)生的上述兩個輸出信號控制產(chǎn)生移位寄存器在初始化時的兩次加載信號。狀態(tài)轉(zhuǎn)換圖如下:  


  
圖3 移位寄存器初始化狀態(tài)轉(zhuǎn)移圖  

3.3 移位寄存器的設(shè)計  

    之所以選擇64位的移位寄存器,是因為若選擇一倍于存儲器寬度的移位寄存器長度(32位),移位后剩余的有效數(shù)據(jù)的位數(shù)可能不夠下一次的移位長度,為滿足移位長度的要求,需要在加載后再次移位,因此移位最多要花費三個時鐘周期的時間;若選擇三倍于存儲器寬度的移位寄存器的長度或更長(>=96位)時,當(dāng)設(shè)定加載數(shù)據(jù)的標(biāo)志為有效數(shù)據(jù)不大于32時,需要加載兩次數(shù)據(jù),當(dāng)設(shè)定加載數(shù)據(jù)的標(biāo)志為有效數(shù)據(jù)不大于64時,此時移位寄存器中的有效數(shù)據(jù)相對于需要移位的最長數(shù)據(jù)偏長且沒有必要。所以,將移位寄存器的長度選擇為2倍于存儲器的寬度(64位)在時間和空間上都達(dá)到了最優(yōu)。  

    初始化過程:初始化狀態(tài)機(jī)產(chǎn)生的輸出信號init_0和init_1為兩次加載的控制信號,這兩個信號控制移位寄存器在初始化的兩個時鐘周期內(nèi),從存儲器中取出數(shù)據(jù)并將其分別加載到高32位和低32位。  

   移位過程:當(dāng)取數(shù)信號發(fā)出取數(shù)要求時,輸入的取數(shù)位數(shù)作為多路選擇器的數(shù)據(jù)選擇端,當(dāng)前移位寄存器的值和0作為多路選擇器的數(shù)據(jù)端,通過數(shù)據(jù)選擇決定移位寄存器下個周期從高位到低位的值。  

    加載過程:當(dāng)加載信號發(fā)出時,剩余有效數(shù)據(jù)作為多路選擇器的數(shù)據(jù)選擇端,當(dāng)前移位寄存器的值、FIFO輸出的值和0作為多路選擇器的數(shù)據(jù)端,通過數(shù)據(jù)選擇決定移位寄存器下個周期從高位到低位的值。  

    移位和加載同時發(fā)生的過程:當(dāng)移位和加載信號同時產(chǎn)生時,移位寄存器中剩余的有效數(shù)據(jù)的位數(shù)和輸入的取數(shù)位數(shù)共同作為多路選擇器的數(shù)據(jù)選擇端,當(dāng)前移位寄存器的值、FIFO輸出的值和0作為多路選擇器的數(shù)據(jù)端,通過數(shù)據(jù)選擇決定移位寄存器下個周期從高位到低位的值。  

4、實驗結(jié)果  

    為完成解碼實時性的要求,本設(shè)計對典型的移位寄存器在速度上進(jìn)行改進(jìn),但控制邏輯變得復(fù)雜,從而消耗了更多資源。因此,我們選擇速度、面積作為性能指標(biāo)對兩種設(shè)計進(jìn)行比較。在基于FPGA的硬件設(shè)計中,面積指標(biāo)通常用查找表數(shù)和寄存器數(shù)來表示,速度指標(biāo)我們選擇最大時鐘頻率及解碼時平均每幀消耗的周期數(shù)來表示。  

    我們采用altera公司FPGA開發(fā)工具QuartusII分別對兩塊電路進(jìn)行綜合和時序分析,從綜合報告中獲得查找表和寄存器的數(shù)目,從時序報告中獲得最大時鐘頻率。并將兩個設(shè)計分別同AAC音頻解碼電路一起整體下載到stratix II EP2S180 的FPGA開發(fā)板,以AAC音頻壓縮文件中隨機(jī)抽取的10幀數(shù)據(jù)為測試矢量,使用一計數(shù)器記錄下移位寄存器消耗的周期數(shù),將其寫入片內(nèi)ram,并將觀測到的數(shù)據(jù)通過計算得平均每幀消耗的周期數(shù)。實驗結(jié)果如下表所示: 

表1 實驗數(shù)據(jù)對比  

    由對比數(shù)據(jù)可得以下結(jié)論:  

    1、典型移位寄存器的工作頻率大于位數(shù)可選、自動加載移位寄存器的頻率。但由于此移位寄存器只是更大電路中的一個小模塊,由實際結(jié)果可知電路整體的工作頻率并不取決于此模塊的工作頻率,所以在整體電路中對單獨模塊的頻率進(jìn)行比較并不能得出速度的優(yōu)劣。  

    2、由查找表數(shù)和寄存器數(shù)的比較可得:典型移位寄存器消耗的資源遠(yuǎn)小于位數(shù)可選、自動加載移位寄存器,即典型移位寄存器在面積上占有較大優(yōu)勢。  

    3、由平均每幀消耗周期數(shù)的比較可得:兩者工作在相同的時鐘頻率下時,位數(shù)可選、自動加載移位寄存器消耗的時間約為典型移位寄存器的28%,單位時間內(nèi)傳輸?shù)臄?shù)據(jù)量提高到典型移位寄存器的356%,所以位數(shù)可選、自動加載移位寄存器在速度上占有較大優(yōu)勢。  

    綜上,為完成AAC音頻解碼的實時性要求,本設(shè)計進(jìn)行了速度和面積上的折中處理,相對于典型移位寄存器本設(shè)計以犧牲面積為代價換取了速度上的優(yōu)勢,使之在規(guī)定時間內(nèi)完成解碼。

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。