1 前言 TMS320C54xx是TI公司生產的具有較高性價比的DSP系列,采用高性能的改進型哈佛總線結構;內含一個40bit的算術邏輯單元(包括一個40bit的筒形移位器和兩個獨立的加法器)、軟件可編程等待狀態(tài)發(fā)生器以及可編程分區(qū)轉換邏輯電路;同時帶有內部振蕩器或用外部時鐘源的片內鎖相環(huán)(PLL)時鐘發(fā)生器;該DSP帶有全雙工串行口,支持8位或16位傳送;同時帶有時分多路串行口、緩沖串行口、16位可編程定時器、8位并行主機接口等;可用外部總線進行關斷控制,以斷開外部數(shù)據(jù)總線、地址總線和控制信號;數(shù)據(jù)總線具有總線保持特性。 TI公司的TLV320AIC24型多媒體數(shù)字信號編解碼器則可提供時分復用串行口(SMARTDM),并可用一個先進的TDM格式同步4線串行口以優(yōu)化DSP的性能,從而實與流行DSP(如C5000、C6000)和微控制器的無縫連接。SMARTTDM提供了連續(xù)數(shù)據(jù)轉換和再配置編程兩種模式(ADC/DAC和控制數(shù)據(jù)),可使TLV320AIC24 DSP編碼器和DSP數(shù)據(jù)轉換的帶寬最大化(只對ADC/DAC數(shù)據(jù))。在一般的操作中,它會自動發(fā)現(xiàn)串行接口中的編碼個數(shù)并調整時鐘數(shù)以與編碼數(shù)據(jù)相匹配。而在TURBO操作中,它可以保持相同的時鐘數(shù)值,但位轉換率最大到達25MHz,允許其他的DSP外圍串行器件在相同的采樣周期內分離相同的串行總線。TLV320AIC24支持任意基于SMARTDM的器件級聯(lián),實現(xiàn)多通道編碼(最多可有8路TLV320AIC24編碼級聯(lián)到單個串行口),它所支持的3種串行口配置為單機主、單機從和級聯(lián)主從模式。 TLV320AIC24還提供兩種16位Σ-△A/D通道和16位Σ-△D/A通道,可連接到手機、耳機、麥克風等外部設備;其嵌入的模擬和數(shù)字側音、反偏濾波器、可編程輸入輸出增益控制等電路楞為麥克風提供前置放大和150Ω負載、硬件/軟件控制的掉電模式等功能;TLV320AIC24具有和TMS320C54xX完全兼容的電源電壓;其可編程最高采樣率達26ks/s(用片上IIR/FIR濾波器)和104ks/s(用IRR/FIR側通);在8ks/s的采樣率下,它們的片上FIR可產生87dB的動態(tài)范圍(對ADC)和92dB的動態(tài)范圍(對DAC);ADC和DAC濾波器符合G.711和G.722協(xié)議。此外,TLV320AIC24還提供了一個靈活的主機接口(一個可以編程為標準工業(yè)I2C總線協(xié)議或S2C總線協(xié)議的2位串行口)。 2 硬件接口 DSP McBSP和TLV320AIC24的接口方式為4路SMARTDM信號,分別為幀同步、串行數(shù)據(jù)輸出、串行數(shù)據(jù)輸入和時鐘源,它們分別連接到FSX/FSR、DR、DX、CLKX/CLKR。在級聯(lián)模式下,DSP可通過主器件的FS端接收幀同步信號,主器件的FDS端連接到第一級從器件的FS端,而將第一級從器件的FSD連接到第二級從器件的FS端,如此類推。最后一級的FSD通過電阻器連接到3.3V電源輸入端。圖1給出級聯(lián)TLV320AIC24和DSP的連接方式。 3 軟件編程 TLV320AIC24的每一個通道都含有6個控制寄存器,可以編程所需的操作模式。在控制幀模式下,通過DIN引腳可以對所有的寄存器進行編程。在一個幀同步延時后,新的配置生效。上電后,TLV320AIC24被默認為編程模式。設置控制寄存器1到第6位可用于轉換連續(xù)數(shù)據(jù)模式。如果采用15+1數(shù)據(jù)格式,那么,把DIN的最低位設置成1可將連續(xù)數(shù)據(jù)傳輸模式轉換成編程設置模式。其格式如下: 其中,D15-D13位為控制寄存器地址,操作時可與位D7-D0所攜帶的數(shù)據(jù)一塊寫入;位D12用于確定對所尋址寄存器的讀寫;位D11用來確定是否選擇廣播模式;位D10-D8永遠設置為1。 下面給出編碼器寄存器的編程例子。其中,DSP通過DMA連接到SMARTDM以對TLV320AIC24進行初始化。DMA是指在不需要CPU干預的情況下,在映射存儲區(qū)的不同區(qū)間傳輸數(shù)據(jù)的技術。DMA可支持上存儲器、片上外設(包括EHPI8)或是外部設備間無CPU負責的獨立數(shù)據(jù)交換。 (1)初始化 SeriaIPortOInit(); //串行口初始化TLV320AIC24 DMAC_init(); //DMA初始化 DMAC_ch_enable(DMAC_CH_0); DMAC_ch_enable(DMAC_CH_1); *IMR=DMAC0 |DMAC1; //開DMA中斷 *IFR=0xffff; SeriaIPort0_TXRX_Enable(); //重新設置串行口0配置函數(shù) Asm(" rsbx intm"); //使能中斷 ......; (2)DMA0中斷服務子程序,進行數(shù)據(jù)接收 interrupt void DMAC0_isr() {if (mode==1) {if(rx_full==0) {if(receive==0) {*(DMSA)=0;//配置通道0 *(DMSDI)=(unsigned short)MCBSP0_DRR1;//通道源地址寄存器配置為MCBSP0的數(shù)據(jù)接收寄存器的地址// *(DMSDI)=(unsigned short)dmac_ch0B;//DMDST0 .0通道目標地址寄存器 *(DMSDI)=0x07; //DMCTR0.0通道單元計數(shù)器寄存器 *(DMSDI)=0x1000;//DMMCR0-0通道傳輸模式控制寄存器 receive=1; } else {......; receive=0;} dmacount0++; rx_full=1;} DMAC_ch_enable(DMAC_CH_0);//使能DMA通道0 } else {if(frame>=4) {......; //配置通道0 } else {......; //配置通道0 } DMAC_ch_enable(DMAC_CH_0);//通道0使能 }} (3)用DMA初始化TLV320AIC24子程序 short dmc_ctrl[CTRL_BUF_SIZE]={0,0,0,0, AIC_RESETs,0,0,0,0,0,0,AIC_Ms,AIC_NFs, AIC_DACs,AIC_MUTE_SITONs,0,0,0,0, AIC_CH1_IN,AIC_CH2_IN,AIC_CH1_IN, AIC_CH2_IN,0,0,0,0,AIC_CH1_OUT, AIC_CH2_OUT,AIC_CH1_OUT,AIC_CH2_OUT,0,0, 0,0,AIC_ADCs,AIC_16BITs,0,0}; void DMAC_init() {*(DMPREC)=0x8380;配置通道優(yōu)先工作寄存器,初始化所有通道為禁止和低優(yōu)先級 //設置通道0 ...... //設置通道1 *(DMSA)=5; *(DMSDI)=(unsigned short)dmac_ctrl+1;//通道1源地址寄存器 *(DMSDI)=(unsigned short)MCBSP0_DXR1;//通道1目標地址寄存器配置為MCBSP0的數(shù)據(jù)發(fā)送寄存器// ...... //設置單元和幀地址索引寄存器0 ...... } 4 結束語 本文介紹的硬件設計方法和軟件編程可以完成語音信號的采集與回放,從而實現(xiàn)語音數(shù)據(jù)的采集、處理和存儲等功能。該方案能夠滿足主流語音處理產品的要求,可以廣泛應用在各種相關設備中。 |