基于FPGA的32Kbit/s CVSD語音編解碼器的實現
1 CVSD原理
增量調制(Delta Modulation,DM)用一位編碼表示相鄰樣值的相對大小,從而反映出抽樣時刻波形的變化趨勢,它分為線性增量調制(Linear Delta Modulation,LDM)和自適應增量調制(Adaptive Delta Modulation,ADM)。LDM中采用固定的量化臺階△,在量化編碼的過程中會引起兩類失真,一類是斜率過載失真,它是由于量化臺階△過小,跟不上信號波形中斜率陡峭部分造成的,另一類是顆粒失真,它是由于量化臺階△過大,在信號波形斜率較小部分造成的。CVSD是一種自適應增量ADM算法,動態調整量化臺階△的大小隨輸入信號變化,當輸入信號幅度變化率增大時,量化臺階相應增大,當輸入信號幅度變化率減小時,量化臺階相應減小。
2 CVSD編解碼算法
2.1 編碼算法
編碼算法流程如圖1所示,x(n)為輸入語音采樣信號,采樣頻率fs=32 kHz,xp(n)為一階預測值,d(n)為輸入采樣信號x(n)和一階預測值xp(n)的差值,β為量階衰減因子,△0為初始量階。模塊L實現電平轉換,輸入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)是階梯波,有較高的諧波分量,這里通過一個數字低通濾波器平滑積分器的輸出。當c(n)=1時,xQD(n)=xQD(n-1)+△(n);當c(n)=0時,xQD(n)=xQD(n-1)-△(n)。其中量階△(n)的取值同編碼算法。

3 FPGA的設計和實現
3.1 參數設計
CVSD編譯碼算法中涉及到量階衰減因子β、初始量階△0和低通濾波器系數的設計。量階衰減因子滿足:β=1-T/τ,T表示語音信號的周期,語音信號頻率f=300~3 400 Hz,所以周期T=0.29~3.30 ms,τ為音節時間常數,一般情況下τ=5~10ms。△0的選取很重要,如果△0選取過小,會導致初始的一段時間量化的數字信號與輸入信號之間存在較大的失真,需要經過較長的時間才能跟蹤上輸入信號,為減少顆粒失真和過載失真,根據歐洲通信組織標準,結合多次的MATLAB仿真測試,取β=0.855,△0=0.043,如圖3所示。

升余弦窗具有較好的旁瓣抑制和阻帶衰減,數字低通濾波器設計成14階升余弦窗有限脈沖響應(Finite Impulse Response,FIR)濾波器,其參數采樣率fs=32 kHz由于語音信號頻譜集中在300~3 400 Hz,數字低通濾波器通帶截止頻率設計為fc=4 kHz/32 kHz=0.125,FIR濾波器系數向量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所示,由于信號經過14階FIR低通濾波器,輸出信號與原采樣信號相比存在一定的延時,經低通濾波后原信號得到了較好的恢復。

3.2 CVSD編解碼器
硬件設計時采用自頂向下的設計方法,將編解碼器分成各種功能模塊。CVSD編碼器負責處理采樣頻率32 kHz采樣的16 bit語音信號,由比較判決模塊、三連碼檢測模塊、量階調整模塊和預測值產生模塊組成,硬件結構如圖5所示。比較判決模塊將預測值產生模塊產生的預測值與語音信號值進行比較,如果輸入語音信號值≥預測值,則編碼輸出“1”,否則編碼輸出“0”。編碼輸入三連碼檢測模塊進行三連電平的判決,通過量階調整模塊和預測值產生模塊產生動態的量階和預測值。其中預測值產生模塊需要注意防止數據溢出。

CVSD解碼器負責處理32 kHz的單比特符號,根據圖2,編碼過程中預測值的產生模塊就已經實現了譯碼過程,后面數字低通FIR濾波器采用分布式算法(Distributed Arithmetic,DA)進行設計,極大地提高了乘累加運算的效能且節省了FPGA的硬件資源。解碼器還需要設計一個時鐘產生模塊,因為采用分布式算法的14階的低通濾波器的時鐘頻率是數據時鐘的16倍。
4 仿真測試
采用Quartus Ⅱ6.0進行開發仿真,verilog語言編程。為了便于軟件仿真,設計了DDS信號源,CVSD編碼器的輸入由正弦信號源DDS模塊提供。仿真結果如圖6所示。

最后在Altera DE2開發板上進行了硬件測試,芯片為Cyclone II EP2C35,編解碼器硬件資源消耗見表1。A/D輸入模擬的語音信號,采樣頻率32 kHz,采樣信號經編碼器、解碼器、低通濾波再通過D/A轉換輸出解碼的語音信號,如圖7所示。測試結果表明輸出語音信號理想,說明設計是可行的。


5 結束語
CVSD是一種自適應增量脈沖編碼調制,對誤碼有很強的魯棒性,擅長處理丟失和被損壞的語音采樣,編碼器是單比特編碼,和PCM相比不需要復雜的成幀設備,并且解碼器中集成了數字低通濾波器,使得編解碼設備簡單,綜合這些優越性,CVSD特別適合應用于無線語音通信系統,具有很廣闊的應用前景。
評論