引 言
LabVIEW是一種基于圖形程序的虛擬儀器編程語言,與傳統儀器相比,虛擬儀器技術以計算機為平臺,在程序界面中有用于模擬真實儀器面板的控件可供調用,可用于設置輸入數值、觀察輸出值以及實現圖表、文本等顯示,因此具有友好的人機界面。LabVIEW具有強大的數據采集、分析、處理、顯示和存儲功能。在測試與測量、數據采集、儀器控制、數字信號分析、工廠自動化等領域獲得了廣泛的應用,顯示出其強勁的生命力。LabVIEW平臺下開發的虛擬儀器在相同硬件條件下,改變軟件即可實現不同的儀器功能,真正實現了“軟件即儀器”的設計理念。
實現LabVIEW對數據的采集和處理,傳統的方法是采用數據采集卡,但是這些數據采集卡設備存在安裝不便,價格昂貴,受計算機插槽數量、地址、中斷資源的限制,可擴展性差等缺點。在LabVIEW平臺下使用USB總線進行數據傳輸,由于USB接口總線具有即插即用,接口簡單,傳送速率高等特點,因此基于Lab-VIEW和USB接口的虛擬儀器具有靈活、可靠、經濟等特點。
鑒于以上LabVIEW和USB接口儀器的優點,實現LabVIEW下USB接口的接口程序就顯得尤為重要。在此,介紹了一種基于LabVIEW與USB的虛擬儀器接口設計的方法。
1 設計方案
由于各類基于USB總線的數據采集、控制的虛擬儀器都涉及到LabVIEW與USB接口程序的設計,為了不失一般性,這里以虛擬示波器為例,介紹該接口程序的設計方法。
1.1 硬件設計方案
該系統是虛擬示波器,主要工作是采集被測模擬信號,并將信號通過USB2.o接口傳輸到PC104計算機,運行計算機LabVIEW平臺下的應用軟件完成數據的處理與記錄,并在顯示器上繪制曲線。
該系統主要由模擬信號采集模塊、FPGA控制模塊、USB傳輸模塊和計算機組成,其系統結構框圖如圖1所示。
1.1.1 FPGA控制模塊
該設計采用Alter公司的Cyclone系列現場可編程門陣列(Field Programmable Gate Array,FPGA),芯片EP1c3T144來實現高速數據控制及傳輸。
EP1C3T144采用TPFQ封裝,擁有100個I/O口和2 910個邏輯單元,是一種高密度、高性能的FPGA。
FPGA的主要功能是高速數據采集、數據幀控制,以及與USB單片機進行通信。具體說明如下:
(1)高速數據采集及增益控制。高速數據采集功能是控制高速A/D的時序進行數據采集;增益控制功能是通過向程控增益放大電路發送控制命令,進而達到控制模擬電路放大倍數的目的。由于篇幅關系,有關這兩個方面的內容不做詳細介紹。
(2)數據幀控制。FPGA每秒向PC機發送100幀和每幀512 B的數據,將如此高速的數據進行準確無誤的控制和傳輸是系統的技術難點之一。該方案中,每幀數據由3部分組成:如圖2所示。
其中,每一幀數據的開始位和結束位是固定數據,計算機的測井應用軟件判斷接收到每一幀數據的幀頭及幀尾是否錯誤。若出現錯誤,將該幀數據丟棄,同時準備接收下一幀數據。數據第二部分,模擬信號由FPGA控制A/D芯片采集得到。
1.1.2 USB傳輸模塊
Cypress公司的。EZ-USB FX2芯片CY7C68013是一款性能較高的USB 2.0微控制器。在單片機上集成USB 2.O收發器、SIE(串行接口引擎)、增強的8051微控制器和可編程的外圍接口。EZ-USB FX2中的智能SIE可以處理大部分USB 2.0協議,使得微控制器可以專注于應用功能,從而減少了開發時間,確保了USB的兼容性。
CY7C68013有3種可用的接口模式:端口、GPIF主控和Slave FIFO方式。在該系統中,根據系統對數據傳輸速度和實時性的要求,配置CY7C68013工作的接口模式為Slave FIFO模式。在Slave FIFO模式下,外部邏輯或外部處理器直接與FX2端點FIFO相連。這種模式下,外部主控器FPGA通過異步方式與CY7C68013進行數據通信。
FPGA與CY7C68013之間的硬件接口框圖如圖3所示。SL_WR/SL_RD是Slave FIFO的寫使能/讀允許信號。FPGA向CY7C68013提供Slave FIFO輸出允許信號SL_OE,僅在數據輸出時有效。FB[7:O]為8位雙向數據總線。ADDR[1:0]為FIFO端點選擇信號。在數據輸入時固定為00,選擇的是端點2;在數據輸出時固定為10,選擇的是端點6。
1.2 軟件設計方案
為了能夠在LabVIEW中充分利用其他編程語言的優勢,LabVIEW提供了強大的外部程序接口能力。這些接口包括DLL,C語言接口(CIN),ActiveX,.NET,DDE,Matlab等。通過DLL,可以方便地調用c,VC,VB等編程語言編寫的程序以及Windows自帶的大量API函數。動態鏈接庫(Dynamic LinkLibrary,DLL)是一個可以多方共享的程序模塊,內部對共享的例程和資源進行了封裝。動態鏈接庫文件的擴展名一般是.dll,DLL和可執行文件(exe)非常相似,最大的區別在于DLL雖然包含了可執行代碼卻不能單獨執行,必須由Windows應用程序直接或間接調用。
因此,開發上層應用軟件的首要工作是DLL動態鏈接庫的開發,在這里DLL動態鏈接庫采用VC++6.0進行開發。LabVIEW調用DLL示意圖如圖4所示,由于DLL能夠調用API函數與USB設備進行通信,而采用NI公司的虛擬儀器軟件開發平臺LabVIEW可以充分發揮虛擬儀器的靈活性。因此,將兩者優勢結合起來,該設計的虛擬示波器用戶控制面板具有界面友好,操作直觀等優點,通過面板上的各種控件便可實現數據的采集、存儲、再現及分析等功能。
2 軟件設計
軟件設計是虛擬儀器開發的必備環節。基于LabVIEW與USB的虛擬儀器的軟件設計分為4部分:主機操作系統上的客戶驅動程序、主機應用程序、Ez-USB FX2的固件程序以及FPGA軟件。
2.1 驅動程序
主機軟件部分包括USB客戶驅動程序和主機應用程序。USB客戶驅程序是支持即插即用功能的標準WDM驅動程序,它為實現控制傳輸、中斷傳輸和批傳輸提供了標準接口函數。一般情況下Cypress公司所提供的客戶驅動程序已經能夠滿足需求,如果有特別的需求,可以在其基礎上開發自己的驅動程序。
2.2 應用程序LabVIEW調用DLL
主機應用程序是系統與用戶的接口,需要一個圖形用戶界面來控制所調用的函數,這里采用LabVIEW來編寫應用程序。它通過調用DLL與驅動程序進行通信,以完成對外設的數據傳輸。在編寫用戶程序時,首先要建立與外設的連接,然后才能實施數據的傳輸。在DLL程序中主要用到2個API函數:一是利用Create-File得到USB句柄;二是利用DeviceIoControl來向設備驅動程序發送請求,完成在EZ-USB FX2中數據批傳輸的讀取與寫入。
采用LabVIEw來設計這里的應用程序,關鍵是通過Call Library Function節點來調用前面所編寫DLL文件中的各個函數。該節點位于Functions Palette的Connectivity |Libraries Executables | Call LibraryFunction Node,如圖5所示。
通過CLF節點來調用前面所編寫的DLL步驟如下:
(1)單擊該節點將其放置在程序框圖中,此時該節點沒有與任何DLL連接;
(2)右擊該節點并選擇Configure選項或者直接雙擊該節點可以打開庫函數配置對話框;
(3)在該模塊的屬性設置中選擇DLL文件中所包含的某個函數,然后再設置好函數的返回類型和參數類型。這樣就可以使LabVIEW調用DLL文件中的一個函數(針對DLL中的每個函數都需要設置一個CallLibrary Function Node)。最后把該模塊的另一端連接到顯示模塊,就可以顯示從USB接口讀進的數據。
2.3 EZ-USB FX2的固件程序
固件程序是指運行在設備CPU中的程序。只有在該程序運行時,外設才能稱之為具有特定功能的外部設備。固件程序負責初始化各硬件單元,重新配置設備。固件代碼的存儲位置一般有2種:
第一種是存在主機中,設備加電后由驅動程序把固件下載到片內RAM后執行,即“重新枚舉”;
第二種是把固件代碼固化到1片E2RPOM中,外設加電后由FX2通過I2C總線下載到片內RAM后自動執行。筆者選用第一種方式,這種方式便于系統的調試和升級。
為了簡化和加速用戶使用EZ-USB FX2芯片進行USB外設的開發過程,Cypress公司提供了一個完整的固件程序架構,用戶只需要提供一個USB描述符表,添加其他端點接收和發送數據的通信代碼,以及控制外圍電路的程序代碼。具體操作可以參考文獻[1]中的內容。
2.4 FPGA軟件
該系統采用VHDL和BlockDiagram/Schematic相結合的方法來對各功能模塊進行邏輯描述,然后通過EDA開發平臺,對FPGA芯片進行編程,實現系統的設計要求。
數據采集系統的數據方向是雙向的。從計算機端來看,“讀數據”即FPGA通過CY7C68013向計算機發送測井數據;“寫數據”即計算機通過CY7C68013向FPGA發送測井命令。
如圖6所示,“讀數據模式”的工作原理是計算機在數據采集模式下,CY7C68013的PD7被設置為低電平,FPGA判斷該位電平為低,則工作在向USB發送數據模式。此時,FPGA判斷USB單片機FULL管腳是否有效,若CY7C68013中FIFO6未滿,則一直向FIFO6發送數據。計算機接收到被A/D數據后,完成計算、繪圖、保存等功能。
“寫數據模式”的工作原理:計算機在發送命令模式下,CY7C68013的PD7被設置為高電平,FPGA判斷該位電平為高,則工作在接收USB發送命令模式。此時,FPGA判斷USB單片機EMPTY管腳是否有效,若CY7C68013中FIFO2未空,則一直讀取FIFO2中的命令數據,同時根據命令改變A/D采集的通道數和程控放大器的增益值。
3 結語
設計的基于LabVIEW與USB的虛擬儀器不但具有體積小,功耗低,成本低,使用靈活方便,硬件電路簡單,可在線更新等特點;而且還充分利用了微機資源和LabVIEw的靈活性,因而易開發,且擴展性好。目前,基于LabVIEW與USB的虛擬儀器已經用于我校電子電工實驗室建設之中,能達到高速數據傳輸、記錄及顯示的要求,具有較高的實用價值。
責任編輯:gt
評論
查看更多