楊會偉,周先飛,李 敏
(蕪湖職業技術學院 信息工程學院,安徽 蕪湖 241000)
隨著電子技術和超大規模集成電路的發展,傳感器的種類越來越多,為我們從外界獲取各種信息提供了保障。大數據與云計算的出現方便我們從大量的數據中提取準確有用的信息,為了降低信息的誤差,通常會對信息進行多次、多點同步采樣,然后通過多通道AD將多點模擬信息轉換成數字信號進行后期處理,提高信息的準確性。[1-4]
大多的數據處理系統往往通過計算機中專用的數據處理軟件來完成。隨著USB總線的快速發展,大多數計算機尤其是筆記本接口都被USB總線接口取代。為了快速有效地將多通道并行數據傳輸至計算機,設計一種基于FPGA+FT2232H多通道并行數據的USB采集系統,實現多通道并行數據向USB串行數據的轉換,具有很好的實際意義。
要實現多通道并行數據的USB采集,一方面需要將多通道的并行數據依次進行傳輸,這需要對每個通道的數據進行緩存,然后進行選通傳輸;另一方面還需要將每個通道的并行數據轉換成USB串行數據,還沒有專用的芯片可直接實現并行數據到USB的轉換。目前FTDI公司的FT2232B具有 FIFO數據到USB數據轉換的特點,結合FPGA的可編程、并行、多IP核等優點可設計實現基于FPGA+FT2232H的多通道并行數據USB采集系統。該系統主要以FPGA作為主控制核心,采用專用的FIFO-USB器件與FPGA連接,通過在FPGA內部定制FIFO數據緩存IP核,再通過FIFO乒乓操作將數據傳輸至FIFO-USB器件,最終完成多通道并行數據向USB數據的轉換。轉換成USB串行數據后通過USB數據線傳輸至計算機進行顯示和存儲。系統結構如圖1所示。

圖1 采集系統框圖
具體執行流程:(1)系統以FPGA作為主控制核心,前端可連接1~4片8通道16位精度AD模塊;利用Verilog硬件編程語言設計該AD模塊的控制時序電路邏輯并模塊化;(2)利用FPGA內部的存儲IP核資源,在FPGA內部建立4個與AD參數匹配的FIFO存儲單元,根據實際前端AD模塊個數,進行FIFO選通參數設置。例如 :如果只連接一個AD,那么只選通1個FIFO有效,不使用其他3個FIFO,如果連個2個AD,那么選通2個FIFO有效,不使用其他2個FIFO,依此類推。并結合步驟(1)控制時序邏輯電路,將采集的數據依次存儲到各個FIFO中;(3)利用Verilog硬件描述語言,采用多分支結構,實現對多個FIFO的選通輸出,保證某一時刻只有一個FIFO數據輸出;(4)根據FT2232H器件的數據手冊,利用Verilog語言編程完成FPGA內部FIFO數據到FT2232H器件數據的傳輸;(5) 通過專用USB數據線將FIFO-USB模塊連接至計算機;(6)上位機軟件開發實現人性化軟件交互界面,利用FIFO- USB模塊成熟的驅動和函數庫實現多通道數據的動態顯示和存儲。
系統主要完成多通道并行數據到USB串行數據轉換,電路設計暫不考慮FPGA前端與多路AD 模塊的硬件連接,故硬件電路主要包括:FPGA主控單元外圍電路設計、FIFO-USB模塊FT2232H電路設計、FPGA與FT2232H電路連接。
(1)FPGA電路設計
根據系統需求:在FPGA內部創建1~4個8*16的FIFO核資源,考慮到多通道并行數據轉換成USB串行數據的效率要快、外部端口資源豐富、集成度高等因素,系統選用Altera公司65 nm工藝的Cyclon IV系列EP4CE6E22C8型號芯片,其電路主要包括電源模塊、外部時鐘、串行配置設備電路。
電源模塊以外部USB接口5 V電源作為外部輸入電壓,通過AS1117芯片轉換得到FPGA所需的1.5 V內核電壓、3.3 V端口電壓以及2.5 V鎖相環電壓,電壓與地之間連接0.1 uF的濾波電容;FPGA的串行配置設備選用EPCS4作為FPGA設備串行接口閃速存儲裝置;外部時鐘選擇50 MHz外部時鐘。
(2)FT2232H電路設計
FT2232H是具有通道A、通道B的兩通道高速USB2.0 芯片,可支持FT232異步串行接口、FT245 FIFO接口、處理器型FIFO接口以及快速串行接口多種模式。這些模式可在復位后通過外接EEPROM芯片中配置信息進行模式選擇。其外圍電路主要包括:3.3 V IO電壓和1.8 V內核電壓,為了系統的安裝調試方便,統一采用USB接口5 V電壓轉換得到;根據需求外接12 MHz晶振;EEPROM配置模塊采用93C46芯片,通過IIC總線與FT2232H連接;FT2232H輸出的USB數據通過專用的兩個USB引腳DM、DP連接至外部USB接口。
(3)FPGA與FT2232H電路連接
本系統主要實現多通道并行數據的USB采集,根據需求,確定采用FT245異步FIFO模式。在該模式下,只有A通道為有效數據通道,用到的主要引腳包括:①雙向A通道8位寬度數據總線ADBUS[7:0];②讀FIFO數據有效控制信號RXE#,寫FIFO數據有效控制信號TXE#;③FIFO讀使能信號RD#,FIFO寫使能信號WR#,這些信號都是低電平有效;④有效數據USB輸出控制信號SIWU,該信號與PWREN#信號結合使用,將FT2232H的PWREN#信號引腳連接外部的下拉電阻,固定為低電平,使FT2232H工作在正常模式下。FPGA與FT2232H電路連接如圖2所示。

圖2 FPGA與FT2232H電路連接框圖
FT2232H作為高速USB2.0 芯片,在FT245異步FIFO模式下可自動完成FIFO與USB間轉換傳遞,但是為了保證有效數據傳遞的正確性,需要編寫時序控制程序。在FPGA內部,通過Verilog語言編程建立FIFO選通數據輸出控制模塊和FIFO-USB控制模塊。如圖3所示。

圖3 FIFO-USB接口轉換模塊及內部電路連接圖
(1)FIFO選通數據輸出控制
系統前端連接4片8通道16位精度AD模塊,在FPGA內部建立了4個FIFO存儲單元分別用于緩存4片AD采樣數據,4個FIFO通道數據需要經過FIFO數據選通模塊完成循環交替輸出。FIFO數據選通模塊主要通過建立iA0-iA4四個選通控制信號,結合多分支結構if…else if…else完成多FIFO的循環交替輸出。
(2)FIFO-USB控制[5-9]
FIFO數據到USB轉換控制主要通過ADBUS[7:0]、RXE#、TXE#、RD#、WR#、SIWU信號來完成。其中,RXE#、RXE#信號由FT2232T產生,RD#、WR#、SIWU由FPGA編程提供。讀寫控制時序如圖4、圖5所示。

圖4 FT245異步FIFO接口讀時序

圖5 FT245異步FIFO接口寫時序
設計思路如下:①首先通過FPGA將PWREN#信號設置為高電平,使FT2232處于正常模式;②將SIWU信號設置為1,使設備發送到緩沖區的任何數據都要通過USB接口發送出去,提高數據傳輸效率。③讀操作:判斷從FT2232發出的TXF#信號,當該信號為低電平時,每從FIFO選通數據輸出模塊讀取一個通道數據,就生成一個WR#低電平脈沖給FT2232;在WR#為低電平的時間內,將16位的AD數據通過ADBUS[7:0]上傳至FT2232芯片中,完成16位并行數據到USB數據的傳輸,數據的傳輸格式為:高8位、低8位分別發送,并且在低8位和高8位數據前加上1個字節的校驗數據,以保證數據傳輸的正確性。④寫操作,判斷從FT2232發出的RXF#信號,當該信號為低電平時,生成一個RD#低電平脈沖給FT2232,并在RD#為低電平的時間內,通過ADBUS[7:0]讀取FT2232內部FIFO數據到FPGA內部,完成USB數據到并行數據傳輸。
FTDI公司為USB-UART和USB-FIFO提供了兩種可供選擇的軟件接口。一個軟件接口提供了一個虛擬COM端口(VCP),它在系統中顯示為一個遺留COM端口;另一個軟件接口D2XX是通過一個專用DLL (FTD2XX.DLL)提供的,該軟件接口提供了十分完整的庫函數和驅動程序,支持VB.net、Visual C++6.0、LabView多種軟件開發環境。由于VB.net開發環境可視化編程效果好,并且對FTD2XX.DLL操作方便,本設計選用VB.net完成USB上位機數據的采集顯示與存儲。
具體設計流程如下:①通過調用庫函數FT_Open打開USB設備,根據返回值判斷是否打開成功,若打開成功,設置USB的波特率和讀寫功能,建立讀線程pThreadRead = New Thread (AddressOf ReadThread);②然后通過對USB端口進行初始化,設置波特率、清除輸入輸出緩存和訪問超時時間;③創建讀線程并啟動;④執行數據讀線程ReadThread,調用庫里的讀函數FT_Read提取有效數據,并將各個通道數據分離出來;⑤將各個通道的數據經過處理后動態顯示出來,并利用StreamWriter()將各個通道數據寫入文件中進行動態保存。
將多通道并行數據的USB采集系統的USB接口與計算機的USB接口相連,打開電源;打開上位機軟件,選擇通道A的USB轉FIFO模式,選擇HEX格式顯示接受的內容,打開USB設備,開始采集數據,采集界面如圖6所示。

圖6 系統數據采集界面
本次測試共完成5個標準電壓值的16通道采樣,然后計算16通道采樣的平均值作為測試值,采樣結果如表1所示。

表1 16通道采樣表
測試結果表明:本采集系統能夠完成十六通道并行數據到USB接口的轉換,均值采樣絕對誤差約為0.000 8 V,可滿足電力線監控、多相電機控制、儀表控制等領域應用需求。
傳統的數據采集往往采用并行數據轉RS232串口來完成,傳輸效率低。目前大多數計算機尤其是筆記本都利用高速的USB接口取代了RS232串口,基于此,設計一種基于FPGA+FT2232H多通道并行數據的USB采集系統,實現多通道并行數據向USB串行數據的轉換。采用FPGA作為主控單元,充分利用了FPGA的可編程、并行、多IP核的優點,簡化外部硬件電路設計,降低分立器件的數量,系統體積小、功耗低、抗干擾強,穩定性高;利用Verilog語言并行特點保證多個任務模塊同步并發執行,提高數據傳輸效率;上位機采用可視化編程開發環境VB.net,可實現人性化的軟件交互界面,利用FIFO- USB模塊成熟的驅動和函數庫實現多通道數據的采集,采樣絕對誤差約為0.000 8 V,準確性和穩定性高。在多通道數據采集、處理領域具有一定的應用價值。