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