AAC音頻解碼中位數可選且自動(dòng)加載移位寄存器設計
之所以選擇64位的移位寄存器,是因為若選擇一倍于存儲器寬度的移位寄存器長(cháng)度(32位),移位后剩余的有效數據的位數可能不夠下一次的移位長(cháng)度,為滿(mǎn)足移位長(cháng)度的要求,需要在加載后再次移位,因此移位最多要花費三個(gè)時(shí)鐘周期的時(shí)間;若選擇三倍于存儲器寬度的移位寄存器的長(cháng)度或更長(cháng)(>=96位)時(shí),當設定加載數據的標志為有效數據不大于32時(shí),需要加載兩次數據,當設定加載數據的標志為有效數據不大于64時(shí),此時(shí)移位寄存器中的有效數據相對于需要移位的最長(cháng)數據偏長(cháng)且沒(méi)有必要。所以,將移位寄存器的長(cháng)度選擇為2倍于存儲器的寬度(64位)在時(shí)間和空間上都達到了最優(yōu)。
初始化過(guò)程:初始化狀態(tài)機產(chǎn)生的輸出信號init_0和init_1為兩次加載的控制信號,這兩個(gè)信號控制移位寄存器在初始化的兩個(gè)時(shí)鐘周期內,從存儲器中取出數據并將其分別加載到高32位和低32位。
移位過(guò)程:當取數信號發(fā)出取數要求時(shí),輸入的取數位數作為多路選擇器的數據選擇端,當前移位寄存器的值和0作為多路選擇器的數據端,通過(guò)數據選擇決定移位寄存器下個(gè)周期從高位到低位的值。
加載過(guò)程:當加載信號發(fā)出時(shí),剩余有效數據作為多路選擇器的數據選擇端,當前移位寄存器的值、FIFO輸出的值和0作為多路選擇器的數據端,通過(guò)數據選擇決定移位寄存器下個(gè)周期從高位到低位的值。
移位和加載同時(shí)發(fā)生的過(guò)程:當移位和加載信號同時(shí)產(chǎn)生時(shí),移位寄存器中剩余的有效數據的位數和輸入的取數位數共同作為多路選擇器的數據選擇端,當前移位寄存器的值、FIFO輸出的值和0作為多路選擇器的數據端,通過(guò)數據選擇決定移位寄存器下個(gè)周期從高位到低位的值。
4、實(shí)驗結果
為完成解碼實(shí)時(shí)性的要求,本設計對典型的移位寄存器在速度上進(jìn)行改進(jìn),但控制邏輯變得復雜,從而消耗了更多資源。因此,我們選擇速度、面積作為性能指標對兩種設計進(jìn)行比較。在基于FPGA的硬件設計中,面積指標通常用查找表數和寄存器數來(lái)表示,速度指標我們選擇最大時(shí)鐘頻率及解碼時(shí)平均每幀消耗的周期數來(lái)表示。
我們采用altera公司FPGA開(kāi)發(fā)工具QuartusII分別對兩塊電路進(jìn)行綜合和時(shí)序分析,從綜合報告中獲得查找表和寄存器的數目,從時(shí)序報告中獲得最大時(shí)鐘頻率。并將兩個(gè)設計分別同AAC音頻解碼電路一起整體下載到stratix II EP2S180 的FPGA開(kāi)發(fā)板,以AAC音頻壓縮文件中隨機抽取的10幀數據為測試矢量,使用一計數器記錄下移位寄存器消耗的周期數,將其寫(xiě)入片內ram,并將觀(guān)測到的數據通過(guò)計算得平均每幀消耗的周期數。實(shí)驗結果如下表所示:
表1 實(shí)驗數據對比
由對比數據可得以下結論:
1、典型移位寄存器的工作頻率大于位數可選、自動(dòng)加載移位寄存器的頻率。但由于此移位寄存器只是更大電路中的一個(gè)小模塊,由實(shí)際結果可知電路整體的工作頻率并不取決于此模塊的工作頻率,所以在整體電路中對單獨模塊的頻率進(jìn)行比較并不能得出速度的優(yōu)劣。
2、由查找表數和寄存器數的比較可得:典型移位寄存器消耗的資源遠小于位數可選、自動(dòng)加載移位寄存器,即典型移位寄存器在面積上占有較大優(yōu)勢。
3、由平均每幀消耗周期數的比較可得:兩者工作在相同的時(shí)鐘頻率下時(shí),位數可選、自動(dòng)加載移位寄存器消耗的時(shí)間約為典型移位寄存器的28%,單位時(shí)間內傳輸的數據量提高到典型移位寄存器的356%,所以位數可選、自動(dòng)加載移位寄存器在速度上占有較大優(yōu)勢。
綜上,為完成AAC音頻解碼的實(shí)時(shí)性要求,本設計進(jìn)行了速度和面積上的折中處理,相對于典型移位寄存器本設計以犧牲面積為代價(jià)換取了速度上的優(yōu)勢,使之在規定時(shí)間內完成解碼。
評論