MPEG聲音編碼的單片DSP實(shí)現(xiàn)
然而ADSP-2181并不適于實(shí)現(xiàn)數(shù)據(jù)的移動(dòng),每個(gè)賦值運(yùn)算需要兩個(gè)指令才能完成,每次分析濾波操作需要1024個(gè)指令周期.如果利用ADSP-2181的多通道自動(dòng)緩沖串口及間接尋址能力,適當(dāng)?shù)亟M織輸入聲音數(shù)據(jù),就可利用滑動(dòng)窗的方法實(shí)現(xiàn)數(shù)據(jù)的移入和移出,如圖2所示.
圖2 多相濾波的滑動(dòng)窗技術(shù)
為了保證幀邊界處理的連續(xù)性,輸入數(shù)據(jù)緩存應(yīng)該設(shè)計(jì)成圓緩沖的形式,其長(zhǎng)度應(yīng)能存儲(chǔ)兩幀聲音輸入數(shù)據(jù).當(dāng)DSP在處理一幀數(shù)據(jù)時(shí),輸入數(shù)據(jù)可以緩沖到另一幀.這樣,數(shù)據(jù)移動(dòng)的開(kāi)銷就節(jié)約了.同時(shí),輸入數(shù)據(jù)的組織還要利于聲學(xué)模型的FFT運(yùn)算,F(xiàn)FT需要利用ADSP-2181的地址反轉(zhuǎn)尋址模式.由于FFT計(jì)算和輸入數(shù)據(jù)的緩存是同時(shí)進(jìn)行的,所以FFT計(jì)算的指針需要地址反轉(zhuǎn),而輸入緩沖的指針卻不能地址反轉(zhuǎn),否則會(huì)導(dǎo)致輸入聲音數(shù)據(jù)排列混亂.ADSP-2181提供這種能力,它的第一地址指針組I0,I1,I2,I3有地址反轉(zhuǎn)能力,而第二地址指針組I4,I5,I6,I7卻不受地址反轉(zhuǎn)模式的影響.所以從第二地址指針組中選擇指針進(jìn)行輸入緩沖,從第一地址指針組中選擇指針進(jìn)行FFT計(jì)算.
(3)聲學(xué)模型的改進(jìn) 用DSP實(shí)現(xiàn)心理聲學(xué)模型的一個(gè)難題是其中有大量的對(duì)數(shù)運(yùn)算,雖然可以用多項(xiàng)式逼近求得其近似值,但是其巨大的運(yùn)算量說(shuō)明這不是一個(gè)明智的選擇.在改進(jìn)的心理聲學(xué)模型中,F(xiàn)FT運(yùn)算后并不立即換算到對(duì)數(shù)域,而是用分段折線逼近線性域的掩蔽效應(yīng)曲線.為簡(jiǎn)單起見(jiàn),使用與標(biāo)準(zhǔn)一致的分段方法.逼近采用取指數(shù)的多項(xiàng)式展開(kāi)的一次項(xiàng)的方法,這種方法雖然比較粗糙,但正如前面分析的那樣,聲學(xué)模型在16bit定點(diǎn)實(shí)現(xiàn)時(shí)不是主要矛盾,因而還是可以接受的.
得到掩蔽門限以后,為計(jì)算信掩比供比特分配使用,還是需要從線性域轉(zhuǎn)換到對(duì)數(shù)域.這時(shí),我們采用一種利用ADSP-2181移位器的近似計(jì)算方法.通過(guò)EXP指令,可以提取2進(jìn)制補(bǔ)碼小數(shù)的指數(shù),對(duì)能量而言又有1bit約3dB.因而指數(shù)值乘3就近似得到該補(bǔ)碼小數(shù)的dB值,尾數(shù)部分的影響忽略不計(jì).
(4)比例因子的編碼 MPEG聲音編碼標(biāo)準(zhǔn)中一共給出了63個(gè)比例因子,但是并不是所有這些比例因子都可以用16bit的2進(jìn)制數(shù)表示.如果用雙字進(jìn)行精度擴(kuò)展,在量化時(shí)又將面臨雙字除法的巨大開(kāi)銷,因此,只使用其中可以用16bit的2進(jìn)制補(bǔ)碼小數(shù)精確表示的子集,即序號(hào)為3的倍數(shù)且小于等于45的比例因子.
采用比例因子子集后,比例因子編碼就可以不再通過(guò)比較的方法得到,而可以直接通過(guò)計(jì)算子帶最大幅度的指數(shù)獲得,簡(jiǎn)化了比例因子的編碼.
(5)軟件仿真結(jié)果 結(jié)合上述各項(xiàng)算法改進(jìn),根據(jù)ADSP-2181的特點(diǎn)和MPEG標(biāo)準(zhǔn),用AD公司的開(kāi)發(fā)軟件進(jìn)行了軟件仿真.表1列出了仿真得到的各個(gè)模塊對(duì)運(yùn)算量和存儲(chǔ)量要求進(jìn)行的估算結(jié)果.仿真在抽樣率為48kHz,編碼模式為立體聲,輸入信號(hào)為頻率為1kHz的正弦波,輸出碼率為 192kbit/s的情況下進(jìn)行. 由表1可知,ADSP-2181的性能得到了較充分的利用.仿真結(jié)果表明,在以上的條件下,解碼輸出的信噪比可達(dá)80dB左右.可見(jiàn),所作的算法改進(jìn)是比較有效的.
表1 各模塊的運(yùn)算量和存儲(chǔ)量要求
運(yùn)算量/(106指令/s) 程序存儲(chǔ)量/103字?jǐn)?shù)據(jù)存儲(chǔ)量/103字 子帶濾波 18 3.0 6.5 聲學(xué)模型 103.5 1.5 比特分配和量化 2 2.0 — 格式化比特流 1 0.5 1.0
4 硬件設(shè)計(jì)
硬件結(jié)構(gòu)框圖如圖3所示.各模塊的基本功能如下:
DSP核:除完成所有編碼算法以外,還要完成對(duì)模數(shù)轉(zhuǎn)換電路的初始化配置;通過(guò)輔助控制電路選擇抽樣時(shí)鐘,通過(guò)接口電路接受主機(jī)的編碼參數(shù).
輔助控制電路:由FPGA及附屬電路實(shí)現(xiàn),完成時(shí)鐘的產(chǎn)生、FIFO狀態(tài)的監(jiān)測(cè)、地址譯碼等功能.
輸出緩沖:編碼碼流的暫時(shí)存儲(chǔ)區(qū),同時(shí)提供完全異步的輸出接口方式.在需要實(shí)現(xiàn)圖象聲音唇形同步的應(yīng)用中特別有用.
外部存儲(chǔ)器:包括BDMA空間、I/O空間.
模數(shù)轉(zhuǎn)換電路:完成聲音的數(shù)字化,直接與DSP的串口0連接.抽樣頻率由外部提供的256倍抽樣時(shí)鐘的頻率決定,正常工作前需要進(jìn)行初始化.
接口電路:接口電路分為兩部分,一部分是編碼輸出接口,另一部分是與主機(jī)連接的接口.主機(jī)接口使用RS232接口芯片完成DSP串口1與主機(jī)串口的連接,DSP使用中斷和內(nèi)部計(jì)時(shí)器實(shí)現(xiàn)異步串型通信.
上述方案已經(jīng)在“九五”科技攻關(guān)項(xiàng)目中實(shí)現(xiàn),實(shí)時(shí)編解碼的聲音通過(guò)了主觀測(cè)試.
評(píng)論