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