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