摘 要: 以title="FPGA">FPGA為核心控制模塊,搭載MAX1300為數(shù)據(jù)采集模塊,完成8通道、16位精度數(shù)據(jù)采集系統(tǒng)。采集數(shù)據(jù)在FPGA內(nèi)部儲存,DSP在適當(dāng)時刻對其進行讀取以完成伺服控制工作。針對以往數(shù)據(jù)采集系統(tǒng)的局限,F(xiàn)PGA內(nèi)部對所采集數(shù)據(jù)進行預(yù)處理,減輕了CPU數(shù)據(jù)處理強度和負擔(dān)。詳細介紹了各芯片硬件電路設(shè)計,給出FPGA內(nèi)部各功能模塊邏輯圖。
關(guān)鍵詞: 數(shù)據(jù)采集; FPGA; DSP
數(shù)據(jù)采集是通過采樣電路將輸入的模擬信號轉(zhuǎn)換成離散信號,并送入CPU進行處理,已經(jīng)廣泛應(yīng)用在現(xiàn)代工業(yè)控制的各個方面。數(shù)據(jù)采集的速度和精度,很大程度上影響到整個系統(tǒng)的工作能力。常用數(shù)據(jù)采集方案是以MCU或者DSP為核心,控制數(shù)據(jù)采集并對數(shù)據(jù)進行相應(yīng)處理,A/D轉(zhuǎn)換器的啟動、通道選擇、數(shù)據(jù)傳輸和讀取均依靠軟件編程來實現(xiàn)。由于受MCU或者DSP執(zhí)行指令時間的限制,這種采集方案的速率和效率較低,難以適應(yīng)各種高速信號采集的需要,另外,各種復(fù)雜系統(tǒng)中,CPU要協(xié)調(diào)各外圍設(shè)備工作時序,收發(fā)指令,同時還要完成各種控制算法。若采集數(shù)據(jù)量較大,占用大量CPU資源,限制CPU工作能力,則會大大降低整個系統(tǒng)的工作效率。
本文針對應(yīng)用于伺服控制系統(tǒng)的8通道數(shù)據(jù)采集方案進行設(shè)計,依靠FPGA硬件完成數(shù)據(jù)采集時序控制以及數(shù)據(jù)的預(yù)處理過程,將處理后的數(shù)據(jù)輸送給CPU,使CPU有足夠的資源完成伺服算法。由于FPGA運行速度快,能夠保證數(shù)據(jù)采集的實時性和準(zhǔn)確性。
系統(tǒng)硬件設(shè)計如圖1所示。
1 硬件電路設(shè)計
1.1 A/D轉(zhuǎn)換電路設(shè)計
本設(shè)計采用MAXIM公司的8通道MAX1300芯片。該A/D轉(zhuǎn)換芯片最大可支持115 kS/s采樣速率,以及最大±12 V單端電壓輸入以及±24 V差分電壓輸入,同時由于其比普通A/D轉(zhuǎn)換芯片具有更高的精度(16位數(shù)據(jù)輸出),而且體積小、使用方便、適合使用在各項指標(biāo)嚴格的伺服系統(tǒng)中。圖2為MAX1300硬件設(shè)計圖。
MAX1300外圍電路較其他A/D芯片更為簡單,支持三種總線方式與CPU連接:SPI方式、QSPI方式、MICROWIRE方式。圖2中MAX1300與FPGA連接只使用了CS、DIN、SCLK、DOUT四個引腳,不占用數(shù)據(jù)總線,這在一定程度上節(jié)約了電路板面積,減少了硬件電路設(shè)計的難度。CH0~CH7為模擬電壓輸入通道,AVDD1~2為模擬電壓端,DVDD為數(shù)字電壓端,AGND1~AGND3為模擬地,DGND與DGNDO為數(shù)字地。DVDDO為IO口電壓,根據(jù)MAX1300連接器件IO電壓不同,DVDDO選擇不同電壓值,支持范圍2.7~5.25 V,F(xiàn)PGA選用ALTERA公司CYCLONE系列EP1C6Q240C6,IO電壓為3.3 V,所以DVDDO接3.3 V電壓。REF和REFCAP為參考電壓輸入接口,器件內(nèi)部有4.096 V電壓參考,使用內(nèi)部電壓參考時,REF與REFCAP分別接1 μF和0.1 μF電容接地。MAX1300支持三種采樣模式:external clock mode、external acquisition mode和 internal clock mode,其中external clock mode支持到最高采樣速率115 kS/s,該模式下SSTRB引腳閑置,可以懸空。
CS引腳為片選引腳,芯片所有輸入輸出操作只有在CS為低電平時才有效。DIN引腳為MAX1300數(shù)據(jù)輸入引腳,用于對芯片進行相應(yīng)配置(工作時鐘方式,電壓范圍)。DOUT為數(shù)據(jù)輸出,用于輸出轉(zhuǎn)換后的數(shù)字信號。SCLK為時鐘輸入引腳。進行采集時,DIN引腳在CS變低后的第一個高電平認為是數(shù)據(jù)的起始位,隨后數(shù)據(jù)選擇采集通道,數(shù)據(jù)在每個SCLK時鐘的上升沿進入MAX1300。從第16個時鐘開始,轉(zhuǎn)換后的數(shù)據(jù)在每個SCLK的下降沿經(jīng)DOUT引腳輸出。
1.2 CPU硬件電路設(shè)計
此系統(tǒng)主要應(yīng)用為伺服控制,CPU選用TI公司控制類專用DSP芯片TMS32028335。TMS32028335為新型浮點運算CPU,支持最高150 MHz工作頻率,較之以往的MCU或控制類DSP芯片具有顯著優(yōu)勢。其硬件設(shè)計如圖3所示。
鑒于MAX1300經(jīng)FPGA后輸出為8路16位數(shù)據(jù),因此CPU只使用D15~D0共16位數(shù)據(jù)線以及A2~A0共3位地址線(經(jīng)FPGA內(nèi)部譯碼為8路地址)。CS為TMS32028335外部接口片選信號,無操作時保持為高電平,當(dāng)對外部地址操作時,CS變低。RD為外部接口讀使能信號,WR為外部接口寫使能信號,均在對外部地址操作時變低。VDD為TMS32028335內(nèi)核電壓要求為標(biāo)準(zhǔn)1.9 V,VDDIO為IO電壓,3.3 V,與FPGA的IO接口電壓保持一致。WR信號變低時,TMS32028335將通道地址和MAX1300配置數(shù)據(jù)寫入FPGA,同時啟動MAX1300進行數(shù)據(jù)采集。RD信號變低時,表示DSP從FPGA讀取采集完畢的數(shù)據(jù)。
TMS32028335需要完成伺服系統(tǒng)主要的伺服算法工作,其根據(jù)算法需要,在適當(dāng)時刻通過FPGA啟動MAX1300,CS變低,WR變低,數(shù)據(jù)線和地址線信息寫入FPGA,啟動MAX1300采集數(shù)據(jù)。當(dāng)采集工作完成后,對數(shù)據(jù)進行讀取,CS變低,RD變低,從FPGA讀取數(shù)據(jù)進行處理,完成伺服算法。
2 FPGA時序控制
MAX1300正常工作需要32個工作時鐘,而普通MCU或DSP芯片SPI通信端口最大支持16個工作時鐘,使用起來很不方便,因此實際工作中采用FPGA控制MAX1300的工作時序及數(shù)據(jù)采集,DSP讀取MAX1300采集并經(jīng)FPGA處理后的數(shù)據(jù)。FPGA內(nèi)部時序設(shè)計如圖4所示。
如圖4所示,F(xiàn)PGA時序設(shè)計主要由數(shù)據(jù)發(fā)送模塊TRANSMIT、數(shù)據(jù)接收模塊RECEIVE、數(shù)據(jù)處理模塊PROCESS、A/D采集控制模塊AD_CONTROL以及存儲FIFO組成。
實際采集中,AD_CONTROL模塊按DSP要求控制MAX1300時序工作。需要采集數(shù)據(jù)時,START信號變低后(START連接DSP的WR信號),AD_CONTROL讀取TMS32028335數(shù)據(jù)線和地址線信息(地址線選擇MAX1300采集通道,數(shù)據(jù)線加載MAX1300配置數(shù)據(jù)),并將相應(yīng)數(shù)據(jù)AD_DATA寫入TRANSMIT模塊(配置MAX1300,選擇采集通道)。隨后ADCS信號變低,同時SCLK時鐘開始工作,TRANSMIT模塊在SCLK時鐘作用下將數(shù)據(jù)由ADOUT引腳按位輸出。在采集數(shù)據(jù)之前先對MAX1300進行配置,選擇電壓范圍以及時鐘工作模式。隨后AD_CONTROL連續(xù)輸出32個工作時鐘,在前16個時鐘選擇數(shù)據(jù)采集通道,后16個時鐘接收MAX1300輸出數(shù)據(jù)。AD_CONTROL模塊根據(jù)地址線高低電平產(chǎn)生通道選擇信號CHANNEL,同時產(chǎn)生內(nèi)部FIFO工作時鐘FIFOCLK,控制存儲FIFO的讀寫。
從第17個工作時鐘開始,在每個時鐘的下降沿MAX1300輸出A/D轉(zhuǎn)換后的數(shù)據(jù)。數(shù)據(jù)接收模塊RECEIVE在SCLK時鐘作用下對數(shù)據(jù)接收。接收機制采用通用UART設(shè)計機理,用16倍SCLK的時鐘RDCLK對每位數(shù)據(jù)進行16次采樣。若高電平采樣次數(shù)超過10次,則認為為“1”,否則為“0”。當(dāng)16位數(shù)據(jù)接收完畢時,模塊將其轉(zhuǎn)換為并行數(shù)據(jù)輸送給數(shù)據(jù)處理模塊PROCESS。
MAX1300工作時序如圖5所示。
為了防止A/D數(shù)據(jù)采集過程中由于外界因素產(chǎn)生各種干擾(如尖峰干擾),采用類似于中值濾波的處理方法。設(shè)計中添加PROCESS模塊對數(shù)據(jù)進行處理。采集數(shù)據(jù)時,每個通道數(shù)據(jù)采樣10組,每組采樣3次。將每一組的中值取出后求其平均值,作為此次采樣數(shù)據(jù)的值。這樣在一定程度上去除了外界因素對結(jié)果的影響,也為CPU進行下一步濾波減輕了負擔(dān)。PROCESS模塊對數(shù)據(jù)處理后,F(xiàn)IFOCS信號不變低,根據(jù)AD_CONTROL給出的CHANNEL信號,在FIFOCLK時鐘作用下將數(shù)據(jù)寫入對應(yīng)的FIFO中,每路數(shù)據(jù)對應(yīng)一個FIFO模塊。
PROCESS模塊處理后的數(shù)據(jù)存儲在相應(yīng)FIFO中,TMS32028335在適當(dāng)時刻進行讀取。讀取數(shù)據(jù)時, CS和RD信號變低,F(xiàn)PGA根據(jù)地址線A2~A0,內(nèi)部通過譯碼產(chǎn)生RDCS1、RDCS2等信號(內(nèi)部譯碼部分圖5中未標(biāo)出),從相應(yīng)FIFO讀取相應(yīng)通道的采集數(shù)據(jù)。
本文提出一種新型8通道數(shù)據(jù)采集系統(tǒng),適合應(yīng)用在高精度伺服控制系統(tǒng)中。詳細介紹了A/D轉(zhuǎn)換模塊和CPU硬件設(shè)計電路,采用FPGA完成整個電路時序控制工作。同時,在FPGA內(nèi)部設(shè)置數(shù)據(jù)預(yù)處理模塊,對所采集數(shù)據(jù)進行前置處理,減輕CPU負擔(dān),加大其數(shù)據(jù)處理的能力。經(jīng)實際工作測試,該設(shè)計很好地完成8通道、16位數(shù)據(jù)采集處理工作,達到系統(tǒng)指標(biāo)要求。
參考文獻
[1] ASHENDEN P J. VHDL設(shè)計指南[M]. 北京:機械工業(yè)出版社,2005.
[2] Altera Corporation. Cyclone Device Handbook,Volume 1, 2008,5.
[3] 韓西寧,許暉,焦留芳.基于FPGA的同步數(shù)據(jù)采集處理系統(tǒng)的設(shè)計與實現(xiàn)[J]. 電子技術(shù)應(yīng)用, 2009,35(1): 89-91.