a一级爱做片免费观看欧美,久久国产一区二区,日本一二三区免费,久草视频手机在线观看

新聞中心

EEPW首頁 > 測試測量 > 設計應用 > 基于PXI總線的虛擬數字示波器軟件設計

基于PXI總線的虛擬數字示波器軟件設計

作者: 時間:2013-02-05 來源:網絡 收藏

測試總線在近幾十年發展非常迅速:從早期的通用接口總線GPIB到近期的VXI、外圍設備接口總線(Peripheral Component Interconnection,PCI)、PXI、IEEE1394、通用串行(Universal Serial Bus,USB)測試總線。其中是最新一代的測試總線技術,是PCI總線在測試領域的擴展(PCI eXtensions for Instruments),于1997年被美國NI公司首次提出,并于次年被采用為工業標準。可簡單地認為是MicorosoftWindows、Compact PCI(CPCI)和VXI技術的綜合:機械規范方面采用CPCI的核心技術,即歐式插卡機械機構和氣密式針孔接頭,特別適用于惡劣的工業環境;電氣規范方面在保持了PCI/CPCI總線所有優點的前提下增加了專門的系統參考時鐘、觸發總線、星形觸發總線和模塊間的局部總線,以此來滿足高精度的定時、同步與數據通信要求;軟件規范方面也與PCI/CPCI一致,核心是Microsoft公司的Windows操作系統,所以PXI系統與PC兼容,方便選擇很多現成的應用軟件開發工具。系統將PC機性能價格的優勢、CPCI優越的機械性能和VXI易于系統集成化等優點集合了起來,所以是當今發展最快的總線技術。迄今為止,已經有美國NI等數十家公司推出PXI(CPCI)模塊上千種。基于此,本文采用PXI總線,利用現有的PXI工控機及高速板,設計了基于PXI總線的虛擬數字存儲示波器軟件。

基于PXI總線的數字示波器硬件與軟件結構

硬件結構
數字示波器硬件即通常說的板,其原理框圖如圖1所示(圖中省略電源和時鐘部分):雙通道被測信號經過模擬信號調理通道送入高速模數轉換器,所得數字數據先送入2個先入先出(First In First Out,FIFO)緩存再送給本地總現最后由接口芯片PCI9030送入PXI機箱中。硬件的控制和狀態讀取需要根據用戶指令由相應的軟件完成,送入PXI工控機的數據也要由軟件進行處理,最后得到顯示波形和測量結果。

圖1 PXI板原理框圖

軟件構成
Windows系統為了保證系統的安全性、穩定性和可移植性,對系統底層操作采取了屏蔽的措施,利用設備驅動程序將硬件與用戶隔開。所以,軟件分為兩部分:底層設備驅動程序、高層應用軟件。設備驅動程序從廣義上來講是指直接操作硬件的一組函數,完成硬件控制和數據采集。驅動程序在裝入后成為操作系統內核的一部分。高層應用軟件可以認為是虛擬示波器用戶態程序,將用戶界面,即面板上各種開關、按鈕等控件以及波形、測量數據結果顯示區和數據采集、數據分析聯系在一起。當用戶在界面上發出一定的命令后,應用程序首先調用應用程序接口(Application Programming Interface,API)函數,相關的系統服務將調用內核模式的驅動程序實現API,將命令信息轉換成數據采集板認識的數據格式,按照數據采集板的物理地址送到底層硬件。同時數據采集板采集到的數據和底層硬件的各種狀態信息也通過API傳送給應用程序做顯示和控制用。

驅動程序開發

Windows驅動程序編制可以采用Windows設備驅動程序開發包(Device Drivers Kit,DDK),但需要程序員了解復雜的操作系統內核。簡捷的方法是利用KRFTech公司的設備驅動程序開發工具WinDriver。WinDriver是主要用于編寫針對ISA/PCI插卡和USB等硬件設備驅動程序的工具包。對于硬件的訪問,應用程序從WinDriver用戶模式庫調用WinDriver的功能接口,再由這個功能調用WinDriver的內核模塊,即WinDriver自身提供的的驅動程序WinDriver.vxd和WinDriver.sys去完成硬件的訪問。

分析數據采集板,知道驅動程序要完成的基本功能包括設備初始化、對I/O和內存的讀寫、直接存儲器存取(Direct Memory Access,DMA)以及中斷等操作。首先利用WinDriver完成對硬件的診斷操作,獲得數據采集板硬件參數,如端口地址范圍、I/O方式、存儲器地址、內存映射方式、中斷號等。然后再根據硬件的這些參數生成一些源代碼和框架函數,如:
SHBK_HANDLE SHBK_LocateAndOpenBoard(DWORD dwVendorID,DWORD dwDeviceID,BOOL
fUseInt)//定位并開啟數據采集板;
void SHBK_EnableDisableInterrupts(SHBK_HANDLE hSHBK)//定義開啟或終止中斷;
DWORD SHBK_ReadPCIReg(SHBK_HANDLE hSHBK, DWORD dwReg)//讀配置寄存器;
BYTE SHBK_ReadByte (SHBK_HANDLE hSHBK, SHBK_ADDR addrSpace, DWORD dwOffset)//讀出某內存1字節內容,該內存地址為基地址加偏移量dwOffset;
void SHBK_WriteByte (SHBK_HANDLE hSHBK, SHBK_ADDR addrSpace, DWORD dwOffset, BYTE
data)//向內存寫內容為data的1字節數據。

限于篇幅,只是舉例給出了小部分函數,所有函數都未給出具體的實現代碼。利用所有這些框架函數可以對硬件直接進行操作,為方便多個功能均要引用它們,將其封裝在一個動態連接庫(Down-Line Load,DLL)中,再根據實際的硬件設計進行調用,通過對內存和IO進行具體讀寫操作,編制對數據采集板硬件進行操作的功能函數,這些功能函數也被封裝在此DLL中,供給高層應用軟件調用。


上一頁 1 2 下一頁

評論


相關推薦

技術專區

關閉