目前,在數(shù)據(jù)采集系統(tǒng)的硬件設(shè)計(jì)方案中,有采用通用單片機(jī)和USB相結(jié)合的方案,也有采用DSP和USB相結(jié)合的方案,前者雖然硬件成本低,但是時(shí)鐘頻率較低,難以滿足數(shù)據(jù)采集系統(tǒng)對(duì)速度要求;后者雖然可以實(shí)現(xiàn)高速傳輸,但DSP價(jià)格過(guò)于昂貴。而利用FPGA和USB接口芯片結(jié)合的方案,具有功耗低、時(shí)鐘頻率高、速度快、效率高、組合形式靈活等特點(diǎn),是單片機(jī)和DSP所無(wú)法比擬的。
系統(tǒng)總體方案
根據(jù)本系統(tǒng)要實(shí)現(xiàn)的功能,該系統(tǒng)硬件部分采用“信號(hào)調(diào)理電路+A/D轉(zhuǎn)換電路+FPGA+USB 2.0接口芯片”的模式加以設(shè)計(jì)。系統(tǒng)采用可編程邏輯器件FPGA控制信號(hào)調(diào)理電路的工作,同時(shí)控制A/D轉(zhuǎn)換器采樣,這樣通過(guò)硬件描述語(yǔ)言來(lái)描述可以使硬件設(shè)計(jì)如同軟件一樣靈活,并且FPGA可重復(fù)編程的特性提高了工作效率和設(shè)計(jì)的靈活性。另外系統(tǒng)所需的高速緩存FIFO是由USB 2.0接口芯片的片內(nèi)資源來(lái)實(shí)現(xiàn)的,這樣做可以降低系統(tǒng)成本、提高系統(tǒng)可靠性。USB 2.0接口芯片的固件程序由集成在芯片內(nèi)的增強(qiáng)型8051單片機(jī)進(jìn)行控制,固件程序存放在主機(jī)上,在系統(tǒng)上電后通過(guò)上位機(jī)驅(qū)動(dòng)程序下載到芯片內(nèi)部的RAM內(nèi)。系統(tǒng)的總體方案如圖1所示。
圖1 數(shù)據(jù)采集系統(tǒng)結(jié)構(gòu)圖
整個(gè)硬件電路的工作流程是:當(dāng)上位機(jī)發(fā)來(lái)數(shù)據(jù)采集請(qǐng)求,F(xiàn)PGA就開始啟動(dòng)對(duì)信號(hào)調(diào)理模塊和A/D采樣控制模塊的控制。經(jīng)過(guò)A/D轉(zhuǎn)換后的數(shù)據(jù)按照一定的時(shí)序發(fā)送到USB 2.0接口芯片的端口FIFO里面,然后再把數(shù)據(jù)通過(guò)USB總線傳輸給上位機(jī)。
系統(tǒng)硬件設(shè)計(jì)與實(shí)現(xiàn)
本數(shù)據(jù)采集系統(tǒng)的硬件設(shè)計(jì)主要是基于USB 2.0的硬件數(shù)據(jù)采集卡的設(shè)計(jì)。此采集卡的作用是首先用A/D轉(zhuǎn)換器對(duì)輸入的電路實(shí)驗(yàn)數(shù)據(jù)進(jìn)行采樣量化,然后將采樣得到的數(shù)據(jù)通過(guò)USB 2.0總線傳送到上位機(jī),以便進(jìn)行后續(xù)處理。
主控芯片簡(jiǎn)介
Altera公司的Cyclone II FPGA是基于Stratix II的90nm工藝推出的低成本FPGA,由于增加了DSP硬件塊,在芯片總體性能上要優(yōu)于Cyclone系列器件,而在成本上卻仍維持Cyclone系列低成本的優(yōu)點(diǎn)。本設(shè)計(jì)選用了Cyclone II系列中的EP2C5Q208芯片,其邏輯單元有4608個(gè),M4K RAM有26個(gè),鎖相環(huán)有2個(gè)、乘法器模塊有13個(gè),最大用戶可用I/O引腳為142個(gè),可以滿足本設(shè)計(jì)的需要。圖2為EP2C5Q208的外圍連接電路框圖。
圖2 主控芯片連接框圖
電源電路
設(shè)計(jì)電源電路之前,首先對(duì)系統(tǒng)中各器件所需電源的需求情況進(jìn)行分析,電源電路需要提供5種直流電壓才能滿足系統(tǒng)對(duì)電源的需求:FPGA的供電電壓是3.3V和1.2V;信號(hào)調(diào)理電路電壓為+12V和-12V;A/D轉(zhuǎn)換器ADC0809所需要的電壓為5V;USB 2.0接口芯片CY7C68013需要3.3V供電。而系統(tǒng)只有USB總線能提供+5V電壓,因此需使用開關(guān)電源進(jìn)行電壓轉(zhuǎn)換。電壓轉(zhuǎn)換電路如圖3所示。
圖3 電源電路
信號(hào)調(diào)理電路
信號(hào)調(diào)理電路的作用是對(duì)微弱的輸入信號(hào)進(jìn)行適當(dāng)?shù)恼{(diào)理,使其電壓范圍在0~5V之間,從而滿足A/D轉(zhuǎn)換芯片的輸入電壓的要求。本調(diào)理電路中采用了運(yùn)算放大器芯片AD827。該芯片最高帶寬為50MHz,芯片內(nèi)部集成2片運(yùn)放,分別用來(lái)進(jìn)行信號(hào)的放大平移和衰減。信號(hào)調(diào)理電路如圖4所示。
圖中左半部分為第一個(gè)環(huán)節(jié),這個(gè)環(huán)節(jié)輸入電壓V1,輸出電壓為V2,對(duì)于微弱的輸入信號(hào),可以經(jīng)過(guò)調(diào)理達(dá)到正常電平范圍之內(nèi)。右半部分為第二個(gè)環(huán)節(jié),這個(gè)環(huán)節(jié)是信號(hào)的衰減環(huán)節(jié),若第一個(gè)環(huán)節(jié)得到的電壓幅值較大,超過(guò)了0~5V的電壓范圍,則可以將此信號(hào)在第二個(gè)環(huán)節(jié)進(jìn)行衰減。第二個(gè)環(huán)節(jié)的最大增益為1,通過(guò)調(diào)節(jié)電位器,可以使信號(hào)最小衰減為0。這樣,信號(hào)經(jīng)過(guò)信號(hào)調(diào)理電路之后,就可以滿足A/D采樣的要求了。
A/D采樣電路
經(jīng)過(guò)調(diào)理后的模擬信號(hào)需要經(jīng)A/D轉(zhuǎn)換芯片進(jìn)行采樣、量化、編碼,然后將編碼后的數(shù)據(jù)經(jīng)過(guò)USB 2.0接口芯片傳送至USB主機(jī),A/D采樣電路是整個(gè)數(shù)據(jù)采集電路的關(guān)鍵部分。本設(shè)計(jì)所使用的A/D采樣芯片是ADC0809轉(zhuǎn)換芯片,它是通過(guò)采樣逐次逼近的方法完成A/D轉(zhuǎn)換的。ADC0809由單一+5V電源供電,片內(nèi)帶有鎖存功能的8路模擬多路開關(guān),可以對(duì)8路0~5V的模擬信號(hào)分時(shí)進(jìn)行轉(zhuǎn)換。A/D轉(zhuǎn)化器電路的連接如圖5所示,其中,參考電壓VREF+接+5V,VREF-接地,輸入模擬電壓范圍為0~5V。
圖5 A/D采樣電路
圖6 從屬FIFO模式連接框圖
USB 2.0接口電路
Cypress公司的EZ-USB FX2系列芯片是世界上第一個(gè)集成了USB 2.0協(xié)議的微處理器,它支持12Mb/s的全速傳輸和480Mb/s的高速傳輸,可使用4種USB傳輸方式。本系統(tǒng)采用EZ-USB FX2系列中CY7C68013-56PVC芯片。該芯片集成了USB 2.0收發(fā)器、串行接口引擎SIE(Serial Interface Engine)、8.5KB的RAM、4KB的FIFO存儲(chǔ)器、I/O口、通用可編程接口GPIF(General Programmable Interface)。
由于在EZ-USB FX2的內(nèi)部嵌入了增強(qiáng)型的8051,所以一般的數(shù)據(jù)傳輸都可以通過(guò)8051來(lái)控制實(shí)現(xiàn),但是因?yàn)?051本身的工作頻率較低,限制了與外圍電路之間的數(shù)據(jù)傳輸速度的進(jìn)一步提高。雖然這種限制在12Mb/s的全速模式下不是很明顯,但是當(dāng)數(shù)據(jù)傳輸速度提升到高速時(shí),8051將成為系統(tǒng)的帶寬瓶頸。為此,本設(shè)計(jì)選擇采用了從屬FIFO接口模式進(jìn)行傳輸,這樣8051就不會(huì)參與數(shù)據(jù)的傳輸,但它可以通過(guò)FIFO或RAM的方式訪問(wèn)所傳輸?shù)臄?shù)據(jù)。由于篇幅限制,在此只給出其連接框圖。
系統(tǒng)軟件設(shè)計(jì)
本系統(tǒng)軟件的設(shè)計(jì)主要包括A/D轉(zhuǎn)換控制程序、USB設(shè)備固件程序(Firmware)、主機(jī)USB設(shè)備驅(qū)動(dòng)程序、主機(jī)端應(yīng)用程序和遠(yuǎn)程客戶端應(yīng)用程序幾個(gè)模塊。系統(tǒng)的軟件構(gòu)成框圖如圖7所示。
圖7 系統(tǒng)軟件設(shè)計(jì)框圖
A/D轉(zhuǎn)換控制程序主要是控制A/D轉(zhuǎn)換芯片的工作時(shí)序,然后把轉(zhuǎn)換完成后的數(shù)字信號(hào)發(fā)送到FPGA內(nèi)部。本設(shè)計(jì)的該程序部分是在可編程邏輯器件FPGA中實(shí)現(xiàn)的。
芯片CY7C68013的固件程序負(fù)責(zé)處理PC機(jī)發(fā)來(lái)的各種USB請(qǐng)求,以完成主機(jī)和外圍電路之間的數(shù)據(jù)傳輸,例如,完成對(duì)接口芯片的I/O端口和存儲(chǔ)單元的初始化;設(shè)置CPU時(shí)鐘頻率,配置相應(yīng)端點(diǎn)的工作狀態(tài);初始化工作模式和數(shù)據(jù)傳輸方式;響應(yīng)各種主機(jī)發(fā)送來(lái)的請(qǐng)求等。
設(shè)備驅(qū)動(dòng)程序的主要功能是使Win32應(yīng)用程序能夠正確訪問(wèn)本采集電路的硬件設(shè)備。本系統(tǒng)設(shè)計(jì)的設(shè)備驅(qū)動(dòng)程序是以Microsoft的設(shè)備驅(qū)動(dòng)開發(fā)包DDK(Device Driver Kit)為開發(fā)工具,以微軟驅(qū)動(dòng)模型WDM(Windows Driver Model)的形式編寫的。應(yīng)用程序通過(guò)API函數(shù)發(fā)出相應(yīng)命令以后,設(shè)備驅(qū)動(dòng)程序以I/O請(qǐng)求包IRP(I/O Request Packets)的形式封裝該命令,并把它傳遞給底層的總線驅(qū)動(dòng)程序USBD(Universal Serial Bus Driver),從而達(dá)到與硬件設(shè)備進(jìn)行通信的目的,最后總線驅(qū)動(dòng)程序給上層驅(qū)動(dòng)程序返回一個(gè)狀態(tài)信號(hào)來(lái)告知本次通信是否成功完成。
主機(jī)端應(yīng)用程序的主要功能是接收硬件設(shè)備發(fā)送的數(shù)據(jù),并且把采集到的數(shù)據(jù)進(jìn)行顯示和存儲(chǔ)。
結(jié)論
本文主要完成了一種高速數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì),該數(shù)據(jù)采集系統(tǒng)利用高性能FPGA、高速A/D轉(zhuǎn)換器、高速USB 2.0接口芯片,是一種具有高速USB接口的外置式數(shù)據(jù)采集卡,信號(hào)的處理都是在PC機(jī)上完成的,這樣不僅縮小了電路體積,提高了系統(tǒng)的穩(wěn)定性,而且節(jié)約了系統(tǒng)成本。