基于A(yíng)D7864和DSP的4路數據采集系統
引言
在陣列信號處理中,往往需要對多個(gè)陣元同時(shí)進(jìn)行采樣,以保留接收到的各路信號之間的相位信息。對于一個(gè)四元十字陣,就需要對4路信號同時(shí)進(jìn)行采樣,以便在隨后的處理中解算出各路信號之間的時(shí)延關(guān)系。在這個(gè)過(guò)程中,高速率和高精度的a/d轉換就顯得尤為重要,它直接影響著(zhù)隨后的數字處理結果的精度。ad7864是一種高速、低功耗、可以4通道同時(shí)采樣的a/d轉換器。它的主要特性有:高速12位a/d轉換器;同時(shí)采樣4個(gè)輸入通道,并具有4個(gè)采樣、保持放大器;0.35ms采樣保持獲取時(shí)間,每一個(gè)通道轉換時(shí)間1.65ms;可以通過(guò)軟件或者硬件的方法選取用于采樣的通道;單電源供電(+5v);多個(gè)轉換電壓范圍;具有高速并行接口,可以與處理器直接連接;低功耗,每通道功耗90mw;對于每一個(gè)模擬輸入通道均有過(guò)壓保護電路。ad7864
4通道同時(shí)工作時(shí),最大采樣率可以高達130khz。
dsp與ad7864的接口電路
ad7864具有片內時(shí)鐘、讀寫(xiě)允許邏輯、多種通道選擇方式以及內部精確的2.5v參考電壓,這使得其與高速處理器的接口變得非常簡(jiǎn)單??紤]到實(shí)際工程中要求的工作電壓、轉換精度以及系統硬件設計的便利等因素,在硬件系統中選用ad7864-1。dsp選用ti公司的tms320c5409。
ad7864轉換后的數據讀取有兩種方法,即轉換中讀取數據和轉換后讀取數據。轉換中讀取數據是在下一個(gè)通道轉換結束之前讀取前一個(gè)通道的數據。轉換后讀取數據是在全部通道均轉換結束后,才讀取數據。在此硬件系統中,采用轉換后讀取數據的方式。其具體工作過(guò)程如下:
當轉換起始信號有效時(shí)(上升沿),所有采樣保持器進(jìn)入保持狀態(tài),開(kāi)始對選擇的通道采樣。busy輸出信號在轉換起始信號上升沿時(shí)被觸發(fā)為高電平,并在轉換過(guò)程中一直保持為高,當全部通道轉換結束后,才變?yōu)榈碗娖?。轉換結束信號在被選擇的通道中每一個(gè)通道轉換結束時(shí)均有效。各個(gè)通道轉換后的數據保存在ad7864內部相應的鎖存器中。所有通道轉換結束后,當讀信號和片選信號有效時(shí),就可以并行地從數據總線(xiàn)上讀取數據。數據讀取時(shí),按照轉換順序進(jìn)行讀取,每次讀取后自動(dòng)修改內部鎖存器指針(指向存放下一個(gè)轉換結束的數據鎖存器)。當所有通道數據均讀取后,內部鎖存器指針自動(dòng)復位(指向存放第一個(gè)轉換結束的數據鎖存器)。
根據上述ad7864的工作原理,dsp與ad7864的接口電路如圖1所示。
ad7864的軟硬選擇信號/s sel置低,這時(shí)被選擇的轉換通道就由硬件通道信號的狀態(tài)來(lái)決定,由于需要對4路信號進(jìn)行采樣,所以把全部置高,即4路通道全部選通。
dsp與ad7864具體邏輯控制關(guān)系由cpld來(lái)完成。cpld部分邏輯關(guān)系圖如圖2。
ad7864的12位數據線(xiàn)db0-db11經(jīng)過(guò)緩存與dsp數據線(xiàn)的低12位d0-d11相連,dsp另外高4位則始終為邏輯低;對于正數,這種數據擴展不會(huì )產(chǎn)生影響,而對于負數,則需要在軟件上進(jìn)行一定的處理。dsp的通用i/o引腳xf接到ad7864的引腳,xf信號由軟件控制來(lái)啟動(dòng)ad7864的模數轉換。dsp的i/o空間選擇信號引腳和地址線(xiàn)a15的邏輯組合作為ad7864的片選信號。當有效,即為低電平時(shí),如果地址線(xiàn)a15為低,則ad7864被片選。此時(shí)可以對ad7864進(jìn)行讀寫(xiě)操作,ad7864的地址為#
7fff。dsp讀寫(xiě)信號rw 和ad7864的片選信號的組合作為ad7864的讀信號。當ad7864被片選,且rw為高時(shí),就可以從ad7864讀取數據,此時(shí)ad7864的寫(xiě)信號必須為高電平。dsp的存儲器選通信號和讀信號經(jīng)過(guò)邏輯與后作為緩存的使能信號,分別控制dsp外部程序和a/d轉換數據從緩存中送到dsp的數據總線(xiàn)上去。

圖1 dsp與ad7864的接口電路

圖2 cpld內部控制邏輯電路 軟件設計
dsp采樣程序設計采用c和匯編語(yǔ)言混合編程的方式。tms320c54x編譯器可以利用asm語(yǔ)句將c54xdsp的匯編語(yǔ)言指令或偽指令直接嵌入編程器輸出的匯編語(yǔ)言文件中。asm語(yǔ)句提供了c/c++語(yǔ)言不能提供的對dsp硬件的訪(fǎng)問(wèn)。利用asm語(yǔ)句拉低拉高xf引腳的輸出信號來(lái)啟動(dòng)ad7864的模數轉換,轉換起始信號保持低電平的時(shí)間最少為35ns,整個(gè)轉換過(guò)程所用的時(shí)間t為:t=x(tconv+t9)-t9;其中,x為通道數,tconv為單通道轉換時(shí)間,當用內部時(shí)鐘時(shí),其最大值為1.65ms,t9為轉換結束信號的脈沖寬度,最小值為75ns,最大值為180ns。同樣利用asm語(yǔ)句執行匯編重復指令rpt,重復執行空操作nop,達到比較精確的軟件延時(shí)目的,這樣做便于在滿(mǎn)足基本轉換時(shí)間的前提下,調節采樣率的大小。4路信號全都完成轉換模數后,dsp就可以從地址# 7fff依次讀取4路數據,在兩次讀取數據的過(guò)程中,需要一定的時(shí)間間隔。在讀取完4路數據到下一次轉換開(kāi)始之間有一段靜止時(shí)間,一般為50ns到100ns。
此外,dsp數據線(xiàn)有16位,而ad7864只有12位,并且數值都是以補碼表示的,由于在硬件處理中把送到dsp數據線(xiàn)高4位上的數據都置為0,所以對于ad7864送給dsp的負數,要想在dsp中表示正確,還需要進(jìn)行符號位擴展。具體辦法就是對ad7864送給dsp的數據和0x800進(jìn)行按位與運算,如果為真,則表示此數為負數,把此數和0xf000進(jìn)行按位或運算,即在此數的高4位補上全1,這樣負數就能在dsp中正確表示了。
結語(yǔ)
筆者利用ad7864和dsp,設計了一種數據采集系統,它能對4路模擬信號同時(shí)進(jìn)行采樣,采樣率能由dsp程序調節,采樣后的數據送往dsp進(jìn)行實(shí)時(shí)處理,在實(shí)際陣列信號處理中達到了滿(mǎn)意的效果。
評論