寧壽輝 石小磊



摘要:簡要介紹多功能車輛總線(MVB )總線及PCIE總線的特點,給出了基于X86處理器、PCIE總線接口的MVB通信網卡的硬件架構及設計方法,MVB網卡驅動軟件、通信軟件設計開發流程。
關鍵詞:MVB;PCIE;X86;通信網卡;驅動;通信
中圖分類號:TP334.7 文獻標識碼:A 文章編號:1007-9416(2020)01-0142-03
0 引言
目前,符合TCN標準的通信產品在鐵路上已經得到廣泛應用,該標準定義了兩種用于列車車載數據通信的現場總線:絞線式列車總線(WTB)和多功能車輛總線(MVB)。MVB總線將車廂內,即機車內、客車車輛內或貨車車輛內的設備連在一起構成一個局域網。其中,以基于PC/104架構的MVB通信設備應用最為廣泛。隨著PCI總線技術向工業控制領域滲透,以支持熱插拔操作為顯著特征的PCI總線的MVB通信設備擁有良好的應用前景。PCI總線技術具有無法忽視的優點,如更高的總線頻率、獨立于處理器、支持突發讀寫傳輸、自動配置、支持自動的設備檢測與配置及低功耗等。PCI-Express (PCIE)作為最新一代的總線接口,其點對點的串行設計以及雙通道高帶寬的傳輸模式,大大提高了數據的傳輸速率,它的廣泛應用將全面取代PCI、AGP等總線。本文設計了一種基于X86及PCIE總線的MVB通信網卡,并完成軟硬件設計開發。
1 MVB網卡硬件設計
1.1 總體硬件架構
MVB網卡硬件架構如圖1所示,MVB網卡由現場可編程邏輯陣列FPGA和MVB物理接口單元兩部分組成。現場可編程邏輯陣列FPGA完成PCIE總線數據編解碼、MVB數據幀收發以及PCIE總線與MVB核之間的數據交互,MVB物理接口單元完成MVB數據的編解碼(RS485格式)和符合IEC61375-1標準的TCN網絡物理接入。
1.2 MVB接口單元設計
MVB接口單元完成MVB差分信號隔離、RS485信號編解碼和收發器控制,接口標準符合IEC61357-1協議。
接口單元硬件原理如圖2所示,隔離變壓器采用PULSE公司X-1729NL,RS485收發器采用MAX3088,LCDA05完成差分信號的過壓鉗位保護。
1.3 PCIE轉MVB單元設計
PCIE轉MVB單元硬件原理如圖3所示, XILINX公司FPGA完成PCIE協議轉換和MVB核設計,PCIE協議轉換完成PCIE總線控制命令解析,MVB核完成MVB數據幀解析和收發功能。
2 MVB網卡軟件設計
2.1 驅動軟件設計
本設計采用X86工控機及Windows7操作系統,為了實現操作系統應用程序對于MVB網卡的控制操作,需要開發設備驅動程序。這里選用WDK7.1開發工具軟件,結合VS2013進行PCIE驅動程序開發。WDK是微軟推出的一款完全集成的驅動程序開發工具,它包含Windows DDK,用于測試Windows驅動器的可靠性和穩定性,是專門為開發人員推出的,支持Win7以上所有操作系統。
首先要進行開發環境的搭建。在Windows7操作系統中,依次安裝Visual Studio 2013及WDK7.1開發工具。安裝結束后,要完成WDK7.1編譯環境的配置,選擇checked build環境編譯包含debug信息的驅動。
整個WDF驅動程序工程共包含3個源文件(Driver.c, Device.c, Queue.c)。device.c源碼文件主要包含設備創建、設備資源獲取和釋放的功能代碼。PortIODeviceCreate()為設備創建函數,供PNP調用。PortIODeviceGetHw()為硬件資源獲取函數,供PNP調用,順序獲取PCI/PCIE設備所使用的IO和Memeoy空間資源并對memory空間進行映射,PortIODeviceReleaseHw()為硬件資源釋放函數,供PNP調用,對已映射的memory空間進行釋放。
driver.c源碼文件主要功能為生成驅動對象。DriverEntry DriverEntry()為驅動程序入口函數;PortIOEvtDeviceAdd()為設備添加函數。
queue.c源碼文件創建用于與客戶應用程序通訊的IO隊列對象,PortIOEvtIoDeviceControl()回調函數對于用戶操作進行分發處理。
將以上源代碼通過VS2013+WDK7.1編譯就能生成相應PCIE硬件板卡的Windows驅動程序genport.sys文件。安裝驅動程序后,應用程序可以調用設備驅動接口與硬件設備進行通信。
驅動程序調度流程如圖4所示,具體實現過程如下:
(1)首先通過Win32API函數GP_LoadDev打開設備。
(2)然后調用GP_GetIOResourceInfo函數獲取設備資源列表情況。資源列表信息保存在RESINFO結構體中。
typedef struct {
ULONG PortBase[6];? //基地址列表
ULONG PortCount[6];? //基地址段長度列表
ULONG PortMemoryType[6];//基地址的類型,1表示是IO空間,0表示是Memory空間
ULONG PortMemoryResourceCount;//有效的基地址數量
} RESINFO, *PRESINFO;
(3)接下來調用GP_SetBusInterfaceData函數完成PCIE配置空間的配置。
(4)最后調用GP_WritePort及GP_ReadPort函數實現與驅動程序通信,即讀寫數據,當應用程序退出時,調用GP_CloseDev函數關閉設備。
2.2 通信軟件設計
根據MVB設備的分類標準,MVB設備按性能可分為5類。本文設計的MVB網卡支持過程數據、消息數據、監視數據的收發,也具備總線管理能力,實現了MVB4類設備的全部功能。設計中沒有采用傳統的利用MVB專用通訊控制器的設計方法,而是采用了當今流行的FPGA代替MVB專用通訊控制器的方案。
MVB網卡的通信采用客戶端-服務器模式,如圖5所示。主機也稱作上位機,是指可以直接發出控制命令的計算機設備,可以通過界面顯示各種變化信號的狀態,實現良好的人機交互。下位機為MVB網卡,將接收到的主機命令解釋成為時序信號,直接來控制相應的硬件設備,并且實時讀取設備的狀態數據,將此狀態數據轉化成數字信號反饋給主機。本論文中,主機軟件就是應用程序,其功能是實現與硬件設備的驅動程序進行通信,發送指令并接收由硬件設備傳遞來的實時數據。主機軟件采用VS2013軟件工具來進行編程,采用面向對象的C++語言,在與硬件驅動程序進行通信的同時,將實時數據顯示在主機界面上,實現硬件與軟件的協同工作。服務器端的驅動程序由MVB網卡中的FPGA實現。
主機與MVB網卡的接口采用UART仿真(UART Emulation)模式,即利用一種類似于通用異步收發器UART16C450的基本通信模式實現數據通信,在這種模式下,數據“仿佛是通過一根串行線路”進行傳輸,數據以高速連續方式發送和接收。主機對MVB鏈路層的接口訪問主要通過使用UART寄存器組的方式實現。主機使用發送指令的方式訪問UART寄存器組。MVB控制器將處理分析指令中的信息,從而對MVB進行相關的操作。主機用戶應用程序與MVB通信協議棧之間的接口由應用程序接口API實現,如過程數據鏈路層接口LPI、過程數據應用層接口AVI及消息數據應用層接口AMI等。
MVB通信軟件調度流程如下:首先讀取MVB配置文件進行配置信息解析;然后完成MVB監視數據接口初始化、過程數據接口初始化、通信存儲器初始化、過程數據端口配置;之后啟動MVB設備;最后就可以進行MVB過程數據收發及處理。
MVB數據的接收指主機從MVB網絡上讀取數據,用于相應的應用。MVB數據的發送指應用通過主機將需要發送的數據發送至MVB網絡。主機與MVB網卡進行數據交互,完成MVB數據的收發,其收發流程如圖6所示。進行數據收發之前首先讀取狀態寄存器,判斷發送緩沖區為空還是接收緩沖區為空,當發送緩沖區為空時,先傳遞發送指令,然后將數據寫入發送緩沖區,數據發送完畢,結束本次發送。接收過程與發送過程類似。
3 結語
本文在研究多功能車輛總線(MVB)的基礎上,提出了一種基于PCIE總線接口、FPGA通信控制器、X86處理器的MVB通信網卡的設計方法,并完成了最終實現。利用Visual Studio 2013及WDK7.1開發工具,完成了WDF模型驅動程序的開發。完成了基于客戶端-服務器模式及UART仿真技術的MVB通信軟件設計。在Windows7操作系統下,驅動程序和通信軟件能夠穩定運行。利用該類網卡組成的地鐵車輛網絡控制系統,通過實驗室聯調試驗,驗證了系統信息傳遞的可靠性、準確性和實時性,以及與其他產品的兼容性。實驗表明,所設計的基于PCIE接口的MVB網卡可以很好地滿足地鐵車輛控制系統要求。目前該網卡已研制成功并批量裝車使用,運行穩定可靠,已成為地鐵車輛控制的關鍵設備。
參考文獻
[1] IEC61375-1.Electric Railway Equipment-Train Bus-Part 1:Train Communication Network[S].2007.
[2] 王齊.PCI Express體系結構導讀[M].北京:機械工業出版社,2010.
[3] 王曉慶,周曉波,趙強.PCIE高速數據采集系統的驅動及上位機軟件開發[J].計算機應用與軟件,2013(9):331-333.
[4] 劉娟,田澤,黎小玉.PCI-E接口驅動軟件設計與實現[J].計算機技術與發展,2012(8):53-55+59.