基于AD7864和DSP的4路數據采集系統
摘要: 本文給出了基于AD7864和DSP的4路數據采集系統的設計。
關鍵詞: AD7864;DSP;CPLD
引言
在陣列信號處理中,往往需要對多個陣元同時進行采樣,以保留接收到的各路信號之間的相位信息。對于一個四元十字陣,就需要對4路信號同時進行采樣,以便在隨后的處理中解算出各路信號之間的時延關系。在這個過程中,高速率和高精度的A/D轉換就顯得尤為重要,它直接影響著隨后的數字處理結果的精度。AD7864是一種高速、低功耗、可以4通道同時采樣的A/D轉換器。它的主要特性有:高速12位A/D轉換器;同時采樣4個輸入通道,并具有4個采樣、保持放大器;0.35ms采樣保持獲取時間,每一個通道轉換時間1.65ms;可以通過軟件或者硬件的方法選取用于采樣的通道;單電源供電(+5V);多個轉換電壓范圍;具有高速并行接口,可以與處理器直接連接;低功耗,每通道功耗90mW;對于每一個模擬輸入通道均有過壓保護電路。AD7864 4通道同時工作時,最大采樣率可以高達130KHz。
DSP與AD7864的接口電路
AD7864具有片內時鐘、讀寫允許邏輯、多種通道選擇方式以及內部精確的2.5V參考電壓,這使得其與高速處理器的接口變得非常簡單。考慮到實際工程中要求的工作電壓、轉換精度以及系統硬件設計的便利等因素,在硬件系統中選用AD7864-1。DSP選用TI公司的TMS320C5409。
AD7864轉換后的數據讀取有兩種方法,即轉換中讀取數據和轉換后讀取數據。轉換中讀取數據是在下一個通道轉換結束之前讀取前一個通道的數據。轉換后讀取數據是在全部通道均轉換結束后,才讀取數據。在此硬件系統中,采用轉換后讀取數據的方式。其具體工作過程如下:
當轉換起始信號有效時(上升沿),所有采樣保持器進入保持狀態,開始對選擇的通道采樣。Busy輸出信號在轉換起始信號上升沿時被觸發為高電平,并在轉換過程中一直保持為高,當全部通道轉換結束后,才變為低電平。轉換結束信號在被選擇的通道中每一個通道轉換結束時均有效。各個通道轉換后的數據保存在AD7864內部相應的鎖存器中。所有通道轉換結束后,當讀信號和片選信號有效時,就可以并行地從數據總線上讀取數據。數據讀取時,按照轉換順序進行讀取,每次讀取后自動修改內部鎖存器指針(指向存放下一個轉換結束的數據鎖存器)。當所有通道數據均讀取后,內部鎖存器指針自動復位(指向存放第一個轉換結束的數據鎖存器)。
根據上述AD7864的工作原理,DSP與AD7864的接口電路如圖1所示。
AD7864的軟硬選擇信號/S SEL置低,這時被選擇的轉換通道就由硬件通道信號的狀態來決定,由于需要對4路信號進行采樣,所以把全部置高,即4路通道全部選通。
DSP與AD7864具體邏輯控制關系由CPLD來完成。CPLD部分邏輯關系圖如圖2。
AD7864的12位數據線DB0-DB11經過緩存與DSP數據線的低12位D0-D11相連,DSP另外高4位則始終為邏輯低;對于正數,這種數據擴展不會產生影響,而對于負數,則需要在軟件上進行一定的處理。DSP的通用I/O引腳XF接到AD7864的引腳,XF信號由軟件控制來啟動AD7864的模數轉換。DSP的I/O空間選擇信號引腳和地址線A15的邏輯組合作為AD7864的片選信號。當有效,即為低電平時,如果地址線A15為低,則AD7864被片選。此時可以對AD7864進行讀寫操作,AD7864的地址為# 7FFF。DSP讀寫信號RW 和AD7864的片選信號的組合作為AD7864的讀信號。當AD7864被片選,且RW為高時,就可以從AD7864讀取數據,此時AD7864的寫信號必須為高電平。DSP的存儲器選通信號和讀信號經過邏輯與后作為緩存的使能信號,分別控制DSP外部程序和A/D轉換數據從緩存中送到DSP的數據總線上去。
圖1 DSP與AD7864的接口電路
圖2 CPLD內部控制邏輯電路
軟件設計
DSP采樣程序設計采用C和匯編語言混合編程的方式。TMS320C54x編譯器可以利用asm語句將C54xDSP的匯編語言指令或偽指令直接嵌入編程器輸出的匯編語言文件中。asm語句提供了C/C++語言不能提供的對DSP硬件的訪問。利用asm語句拉低拉高XF引腳的輸出信號來啟動AD7864的模數轉換,轉換起始信號保持低電平的時間最少為35ns,整個轉換過程所用的時間t為:t=X(tCONV+t9)-t9;其中,X為通道數,tCONV為單通道轉換時間,當用內部時鐘時,其最大值為1.65ms,t9為轉換結束信號的脈沖寬度,最小值為75ns,最大值為180ns。同樣利用asm語句執行匯編重復指令RPT,重復執行空操作NOP,達到比較精確的軟件延時目的,這樣做便于在滿足基本轉換時間的前提下,調節采樣率的大小。4路信號全都完成轉換模數后,DSP就可以從地址# 7FFF依次讀取4路數據,在兩次讀取數據的過程中,需要一定的時間間隔。在讀取完4路數據到下一次轉換開始之間有一段靜止時間,一般為50ns到100ns。
此外,DSP數據線有16位,而AD7864只有12位,并且數值都是以補碼表示的,由于在硬件處理中把送到DSP數據線高4位上的數據都置為0,所以對于AD7864送給DSP的負數,要想在DSP中表示正確,還需要進行符號位擴展。具體辦法就是對AD7864送給DSP的數據和0x800進行按位與運算,如果為真,則表示此數為負數,把此數和0xF000進行按位或運算,即在此數的高4位補上全1,這樣負數就能在DSP中正確表示了。
結語
筆者利用AD7864和DSP,設計了一種數據采集系統,它能對4路模擬信號同時進行采樣,采樣率能由DSP程序調節,采樣后的數據送往DSP進行實時處理,在實際陣列信號處理中達到了滿意的效果。
評論