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