基于TLV320AIC23和TMS320VC5416的語音系統(tǒng)設(shè)計
關(guān)鍵詞:數(shù)據(jù)采集;DSP;TLV320AIC23;TMS320VC5416
0引言
如今高速發(fā)展的語音信號處理技術(shù)已在音頻信息的處理、傳輸和存儲等方面得到廣泛應(yīng)用;同時,隨著高性能DSP的日益普及,利用DSP對語音信號處理進行算法研究和實時實現(xiàn)正成為新的熱點。因此,本文設(shè)計并實現(xiàn)了一種語音采集與處理系統(tǒng),目的是為語音信號處理的算法研究和實時實現(xiàn)提供一個通用平臺。
1芯片簡介
TLV320AIC23(以下簡稱AIC23)是TI公司的一款高性能Codec芯片。主要特性有:內(nèi)置耳機輸出放大器,支持MIC和LINE IN兩種輸入方式(二選一),且對輸入和輸出都具有可編程增益調(diào)節(jié);芯片中的A/D轉(zhuǎn)換器和D/A轉(zhuǎn)換器采用多位Sigma-Delta技術(shù),數(shù)據(jù)傳輸字長為16、20、24、32bit,采樣率為8kHz~96kHz;在采樣率為96kHz的情況下A/D轉(zhuǎn)換器信噪比達到90dB,D/A轉(zhuǎn)換器達到100dB;回放模式下功率為23mW,省電模式下更是小于15uW;只占用25mm2的面積。基于上述優(yōu)點,AIC23是可移動的數(shù)字音頻播放和錄音使用中的模擬輸入輸出等應(yīng)用系統(tǒng)的理想選擇,例如MP3播放器等。
TMS320VC5416(以下簡稱VC5416)是TI公司的一款16bit定點高性能DSP,是TMS320VC54x系列中的第3代芯片。主要特性有:速率最高達160MI/s;3條16bit數(shù)據(jù)存儲器總線和1條程序存儲器總線;1個40bit桶形移位器和2個40bit累加器;1個1717乘法器和1個40bit專用加法器;最大8M16bit的擴展尋址空間,內(nèi)置128k16bit的RAM和16k16bit的ROM;3個多通道緩沖串口(McBSP);配有PCM3002,可對語音進行A/D和D/A轉(zhuǎn)換。由于VC5416功耗低,性能高,其分開的數(shù)據(jù)和指令空間使該芯片具有高度的并行操作能力,在單周期內(nèi)允許指令和數(shù)據(jù)同時存取,再加上高度優(yōu)化的指令集,使得該芯片具有很高的運算速度并且該芯片本身具有豐富的片內(nèi)存儲器資源和多種片上外設(shè),因此在工程界得到廣泛應(yīng)用,尤其是在語音編碼和通信應(yīng)用方面。
2系統(tǒng)硬件結(jié)構(gòu)
2.1系統(tǒng)硬件結(jié)構(gòu)
語音采集與處理系統(tǒng)主要包括三個主要部分:以VC5416為核心的數(shù)據(jù)處理模塊;以AIC23為核心的語音采集與編解碼(CODEC)模塊;用戶根據(jù)需要擴展的存儲器模塊。系統(tǒng)硬件結(jié)構(gòu)如圖1所示。
圖1 系統(tǒng)硬件結(jié)構(gòu)
2.1.1數(shù)字信號處理芯片
為滿足語音信號處理的實時性要求,語音信號采集與處理系統(tǒng)應(yīng)具有高速數(shù)據(jù)處理能力。本系統(tǒng)采用TMS320VC5416芯片作為信號處理芯片。
2.1.2音頻CODEC模塊
本系統(tǒng)的CODEC模塊以TLV320AIC23芯片為核心。
2.1.3電源模塊
VC5416屬于低功耗定點芯片,采用雙電源供電。電源由內(nèi)核電源(CVdd)和I/O電源(DVdd)兩部分構(gòu)成,其中內(nèi)核電源為1.8V,I/O電源為3.3V。內(nèi)核電源采用1.8V供電可以降低功耗;I/O電源采用3.3V供電使得芯片可以直接與外部低壓器件接口,而不需要額外的電平轉(zhuǎn)換電路。本系統(tǒng)采用TI公司的TPS73HD318(簡稱HD318)作為電源輸入芯片,HD318提供的兩路輸出電壓一路為1.8V、一路為3.3V。另外該芯片提供的寬度為200ms的低電平復(fù)位脈沖還可以用來作為VC5416的上電復(fù)位信號。AIC23芯片具有單電源(5V電源)和雙電源(3V數(shù)字電源+5V模擬電源)兩種供電模式,本系統(tǒng)選擇雙電源供電模式,這樣AIC23和VC5416之間就可以直接聯(lián)接而不需要其它電平轉(zhuǎn)換芯片。
2.1.4 JTAG仿真接口
系統(tǒng)由硬件仿真器XDS510/PP通過JTAG仿真接口和計算機相連,用戶可以通過此接口向VC5416芯片加載程序并觀察芯片內(nèi)部存儲器的數(shù)據(jù),完成系統(tǒng)仿真及程序調(diào)試的任務(wù)。如果系統(tǒng)需要以脫機方式工作,可以用JTAG仿真接口將用戶程序燒錄到Flash Rom中,再通過設(shè)置啟動方式引腳確定系統(tǒng)從片外ROM啟動。
2.2硬件接口設(shè)計
VC5416有3個McBSP,可以方便地利用其中2個McBSP完成對AIC23的控制和通信,其中VC5416的McBSP0與AIC23的數(shù)據(jù)口相連,McBSP1與AIC23的控制口相連。
AIC23芯片是一個可編程芯片,內(nèi)部有11個16位寄存器,控制接口具有SPI和I2C工作方式,這兩種工作方式由MODE引腳來選擇,即:MODE=0為I2C模式;MODE=1為SPI模式。
AIC23與VC5416的接口電路見圖2。
圖2 AIC23與VC5416的接口電路
VC5416的2個多通道緩沖串口McBSP分別配置為I2C模式和SPI模式。McBSP0作為數(shù)據(jù)的發(fā)送和接收端口;McBSP1對CODEC寫控制字,作為控制端口;AIC23作為從設(shè)備,因此設(shè)置為Slave模式,而VC5416則設(shè)置為Master模式,Codec采樣率設(shè)置為8kHz。
2.3 BOOTLOADER設(shè)計
VC5416片內(nèi)ROM中有固化的自加載程序(BOOTLOADER),但它對被加載程序的大小有限制。在使用8bit Flash的情況下,只能加載小于16KWord的內(nèi)容。而三個速率的SELP算法程序區(qū)和數(shù)據(jù)區(qū)的總數(shù)據(jù)量遠遠超過16KWord,顯然只使用片內(nèi)的BOOTLOADER是不能滿足需要的。所以必須自己寫加載程序。首先由VC5416片內(nèi)的BOOTLOADER把自己寫的加載程序加載到片內(nèi)RAM,然后執(zhí)行這段加載程序,加載其它部分。這里需要解決的一個主要問題就是Flash數(shù)據(jù)和片內(nèi)地址空間的映射關(guān)系。由于SELP算法的程序數(shù)據(jù)總量很大,所以必須用到片內(nèi)擴展的程序區(qū),也就是說MP/MC標志位需要設(shè)為0。從此時的Memory Map中可以看出,VC5416可以訪問的每塊連續(xù)片外地址空間只有32K,所以Flash數(shù)據(jù)只能按照每頁32K的方式分頁映射到片內(nèi)地址空間。使用FPGA可以很方便地控制哪頁Flash數(shù)據(jù)映射到片內(nèi)中,這部分的原理框圖如圖3所示。
圖3 BOOTLOADER原理
3接口軟件設(shè)計
本系統(tǒng)的軟件采用C語言和匯編語言混合編寫。由于是利用VC5416的McBSP口來控制AIC23芯片,且2個McBSP口設(shè)置成不同的工作方式,所以必須把McBSP初始化為符合AIC23芯片的控制命令時序和要求的工作模式。由于篇幅本文只列出對VC5416及AIC23芯片初始化設(shè)置時的部分代碼。
3.1 TMS320VC5416初始化
SWWSR=0x7fff;/程序、數(shù)據(jù)、I/O空間
SWCR=0x0001;/等待周期為72=14
BSCR=0x8006;/按32KW分區(qū),HD[7:0],D[15:0]Hold
CLKMD=PLL_DIV_INIT;
Waitloop(0x0400);
CLKMD=PLL_LOCK_INIT_X(5);
Waitloop(0x0400);
PMST=0x0168;/中斷向量表定位在0X100,MP/MC=1
OVLY=1,DROM=1;
3.2 TLV320AIC23初始化
為使AIC23正常工作并產(chǎn)生預(yù)期的音頻效果,必須對其相應(yīng)的寄存器進行配置。首先對VC5416的I2C模塊初始化,將AIC23總線上的地址寫入從機地址寄存器ICSAR;再把相應(yīng)的AIC23內(nèi)部映射寄存器的地址和待寫數(shù)據(jù)合并為16bit控制字,逐次寫入ICDXR,并通過I2C總線發(fā)送給AIC23,即可完成對AIC23的初始化配置。
AIC23初始化的部分源代碼:
Unsigned int codec_buf[9]={OX1e00,OXOc00,OxO81a,OxOaO4,OxOe01,0x1020,0x1021,0x0117,OxO5f9};
Port_sub_address=(unsigned int*)MCBSP_SPSA_ADDR(1);
Port_sub_index_reg=(unsigned int*)MCBSP_SPAD_ADDR(1);
*Port_sub_address=MCBSP_SPCR2_SUBADDR;
For(i=O;i9;i++){
While(!(*Port_sub_index_reg(MASK_BIT(XRDY))));
Set_codec_cs_low();
MCBSP1_DXR1=codec_buf[i];
While(!(*Port_sub_index_reg(MASK_BIT(XRDY))));
Set_codec_cs_high();}
4結(jié)束語
本文的創(chuàng)新點是根據(jù)TI公司的DSP芯片TMS320VC5416和語音CODEC芯片TLV320AIC23的特性,設(shè)計并實現(xiàn)了一個語音采集處理系統(tǒng)。該系統(tǒng)具有很強的處理能力和靈活的外圍接扣電路。實踐證明它能夠滿足實時信號處理的要求,可以作為一種語音信號處理算法研究和實時實現(xiàn)的通用平臺。
參考文獻:
[1]張雄偉,曹鐵勇.DSP芯片的原理與開發(fā)應(yīng)用(第二版)[M].北京:電子工業(yè)出版社,2OO0
[2]任麗香,馬淑芬,李方慧.TMS220600系列DSP的原理與應(yīng)用[M].北京:電子工業(yè)出版社,2OOO
[3]戴明禎,周建江.TMS320VC54x DSP結(jié)構(gòu)、原理及應(yīng)用[M].北京:北京航空航天大學(xué)出版社,2001
[4]TMS320VC5416 Bootloader.SPRA602C.Texas Instrument, February 2001
[5]TMS320VC5416 Fixed-Point Digital Signal Processor Data Manual.TI Corporation,2003
[6]Stereo Audio CODEC,8kHz-96kHz,with Integrated Head Phone Amplifier TLV320AIC23.TI Corporation,2001
[7]郝軟層,徐金甫.基于DSP芯片的MELP聲碼器的算法實現(xiàn)[J].微計算機信息,2006,10-2:62-64
評論