摘要:實現了一種基于DSP的通用語音編譯碼器實驗平臺。在該平臺上通過軟件重構可以實現常用語音信號的編譯碼。詳細介紹了應用DSP實現通用語音編譯碼中的關鍵技術,包括硬件平臺設計、軟件結構和接口擴展等。由于硬件和軟件采用模塊和結構化設計,通過開放的模塊接口和子程序使得該設計具有擴展和升級容易、學生參與度高等優(yōu)點。最后通過實際測試驗證了設計的正確性。
關鍵詞:語音信號處理;DSP;編碼器;解碼器;實驗系統
0 引言
語音信號處理在通信系統中占有重要地位,也是通信工程專業(yè)的重要課程。由于課程內容比較抽象,如果只是停留在理論教學,會使學生不易理解并且感到枯燥乏味,同時也不容易體現它的實現原理以及在實際通信系統的位置和作用。語音編譯碼器的實現主要有三種方法:專用芯片、基于DSP和混合方法。其中,DSP5000系列以其內含硬件乘法器、硬件加法器和FFT運算器特別適合用于語音信號處理。文獻提出一種基于DSP的多制式語音編解碼器,文獻給出一種可變速率的通用語音編解碼實現技術,但都不適合實驗教學。本文在文獻的基礎上,結合實驗教學特點設計一種語音編譯碼器實驗平臺,其設計思想是采用通用的DSP,CPLD,控制器和PC機將語音信號處理過程在硬件、軟件、接口和PC機管理幾個方面實現模塊化和開放接口設計。通過PC機或控制器,可以設置編碼方式、調用不同的子程序實現不同的編碼算法,同時也設置了計算機數據接口來實現編解碼器的通用性,方便直觀地了解語音信號的處理過程,易于不同層次、不同目的的學生參與,具有方便實現設計性、系統性、綜合性和創(chuàng)新性實驗等優(yōu)點。該平臺可以實現G.711,G.721,G.729和△M四種符合國際標準的編解碼。為了觀察信號的處理過程,在硬件電路的關鍵點都設置有測試點;其次,在軟件設計上也盡量將程序分解成子程序由主程序調用,如初始化子程序、命令解
析子程序、信號采集與輸出子程序、編譯碼子程序、數據接收與發(fā)送子程序等。每個子程序的人口都有相應的函數名、要傳遞的參數和返回的結果,這樣便于學生參與各個算法子程序的設計。文中給出了詳細的硬件電路設計和軟件流程圖,最后對實驗平臺進行了測試,結果正確且工作穩(wěn)定可靠。
1 系統結構與硬件電路設計
在硬件設計上根據功能分了6個模塊,包括濾波器與放大模塊、A/D與D/A轉換器模塊、DSP處理器模塊、FPGA與數據接口模塊、MCU控制器與PC機接口模塊、鍵盤/顯示器模塊。為了防止干擾和方便學生觀察信號,各模塊之間的控制線通過通用底板相連,而信號通過各個模塊的信號線相連。系統結構如圖1所示。
圖1中,抗混疊濾波器采用二階有源低通濾波器;音頻接口芯片選擇TI公司性價比較高的A/D轉換芯片TLV320AIC23,它可以在8~96 kHz的采樣頻率范圍內提供16 b,20 b,24 b和32 b的采樣數據,其DSP Mode是TI公司特有的與DSP連接模式,使音頻接口設計非常簡單,如對于PCM編碼則根據AIC23的數據手冊只需在其時鐘輸入端MCLK引腳外接一個12.288 MHz的有源晶振,配置AIC23的采樣率控制寄存器的SR3~SR0= 0011,即可得到AIC23的A/D和D/A的采樣率為8 kHz;DSP選擇TI公司的TMS320VC5416,它采用增強的多總線和優(yōu)化的CPU設計結構,內含三個多通道緩沖串口McBSP和8/16 b的增強型HPI口,不但可以滿足語音編譯碼算法處理的需求,也方便實現主機訪問;SRAM和FLASH分別采用常用的芯片CY7C1041CV33和SST39VF400(兩者存儲空間均為256K×16 b),外擴存儲器的控制時序通過CPLD(EPM3128ATC100)實現;控制器采用AT89C52,它通過DSP的HPI口與DSP相連,其優(yōu)點是可以通過DSP內部的雙口RAM訪問DSP內部的各種資源,而不會影響DSP的運行。同時,控制器擴展了鍵盤/顯示和RS 232接口(預留了USB接口),不但方便用戶使用,也實現了上位機軟件與編譯碼器的通信。
系統工作原理如下:首先來自用戶的語音信號先經過抗混疊濾波器模塊完成信號的濾波和放大,然后送A/D、D/A模塊將模擬語音信號轉換成相應標準速率(如8 kHz)和采樣精度(如16 b)的數字信號,數字化的語音信號通過多通道緩沖串口McBSP0送給DSP信號處理板,信號處理板將語音數據信號送到DSP內部緩沖區(qū),在緩沖區(qū)內按用戶選擇的方法調用編碼算法編成特定碼率的碼流,再將得到的標準數字碼流送數據接口模塊輸出;另一方面,來自數據接口的碼流送數據處理模塊,數據處理模塊由其多通道緩沖串口McBSP2接收至DSP的內部接收緩沖區(qū),然后由DSP對其進行解碼處理,解碼后的數字化語音通過多通道緩沖串口McBSP0傳送給D/A轉換器模塊轉換成模擬語音信號后送信號濾波和放大模塊,從而實現語音信號的采集、編碼、發(fā)送和接收、解碼等功能。
[!--empirenews.page--]
2 軟件設計
軟件設計包括DSP程序、控制器程序、CPLD程序和上位機程序四部分。DSP程序根據命令完成語音信號和計算機數據的處理等;控制器程序完成本地對編譯碼器的管理,并負責DSP與PC之間的通信;CPLD程序除完成系統需要的組合、時序工作外,還要提供與調制/解調器的數據接口;上位機程序完成對語音編譯碼器的管理。下面介紹部分程序的設計原理。
2.1 DSP程序設計
DSP程序主要包括主程序、命令解析子程序、模擬信號采集與輸出子程序、編譯碼子程序、數據信號接收與發(fā)送子程序等。DSP完成G.711規(guī)范的A-Law編譯碼程序流程圖如圖2所示。
在DSP響應控制器程序中設置一個控制標志位CON_SEL,并分配在DSP數據空間內的0x1fffH地址,控制器根據用戶從鍵盤輸入的命令(或來自PC機的命令)向此地址寫入相應的控制標志,DSP的底層程序響應該控制標志位完成相應的工作(MIC語音處理、線路語音處理和數據通信)。DSP響應控制器程序流程圖如圖3所示。從流程圖中可以看到,對于語音處理,程序先打開中斷。當A/D采集完語音數據后,即進入中斷服務程序,在中斷服務程序中關閉全局中斷,并設置數據是否滿的標志位為有效狀態(tài)。主程序查詢該標志位,如果有效則調語音處理子程序進行處理,處理完調用通信程序輸出;而對于數據通信的處理過程是,DSP首先在內部開辟一個數據緩沖區(qū),并打開HPI中斷和全局中斷,然后DSP主程序進入數據處理程序,這時接收來自單片機(或PC機)的數據通過數據口傳輸出去,傳送完后可通過HINT去中斷控制器,通知主機傳送下一個數據。
[!--empirenews.page--]
2.2 控制器程序設計
控制器工作有兩個狀態(tài),即本地控制工作狀態(tài)和通信傳輸工作狀態(tài)。本地控制狀態(tài)就是實現對編譯碼器的控制與管理,而通信工作狀態(tài)僅僅完成DSP與PC機之間的信息傳輸,這里只說明DSP、控制器和PC機之間的程序設計。由于DSP的HINT引腳和單片機的INT0引腳相連接,HINT中斷有效觸發(fā)的是單片機的INT0中斷,所以PC機的上位機軟件要響應DSP的中斷只能在控制器與PC機的控制協議中完成,DSP在發(fā)送完成一個數據后無法采用中斷的方式告訴上位機。為解決這個問題,上位機采用查詢的方式,即在控制器中設置一個標志位send_end,初始化為0,當DSP發(fā)送完一個字節(jié)數據后置該標志位為1,上位機每發(fā)送完一個數據,通過控制器觸發(fā)一次DSPINT中斷,并讀回send_end的值判斷,若為1則傳送下一個字節(jié),否則等待控制器將當前數據發(fā)送完成。
2.3 上位機軟件設計
上位機軟件采用學生容易掌握的VB語言實現,其主界面如圖4所示。
主界面主要完成系統初始化,并顯示系統需要檢測和控制的內容。初始化正常后,上位機程序即可通過控制器向DSP的指令地址發(fā)送控制命令,DSP查詢此地址的命令字,并根據命令字進入相應的服務程序(MIC語音、線路語音或數據通信。DSP在初始化中默認的是MIC語音處理),如果要進行線路語音處理則在控制界面上選擇“線路輸入語音”控制命令,這時控制子界面將用戶選擇的命令通過控制器送DSP,DSP查詢到并判斷是線路輸入語音命令后即執(zhí)行線路輸入語音子程序,這時如果將數據輸出端口與數據輸入端口、對應的同步信號連接好的話,從耳機可聽到經過語音編碼和譯碼后的電腦播放的音樂,從聽到的音樂比較編譯碼后的語音質量。如果在命令控制界面選擇“計算機數據通信”控制命令,即可進行計算機數據通信實驗。
3 實際測試
3.1 語音信號編譯碼測試
首先將PC機的線路輸出用信號線連接到編譯碼器的LINE輸入,啟動編譯碼實驗系統,然后由PC機播放MP3音樂,測試得到的8 kHz幀同步和64 kHz位同步時鐘的波形如圖5所示。
圖6是在64 kHz位同步時鐘情況下編碼后的音樂數據波形,在譯碼器輸出端用耳機可以聽到MOS分在4 dB以上的音樂。[!--empirenews.page--]
3.2 數據傳輸測試
首先在上位機軟件的控制界面中選擇計算機數據通信命令,在彈出的數據通信對話框中輸入測試數據1234,如圖7所示。
DSP結束當前語音通信過程后即進入數據通信子程序,這時可以從主界面的編輯對話框中輸入要傳輸的數據(也可以選擇PC機中的文件),點擊“確認”按鈕,編譯碼實驗系統即可完成數據通信,圖8給出以64 Kb/s的速率傳輸的數據,同時PC機從DSP端讀回所發(fā)送的數據,可以看到數據完全正確。
對于傳輸文件,先選擇*.txt數據文件,然后點擊“確認”,則*.txt文件中的數據將通過控制器發(fā)送到DSP中指定的發(fā)送緩沖區(qū)中,DSP將發(fā)送緩沖區(qū)中的數據以64 Kb/s的速率從數字接口McBSP2發(fā)送出去。如果將數據接口的發(fā)送和接收端用測試線連接起來,則DSP接收回到接收緩沖區(qū)中,軟件從其接收緩沖區(qū)中讀回數據,圖9是寫入DSP發(fā)送緩沖區(qū)的數據,在CCS中觀察與所發(fā)送的數據完全一致。
4 結語
本文設計并實現了一種基于DSP的通用語音編譯碼器實驗平臺。該平臺硬件采用模塊化設計,軟件采用結構化設計,非常方便學生從不同層面參與實驗,也非常適合以團隊的方式完成實驗項目,將比較復雜、內容比較多的實驗項目分解成易于實現的小模塊,同時模塊和結構化的設計思想非常容易實現硬件和軟件的擴展和升級,可以從硬件和軟件等多方面培養(yǎng)學生的設計、綜合以及創(chuàng)新等能力。從仿真和測試結果可以看到設計的正確性。