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