基于FPGA的32 Kbit/s CVSD語音編解碼器的實(shí)現(xiàn)
64 Kbit/s的A律或μ律的對數(shù)壓擴(kuò)PCM編碼在大容量的光纖通信系統(tǒng)和數(shù)字微波系統(tǒng)中已得到廣泛應(yīng)用,但由于占用較大的傳輸帶寬和具有復(fù)雜的成幀結(jié)構(gòu),PCM編碼不適合無線語音系統(tǒng)的應(yīng)用。連續(xù)可變斜率增量(Continuously Variable Slope Delta,CVSD)調(diào)制以其較低的應(yīng)用難度、成本和編碼速率,較好的語音質(zhì)量廣泛應(yīng)用于戰(zhàn)術(shù)通信網(wǎng)、衛(wèi)星通信、藍(lán)牙等無線語音傳輸領(lǐng)域。近年來FPGA不斷發(fā)展演化,并在構(gòu)架方面針對DSP應(yīng)用有了顯著增強(qiáng)。這些增強(qiáng)使得FPGA能夠支持各領(lǐng)域的眾多復(fù)雜DSP應(yīng)用,如電信(基站信號處理、雷達(dá)信號處理等)、多媒體處理(視頻處理、音頻信號處理等)及其他應(yīng)用領(lǐng)域,筆者結(jié)合FPCA的靈活性、強(qiáng)大的數(shù)字信號處理能力、較短的開發(fā)周期,提出了基于FPGA的32 Kbit/s CVSD語音編解碼器。
1 CVSD原理
增量調(diào)制(Delta Modulation,DM)用一位編碼表示相鄰樣值的相對大小,從而反映出抽樣時刻波形的變化趨勢,它分為線性增量調(diào)制(Linear Delta Modulation,LDM)和自適應(yīng)增量調(diào)制(Adaptive Delta Modulation,ADM)。LDM中采用固定的量化臺階△,在量化編碼的過程中會引起兩類失真,一類是斜率過載失真,它是由于量化臺階△過小,跟不上信號波形中斜率陡峭部分造成的,另一類是顆粒失真,它是由于量化臺階△過大,在信號波形斜率較小部分造成的。CVSD是一種自適應(yīng)增量ADM算法,動態(tài)調(diào)整量化臺階△的大小隨輸入信號變化,當(dāng)輸入信號幅度變化率增大時,量化臺階相應(yīng)增大,當(dāng)輸入信號幅度變化率減小時,量化臺階相應(yīng)減小。
2 CVSD編解碼算法
2.1 編碼算法
編碼算法流程如圖1所示,x(n)為輸入語音采樣信號,采樣頻率fs=32 kHz,xp(n)為一階預(yù)測值,d(n)為輸入采樣信號x(n)和一階預(yù)測值xp(n)的差值,β為量階衰減因子,△0為初始量階。模塊L實(shí)現(xiàn)電平轉(zhuǎn)換,輸入c(n)=1時輸出為+1,輸入c(n)=0時輸出為-1,因此模塊L的輸出值為2c(n)-1。
當(dāng)x(n)≥xp(n)時,d(n)≥0,編碼輸出c(n)=1,當(dāng)x(n)
2.2 譯碼算法 譯碼算法流程如圖2所示,它是編碼的逆過程,由于積分器輸出的xQD(n)是階梯波,有較高的諧波分量,這里通過一個數(shù)字低通濾波器平滑積分器的輸出。當(dāng)c(n)=1時,xQD(n)=xQD(n-1)+△(n);當(dāng)c(n)=0時,xQD(n)=xQD(n-1)-△(n)。其中量階△(n)的取值同編碼算法。
3 FPGA的設(shè)計和實(shí)現(xiàn) 3.1 參數(shù)設(shè)計 CVSD編譯碼算法中涉及到量階衰減因子β、初始量階△0和低通濾波器系數(shù)的設(shè)計。量階衰減因子滿足:β=1-T/τ,T表示語音信號的周期,語音信號頻率f=300~3 400 Hz,所以周期T=0.29~3.30 ms,τ為音節(jié)時間常數(shù),一般情況下τ=5~10ms?!?的選取很重要,如果△0選取過小,會導(dǎo)致初始的一段時間量化的數(shù)字信號與輸入信號之間存在較大的失真,需要經(jīng)過較長的時間才能跟蹤上輸入信號,為減少顆粒失真和過載失真,根據(jù)歐洲通信組織標(biāo)準(zhǔn),結(jié)合多次的MATLAB仿真測試,取β=0.855,△0=0.043,如圖3所示。
升余弦窗具有較好的旁瓣抑制和阻帶衰減,數(shù)字低通濾波器設(shè)計成14階升余弦窗有限脈沖響應(yīng)(Finite Impulse Response,F(xiàn)IR)濾波器,其參數(shù)采樣率fs=32 kHz由于語音信號頻譜集中在300~3 400 Hz,數(shù)字低通濾波器通帶截止頻率設(shè)計為fc=4 kHz/32 kHz=0.125,F(xiàn)IR濾波器系數(shù)向量B=[0.0029 0.0086 0.02600.058 0 0.1000 0.1400 0.1645 0.1645 0.1400 0.1000 0.058 0 0.0260 0.008 6 0.002 9]。如圖4所示,由于信號經(jīng)過14階FIR低通濾波器,輸出信號與原采樣信號相比存在一定的延時,經(jīng)低通濾波后原信號得到了較好的恢復(fù)。
3.2 CVSD編解碼器 硬件設(shè)計時采用自頂向下的設(shè)計方法,將編解碼器分成各種功能模塊。CVSD編碼器負(fù)責(zé)處理采樣頻率32 kHz采樣的16 bit語音信號,由比較判決模塊、三連碼檢測模塊、量階調(diào)整模塊和預(yù)測值產(chǎn)生模塊組成,硬件結(jié)構(gòu)如圖5所示。比較判決模塊將預(yù)測值產(chǎn)生模塊產(chǎn)生的預(yù)測值與語音信號值進(jìn)行比較,如果輸入語音信號值≥預(yù)測值,則編碼輸出“1”,否則編碼輸出“0”。編碼輸入三連碼檢測模塊進(jìn)行三連電平的判決,通過量階調(diào)整模塊和預(yù)測值產(chǎn)生模塊產(chǎn)生動態(tài)的量階和預(yù)測值。其中預(yù)測值產(chǎn)生模塊需要注意防止數(shù)據(jù)溢出。
CVSD解碼器負(fù)責(zé)處理32 kHz的單比特符號,根據(jù)圖2,編碼過程中預(yù)測值的產(chǎn)生模塊就已經(jīng)實(shí)現(xiàn)了譯碼過程,后面數(shù)字低通FIR濾波器采用分布式算法(Distributed Arithmetic,DA)進(jìn)行設(shè)計,極大地提高了乘累加運(yùn)算的效能且節(jié)省了FPGA的硬件資源。解碼器還需要設(shè)計一個時鐘產(chǎn)生模塊,因?yàn)椴捎梅植际剿惴ǖ?4階的低通濾波器的時鐘頻率是數(shù)據(jù)時鐘的16倍。 4 仿真測試 采用Quartus Ⅱ6.0進(jìn)行開發(fā)仿真,verilog語言編程。為了便于軟件仿真,設(shè)計了DDS信號源,CVSD編碼器的輸入由正弦信號源DDS模塊提供。仿真結(jié)果如圖6所示。
最后在Altera DE2開發(fā)板上進(jìn)行了硬件測試,芯片為Cyclone II EP2C35,編解碼器硬件資源消耗見表1。A/D輸入模擬的語音信號,采樣頻率32 kHz,采樣信號經(jīng)編碼器、解碼器、低通濾波再通過D/A轉(zhuǎn)換輸出解碼的語音信號,如圖7所示。測試結(jié)果表明輸出語音信號理想,說明設(shè)計是可行的。
5 結(jié)束語 CVSD是一種自適應(yīng)增量脈沖編碼調(diào)制,對誤碼有很強(qiáng)的魯棒性,擅長處理丟失和被損壞的語音采樣,編碼器是單比特編碼,和PCM相比不需要復(fù)雜的成幀設(shè)備,并且解碼器中集成了數(shù)字低通濾波器,使得編解碼設(shè)備簡單,綜合這些優(yōu)越性,CVSD特別適合應(yīng)用于無線語音通信系統(tǒng),具有很廣闊的應(yīng)用前景。
評論