新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > DSP與串行A/D組成的高速并行數(shù)據(jù)采集系統(tǒng)

DSP與串行A/D組成的高速并行數(shù)據(jù)采集系統(tǒng)

——
作者:作者:盧海軍 王樹(shù)勛 時(shí)間:2007-01-26 來(lái)源:《今日電子》 收藏

引言

tms320vc5402(以下簡(jiǎn)稱c5402)是德州儀器公司1999年推出的定點(diǎn)數(shù)字信號(hào)處理器(dsp)。與tms320c54x系列的其他芯片相比,c5402以其獨(dú)有的高性能、低功耗和低價(jià)格受到了人們的廣泛青睞。c5402增強(qiáng)外設(shè)有軟件等待狀態(tài)發(fā)生器、鎖相環(huán)時(shí)鐘發(fā)生器、6通道直接存儲(chǔ)器訪問(wèn)(dma)控制器、增強(qiáng)型8位并行主機(jī)接口(hpi)等。兩個(gè)可編程的多通道緩沖串口(mcbsp)能夠全雙工、快速地與其他同步串口進(jìn)行數(shù)據(jù)交換,硬件連接簡(jiǎn)單,串口的工作模式和傳送數(shù)據(jù)的格式可通過(guò)編程實(shí)現(xiàn)。

因?yàn)閏5402內(nèi)部沒(méi)有集成a/d,因此在數(shù)據(jù)采集時(shí)需要使用a/d轉(zhuǎn)換芯片,a/d芯片與c5402的接口設(shè)計(jì)成為一個(gè)重要的問(wèn)題。a/d轉(zhuǎn)換芯片一般有串行a/d和并行a/d。為了充分利用c5402所提供的多通道緩沖串口資源,簡(jiǎn)化系統(tǒng)設(shè)計(jì),本文系統(tǒng)使用了ti公司的高速串行a/d來(lái)同時(shí)完成兩路數(shù)據(jù)采集,大大提高了串口工作效率。

本文引用地址:http://m.butianyuan.cn/article/20942.htm

串行a/d芯片tlv1572

tlv1572是高速的十位串行a/d轉(zhuǎn)換芯片,可以通過(guò)3或4個(gè)串行口線直接與dsp或其他數(shù)字微處理器串口相連,不需要外加邏輯,但是轉(zhuǎn)換速度受sclk供給時(shí)鐘的限制。tlv1572與dsp的多通道緩沖串口相連是通過(guò)cs、sclk、do和fs四條線完成的,此時(shí)dsp的clkr產(chǎn)生移位脈沖,fsr產(chǎn)生幀同步信號(hào),并分別提供給tlv1572。當(dāng)t-lv1572與其他串口微處理器相連接時(shí)fs必須提供高電平,通過(guò)cs、sclk、do三條線來(lái)完成數(shù)據(jù)傳輸。當(dāng)cs為高時(shí),a/d芯片各管腳處于三態(tài)狀態(tài)。在cs由高變低時(shí),tlv1572檢測(cè)fs引腳的狀態(tài)來(lái)確定工作模式,若fs為低則為dsp模式,若fs為高則為其他微處理器模式。

當(dāng)tlv1572工作在dsp模式時(shí),必須保證在cs變低時(shí),fs為低電平,并且要鎖存一定時(shí)間。cs為低時(shí),do跳出三態(tài)狀態(tài),但是直到fs為高時(shí)芯片才脫離休眠狀態(tài)。tlv1572在每個(gè)時(shí)鐘sclk的下降沿檢測(cè)fs的狀態(tài),一旦檢測(cè)到fs為高,tlv1572開(kāi)始采樣。在fs的下降沿,a/d芯片通過(guò)移位時(shí)鐘將數(shù)據(jù)移到do上。在6個(gè)前導(dǎo)0傳送之后,dsp可以在時(shí)鐘的下降沿得到a/d轉(zhuǎn)換的數(shù)據(jù),如圖1所示。在最低位移出之后,a/d芯片自動(dòng)進(jìn)入休眠狀態(tài),直到fs下一次有效。如果fs在16位傳輸完成后立即有效,則a/d開(kāi)始新的數(shù)據(jù)轉(zhuǎn)換,此時(shí)a/d為連續(xù)轉(zhuǎn)換。若fs在tlv1572轉(zhuǎn)換數(shù)據(jù)的過(guò)程中變高,則a/d芯片被復(fù)位,開(kāi)始新的數(shù)據(jù)轉(zhuǎn)換周期。因此可以通過(guò)設(shè)置fs,改變數(shù)據(jù)傳輸?shù)奈粩?shù)。

當(dāng)tlv1572工作在非dsp模式下時(shí),fs引腳必須接高電平。在每次轉(zhuǎn)換的過(guò)程中都必須提供16個(gè)時(shí)鐘信號(hào),若微處理器無(wú)法一次接收16位數(shù)據(jù),可以分成8位兩次接收,兩次接收的時(shí)間間隔不能大于100μs,此時(shí)cs必須一直處于有效狀態(tài)。在dsp模式下轉(zhuǎn)換的開(kāi)始是由fs信號(hào)有效來(lái)決定的,而在微處理器模式下,數(shù)據(jù)轉(zhuǎn)換cs有效后的第一個(gè)時(shí)鐘信號(hào)上升沿開(kāi)始的,如圖2所示。在微處理器模式下,也可以通過(guò)設(shè)置cs來(lái)改變傳送的位數(shù)。

c5402的多通道緩沖串口

c5402提供兩個(gè)高速、全雙工、多通道緩沖串行口mcbsp0、mcbsp1,用數(shù)據(jù)線d(r/x)、幀同步線fs(r/x)和移位時(shí)鐘線clk(r/x)實(shí)現(xiàn)發(fā)送數(shù)據(jù)和接收數(shù)據(jù)。mcbsp通過(guò)6個(gè)引腳(dx、dr、clkx、clkr、fsx和fsr)與外設(shè)接口。

(1)clkx(發(fā)送時(shí)鐘輸入或輸出)
芯片內(nèi)部發(fā)送以為寄存器(xsr)通過(guò)該時(shí)鐘信號(hào)將數(shù)據(jù)發(fā)送到dx引腳。該串口可以通過(guò)pcr寄存器的clkxm位配置成使用內(nèi)部時(shí)鐘或者使用外部時(shí)鐘。
(2)fsx(發(fā)送幀同步輸入或輸出)
fsx是發(fā)送開(kāi)始的標(biāo)志,串口可以通過(guò)pcr寄存器的fxm位配置成輸入或輸出。
(3)dx(串行數(shù)據(jù)發(fā)送)
串口數(shù)據(jù)發(fā)送是通過(guò)該口進(jìn)行的。
(4)clkr(接收時(shí)鐘)
clkr用來(lái)接收外部時(shí)鐘信號(hào),該時(shí)鐘信號(hào)將dr數(shù)據(jù)移入接收移位寄存器(rsr)。可以通過(guò)pcr寄存器的clkrm位配置成使用內(nèi)部時(shí)鐘或者使用外部時(shí)鐘。
(5)fsr(接收幀同步輸入)
fsr接收幀同步脈沖信號(hào),標(biāo)志數(shù)據(jù)接收開(kāi)始。可以通過(guò)pcr寄存器的frm位配置成輸入,也可以配置成輸出。
(6)dr(串行數(shù)據(jù)接收)
串口數(shù)據(jù)接收是通過(guò)該口進(jìn)行的。接收過(guò)程中,數(shù)據(jù)首先通過(guò)移位時(shí)鐘clkr的作用下移入rsr(接收移位寄存器),然后,rsr中的數(shù)據(jù)再拷貝到ddr(數(shù)據(jù)接收寄存器),拷貝完成時(shí),產(chǎn)生rint中斷通知cpu來(lái)響應(yīng)或revta中斷通知dma響應(yīng),同時(shí)設(shè)置rrdy中斷標(biāo)志位,也可以用查詢方式來(lái)完成,從數(shù)據(jù)寄存器中讀出數(shù)據(jù)。clkx、clkr、fsx、fsr即可以由內(nèi)部采樣率發(fā)生器產(chǎn)生,也可以由外部設(shè)備驅(qū)動(dòng)。mcbsp分別在相應(yīng)時(shí)鐘的上升沿和下降沿進(jìn)行數(shù)據(jù)檢測(cè)。每個(gè)mcbsp最多可支持128通道的發(fā)送和接收,串行字長(zhǎng)可選,包括8、12、16、20、24和32位,還支持μ率和a率數(shù)據(jù)壓縮擴(kuò)展。

系統(tǒng)硬件設(shè)計(jì)

在分析了c5402多通道緩沖串口和串行a/d轉(zhuǎn)換器tlv1572工作特點(diǎn)后,可以利用tlv1572工作在dsp模式,使其與c5402進(jìn)行接口,在同步時(shí)鐘信號(hào)的作用下完成a/d轉(zhuǎn)換的數(shù)據(jù)傳輸。圖3為整個(gè)數(shù)據(jù)采集系統(tǒng)的硬件原理圖,本系統(tǒng)根據(jù)c5402的多通道緩沖串口特性,充分利用兩個(gè)緩沖串口與兩片串行a/d tlv1572進(jìn)行數(shù)據(jù)傳輸。

為了達(dá)到與c5402很好匹配,a/d電源和參考電壓都接了3.3v。a/d的fs接dsp的fsx和fsr,使數(shù)據(jù)輸入的幀同步信號(hào)由dsp產(chǎn)生。sclk接dsp的clkx和clkr,這樣數(shù)據(jù)的輸入和輸出時(shí)鐘均來(lái)自dsp。c5402與兩片a/d進(jìn)行數(shù)據(jù)傳輸時(shí),設(shè)置串口中斷工作在00模式,即串口數(shù)據(jù)到達(dá)觸發(fā)中斷,這樣cpu可以根據(jù)哪片a/d傳輸數(shù)據(jù)產(chǎn)生相應(yīng)的串口中斷rint0或rint1。當(dāng)兩個(gè)串口的數(shù)據(jù)同時(shí)到達(dá),即同時(shí)申請(qǐng)中斷時(shí),c5402的cpu會(huì)根據(jù)中斷優(yōu)先級(jí)響應(yīng)rint0中斷,然后再響應(yīng)中斷rint1。為了保證數(shù)據(jù)通信的可靠性,避免數(shù)據(jù)沖突,在響應(yīng)rint1中斷的過(guò)程中,串口0無(wú)中斷請(qǐng)求。

c5402芯片內(nèi)配置有4k×16bit片內(nèi)屏蔽式的rom(f000-ffff)。在4k rom資源里包含了bootloader程序,它允許程序放在外部較慢的存儲(chǔ)器或微處理器中,并調(diào)到高速的dram存儲(chǔ)器中運(yùn)行,大大減小了c5402內(nèi)部掩膜的需要,降低了電路設(shè)計(jì)成本。系統(tǒng)獨(dú)立工作的內(nèi)部邏輯由cpld來(lái)完成,如圖4所示。

c5402上電復(fù)位裝載時(shí),由于bootloader程序在初始化時(shí)設(shè)置xf為高電平,在系統(tǒng)進(jìn)入并行引導(dǎo)裝載模式后,c5402從數(shù)據(jù)尋址為0ffffh單元(a15=1,選中flash)中讀取將要載入的程序存儲(chǔ)區(qū)首地址,和并行轉(zhuǎn)載數(shù)據(jù)流。此時(shí),c5402可以將at29lv1024 flash地址08000h~0ffffh單元中的數(shù)據(jù)讀到c5402對(duì)應(yīng)于0000h~7fffh尋址區(qū)的片內(nèi)daram和片外sram is61lv6164中。

bootloader程序結(jié)束后,在這個(gè)系統(tǒng)中,用戶程序的第一條語(yǔ)句為rsbx xf,即置xf引腳為低電平,flash始終不選通。這樣,sram的高32k區(qū)域(08000h~0ffffh)被釋放出來(lái),可以作為dsp系統(tǒng)運(yùn)行時(shí)的數(shù)據(jù)區(qū)或程序區(qū)使用。

系統(tǒng)軟件設(shè)計(jì)

系統(tǒng)的軟件設(shè)計(jì)主要包括多通道緩沖串口的初始化、串口中斷服務(wù)程序和并行裝載程序設(shè)計(jì)等。

● 程序設(shè)計(jì)應(yīng)注意的問(wèn)題
(1)mcbsp工作在數(shù)據(jù)接收中斷方式,因此全局中斷和串口中斷的相應(yīng)位應(yīng)該合理設(shè)置。同時(shí),在設(shè)置中斷向量表時(shí),使中斷向量表的位置與處理器模式狀態(tài)寄存器pmst中的中斷向量指針iptr相對(duì)應(yīng),使iptr的9位地址指向128字的中斷向量所在的程序頁(yè),同時(shí),中斷向量表要嚴(yán)格按照c5402規(guī)定的格式編寫,否則不能正確地產(chǎn)生需要的中斷結(jié)果。
(2)要實(shí)現(xiàn)dsp數(shù)據(jù)采集系統(tǒng)的脫機(jī)獨(dú)立運(yùn)行,需要給每臺(tái)dsp配備獨(dú)立的程序存儲(chǔ)器,在整個(gè)系統(tǒng)上電或者復(fù)位時(shí),由引導(dǎo)裝載程序?qū)⒋嬗谄獾某绦虼a裝載到片內(nèi)daram或者系統(tǒng)的擴(kuò)展存儲(chǔ)器中,然后運(yùn)行程序來(lái)完成對(duì)mcbsp進(jìn)行設(shè)置和其他程序。
(3)為了實(shí)現(xiàn)兩路a/d和c5402之間的時(shí)序匹配,避免數(shù)據(jù)沖突,需要注意c5402采樣率發(fā)生寄存器srgr1中clkgdv位的設(shè)置,使c5402工作時(shí)鐘周期大于兩個(gè)串口中斷的響應(yīng)時(shí)間。
若tlv1572以400ksps轉(zhuǎn)換速率來(lái)計(jì)算,每片a/d應(yīng)該是每2.5μs向dsp發(fā)送一次數(shù)據(jù),申請(qǐng)中斷,cpu響應(yīng)中斷來(lái)接收數(shù)據(jù)。dsp工作在100mhz時(shí),時(shí)鐘周期為10ns,因此每個(gè)緩沖串口中斷服務(wù)程序中可以執(zhí)行一個(gè)少于125個(gè)時(shí)鐘周期的程序而不影響串口的接收,若串口中斷程序的時(shí)間不夠用,還可以適當(dāng)降低a/d轉(zhuǎn)換速率,為串口中斷提供更長(zhǎng)的中斷服務(wù)時(shí)間。
● 串口接收的部分初始化程序
下面根據(jù)多通道緩沖串口的特性和兩路串行a/d工作的要求,主要介紹一下串口接收的軟件設(shè)計(jì)和串口部分關(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,時(shí)鐘周期clkg=6.4mhz
stm #7, spsa0
stm #300fh, spsd0 ; #3010h寫入srgr20,幀周期為16個(gè)clkg
stm #0eh,spsa0
stm #0a04h, spsd0 ; #0a04h寫入pcr0,fsx, clkx輸出,fsr,clkr輸入
;=====初始化串口1=====
串口1的初始化程序參見(jiàn)串口0
;=====啟動(dòng)接收=======
stm #0,spsa0
stm #0001h, spsd0 ;啟動(dòng)串口0接收
stm #1,spsa0
stm #00c0h, spsd0 ;內(nèi)部產(chǎn)生時(shí)鐘產(chǎn)生fsg
stm #0,spsa1
stm #0001h, spsd1 ;啟動(dòng)串口1接收
stm #1,spsa1
stm #00c0h, spsd1 ;內(nèi)部產(chǎn)生時(shí)鐘產(chǎn)生fsg
;==串口0接收中斷子程序===
.sect "brint0"
host_brint0:
rsbx intm ;關(guān)中斷
ldm drr0,a
stl a,*ar4+ ; 接收
……
其他處理程序
rete

結(jié)束語(yǔ)

本文介紹了兩片串行a/d與c5402組成的數(shù)據(jù)采集系統(tǒng),該系統(tǒng)硬件連接簡(jiǎn)單,a/d的采樣率可以通過(guò)串口時(shí)鐘靈活設(shè)置,通用性強(qiáng)。該數(shù)據(jù)采集系統(tǒng)已經(jīng)成功應(yīng)用到實(shí)驗(yàn)室的信號(hào)處理系統(tǒng)中,顯示出設(shè)計(jì)靈活、高速、可靠等優(yōu)點(diǎn)。



關(guān)鍵詞:

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉