基于DSP與ADS8364的高速數(shù)據(jù)采集處理系統(tǒng)設(shè)計方案
隨著現(xiàn)代科學技術(shù)的發(fā)展和計算機技術(shù)的普及,高速數(shù)據(jù)采集系統(tǒng)已應用于越來越多的場合,如通信、雷達、生物醫(yī)學、機器人、語音和圖像處理等領(lǐng)域。本文介紹的數(shù)據(jù)采集處理系統(tǒng)采用CPLD控制ADS8364完成數(shù)據(jù)的A/D轉(zhuǎn)換,轉(zhuǎn)換后的數(shù)據(jù)預先存儲到FIFO中,再經(jīng)DSP進行前端的數(shù)字信號處理后,通過USB總線傳給上位機,并在上位機上進行存儲、顯示和分析等。該系統(tǒng)完全可以滿足信號采集處理對高精度及實時性的要求。
本文引用地址:http://m.butianyuan.cn/article/257353.htm
1 系統(tǒng)原理
數(shù)據(jù)采集處理系統(tǒng)主要由前端信號調(diào)理電路、ADC芯片ADS8364、CPLD芯片EPM3128A、DSP芯片TMS320F2812、USB芯片CY7C68013及其外圍電路組成。系統(tǒng)原理框圖如圖l所示。
系統(tǒng)主要完成的任務為:DSP接收上位機通過USB總線發(fā)送的命令,完成系統(tǒng)工作參數(shù)的設(shè)置,并通過模擬地址/數(shù)據(jù)總線與CPLD進行通信,向CPLD發(fā)送控制命令;對外部的多路模擬量輸入進行信號調(diào)理,在CPLD控制下進行單通道或多通道A/D轉(zhuǎn)換,將采集到的數(shù)據(jù)存儲在一片F(xiàn)IFO芯片中;當FIFO中存儲的數(shù)據(jù)半滿時,對DSP產(chǎn)生一個中斷信號,DSP收到此中斷信號后,取出FIFO中的部分數(shù)據(jù),進行前端數(shù)字信號處理,將處理完畢的數(shù)據(jù)通過USB總線傳給上位機;上位機實現(xiàn)各種圖形界面操作和后端信號處理,對所采集的信號進行分析。系統(tǒng)可對輸入的多路模擬信號進行同步采樣,這就使得采集到的數(shù)據(jù)不僅含有模擬信號的幅度特性,同時還保持不同模擬信號之間的相位差異;采樣頻率可以預置,以適應不同速率的采樣要求。
2 系統(tǒng)硬件
系統(tǒng)硬件包括信號調(diào)理模塊、A/D轉(zhuǎn)換模塊、DSP處理器模塊、CPLD邏輯控制模塊以及USB通信模塊。
2.1 信號調(diào)理模塊的設(shè)計
外部的多路模擬量輸入信號往往是微弱的傳感器信號,信號的幅值較小,為了方便且不失一般性,假定其幅值范圍為O~25mV。ADS8364待轉(zhuǎn)換的模擬輸入電壓范圍應保持在AGND-0.3V和AVDD+O.3V之間。這里選用低功率變增益儀表放大器INAl29對模擬量輸入信號進行調(diào)理放大,將其放大為0~5V之間。
INAl29是BURR-BROWM公司的一種小功率通用儀表放大器,具有優(yōu)異的精度和很寬的帶寬,在增益高達100時,帶寬達200kHz。它可用單一外部電阻器調(diào)節(jié)其增益,調(diào)節(jié)范圍為l~10000,其放大倍數(shù)計算公式為:
從而使放大輸出電壓在O~5V之間。信號調(diào)理模塊原理圖如圖2所示。
2.2 A/D轉(zhuǎn)換模塊的設(shè)計
該模塊采用了TI公司的高速、低功耗、六通道同步采樣模/教轉(zhuǎn)換器ADS8364,它采用+5V工作電壓,其6個模擬輸入通道分為三組(A,B和C),每組都有一個ADCs保持信號(HOLDA,HOLDB和HOLDC),用來啟動各組的AID轉(zhuǎn)換,6個通道可以進行同步并行采樣和轉(zhuǎn)換。ADS8364采用具有80dB共模抑制能力的全差分輸入通道,將其REFin和REFout引腳接到一起,為差分電路提供2.5V的參考電壓。這里模擬量采用單端輸入,將-IN端接共模電壓2.5V,+IN端接前端信號調(diào)理模塊的輸出。
ADS8364的時鐘信號由外部提供,最高頻率為5MHz,對應的采樣頻率是250kHz。這里由CPLD提供時鐘信號,主要是考慮到CPLD可以靈活地改變時鐘頻率,進而改變系統(tǒng)的采樣頻率。A/D轉(zhuǎn)換完成后產(chǎn)生轉(zhuǎn)換結(jié)束信號EOC。將ADS8364的。BYTE引腳接低電平,使轉(zhuǎn)換結(jié)果以16位的方式輸出。地址/模式信號(A0,Al,A2)決定ADS8364的數(shù)據(jù)讀取方式,可以選擇的方式包括單通道、周期或FIFO模式。將ADD引腳置為高電平,使得讀出的數(shù)據(jù)中包含轉(zhuǎn)換通道信息??紤]到數(shù)據(jù)采集處理系統(tǒng)的采樣頻率一般較高,如果用DSP直接控制ADS8364的訪問,將占用DSP較多的資源,同時對DSP的實時性要求也較高。因此在本系統(tǒng)設(shè)計中,用CPLD實現(xiàn)ADS8364的接口控制電路,并將轉(zhuǎn)換結(jié)果存儲在FIFO芯片中,用DSP實現(xiàn)FIFO芯片的輸出接口。
DSP、CPLD、ADS8364及FIFO之間的接口設(shè)計如圖3所示。
2.3 DSP處理器模塊的設(shè)計
DSP主要負責與USB通信模塊交換數(shù)據(jù)、以模擬地址/數(shù)據(jù)總線的方式與CPLD通信,實現(xiàn)對數(shù)據(jù)采集的控制,完成與FIFO芯片的輸出接口以及對采樣后的數(shù)據(jù)進行前端數(shù)字信號處理(FIR低通濾波)。這里選用TI公司的32位定點DSP TMS320F2812 (以下簡稱F2812),它采用1.8V的內(nèi)核電壓,具有3.3V的外圍接口電壓,最高頻率150MHz,片內(nèi)有18K字的RAM,128K字的高速Flash。
2.4 CPLD邏輯控制模塊的設(shè)計
在該數(shù)據(jù)采集處理系統(tǒng)中,CPLD是一個重要的組成部分。由CPLD組成的邏輯控制模塊接收DSP傳送過來的動作命令,控制A/D轉(zhuǎn)換模塊進行數(shù)據(jù)采集,并提供對FIFO的接口時序,實現(xiàn)轉(zhuǎn)換數(shù)據(jù)的存儲。這里選用Altem公司的EPM3128A芯片,它共有128個宏單元,2500個可用門。
CPLD作為一個單獨的控制執(zhí)行結(jié)構(gòu).通過編寫相應的Verilog HDL代碼,即可生成相應的操作電路,實現(xiàn)對各種輸入信號的鎖存、判斷和處理以及對各種命令信號的執(zhí)行和輸出信號的控制。
2.5 USB通信模塊的設(shè)計
這里選用CYPRESS公司的EZ-USB FX2系列中的CY7C68013作為USB通信控制器芯片,它內(nèi)含增強型8051微控制器,支持USB2.0傳輸協(xié)議,同時也向下兼容USBl.1規(guī)范。該芯片把USB2.0收發(fā)器、SIE(串行接口引擎)、增強型8051微控制器、I2C總線接口以及GPIF(通用可編程接口)集成于一體。CY7C68013提供了SlaveFIFO和GPIF兩種接口模式,Slave FIFO模式是從機模式,外部控制器可以像對普通FIFO存儲器一樣對FX2的多層緩沖FIFO存儲器進行讀寫;GPIF模式是主機模式,可以由軟件設(shè)置讀寫的控制波形,靈活性很大。這里采用的是Slave FIFO模式。
3 系統(tǒng)軟件設(shè)計
系統(tǒng)軟件設(shè)計包括DSP程序設(shè)計、USB固件程序設(shè)計、USB驅(qū)動程序設(shè)計和上位機應用程序設(shè)計。
3.1 DSP程序設(shè)計
DSP編程的主要任務是初始化、管理板上的資源和實現(xiàn)前端數(shù)字信號處理的算法。這里以TI公司提供的功能強大的CCS(Code Composer Studio)為集成開發(fā)環(huán)境。系統(tǒng)上電復位后。首先完成F2812自身的初始化,包括配置RAM塊,設(shè)置I/O模式、定時器模式、中斷等;然后程序進人循環(huán)狀態(tài),等待USB及FIFO的中斷。F2812主程序流程圖如圖4所示。
在F2812的程序存儲器中存儲常用的數(shù)字信號處理算法,F(xiàn)2812在收到上位機通過USB總線發(fā)送的控制信息后,在中斷函數(shù)中選擇某種處理算法,同時向CPLD發(fā)出動作命令,控制A/D轉(zhuǎn)換模塊完成信號的采集并將采集到的數(shù)據(jù)存入FIFO中。當FIFO中數(shù)據(jù)達到半滿時,向F2812提出中斷申請,F(xiàn)2812響應此中斷,在中斷函數(shù)中實現(xiàn)對部分采樣數(shù)據(jù)的讀取,在主循環(huán)程序中根據(jù)上位機選定的處理算法完成數(shù)據(jù)的前端處理,然后將數(shù)據(jù)打包,通過USB總線傳輸給上位機。對于常用的數(shù)字信號處理算法在DSP上的實現(xiàn),這里不再贅述。
3.2 USB固件程序設(shè)計
固件負責輔助硬件讓設(shè)備雙向交換數(shù)據(jù),其主要功能是:接收并處理USB驅(qū)動程序的請求及應用程序的控制指令。CYPRESS公司針對EZ-USB FX2系列芯片給出了一個Firmware庫和Firmware框架(Frame Works),均采用Kei C5l開發(fā)。Firmware庫提供了一些常量、數(shù)據(jù)結(jié)構(gòu)、宏定義、函數(shù)來簡化用戶對芯片的使用。用戶只需要在源程序中包含進fx2.h、fx2regs.h和fx2sdly.h,并且把Ezusb.1ib和UsBJmpTB.obj添加進項目即可。Firmware框架實現(xiàn)了初始化芯片、處理USB標準設(shè)備請求以及掛起狀態(tài)下的電源管理等功能。該框架無需添加任何代碼,將編譯后產(chǎn)生的*.hex文件載入芯片就能與主機進行基本的USB通信,只是不能完成特定的任務。在本系統(tǒng)中,需要選擇適當?shù)膫鬏敺绞?,添加需要使用的端點(Endpoint),在框架預留的地方(如TD_Init()、TD_Poll()等函數(shù)中)添加初始化代碼和完成特定功能的代碼。
USB共有四種數(shù)據(jù)傳輸方式:控制傳輸、中斷傳輸、塊傳輸及同步傳輸,本系統(tǒng)中使用了控制傳輸和塊傳輸??刂苽鬏斨饕脕硗瓿芍鳈C對設(shè)備的各種控制操作,即用來實現(xiàn)位于主機上的USB總線驅(qū)動程序以及編寫的功能驅(qū)動程序?qū)υO(shè)備的各種控制操作;塊傳輸主要用來完成主機和設(shè)備間的大批量數(shù)據(jù)傳輸以及對傳輸?shù)臄?shù)據(jù)進行錯誤檢測(支持“錯誤重傳”功能)。
3.3 USB驅(qū)動程序設(shè)計
CYPRESS FX2開發(fā)包中提供了一個通用的設(shè)備驅(qū)動程序Ezusb.sys,可用于基于EZ-USB FX2系列的芯片,能夠完成基本的USB通信任務。本系統(tǒng)設(shè)計中,利用DDK對上述驅(qū)動程序進行了修改,將不常用的函數(shù)刪除,同時添加了自己定義的函數(shù)。
3.4 上位機應用程序設(shè)計
上位機應用程序主要實現(xiàn)與數(shù)據(jù)采集處理系統(tǒng)間的USB通信、向系統(tǒng)發(fā)送控制命令以及接收系統(tǒng)傳送過來的數(shù)據(jù)并進行存儲、處理與顯示。在Win32系統(tǒng)中,各個設(shè)備被抽象為文件,應用程序通過文件操作API函數(shù)實現(xiàn)與驅(qū)動程序中某個設(shè)備的通信。USB通信常用的API函數(shù)有;CreateFile(),WriteFile(),ReadFile(),DeviceloControl(),CloseFile()等。在應用程序中,只需將上述函數(shù)添加到相應的功能模塊中便可完成應用程序?qū)SB設(shè)備的打開、讀、寫等操作,從而實現(xiàn)兩者的通信。采用LabVIEW語言實現(xiàn)USB通信及儀器界面,而對于后端的信號處理算法則在VC++環(huán)境下實現(xiàn)并生成動態(tài)鏈接庫文件(*.d11),方便LabVIEW的調(diào)用。圖5為上位機上層應用程序的流程圖。
本文將TMS320F2812與ADS8364相結(jié)合,設(shè)計了一套數(shù)據(jù)采集處理系統(tǒng)。該系統(tǒng)采用uSB總線與上位機通信,充分發(fā)揮了USB2.O方便、快捷的優(yōu)點;考慮到對實時性的要求,將某些特定的數(shù)字信號處理算法(如FIR濾波、快速FFT等)放到數(shù)據(jù)采集處理卡上由DSP快速完成。該系統(tǒng)采集精度高,速度快,并可同時采集多路信號。實踐證明,該數(shù)據(jù)采集處理系統(tǒng)可適用于高精度、實時性信號的數(shù)據(jù)采集和處理,具有廣泛的實用價值。
評論