基于SoPC的嵌入式語(yǔ)音處理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
摘 要:介紹一種基于SoPC技術(shù)實(shí)現(xiàn)的語(yǔ)音處理系統(tǒng)的設(shè)計(jì)方法。系統(tǒng)主要由CyeloneⅡFPGA內(nèi)嵌NiosⅡ軟核處理器及音頻編/解碼芯片構(gòu)成;通過(guò)構(gòu)建嵌入式Linux操作系統(tǒng)來(lái)實(shí)現(xiàn)對(duì)音頻信號(hào)的采集和回放處理。詳細(xì)介紹通過(guò)SoPCBuilder配置NiosⅡ嵌入式處理器、外圍設(shè)備及接口的過(guò)程,以及嵌入式Linux操作系統(tǒng)在SoPC系統(tǒng)上的移植過(guò)程。利用SoPC系統(tǒng)的可裁減性以及嵌入式系統(tǒng)的可移植性,可使該設(shè)計(jì)作為一個(gè)子系統(tǒng)應(yīng)用在如網(wǎng)絡(luò)會(huì)議的視頻電話中,該方法對(duì)SoPC系統(tǒng)的開發(fā)研究具有較高的參考價(jià)值。
關(guān)鍵詞:片上系統(tǒng);嵌入式Linux;音頻編碼;音頻解碼;軟核處理器
0 引 言
可編程的片上系統(tǒng)(System on PrograromableChip,SoPC)是現(xiàn)代計(jì)算機(jī)輔助設(shè)計(jì)技術(shù)、EDA技術(shù)和大規(guī)模集成電路技術(shù)高度發(fā)展的產(chǎn)物。它可以將處理器、存儲(chǔ)器、I/O接口、硬件協(xié)處理器和普通的用戶邏輯等系統(tǒng)設(shè)計(jì)需要的功能模塊都集成到1片F(xiàn)PGA芯片內(nèi)部,實(shí)現(xiàn)MCU,DSP和FPGA的完美結(jié)合,這將是未來(lái)嵌入式系統(tǒng)的發(fā)展趨勢(shì),在儀器儀表、手持設(shè)備上有著廣闊的應(yīng)用前景。
在此利用SoPC技術(shù)設(shè)計(jì)了語(yǔ)音處理系統(tǒng),包括語(yǔ)音的采集和回放處理,該系統(tǒng)可以作為音視頻監(jiān)控系統(tǒng)、VoIP等系統(tǒng)的語(yǔ)音處理模塊。
1 系統(tǒng)構(gòu)成方案
1.1 系統(tǒng)硬件構(gòu)成
設(shè)計(jì)的嵌入式語(yǔ)音處理系統(tǒng)的硬件結(jié)構(gòu)如圖1所示。系統(tǒng)的主控部分由CycloneⅡEP2C35系列FPGA芯片、外圍電路及語(yǔ)音編解碼芯片構(gòu)成。EP2C35是Altera公司推出低成本FPGA芯片,該芯片具有33 216個(gè)邏輯單元(LE)、105個(gè)M4KB RAM塊、RAM總位數(shù)是483 840 b、4個(gè)鎖相環(huán)和35個(gè)嵌入式乘法器以及豐富外部擴(kuò)展引腳。
CycloneⅡ系列FPGA片內(nèi)結(jié)構(gòu)是以32 b NiosⅡ處理器作為核心,NiosⅡ處理器是AItera公司的第二代用戶可配置的、采用流水線技術(shù)、單指令流的32位RISC內(nèi)嵌處理器,基于通用FPGA架構(gòu)的軟CPU內(nèi)核,其性能超過(guò)200 DMIPS。NiosⅡ處理器內(nèi)核有3種類型,分別是快速型、經(jīng)濟(jì)型和標(biāo)準(zhǔn)型,用來(lái)滿足不同的設(shè)計(jì)要求。
音頻部分主要由語(yǔ)音編解碼芯片TLV320AIC23和外部輸入/輸出器件構(gòu)成;通過(guò)麥克風(fēng)采集模擬音頻信號(hào),經(jīng)過(guò)AIC23轉(zhuǎn)換為數(shù)字音頻信號(hào),由NiosⅡ處理器進(jìn)行語(yǔ)音的存儲(chǔ)及傳輸;NiosⅡ處理器輸出的數(shù)字音頻信號(hào)經(jīng)過(guò)AIC23轉(zhuǎn)換為模擬音頻信號(hào),通過(guò)耳機(jī)播放。系統(tǒng)內(nèi)部包括UART,以太網(wǎng)接口等可以方便地實(shí)現(xiàn)系統(tǒng)的擴(kuò)展,實(shí)現(xiàn)諸如IP電話的系統(tǒng)設(shè)計(jì)。
1.2 主控芯片F(xiàn)PGA的配置
主控芯片F(xiàn)PGA的配置是通過(guò)SoPC Builder在CycloneⅡFPGA開發(fā)平臺(tái)上實(shí)現(xiàn)的。根據(jù)需求,該系統(tǒng)主要配置如下:標(biāo)準(zhǔn)型NiosⅡ處理器、片上SDRAMMT46V16M16、以太網(wǎng)芯片LAN91C111,F(xiàn)LASH存儲(chǔ)器件AM29LVl28M,SSRAM器件CY7C1380C,UART,JTAG UART,PLL鎖相環(huán)、定時(shí)器Timer,DMA,I2C,AIC23等控制器核。其中以太網(wǎng)芯片、FLASH存儲(chǔ)器件、SSRAM器件通過(guò)Avalon三態(tài)總線橋與Avalon Switch Fabric連接,所有的外圍接口通過(guò)AvaIon Switch Fabric與NiosⅡ處理器連接。通過(guò)SoPC Builder添加的主要外圍接口如圖2所示。
系統(tǒng)添加外圍器件的控制核后,經(jīng)過(guò)SoPC Builder定義生成系統(tǒng),集成SoPC Builder系統(tǒng)到QuartusⅡ工程,進(jìn)行引腳分配,編譯硬件設(shè)計(jì),生成配置文件.sof和.ptf文件。SoPC Builder是一個(gè)自動(dòng)化的系統(tǒng)開發(fā)工具,能夠非常容易地在一個(gè)設(shè)計(jì)中加入NiosⅡ處理器以及其它外設(shè)接口。
2 系統(tǒng)接口設(shè)計(jì)
系統(tǒng)主要模塊在FPGA片內(nèi)生成,外部接口主要是TLV320AIC23與CycloneⅡEP2C35的硬件接口設(shè)計(jì)。
TLV320AIC23(AI(223)是TI公司的一款高性能的立體聲音頻編解碼器,設(shè)計(jì)中通過(guò)其自帶的A/D,D/A轉(zhuǎn)換器來(lái)完成模擬音頻信號(hào)的采樣和數(shù)字音頻信號(hào)的D/A轉(zhuǎn)換工作;AIC23中的模/數(shù)與數(shù)/模轉(zhuǎn)換器使用了多比特sigma—delta工藝,并在內(nèi)部集成了高采樣率的數(shù)字內(nèi)插濾波器。該器件的數(shù)字傳輸字長(zhǎng)可以是16,20,24,32 b,它支持8~96 kHz的采樣率。AIC23內(nèi)部有11個(gè)配置寄存器,可通過(guò)控制接口來(lái)配置該器件的寄存器,AIC23的控制接口有SPI,I2C兩種規(guī)格。模式終端狀態(tài)決定了控制接口的形式,在設(shè)計(jì)中MODE接數(shù)字地表示利用I2C控制接口對(duì)AIC23傳輸控制數(shù)據(jù)。I2C總線是Philips公司開發(fā)的一種雙向兩線多主機(jī)總線,它能方便地實(shí)現(xiàn)芯片間的數(shù)據(jù)傳輸與控制。CS接數(shù)字地定義了在I2C總線上A IC23的7 b外設(shè)地址為“0011010”。該系統(tǒng)的I2C接口使用GPIO一I2C,即用2根通用的I/O口作為I2C時(shí)鐘線SCL和數(shù)據(jù)傳輸線SDA,通過(guò)軟件實(shí)現(xiàn)I2C協(xié)議。
AIC23芯片與數(shù)字系統(tǒng)的接口有右判斷模式、左判斷模式、I2S模式和DSP模式4種。設(shè)計(jì)中使用I2S數(shù)據(jù)傳送模式。I2S總線是飛利浦公司為數(shù)字音頻設(shè)備之間的音頻數(shù)據(jù)傳輸而制定的一種總線標(biāo)準(zhǔn),廣泛應(yīng)用于各種多媒體系統(tǒng)。數(shù)字音頻接口由時(shí)鐘信號(hào)BCLK、數(shù)據(jù)信號(hào)DIN和DOUT、同步信號(hào)LRCIN和LRCOUT組成。應(yīng)當(dāng)說(shuō)明:BCLK在主動(dòng)方式下是輸出,而在從動(dòng)方式下是輸入。AIC23的IP核包I2S發(fā)送/接收模塊、輸入/輸出FIFO存儲(chǔ)器模塊,AIC23的IP核結(jié)構(gòu)如圖3所示。
AIC23芯片與EP2C35系列FPGA的連接電路如圖4所示。通過(guò)I2C控制接口配置AIC23的11個(gè)寄存器;通過(guò)I2S總線讀寫音頻數(shù)據(jù),讀寫音頻數(shù)據(jù)使用DMA方式。
系統(tǒng)的音頻信號(hào)采集原理:麥克風(fēng)輸入的模擬音頻信號(hào)通過(guò)AIC23內(nèi)部的A/D轉(zhuǎn)換器轉(zhuǎn)換為數(shù)字音頻信號(hào),通過(guò)I2S總線傳輸給輸入FIFO緩存區(qū)。當(dāng)輸入FIFO緩存區(qū)存儲(chǔ)的數(shù)據(jù)達(dá)到設(shè)定值時(shí),向DMA控制器請(qǐng)求DMA傳送,DMA控制器接受請(qǐng)求后就完成FIFO到SDRAM之間的數(shù)據(jù)傳送。當(dāng)回放錄音數(shù)據(jù)時(shí):通過(guò)SDRAM控制器將SDRAM中保存的音頻數(shù)據(jù)經(jīng)輸出FIFO緩存區(qū)送到I2S總線,再由AIC23進(jìn)行D/A轉(zhuǎn)換,將數(shù)字音頻信號(hào)還原成為模擬音頻信號(hào)通過(guò)耳機(jī)播放。
3 系統(tǒng)軟件設(shè)計(jì)
該語(yǔ)音處理系統(tǒng)軟件設(shè)計(jì)是在Linux操作系統(tǒng)中完成的。
3.1 μClinux操作系統(tǒng)移植
μClinux是針對(duì)控制領(lǐng)域的嵌入式Linux操作系統(tǒng),適合如NiosⅡ處理器等不具備內(nèi)存管理單元(MMU)的微處理器/微控制器?;诓僮飨到y(tǒng)進(jìn)行的軟件開發(fā),需將操作系統(tǒng)移植到硬件平臺(tái),μClinux可以以部件的形式集成到SoPC系統(tǒng)中,也可以在用虛擬機(jī)運(yùn)行的Linux下進(jìn)行μClinux的交叉編譯,此設(shè)計(jì)中使用后一種方法。
(1)建立編譯環(huán)境。安裝虛擬機(jī)、redhat9、NiosⅡ的交叉編譯工具鏈(ToolChain)nios2gcc.tar.bz2及nios2libs.tar.bz2,μClinux的代碼包μClinux—dist一20070130.tar.gz及一個(gè)針對(duì)NiosⅡ處理器的補(bǔ)丁包μC1inux—dist一20070130—nios2—02.diff.gz。
(2)內(nèi)核的配置與編譯,按如下順序進(jìn)行:
(3)啟動(dòng)μClinux系統(tǒng)。將zlmage傳回Win—dows,下載.sof配置文件后再下載zImage,通過(guò)nios2一terminal啟動(dòng)μClinux系統(tǒng)。連接串口,通過(guò)串口調(diào)試器即可看到系統(tǒng)的啟動(dòng)信息。
3.2 語(yǔ)音處理的軟件設(shè)計(jì)
移植完Linux操作系統(tǒng)后,需要添加設(shè)計(jì)中使用到的編解碼芯片的驅(qū)動(dòng)程序,系統(tǒng)會(huì)根據(jù)SoPC Builder生成的.ptf文件將外圍器件的引腳及中斷信息生成Nios_system.h文件,提供給各外圍器件的驅(qū)動(dòng)程序。本設(shè)計(jì)中需要添加AIC23和I2C控制器的驅(qū)動(dòng)程序。
系統(tǒng)的語(yǔ)音處理程序流程圖如圖5所示,軟件設(shè)計(jì)實(shí)現(xiàn)語(yǔ)音的采集和回放,系統(tǒng)的軟件設(shè)計(jì)采用C語(yǔ)言和NiosⅡ匯編語(yǔ)言混合編寫。為使AIC23正常工作并產(chǎn)生預(yù)期效果,必須對(duì)其相應(yīng)的寄存器進(jìn)行配置。這里只列出對(duì)AIC23芯片初始化設(shè)置時(shí)的部分代碼,AIC23是通過(guò)I2C總線進(jìn)行初始化配置的。
AIC23初始化的部分源代碼:
4 結(jié) 語(yǔ)
該設(shè)計(jì)在CycloneⅡFPGA開發(fā)平臺(tái)上配置硬件系統(tǒng),在Linux操作系統(tǒng)在進(jìn)行軟件設(shè)計(jì),從而實(shí)現(xiàn)了對(duì)語(yǔ)音的采集與回放等基本音頻處理功能。SoPC系統(tǒng)的可裁減性以及嵌入式系統(tǒng)的可移植性等優(yōu)點(diǎn),使設(shè)計(jì)可以作為一個(gè)子系統(tǒng)應(yīng)用在更大型的系統(tǒng)設(shè)計(jì)中,例如把G723.1的編解碼算法移植到該系統(tǒng)中,則完全可以把該模塊嵌入到網(wǎng)絡(luò)會(huì)議的可視電話中作為語(yǔ)音處理模塊,因而有很好的應(yīng)用前景和科研價(jià)值。