基于DSP與串行A/D組成的高速并行數(shù)據(jù)采集系統(tǒng)方案
TMS320VC5402(以下簡稱C5402)是德州儀器公司1999年推出的定點數(shù)字信號處理器(DSP)。與TMS320C54x系列的其他芯片相比,C5402以其獨有的高性能、低功耗和低價格受到了人們的廣泛青睞。C5402增強外設(shè)有軟件等待狀態(tài)發(fā)生器、鎖相環(huán)時鐘發(fā)生器、6通道直接存儲器訪問(DMA)控制器、增強型8位并行主機接口(HPI)等。兩個可編程的多通道緩沖串口(McBSP)能夠全雙工、快速地與其他同步串口進(jìn)行數(shù)據(jù)交換,硬件連接簡單,串口的工作模式和傳送數(shù)據(jù)的格式可通過編程實現(xiàn)。
因為C5402內(nèi)部沒有集成A/D,因此在數(shù)據(jù)采集時需要使用A/D轉(zhuǎn)換芯片,A/D芯片與C5402的接口設(shè)計成為一個重要的問題。A/D轉(zhuǎn)換芯片一般有串行A/D和并行A/D。為了充分利用C5402所提供的多通道緩沖串口資源,簡化系統(tǒng)設(shè)計,本文系統(tǒng)使用了TI公司的高速串行A/D來同時完成兩路數(shù)據(jù)采集,大大提高了串口工作效率。
串行A/D芯片TLV1572
TLV1572是高速的十位串行A/D轉(zhuǎn)換芯片,可以通過3或4個串行口線直接與DSP或其他數(shù)字微處理器串口相連,不需要外加邏輯,但是轉(zhuǎn)換速度受SCLK供給時鐘的限制。TLV1572與DSP的多通道緩沖串口相連是通過CS、SCLK、DO和FS四條線完成的,此時DSP的CLKR產(chǎn)生移位脈沖,F(xiàn)SR產(chǎn)生幀同步信號,并分別提供給TLV1572。當(dāng)T-LV1572與其他串口微處理器相連接時FS必須提供高電平,通過CS、SCLK、DO三條線來完成數(shù)據(jù)傳輸。當(dāng)CS為高時,A/D芯片各管腳處于三態(tài)狀態(tài)。在CS由高變低時,TLV1572檢測FS引腳的狀態(tài)來確定工作模式,若FS為低則為DSP模式,若FS為高則為其他微處理器模式。
圖一 TL1572在DSP模式下的轉(zhuǎn)換時序圖
圖二 TL1572在微處理器模式下的轉(zhuǎn)換時序圖
當(dāng)TLV1572工作在DSP模式時,必須保證在CS變低時,F(xiàn)S為低電平,并且要鎖存一定時間。CS為低時,DO跳出三態(tài)狀態(tài),但是直到FS為高時芯片才脫離休眠狀態(tài)。TLV1572在每個時鐘SCLK的下降沿檢測FS的狀態(tài),一旦檢測到FS為高,TLV1572開始采樣。在FS的下降沿,A/D芯片通過移位時鐘將數(shù)據(jù)移到DO上。在6個前導(dǎo)0傳送之后,DSP可以在時鐘的下降沿得到A/D轉(zhuǎn)換的數(shù)據(jù),如圖1所示。在最低位移出之后,A/D芯片自動進(jìn)入休眠狀態(tài),直到FS下一次有效。如果FS在16位傳輸完成后立即有效,則A/D開始新的數(shù)據(jù)轉(zhuǎn)換,此時A/D為連續(xù)轉(zhuǎn)換。若FS在TLV1572轉(zhuǎn)換數(shù)據(jù)的過程中變高,則A/D芯片被復(fù)位,開始新的數(shù)據(jù)轉(zhuǎn)換周期。因此可以通過設(shè)置FS,改變數(shù)據(jù)傳輸?shù)奈粩?shù)。
當(dāng)TLV1572工作在非DSP模式下時,F(xiàn)S引腳必須接高電平。在每次轉(zhuǎn)換的過程中都必須提供16個時鐘信號,若微處理器無法一次接收16位數(shù)據(jù),可以分成8位兩次接收,兩次接收的時間間隔不能大于100μs,此時CS必須一直處于有效狀態(tài)。在DSP模式下轉(zhuǎn)換的開始是由FS信號有效來決定的,而在微處理器模式下,數(shù)據(jù)轉(zhuǎn)換CS有效后的第一個時鐘信號上升沿開始的,如圖2所示。在微處理器模式下,也可以通過設(shè)置CS來改變傳送的位數(shù)。
C5402的多通道緩沖串口
C5402提供兩個高速、全雙工、多通道緩沖串行口McBSP0、McBSP1,用數(shù)據(jù)線D(R/X)、幀同步線FS(R/X)和移位時鐘線CLK(R/X)實現(xiàn)發(fā)送數(shù)據(jù)和接收數(shù)據(jù)。McBSP通過6個引腳(DX、DR、CLKX、CLKR、FSX和FSR)與外設(shè)接口。
(1)CLKX(發(fā)送時鐘輸入或輸出)
芯片內(nèi)部發(fā)送以為寄存器(XSR)通過該時鐘信號將數(shù)據(jù)發(fā)送到DX引腳。該串口可以通過PCR寄存器的CLKXM位配置成使用內(nèi)部時鐘或者使用外部時鐘。
(2)FSX(發(fā)送幀同步輸入或輸出)
FSX是發(fā)送開始的標(biāo)志,串口可以通過PCR寄存器的FXM位配置成輸入或輸出。
(3)DX(串行數(shù)據(jù)發(fā)送)
串口數(shù)據(jù)發(fā)送是通過該口進(jìn)行的。
(4)CLKR(接收時鐘)
CLKR用來接收外部時鐘信號,該時鐘信號將DR數(shù)據(jù)移入接收移位寄存器(RSR)??梢酝ㄟ^PCR寄存器的CLKRM位配置成使用內(nèi)部時鐘或者使用外部時鐘。
(5)FSR(接收幀同步輸入)
FSR接收幀同步脈沖信號,標(biāo)志數(shù)據(jù)接收開始??梢酝ㄟ^PCR寄存器的FRM位配置成輸入,也可以配置成輸出。
(6)DR(串行數(shù)據(jù)接收)
串口數(shù)據(jù)接收是通過該口進(jìn)行的。接收過程中,數(shù)據(jù)首先通過移位時鐘CLKR的作用下移入RSR(接收移位寄存器),然后,RSR中的數(shù)據(jù)再拷貝到DDR(數(shù)據(jù)接收寄存器),拷貝完成時,產(chǎn)生RINT中斷通知CPU來響應(yīng)或REVTA中斷通知DMA響應(yīng),同時設(shè)置RRDY中斷標(biāo)志位,也可以用查詢方式來完成,從數(shù)據(jù)寄存器中讀出數(shù)據(jù)。CLKX、CLKR、FSX、FSR即可以由內(nèi)部采樣率發(fā)生器產(chǎn)生,也可以由外部設(shè)備驅(qū)動。McBSP分別在相應(yīng)時鐘的上升沿和下降沿進(jìn)行數(shù)據(jù)檢測。每個McBSP最多可支持128通道的發(fā)送和接收,串行字長可選,包括8、12、16、20、24和32位,還支持μ率和A率數(shù)據(jù)壓縮擴展。
系統(tǒng)硬件設(shè)計
在分析了C5402多通道緩沖串口和串行A/D轉(zhuǎn)換器TLV1572工作特點后,可以利用TLV1572工作在DSP模式,使其與C5402進(jìn)行接口,在同步時鐘信號的作用下完成A/D轉(zhuǎn)換的數(shù)據(jù)傳輸。圖3為整個數(shù)據(jù)采集系統(tǒng)的硬件原理圖,本系統(tǒng)根據(jù)C5402的多通道緩沖串口特性,充分利用兩個緩沖串口與兩片串行A/D TLV1572進(jìn)行數(shù)據(jù)傳輸。
為了達(dá)到與C5402很好匹配,A/D電源和參考電壓都接了3.3V。A/D的FS接DSP的FSX和FSR,使數(shù)據(jù)輸入的幀同步信號由DSP產(chǎn)生。SCLK接DSP的CLKX和CLKR,這樣數(shù)據(jù)的輸入和輸出時鐘均來自DSP。C5402與兩片A/D進(jìn)行數(shù)據(jù)傳輸時,設(shè)置串口中斷工作在00模式,即串口數(shù)據(jù)到達(dá)觸發(fā)中斷,這樣CPU可以根據(jù)哪片A/D傳輸數(shù)據(jù)產(chǎn)生相應(yīng)的串口中斷RINT0或RINT1。當(dāng)兩個串口的數(shù)據(jù)同時到達(dá),即同時申請中斷時,C5402的CPU會根據(jù)中斷優(yōu)先級響應(yīng)RINT0中斷,然后再響應(yīng)中斷RINT1。為了保證數(shù)據(jù)通信的可靠性,避免數(shù)據(jù)沖突,在響應(yīng)RINT1中斷的過程中,串口0無中斷請求。
C5402芯片內(nèi)配置有4K×16bit片內(nèi)屏蔽式的ROM(F000-FFFF)。在4K ROM資源里包含了Bootloader程序,它允許程序放在外部較慢的存儲器或微處理器中,并調(diào)到高速的DRAM存儲器中運行,大大減小了C5402內(nèi)部掩膜的需要,降低了電路設(shè)計成本。系統(tǒng)獨立工作的內(nèi)部邏輯由CPLD來完成,如圖4所示。
C5402上電復(fù)位裝載時,由于Bootloader程序在初始化時設(shè)置XF為高電平,在系統(tǒng)進(jìn)入并行引導(dǎo)裝載模式后,C5402從數(shù)據(jù)尋址為0FFFFh單元(A15=1,選中Flash)中讀取將要載入的程序存儲區(qū)首地址,和并行轉(zhuǎn)載數(shù)據(jù)流。此時,C5402可以將AT29LV1024 Flash地址08000h~0FFFFh單元中的數(shù)據(jù)讀到C5402對應(yīng)于0000h~7FFFh尋址區(qū)的片內(nèi)DARAM和片外SRAM IS61LV6164中。
Bootloader程序結(jié)束后,在這個系統(tǒng)中,用戶程序的第一條語句為RSBX XF,即置XF引腳為低電平,F(xiàn)lash始終不選通。這樣,SRAM的高32K區(qū)域(08000h~0FFFFh)被釋放出來,可以作為DSP系統(tǒng)運行時的數(shù)據(jù)區(qū)或程序區(qū)使用。
系統(tǒng)軟件設(shè)計
系統(tǒng)的軟件設(shè)計主要包括多通道緩沖串口的初始化、串口中斷服務(wù)程序和并行裝載程序設(shè)計等。
● 程序設(shè)計應(yīng)注意的問題
(1)McBSP工作在數(shù)據(jù)接收中斷方式,因此全局中斷和串口中斷的相應(yīng)位應(yīng)該合理設(shè)置。同時,在設(shè)置中斷向量表時,使中斷向量表的位置與處理器模式狀態(tài)寄存器PMST中的中斷向量指針I(yè)PTR相對應(yīng),使IPTR的9位地址指向128字的中斷向量所在的程序頁,同時,中斷向量表要嚴(yán)格按照C5402規(guī)定的格式編寫,否則不能正確地產(chǎn)生需要的中斷結(jié)果。
(2)要實現(xiàn)DSP數(shù)據(jù)采集系統(tǒng)的脫機獨立運行,需要給每臺DSP配備獨立的程序存儲器,在整個系統(tǒng)上電或者復(fù)位時,由引導(dǎo)裝載程序?qū)⒋嬗谄獾某绦虼a裝載到片內(nèi)DARAM或者系統(tǒng)的擴展存儲器中,然后運行程序來完成對McBSP進(jìn)行設(shè)置和其他程序。
(3)為了實現(xiàn)兩路A/D和C5402之間的時序匹配,避免數(shù)據(jù)沖突,需要注意C5402采樣率發(fā)生寄存器SRGR1中CLKGDV位的設(shè)置,使C5402工作時鐘周期大于兩個串口中斷的響應(yīng)時間。
若TLV1572以400KSPS轉(zhuǎn)換速率來計算,每片A/D應(yīng)該是每2.5μs向DSP發(fā)送一次數(shù)據(jù),申請中斷,CPU響應(yīng)中斷來接收數(shù)據(jù)。DSP工作在100MHz時,時鐘周期為10ns,因此每個緩沖串口中斷服務(wù)程序中可以執(zhí)行一個少于125個時鐘周期的程序而不影響串口的接收,若串口中斷程序的時間不夠用,還可以適當(dāng)降低A/D轉(zhuǎn)換速率,為串口中斷提供更長的中斷服務(wù)時間。
● 串口接收的部分初始化程序
下面根據(jù)多通道緩沖串口的特性和兩路串行A/D工作的要求,主要介紹一下串口接收的軟件設(shè)計和串口部分關(guān)鍵設(shè)置。
;=====初始化串口0=====
stm #0, SPSA0
stm #0000h, SPSD0 ; #0000H寫入SPCR10
stm #1, SPSA0
stm #0000h, SPSD0 ; #0000H寫入SPCR20
stm #2, SPSA0
stm #0040h, SPSD0 ; #0040H寫入RCRC10,每字16位
stm #3, SPSA0
stm #0040h, SPSD0 ; #0040H寫入RCR20,每幀一段,每段一字
stm #6, SPSA0
stm #000fh, SPSD0 ; #0009H寫入SRGR10,時鐘周期CLKG=6.4MHz
stm #7, SPSA0
stm #300fh, SPSD0 ; #3010H寫入SRGR20,幀周期為16個CLKG
stm #0eh,SPSA0
stm #0a04h, SPSD0 ; #0A04H寫入PCR0,F(xiàn)SX, CLKX輸出,F(xiàn)SR,CLKR輸入
;=====初始化串口1=====
串口1的初始化程序參見串口0
;=====啟動接收=======
stm #0,SPSA0
stm #0001h, SPSD0 ;啟動串口0接收
stm #1,SPSA0
stm #00c0h, SPSD0 ;內(nèi)部產(chǎn)生時鐘產(chǎn)生FSG
stm #0,SPSA1
stm #0001h, SPSD1 ;啟動串口1接收
stm #1,SPSA1
stm #00c0h, SPSD1 ;內(nèi)部產(chǎn)生時鐘產(chǎn)生FSG
;==串口0接收中斷子程序===
.sect "brint0"
host_brint0:
rsbx intm ;關(guān)中斷
ldm drr0,A
stl A,*ar4+ ; 接收
……
其他處理程序
rete
結(jié)束語
本文介紹了兩片串行A/D與C5402組成的數(shù)據(jù)采集系統(tǒng),該系統(tǒng)硬件連接簡單,A/D的采樣率可以通過串口時鐘靈活設(shè)置,通用性強。該數(shù)據(jù)采集系統(tǒng)已經(jīng)成功應(yīng)用到實驗室的信號處理系統(tǒng)中,顯示出設(shè)計靈活、高速、可靠等優(yōu)點。