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