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