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