李穎宏 趙俊桃
摘 要:介紹一種基于SoPC 技術(shù)實(shí)現(xiàn)的語(yǔ)音處理系統(tǒng)的設(shè)計(jì)方法。系統(tǒng)主要由Cyclone Ⅱ FPGA內(nèi)嵌 Nios Ⅱ軟核處理器及音頻編/解碼芯片構(gòu)成;通過(guò)構(gòu)建嵌入式Linux操作系統(tǒng)來(lái)實(shí)現(xiàn)對(duì)音頻信號(hào)的采集和回放處理。詳細(xì)介紹通過(guò)SoPC Builder配置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ì)議的視頻電話(huà)中,該方法對(duì)SoPC系統(tǒng)的開(kāi)發(fā)研究具有較高的參考價(jià)值。
關(guān)鍵詞:片上系統(tǒng);嵌入式Linux;音頻編碼;音頻解碼;軟核處理器
中圖分類(lèi)號(hào):TN912.3文獻(xiàn)標(biāo)識(shí)碼:B
文章編號(hào):1004 373X(2009)02 033 03
Design and Realization of the Embedded Audio Processing System Based on SoPC
LI Yinghong,ZHAO Juntao
(North China University of Technology,Beijing,100144,China)
Abstract:This paper introduces a scheme of designing audio process system based on implementation of SoPC technology.The system is mainly constituted by Cyclone Ⅱ FPGA which Nios Ⅱ soft core processor embedded in,and audio encode and decode chip.The realization of collecting and replaying of audio signal processing is formed by embedded Linux operating system.The paper introduces the process of configuring Nios Ⅱ embedded processors,peripherals and interface by SoPC Builder,and the transplant process of embedded Linux operating system in SoPC system.The characters of reducing of SoPC system and transplanting of embedded system make the design as a subsystem used in the video frequency telephone of network conference.This method has a high reference value for development and research of SoPC system.
Keywords:SoPC;embedded Linux;audio encode;audio decode;soft core processor
0 引 言
可編程的片上系統(tǒng)(System on Programmable Chip,SoPC)是現(xiàn)代計(jì)算機(jī)輔助設(shè)計(jì)技術(shù)、EDA技術(shù)和大規(guī)模集成電路技術(shù)高度發(fā)展的產(chǎn)物。它可以將處理器、存儲(chǔ)器、I/O接口、硬件協(xié)處理器和普通的用戶(hù)邏輯等系統(tǒng)設(shè)計(jì)需要的功能模塊都集成到1片F(xiàn)PGA芯片內(nèi)部,實(shí)現(xiàn)MCU,DSP和FPGA 的完美結(jié)合,這將是未來(lái)嵌入式系統(tǒng)的發(fā)展趨勢(shì)[1],在儀器儀表、手持設(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)[2]的硬件結(jié)構(gòu)如圖1所示[3]。系統(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 Ⅱ處理器是Altera公司的第二代用戶(hù)可配置的、采用流水線(xiàn)技術(shù)、單指令流的32位RISC內(nèi)嵌處理器,基于通用FPGA架構(gòu)的軟CPU內(nèi)核,其性能超過(guò)200 DMIPS。Nios Ⅱ處理器 內(nèi)核有3種類(lèi)型,分別是快速型、經(jīng)濟(jì)型和標(biāo)準(zhǔn)型,用來(lái)滿(mǎn)足不同的設(shè)計(jì)要求[1,4]。
音頻部分主要由語(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電話(huà)的系統(tǒng)設(shè)計(jì)。
1.2 主控芯片F(xiàn)PGA的配置
主控芯片F(xiàn)PGA的配置[5]是通過(guò)SoPC Builder在Cyclone Ⅱ FPGA開(kāi)發(fā)平臺(tái)上實(shí)現(xiàn)的。根據(jù)需求,該系統(tǒng)主要配置如下:標(biāo)準(zhǔn)型Nios Ⅱ處理器、片上SDRAM MT46V16M16、以太網(wǎng)芯片LAN91C111,F(xiàn)LASH存儲(chǔ)器件AM29LV128M,SSRAM器件CY7C1380C,UART,JTAG UART,PLL鎖相環(huán)、定時(shí)器Timer,DMA,I2C,AIC23等控制器核。其中以太網(wǎng)芯片、FLASH存儲(chǔ)器件、SSRAM器件通過(guò)Avalon三態(tài)總線(xiàn)橋與Avalon Switch Fabric連接,所有的外圍接口通過(guò)Avalon 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)開(kāi)發(fā)工具,能夠非常容易地在一個(gè)設(shè)計(jì)中加入Nios Ⅱ處理器以及其它外設(shè)接口[6]。
2 系統(tǒng)接口設(shè)計(jì)
系統(tǒng)主要模塊在FPGA 片內(nèi)生成,外部接口主要是TLV320AIC23 與Cyclone Ⅱ EP2C35的硬件接口設(shè)計(jì)。
TLV320AIC23(AIC23)是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 的采樣率[7]。
AIC23內(nèi)部有11 個(gè)配置寄存器,可通過(guò)控制接口來(lái)配置該器件的寄存器,AIC23的控制接口有SPI,I2C兩種規(guī)格[7-8]。模式終端狀態(tài)決定了控制接口的形式,在設(shè)計(jì)中MODE接數(shù)字地表示利用I2C控制接口對(duì)AIC23 傳輸控制數(shù)據(jù)。I2C總線(xiàn)是Philips公司開(kāi)發(fā)的一種雙向兩線(xiàn)多主機(jī)總線(xiàn),它能方便地實(shí)現(xiàn)芯片間的數(shù)據(jù)傳輸與控制。CS接數(shù)字地定義了在I2C總線(xiàn)上A IC23的7 b外設(shè)地址為“0011010”。該系統(tǒng)的I2C接口使用GPIO-I2C,即用2根通用的I/O口作為I2C時(shí)鐘線(xiàn)SCL和數(shù)據(jù)傳輸線(xiàn)SDA,通過(guò)軟件實(shí)現(xiàn)I2C協(xié)議。
AIC23芯片與數(shù)字系統(tǒng)的接口有右判斷模式、左判斷模式、I2S模式和DSP模式4種。設(shè)計(jì)中使用I2S數(shù)據(jù)傳送模式。I2S總線(xiàn)是飛利浦公司為數(shù)字音頻設(shè)備之間的音頻數(shù)據(jù)傳輸而制定的一種總線(xiàn)標(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總線(xiàn)讀寫(xiě)音頻數(shù)據(jù),讀寫(xiě)音頻數(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總線(xiàn)傳輸給輸入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總線(xiàn),再由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)行的軟件開(kāi)發(fā),需將操作系統(tǒng)移植到硬件平臺(tái)[9],μ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ǔ)丁包μClinux-dist-20070130-nios2-02.diff.gz。
(2)內(nèi)核的配置與編譯,按如下順序進(jìn)行:
make menuconfig //配置內(nèi)核將quartus工程目錄下的
voip_nios.ptf拷貝到/home/taozi目錄下,
make vendor_hwselect SYSPTF=“/home/taozi/sys.ptf ” //按照提示配置硬件系統(tǒng)
make romfs //編譯內(nèi)核建立起romfs文件樹(shù),
make //編譯系統(tǒng)
make linux image //內(nèi)核文件vmlinux和romfs連接起來(lái)
生成目標(biāo)內(nèi)核文件zImage
(3) 啟動(dòng)μClinux 系統(tǒng)。
將zImage傳回Windows,下載.sof配置文件后再下載zImage,通過(guò)nios2-terminal啟動(dòng)μClinux 系統(tǒng)。連接串口,通過(guò)串口調(diào)試器即可看到系統(tǒng)的啟動(dòng)信息。
3.2 語(yǔ)音處理的軟件設(shè)計(jì)[10]
移植完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)程序[5]。
系統(tǒng)的語(yǔ)音處理程序流程圖如圖5所示,軟件設(shè)計(jì)實(shí)現(xiàn)語(yǔ)音的采集和回放,系統(tǒng)的軟件設(shè)計(jì)采用C 語(yǔ)言和Nios Ⅱ匯編語(yǔ)言混合編寫(xiě)。為使AIC23 正常工作并產(chǎn)生預(yù)期效果,必須對(duì)其相應(yīng)的寄存器進(jìn)行配置。這里只列出對(duì)AIC23 芯片初始化設(shè)置時(shí)的部分代碼,AIC23是通過(guò)I2C總線(xiàn)進(jìn)行初始化配置的。
AIC23 初始化的部分源代碼:
tlv320aic23b_write(client,15,0x000); /* RESET */
tlv320aic23b_write(i2c_client,1,0x119);
tlv320aic23b_write(i2c_client,2,0x1f9);
tlv320aic23b_write(i2c_client,3,0x1f9);
tlv320aic23b_write(client,6,0x00A);/* turn off DAC & mic input */
tlv320aic23b_write(client,7,0x042);/* i2s,16-bit,master mode */
tlv320aic23b_write(client,0,0x119);/* set gain on both channels to +3.0 dB */
tlv320aic23b_write(client,8,0x000);/* set sample rate to 48 kHz */
tlv320aic23b_write(client,9,0x001);/* activate digital interface */
4 結(jié) 語(yǔ)
該設(shè)計(jì)在Cyclone Ⅱ FPGA 開(kāi)發(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ì)議的可視電話(huà)中作為語(yǔ)音處理模塊,因而有很好的應(yīng)用前景和科研價(jià)值。
參考文獻(xiàn)
[1]李蘭英.Nios Ⅱ 嵌入式軟核SoPC 設(shè)計(jì)原理及應(yīng)用.北京:北京航空航天大學(xué)出版社,2006.
[2]林振營(yíng),馬剛.基于Nios Ⅱ的SoPC 嵌入式系統(tǒng)開(kāi)發(fā)解決方案.現(xiàn)代電子技術(shù),2007,30(6):79-81.
[3]李鴻強(qiáng),苗長(zhǎng)云.自動(dòng)語(yǔ)音記錄系f&(AVR S)的SoPC設(shè)計(jì)與實(shí)現(xiàn).微計(jì)算機(jī)信息,2005,21(2):48-50,81.
[4]Altera Corp.Nios Ⅱ Processor Reference Handbook.2005.
[5]Altera Corp.Volume 5: Altera Embedded Peripherals.2005.
[6]Altera Corp.Quartus Ⅱ Version 6.0 Handbook.2005.
[7]TI Corp.TLV320AIC23B Data Manual.http:∥www.ti.com,2007.
[8]胡濤,陳超.TLV320AIC23B與TMS320DM642 的接口設(shè)計(jì).儀表技術(shù)與傳感器,2006(6):36-37.
[9]劉淼.嵌入式系統(tǒng)接口與Linux 驅(qū)動(dòng)程序開(kāi)發(fā).北京:北京航空航天大學(xué)出版社,2006.
[10]Altera Corp.Nios Ⅱ Software Developer′s Handbook.2005.
作者簡(jiǎn)介 李穎宏 女,1968年出生,教授。研究方向?yàn)橹悄芸刂萍艾F(xiàn)場(chǎng)總線(xiàn)技術(shù)應(yīng)用。
趙俊桃 女,1984年出生,北方工業(yè)大學(xué)碩士研究生。研究方向?yàn)榛谇度胧较到y(tǒng)的語(yǔ)音處理。