基于SoPC的嵌入式語音處理系統的設計與實現
AIC23芯片與EP2C35系列FPGA的連接電路如圖4所示。通過I2C控制接口配置AIC23的11個寄存器;通過I2S總線讀寫音頻數據,讀寫音頻數據使用DMA方式。
系統的音頻信號采集原理:麥克風輸入的模擬音頻信號通過AIC23內部的A/D轉換器轉換為數字音頻信號,通過I2S總線傳輸給輸入FIFO緩存區。當輸入FIFO緩存區存儲的數據達到設定值時,向DMA控制器請求DMA傳送,DMA控制器接受請求后就完成FIFO到SDRAM之間的數據傳送。當回放錄音數據時:通過SDRAM控制器將SDRAM中保存的音頻數據經輸出FIFO緩存區送到I2S總線,再由AIC23進行D/A轉換,將數字音頻信號還原成為模擬音頻信號通過耳機播放。
3 系統軟件設計
該語音處理系統軟件設計是在Linux操作系統中完成的。
3.1 μClinux操作系統移植
μClinux是針對控制領域的嵌入式Linux操作系統,適合如NiosⅡ處理器等不具備內存管理單元(MMU)的微處理器/微控制器。基于操作系統進行的軟件開發,需將操作系統移植到硬件平臺,μClinux可以以部件的形式集成到SoPC系統中,也可以在用虛擬機運行的Linux下進行μClinux的交叉編譯,此設計中使用后一種方法。
(1)建立編譯環境。安裝虛擬機、redhat9、NiosⅡ的交叉編譯工具鏈(ToolChain)nios2gcc.tar.bz2及nios2libs.tar.bz2,μClinux的代碼包μClinux―dist一20070130.tar.gz及一個針對NiosⅡ處理器的補丁包μC1inux―dist一20070130―nios2―02.diff.gz。
(2)內核的配置與編譯,按如下順序進行:
(3)啟動μClinux系統。將zlmage傳回Win―dows,下載.sof配置文件后再下載zImage,通過nios2一terminal啟動μClinux系統。連接串口,通過串口調試器即可看到系統的啟動信息。
3.2 語音處理的軟件設計
移植完Linux操作系統后,需要添加設計中使用到的編解碼芯片的驅動程序,系統會根據SoPC Builder生成的.ptf文件將外圍器件的引腳及中斷信息生成Nios_system.h文件,提供給各外圍器件的驅動程序。本設計中需要添加AIC23和I2C控制器的驅動程序。
系統的語音處理程序流程圖如圖5所示,軟件設計實現語音的采集和回放,系統的軟件設計采用C語言和NiosⅡ匯編語言混合編寫。為使AIC23正常工作并產生預期效果,必須對其相應的寄存器進行配置。這里只列出對AIC23芯片初始化設置時的部分代碼,AIC23是通過I2C總線進行初始化配置的。
AIC23初始化的部分源代碼:
4 結 語
該設計在CycloneⅡFPGA開發平臺上配置硬件系統,在Linux操作系統在進行軟件設計,從而實現了對語音的采集與回放等基本音頻處理功能。SoPC系統的可裁減性以及嵌入式系統的可移植性等優點,使設計可以作為一個子系統應用在更大型的系統設計中,例如把G723.1的編解碼算法移植到該系統中,則完全可以把該模塊嵌入到網絡會議的可視電話中作為語音處理模塊,因而有很好的應用前景和科研價值。
評論