冷佳鵬 ,劉文怡
(1.中北大學(xué) 電子測試技術(shù)國家重點實驗室,山西 太原 030051;2.儀器科學(xué)與動態(tài)測試教育部重點實驗室,山西 太原 030051)
隨著工業(yè)測試設(shè)備待測參數(shù)性能的不斷增多、數(shù)據(jù)速率不斷加快,傳統(tǒng)的數(shù)據(jù)采集系統(tǒng)已不能滿足目前數(shù)據(jù)采集的實時性和可靠性要求。例如,單片機的時鐘頻率較低,軟件在單片機中的順序執(zhí)行占用了大量時間,且單片機的內(nèi)部邏輯資源和I/O資源有限,基于單片機的數(shù)據(jù)采集系統(tǒng)已不能滿足目前工業(yè)上高采樣速率、多采樣通道的要求。而USB2.0總線的理論傳輸速度可達480 Mb/s,USB接口可以連接多個不同設(shè)備,支持熱插拔;在軟件方面,為USB設(shè)計的驅(qū)動程序和應(yīng)用軟件可以自動啟動,無需用戶干預(yù);USB設(shè)備也不涉及IRQ沖突等問題,它單獨使用自己的保留中斷,不與其他設(shè)備爭用PC的有限資源,為用戶簡化了硬件配置的繁瑣過程[1]?,F(xiàn)場可編程門陣列(FPGA)具有時鐘頻率高、其內(nèi)部所有邏輯控制全部由硬件完成以及可靠性好等單片機無法比擬的優(yōu)勢,已經(jīng)越來越廣泛地應(yīng)用于電子系統(tǒng)中[2]。由此,本文設(shè)計一種基于USB總線的數(shù)據(jù)采集系統(tǒng),利用FPGA控制模/數(shù)轉(zhuǎn)換芯片ADS8365進行模/數(shù)轉(zhuǎn)換,再將轉(zhuǎn)換后的數(shù)字信號通過USB接口快速上傳至計算機[3]。
本系統(tǒng)主要由信號調(diào)理電路、FPGA控制核心、A/D轉(zhuǎn)換電路、FIFO緩存和USB接口組成。信號調(diào)理電路對輸入的模擬信號進行預(yù)處理,使其能被ADS8365完整量化;FPGA負(fù)責(zé)接收所有的指令和控制信號,并控制ADS8365進行同步模/數(shù)轉(zhuǎn)換,同時將轉(zhuǎn)換后的數(shù)據(jù)發(fā)送到FIFO緩存;ADS8365對模擬信號完成16位量化;FIFO緩存量化后的數(shù)字量;USB接口從FIFO中讀取數(shù)據(jù)并上傳至計算機。系統(tǒng)采用54 MHz主頻,根據(jù)待采集信號的特征對模擬信號進行27 kHz頻率采樣。系統(tǒng)采用Xilinx公司的 SPARTAN-3AN系列 FPGA XC3S200AN,這款FPGA具有288 KB的Block RAM,可以用作FIFO數(shù)據(jù)緩存。此外,XC3S200AN有4 MB的片上閃存,有助于減小系統(tǒng)的PCB面積和布線難度。USB接口芯片采用CY7C68013,其內(nèi)置符合USB2.0協(xié)議的收發(fā)器、串行接口引擎、增強型8051內(nèi)核以及可編程外圍接口。系統(tǒng)整體結(jié)構(gòu)圖如圖1所示。
FPGA并行處理的特性為系統(tǒng)的功能擴展提供了很大的靈活性。例如,添加Flash芯片并配以控制程序就可以實現(xiàn)數(shù)據(jù)的非易失存儲。
要使輸入的模擬信號能夠被完全量化,則信號電壓要求在ADS8365的轉(zhuǎn)換范圍之內(nèi),且要有一定的驅(qū)動強度。輸入的模擬信號電壓范圍為0~5 V,先用高精度電阻將模擬信號分壓,再利用運算放大器OPA4340對分壓后的信號進行電壓跟隨,以保證輸入信號能夠被完整采集。信號調(diào)理電路如圖2所示。
輸入信號經(jīng)分壓后與地之間接了一個12 pF電容以濾除信號的高頻干擾。
為滿足多通道、高精度數(shù)據(jù)采集的要求,本系統(tǒng)選用16 bit分辨率、6通道、最高250 kHz采樣率的差分輸入高性能模/數(shù)轉(zhuǎn)換芯片ADS8365。利用其內(nèi)部2.5 V電壓作為參考電壓,經(jīng)過電壓跟隨后接入負(fù)向輸入端,將經(jīng)調(diào)理后的模擬信號接正向輸入端。這樣可以有效地降低外界干擾,保證采樣準(zhǔn)確度。A/D轉(zhuǎn)換模塊電路如圖3所示。
FPGA 通過控制 ADS8365的 BYTE(輸出位寬)、RD(讀信號)、CLK(轉(zhuǎn)換時 鐘)、HOLD(保 持信號)、A2、A1、A0(地址)等信號完成模/數(shù)轉(zhuǎn)換,并將轉(zhuǎn)換后的16位數(shù)字量發(fā)送到FIFO緩存。
與FPGA相比,USB2.0接口是一個高速接收單元。數(shù)據(jù)緩存是不同工作速度的系統(tǒng)之間不可缺少的部分,使用FIFO可以使各系統(tǒng)工作在自己的時鐘頻率下,不需要互相握手就能進行數(shù)據(jù)交流。為縮短系統(tǒng)開發(fā)周期、提高系統(tǒng)穩(wěn)定性,本設(shè)計利用Xilinx公司的開發(fā)軟件ISE提供的IP核在XC3S200AN內(nèi)部構(gòu)建了功能穩(wěn)定的FIFO,其容量大小為 8 KB,讀、寫寬度都為 16 bit,可以為每通道緩存2 KB數(shù)據(jù)。FIFO內(nèi)部結(jié)構(gòu)如圖4所示。使用FIFO IP核只需要根據(jù)滿、空等狀態(tài)信號就可以進行數(shù)據(jù)傳輸,降低了系統(tǒng)復(fù)雜度。
FPGA將模/數(shù)轉(zhuǎn)換后通過內(nèi)部FIFO的空、滿信號數(shù)據(jù)發(fā)送至USB單片機(CY7C68013),計算機再從單片機中讀取數(shù)據(jù)。本文以FPGA為主控芯片,CY7C68013工作在Slave FIFO模式。FPGA與CY7C68013接口電路如圖5所示。
FPGA主要對ADS8365和FIFO進行控制,其策略是不停地將從ADS8365采集到的數(shù)據(jù)的高13位連同1 bit指令信息和2 bit通道信息寫入FIFO,數(shù)據(jù)接收設(shè)備則通過FIFO的空信號來決定是否繼續(xù)讀取數(shù)據(jù)。
通過 FPGA對 ADS8365中 A2、A1、A0 3個地址位的配置可以產(chǎn)生不同的采樣順序,本設(shè)計中采用循環(huán)采樣方法,順序地對4個通道進行采樣。
控制ADS8365采集第一個通道數(shù)據(jù)并寫入FIFO的部分Verilog-HDL程序如下(其中以“2'b00”表示通道 1):
本設(shè)計將ADS8365模/數(shù)轉(zhuǎn)換操作和內(nèi)部FIFO寫操作融合到一個進程中,在簡化時序的同時提高了系統(tǒng)穩(wěn)定性。對于8 bit數(shù)據(jù)接口,可以通過FPGA將ADS6365的16 bit數(shù)據(jù)配置成2個8 bit數(shù)據(jù)順序輸出。
USB接口應(yīng)用程序通過驅(qū)動程序?qū)SB芯片進行命令控制,讀取FIFO中的數(shù)據(jù)并發(fā)送至計算機。CY7C68013程序開發(fā)包提供了USB標(biāo)準(zhǔn)設(shè)備請求和數(shù)據(jù)傳輸接口。程序首先調(diào)用Win32函數(shù)CreatFile()得到設(shè)備驅(qū)動程序的句柄,再調(diào)用DeviceIOControl(),通過句柄把 IO Control Code(IOCTL)和 輸 入/輸 出 緩沖提交給驅(qū)動程序。程序框圖如圖6所示。
圖6 FPGA異步讀USB FIFO狀態(tài)機
利用本系統(tǒng)對噪聲傳感器輸出的頻率為26.4 Hz、幅值為4 V的正弦波進行采集,可以得到8 bit十六進制數(shù)據(jù),所得數(shù)據(jù)分布符合正弦曲線。根據(jù)數(shù)據(jù)繪出的波形如圖7所示。
圖7 采集26.4 Hz、4 V正弦波得到的圖形
軟件處理的數(shù)據(jù)只截取量化數(shù)據(jù)的高8位,分析圖中數(shù)據(jù),最大值為 E4h,最小值為 18h,其差值轉(zhuǎn)換電壓為:[(E4h-18h)/FFh]×5 V=4 V。
本文所設(shè)計的基于USB總線的多通道數(shù)據(jù)采集系統(tǒng)具有實時性好、可靠性高、易與其他設(shè)備通信、電路簡單和擴展性強等優(yōu)點,適合應(yīng)用于多通道、高精度要求的數(shù)據(jù)采集設(shè)備中,是一種較理想的數(shù)據(jù)采集方案。
[1]薛園園.USB應(yīng)用開發(fā)技術(shù)大全[M].北京:人民郵電出版社,2007.
[2]李艷軍,郭正剛,張志新,等.基于 FPGA多通道同步數(shù)采集系統(tǒng)設(shè)計[J].微計算機信息,2007(26):212-213.
[3]陳曦,邱志成.基于 Verilog HDL的通信系統(tǒng)設(shè)計[M].北京:中國水利水電出版社,2009.