TLC320AD50C在DSP系統(tǒng)中的應(yīng)用與設(shè)計(jì)
——
DSP是一種適合于實(shí)時(shí)數(shù)字信號(hào)處理的微處理器,主要用于實(shí)時(shí)快速地實(shí)現(xiàn)各種數(shù)字信號(hào)的處理算法,如數(shù)字濾波、變換、增強(qiáng)、壓縮、估計(jì)、識(shí)別等。DSP自20世紀(jì)80年代誕生以來(lái)得到迅速的發(fā)展,廣泛用于通信、控制、軍事等領(lǐng)域。在DSP的應(yīng)用中,數(shù)據(jù)的采集、信號(hào)處理及重建是DSP應(yīng)用系統(tǒng)的重要任務(wù)。本文介紹TMS320C54X與 - 型A/D、D/A轉(zhuǎn)換芯片TLC320AD50C的工作原理、硬件接口以及軟件設(shè)計(jì)。
TMS320C54X DSP的串口簡(jiǎn)介
在TI的DSP中,串行口是一個(gè)非常重要的片上外設(shè),它能夠高速地與外部設(shè)備進(jìn)行數(shù)據(jù)交換。TMS32054X DSP隨著器件不同,有多種接口,都能與TLC320AD50C直接接口。下面以TMS320C5409 DSP為例,簡(jiǎn)要敘述McBSP串口的工作原理和應(yīng)用要點(diǎn)。
McBSP串口由數(shù)據(jù)通道和控制通道組成,它通過(guò)7個(gè)管腳與外部設(shè)備相連,數(shù)據(jù)發(fā)送通過(guò)DX,數(shù)據(jù)接收通過(guò)DR,串行口的控制信息從CLKX、CLKR、FSX和FSR獲得。CLKS為外部時(shí)鐘源。CPU和DMA控制器通過(guò)內(nèi)部外設(shè)總線對(duì)McBSP進(jìn)行訪問(wèn),從數(shù)據(jù)接收寄存器DRR[1,2]中讀取數(shù)據(jù),往數(shù)據(jù)發(fā)送寄存器DXR[1,2]寫(xiě)數(shù)據(jù),數(shù)據(jù)從DR引腳進(jìn)入DSP,首先存放在接收移位寄存器RSR[1,2]中,當(dāng)一個(gè)完整的字接收完畢后,結(jié)果被復(fù)制到接收緩沖寄存器RBR[1,2],最后再由RBR[1,2]復(fù)制到DRR[1,2]中,供CPU或DMA控制器訪問(wèn)。寫(xiě)操作與讀取相仿,從結(jié)構(gòu)上來(lái)看,發(fā)送和接收部分是相對(duì)獨(dú)立的,所以可以實(shí)現(xiàn)全雙工通信。McBSP的控制設(shè)置通過(guò)一對(duì)寄存器讀寫(xiě)來(lái)完成,這些控制寄存器控制的工作模式或指示串口的狀態(tài)信息。訪問(wèn)某個(gè)指定的寄存器時(shí),首先要將相應(yīng)的控制寄存器的子地址寫(xiě)入子地址控制器SPSA,SPSA驅(qū)動(dòng)復(fù)接器,使之與數(shù)據(jù)控制寄存器SPSD相連。接入相應(yīng)子地址寄存器所在的實(shí)際物理存儲(chǔ)位置,當(dāng)向SPSD寫(xiě)入數(shù)據(jù)時(shí),數(shù)據(jù)送入前面子地址寄存器所指定的內(nèi)嵌數(shù)據(jù)存儲(chǔ)器,當(dāng)從SPSD讀取數(shù)時(shí),也接入所制定的內(nèi)嵌數(shù)據(jù)存儲(chǔ)器。
TLC320AD50C 簡(jiǎn)介
隨著數(shù)字技術(shù)的不斷發(fā)展,介于模擬與數(shù)字電路之間的芯片的使用也越來(lái)越多。美國(guó)TI公司的TLC320AD50C(以下簡(jiǎn)稱(chēng)AD50)就是一種具有許多優(yōu)良特性的模擬接口電路芯片,該芯片可廣泛用于各種電路,尤其是應(yīng)用在DSP領(lǐng)域中。AD50芯片采用過(guò)采樣 - 技術(shù),可進(jìn)行A/D和D/A的高分辨率、低速信號(hào)轉(zhuǎn)換。該器件同時(shí)還包括兩個(gè)串行同步轉(zhuǎn)換電路(用于各自的數(shù)據(jù)方向),在DAC之前有一個(gè)內(nèi)插濾波器,而在后面有一個(gè)抽取濾波器。AD50中的可選項(xiàng)和電路配置可以通過(guò)串行口進(jìn)行編程, AD50配置位可進(jìn)行軟件編程,該器件中共有七個(gè)數(shù)據(jù)和控制寄存器可供使用。其用途如下:
寄存器0:空操作(No-Op)寄存器。寄存器1:Control1寄存器。該寄存器用以控制軟件復(fù)位、軟件掉電、選擇正?;蜉o助模擬輸入、數(shù)字反饋的選擇、DAC的16位或15位工作方式的選擇、監(jiān)視放大器輸出增益的選擇及硬件或軟件二次通信請(qǐng)求方式的選擇等。寄存器2:Control 2寄存器,用于控制一個(gè)抽取FIR濾波器溢出的輸出標(biāo)志、FLAG的輸出值、ALT-DATA輸入端使能、為ADC選擇16位方式或15位方式及使能模擬反饋。寄存器3:Control 3寄存器。它控制FS與FSD之間延遲SCLK的個(gè)數(shù);通知主器件有多少?gòu)钠骷⑦B在一起。寄存器4:Control 4寄存器,用來(lái)控制輸入輸出放大器增益,采樣率為fs=MCLK/(128 N)或MCLK/(512 N)的選擇,以及在MCLK輸入端使能外部采樣時(shí)鐘和旁路內(nèi)部PLL等。寄存器5和寄存器6:保留寄存器,用于工廠測(cè)試。
TLC320AD50C與外界串行通信可以分為首次通信和二次通信。在首次通信中,有兩種數(shù)據(jù)傳送模式,16位傳送模式和15+1位傳送模式,可通過(guò)控制寄存器設(shè)定。默認(rèn)情況下為15+1位傳送模式。若采用15+1位傳送模式,其最低位DO為非數(shù)據(jù)位,輸入DAC數(shù)據(jù)的DO位為二次通信請(qǐng)求位,輸出ADC數(shù)據(jù)的D0位為M/S腳的狀態(tài)位。二次通信只有在發(fā)出請(qǐng)求時(shí)產(chǎn)生,當(dāng)首次通信采用15+1位模式時(shí),可以進(jìn)行二次通信請(qǐng)求;當(dāng)首次通信采用16位模式時(shí),則必須由FC腳輸入信號(hào)來(lái)產(chǎn)生二次通信請(qǐng)求。二次通信數(shù)據(jù)格式如圖1所示,其中D7-D0為控制寄存器數(shù)據(jù),D12-D8為控制寄存器地址,D13=1為讀控制寄存器數(shù)據(jù),D13=0對(duì)控制寄存器寫(xiě)數(shù)據(jù)。通過(guò)二次通信,可實(shí)現(xiàn)TLC320AD50C初始化和修改TLC320AD50C內(nèi)部控制寄存器。在TLC320AD50C內(nèi)部有5個(gè)可供二次通信訪問(wèn)的控制寄存器,其中4個(gè)寄存器和TLC320AD50C初始化及配置有關(guān)。其功能如表1所示。
硬件設(shè)計(jì)
在應(yīng)用中,將TLC320AD50C接至DSP的同步串口,并將TLC320AD50C設(shè)置在主動(dòng)工作模式下,即由TLC320AD50C提供幀同步信號(hào)和移位時(shí)鐘,另外不同型號(hào)的DSP的管腳電壓可以為3.3V或者5V。因此,可以根據(jù)DSP 的電源特性為T(mén)LC320AD50C選擇3.3V或5V的數(shù)字電,以實(shí)現(xiàn)管腳的直接連接。通過(guò)將多個(gè)TLC320AD50C串行連接,并將第一個(gè)TLC320AD50C設(shè)置成主動(dòng)工作模式,而其他TLC320AD50C設(shè)置成從設(shè)備方式,以實(shí)現(xiàn)多TLC320AD50C和DSP的相連。
圖1給出TMS320C54X與TLC320AD50C硬件接口電路,假設(shè)DSP的管腳電壓為3.3V,因而將TLC320AD50C的數(shù)字電接到3.3V電源,管腳M/S經(jīng)過(guò)10K電阻上拉,將TLC320AD50C設(shè)置成主動(dòng)工作模式,選擇INP和INM作為ADC的輸入,將AUXP和AUXM接至模擬地;DAC的正相輸出經(jīng)過(guò)一階低通濾波后送給模擬設(shè)備,反相輸出不用;DSP可以通過(guò)通用輸出口XF對(duì)TLC320AD50C進(jìn)行復(fù)位操作; 管腳FC接地,系統(tǒng)只能采用軟件方式申請(qǐng)觸發(fā)輔助通信(二次通信)模式;數(shù)據(jù)格式為15+1比特模式,管腳FSD可以輸出到后面的TLC320AD50C的FS管腳,以實(shí)現(xiàn)設(shè)備的同步。輸入主時(shí)鐘MCLK為8.192MHz,采樣頻率選擇為8KHz,內(nèi)部PLL使能(控制寄存器4中的N=8)。通過(guò)寄存器設(shè)置,將TMS320C54X的FSX,F(xiàn)SR,CLKR,CLKX配置為外部輸人,TLC320AD50C的SCLK配置為內(nèi)部產(chǎn)生。這樣數(shù)據(jù)接收/發(fā)送幀同步信號(hào)、移位時(shí)鐘信號(hào)均由TLC320AD50C產(chǎn)生。串行口的接收/發(fā)送過(guò)程受TLC320AD50C的控制。
軟件設(shè)計(jì)
相關(guān)軟件設(shè)計(jì)大致可分為串口McBSP設(shè)置和外部芯片TLC320AD50C設(shè)置。
串口McBSP設(shè)置應(yīng)該先讓串口的XRST=0,RRST=0, GRST=0使串口處于初始化狀態(tài),然后給控制寄存器設(shè)置設(shè)計(jì)的狀態(tài)位,如SRGR、SPCR、 PCR、 XCR、 RCR等。但要注意的是,這里不能改變XRST=0,RRST=0 GRST=0位,最后是讓XRST=1,RRST=1,F(xiàn)RST=1使串口退出復(fù)位狀態(tài)。
TLC320AD50C設(shè)置通過(guò)輔助通信來(lái)讀寫(xiě)控制寄存器,輔助通信有兩種方法實(shí)現(xiàn),一是硬件方式,F(xiàn)C必須在FS的上跳沿被拉高,這樣
TLC320AD50C會(huì)在后128個(gè)SCLK后切換到輔助通信模式下,二是軟件方式,要用軟件方式必須是工作在15+1位模式下,當(dāng)寫(xiě)入的數(shù)字D0位為1,則可以在后128個(gè)SCLK后切換到輔助通信模式下。對(duì)控制器的寫(xiě)的數(shù)據(jù)通過(guò)DIN進(jìn)入TLC320AD50C,寄存器的數(shù)據(jù)從DOUT輸出,訪問(wèn)寄存器時(shí)要求指明設(shè)備號(hào)、讀寫(xiě)屬性、寄存器地址。下面給出的分別是串口初始化以及LC320AD50C初始化的部分關(guān)鍵代碼。 .include "const.inc" ;串口初始化數(shù)據(jù)表,表中每項(xiàng)包括寄
存器子地址,和對(duì)應(yīng)的設(shè)置值
.include "init54.inc" ;初始化DSP內(nèi)設(shè)的常數(shù)表文件
.include "vector.inc" ;中斷向量表文件
.mmregs ;映射控制器物理地址
MCBSP_INIT: ;MCBSP_INIT 是初始化串口McBSP
;SPSA和SPSD的地址是連續(xù)的。所
以可以用輔助寄存器來(lái)訪問(wèn),簡(jiǎn)化代碼
stm 0,SPSA0 ;reset mcbsp0 spcr1
nop
stm K_SPCR10_RS,SPSD0 ;K_SPCR10_RS為const.inc 文件定義好的常數(shù)
nop
stm 1,SPSA0 ;spcr2
nop
STM K_SPCR20_RS,SPSD0
stm #MCBSP0_CONST,AR2 ;MCBSP0_CONST為const.inc數(shù)據(jù)表的首地址
stm #SPSA0,AR3
stm #(15-1),BRC ;共有14個(gè)寄存器要設(shè)置,采用指針循 環(huán)切換方式實(shí)現(xiàn)
rptb LOOP-1
ld *AR2+,A ;AR2指向數(shù)據(jù)表中的數(shù)據(jù)首地址,然后地址遞增
stl A,*AR3+ ;AR3指向SPSA0,然后指向SPSD0,再回指SPSA0.
nop
ld *AR2+,A
stl A,*AR3-
nop
LOOP:
stm 0,SPSA0 ;退出復(fù)位狀態(tài)
nop
stm K_SPCR10_RS|1,SPSD0
nop
stm 1,SPSA0
nop
STM K_SPCR20_RS|1,SPSD0
nop
WAIT #100
ret
AD50C_INIT: ;TLC320AD50C初始化
ld #K_Register1,B
call ADDA_SET ;調(diào)用ADDA_SET函數(shù)塊
ld #K_Register2,B
call ADDA_SET
ld #K_Register4,B
call ADDA_SET
RET
ADDA_SET: ;ADDA_SET函數(shù)塊,實(shí)現(xiàn)一次主通信,
一次輔助通信,然后返回到正常模式
stm #1,DXR10
WAIT_1INT:
ld *(serial_int_flag),A ;讀取中斷標(biāo)識(shí)
nop
nop
nop
bc WAIT_1INT,AEQ ;等待中斷
st #0,*(serial_int_flag) ;中斷標(biāo)識(shí)清空
stlm B,DXR10
WAIT_2INT:
ld *(serial_int_flag),A
nop
nop
nop
ADD #1,A
bc WAIT_2INT,AEQ
st #0,*(serial_int_flag)
RET
結(jié)束語(yǔ)
本文介紹了利用TMS320C54X的同步串行接口與TLC320AD50C之間通信的方法,介紹了AD50與DSP串口通信的硬件接口及軟件??梢钥闯?,此接口電路簡(jiǎn)潔,編程方便,可實(shí)現(xiàn)高精度A/D、D/A轉(zhuǎn)換,可以對(duì)語(yǔ)音信號(hào)進(jìn)行無(wú)失真采樣,完全能滿(mǎn)足后續(xù)語(yǔ)音信號(hào)處理的要求,與DSP接口簡(jiǎn)單,高性能,低功耗,已成為當(dāng)前語(yǔ)音處理的主流產(chǎn)品,廣泛應(yīng)用在音頻處理,語(yǔ)音增強(qiáng),語(yǔ)音安全,回聲抵消,VoU等電話或語(yǔ)音應(yīng)用領(lǐng)域。
評(píng)論