基于PCI Express總線的數據采集設備的實現
PCB布線時有以下注意點:終端阻抗布線盡量降低容性;一組信號,避免在參考層斷續;高速信號盡量在一層布線,且不打孔,否則要在過孔處打一個U形的地孔;微波傳輸帶,差分信號布線線寬5 mil,間距7 mil;帶狀傳輸線,差分信號布線線寬5 mil,間距5 mil。信號之間的間距在20 mil以上,高壓和邊緣尖銳的信號盡量遠離差分線,避免干擾。
本文引用地址:http://www.104case.com/article/195819.htm接口上數據采用SSTL2信號發送,傳送速率達到250 MB/s。每組數據發送端需串行一個25歐姆電阻,數據接收端上拉50 Ω電阻,提高信號的阻抗匹配。TD和RX每組為8位250 MB/s信號,為了減少信號間的延時誤差,每組信號布線時盡量等長且減少走線長度。
Xilinx PCI Express Pipe Core符合PCI ExpressBase Specification v1.1規范協議和電特性兼容,提供完整的端點解決方案包括物理鏈接與處理及配置管理模塊。支持同步點對點通信,上行和下行流程控制,與PCI Express處理排序規則完全兼容。
Pipe Core數據管理包括傳輸層、數據鏈路層、物理層3個模塊。這些模塊包括產生和進行傳輸包、數據流的控制管理、物理接口初始化、并串轉換以及其他的接口操作。由Pipe Core組成數據通道,并可以構成多PCI Express設備的拓撲結構。如圖2所示。

4 基于WinDriver的驅動程序開發
4.1 采集設備的驅動安裝
將數據采集設備安裝到計算機PCI express×1插槽,啟動計算機時操作系統會檢測到此設備并提示添加硬件向導,忽略此提示。然后,從開始菜單選擇WinDriver/DriverWizard,新建工程。此時DriverWizard將會顯示所有的計算機中的即插即用設備
根據設備信息(ID號)選擇所要測試的設備,如圖3所示,數據采集設備ID號為0301,雙擊此設備,出現設備測試對話框,向指定的設備空間寫入數據測試設備是否工作良好。最后由DriverWizard生成簡單的驅動程序代碼。

4.2 數據傳輸模式與配置函數
驅動程序得到從數據采集設備發送的數據,并存儲在指定的內存空間,根據用戶的選擇可以實時顯示或者存儲在磁盤空間。使用WinDriver編寫的驅動程序通過WinDriver內核模塊與硬件進行通信,本驅動程序要實現的主要功能是從設備讀取指定的數據到計算機,并根據要求發送命令到設備控制寄存器對設備的各種狀態進行控制。
設備與計算機進行數據傳輸有2種模式:PIO模式和DMA(直接內存訪問)模式。PIO模式主要實現計算機和數據采集卡之間的命令傳輸;DMA模式主要針對大塊數據傳輸,傳輸過程中不需要經過CPU,數據直接從設備傳送到內存中,數據傳輸的速率快,可以充分利用PCIE數據帶寬。
為了能從設備中讀到數據,首先應該獲得設備的信息,設備信息主要包括廠家ID號,設備內存映射空間,設備所在插槽號以及其他設備專用配置信息。只有獲得了設備信息才能實現對設備的訪問,這些信息通過下面2個函數得到:
void WD_PciScanCards函數用于檢測安裝于PCIE總線上的設備。Void WD_PciGetCardInfo函數獲取PCI設備的資源信息,例如內存資源,I/O資源,中斷資源等。對設備信息的登記是通過結構WD_CARD_REGISTER來實現,它包含了硬件的各項信息。這些信息可以通過第一步中的2個函數獲得。在確定WD_CARD_REGISTER結構后調用函數WDCardRegister向Windriver Kernel登記設備。在得到了設備信息并且向WinDriver注冊了此設備后就可以在設備和計算機之間傳輸數據。
5 結 語
采用PCI express總線實現數據采集設備可以有效地提高數據的傳輸帶寬,解決總線帶寬不足瓶頸帶來的種種問題。文中的總線設計為1個通道的PCI express,雙向的讀寫速度為250 MB/s。后面的設計中會不斷提高Pcie總線的通道數,以滿足更高的總線設計需求。
評論