崔炳喆 , 楊士義
(1.中國空空導彈研究院 河南 洛陽 471009;2.航空制導武器航空科技重點實驗室,河南 洛陽 471009;3.駐中國空空導彈研究院軍事代表室,河南 洛陽 471009)
雷達成像信號處理的特點是運算復雜,數據量大,要求系統在進行快速運算的同時能進行大數據量的快速傳輸和存儲[1]。I/O技術在高性能計算的發展過程中始終是一個十分關鍵的技術。
PCI Express總線基于串行總線高速互連,比普通并行I/O技術有著更為領先的帶寬優勢,被廣泛地認為是一項革命性的總線技術,其重要性可以滿足不同使用者的需求。本文將詳細討論基于PCIE總線的信號處理板卡的數據傳輸設計,主要包括DSP互連,DSP與FPGA通信,PCIE接口設計以及總線驅動程序的開發。
本系統是一個通用的基于PCIE總線的雷達成像數字處理機,板卡功能框圖如圖1所示 。4片DSP之間通過高速鏈路口實現點對點互連,實現1GB/s的全雙工帶寬。同時每個DSP又分別通過鏈路口與FPGA互連,構成一個分布式系統。系統采用4片ADI公司生產的TS201芯片進行主要的數據處理工作,配以高性能的 Xilinx Virtex-5芯片(XC5VLX110T),實現對數據的高速預處理。每片DSP配備容量為256MB的SDRAM。系統通過FPGA芯片內嵌的PCIE IPcore實現與主機的通信。

圖1 板卡功能框圖Fig.1 Function diagram of board
首先,采用DSP高速鏈路口實現DSP點對點連接,TS201芯片采用全雙工模式,當處理器內核工作在500 MHz時,鏈路口最高也可工作在500 MHz,每個鏈路口的雙向吞吐率可以達到1 GB/s,實現了點對點的高速傳輸。任意兩片DSP之間都通過鏈路口連接,使得DSP之間傳遞數據變得靈活,使程序設計變得簡單。另外,每塊DSP通過一個鏈路口與FPGA互連,在數據傳輸不沖突的情況下,FPGA可以同時與多片DSP通信,實現FPGA和DSP的高速數據交換。
由于系統中DSP之間實現了點對點互連,接口的設計主要涉及到DSP和FPGA之間的時序電路開發。TS201有4個鏈路口,鏈路口采用全雙工模式,每個鏈路口有兩個獨立的DMA通道可以同時進行通信[2]。每個通道用LxCLKOUTP/N,LxACKI,LxCLKINP/N和LxACKO控制數據傳輸,LxBCMPI和LxBCMP用于指示現行緩沖器發送是否完成。利用鏈路口傳輸數據時,數據幀的開始是由時鐘的上升沿來指示的,在時鐘上升沿和下降沿分別傳送數據[3-4]。由于鏈路口具有收發兩個模塊,所以FPGA需要在內部實現收發兩個模塊來與DSP的兩個模塊相對應。
依照鏈路口通信協議,FPGA向DSP發送數據時的鏈路口發送時鐘是由內部鎖相環產生的,接收DSP傳送的數據時的接收時鐘由DSP的隨路時鐘提供。鏈路口時鐘、數據信號線均使用LVDS電平標準進行連接,ACK和BCMP信號則采用單端的方式連接至FPGA。
FPGA內部邏輯主要包括接收/發送模塊和接收/發送緩沖。接收模塊與DSP的鏈路口發送端連接,發送模塊與DSP的接收端連接,在FPGA和DSP通信時這兩個模塊可以對數據分別進行打包和拆包處理。接收/發送緩沖則用來配合接收/發送模塊,在傳輸數據時用來緩沖數據。
FPGA與DSP之間傳輸數據時發送方先要將數據傳送給鏈路口發送模塊緩沖(一個異步FIFO),接收方控制模塊檢測到LxACKI為高并且FIFO內至少有一個4字數據塊的數據時,雙方握手完成,啟動數據傳輸,否則繼續等待。一個數據移位控制模塊使數據按照鏈路口通信協議的標準進行排列后傳送給DDIO模塊產生DDR數據,另一個DDIO宏單元則是用來產生同步的時鐘。發送模塊的仿真波形如圖2所示。
WDM是微軟全力推出的一種設備驅動程序模型,相對于 KDM (Kernel Driver Model),WDM 增加了對即插即用(pnp)、電源管理等新的硬件標準的支持。
WDM的分層結構有利于系統的設計、擴展和驅動程序的開發。采用DriverStudio來開發運行在Windows XP下的WDM模式PCIE設備驅動程序(用DriverWorks編寫代碼,用DriverMonitor和SoftICE調試驅動[5]。DriverWorks對Windows DDK的類進行了很好的封裝,因此在開發WDM驅動程序時,DriverWorks向導產生驅動框架,開發人員只需選擇合適的例程即可,因此可以在較短的時間內開發出效率較高的驅動程序。
一個WDM驅動程序的功能模塊一般由初始化、創建和刪除設備、即插即用處理、訪問硬件、處理Win32 I/O及控制請求、調用其他驅動程序等組成。
應用程序可以用標準的Win32API函數與驅動程序建立通信。在應用程序中首先用設備GUID接口或符號鏈接名打開設備,實際上應用程序調用了Win32API函數CreateFile。若成功打開將返回設備的有效句柄,應用程序獲得有效句柄后就可以和驅動程序交換數據。打開設備后應用程序可以用函數DeviceIoControl與驅動程序通信,這個函數包括從驅動程序讀數據和寫數據。完成硬件操作后用CloseHandle函數關閉該設備。

圖2 鏈路口發送端仿真波形Fig.2 Simulation waveform on the sender of link port
PCIE總線是Intel公司提出的第3代I/O總線。PCIE總線采用雙工串行傳輸模式,速度快,低功耗,擴展靈活,軟件層與PCI兼容,具有數據包和層協議架構[6]。
PCI Express協議定義了4層結構:物理層,數據鏈路層和事務處理層,軟件層[7]。PCI Express系統體系結構如圖3所示。每個層次按照協議中規定的內容,完成相應的數據處理功能。PCIE軟件層保持與PCI總線兼容,軟件兼容包括器件的初始化、自動配置和器件的運行。事務處理層接收來自軟件層或應用層的讀寫請求,并構造響應數據包并傳給數據鏈路層。數據鏈路層的主要作用是確保數據鏈路包在數據鏈路層上的可靠傳送。物理層負責接口和設備間的連接,它在兩個PCI Express模塊之間的鏈路層間傳輸數據包。
3.4.1 PCIE接口模塊

圖3 PCIExpress體系結構Fig.3 Architecture of PCI Express
PCI Express接口模塊通過調用IP核技術實現,它接口模塊的結構[8]如圖4所示。PCI Express通信協議以及DMA的實現等是在FPGA內實現的,整個模塊用到了Hard IP核和DMA IP核。

圖4 PCI Express接口模塊整體結構Fig.4 Overall Architecture of interface module of PCI Express
Hard IP核用來處理PCI Express協議相關的事務;DMA IP核用作DMA控制器;DMA控制器通過控制與DMA相關的寄存器,設定讀寫操作的地址范圍和大小,來完成DMA數據讀寫操作。DMA管理模塊控制兩個獨立的DMA通道,分別用來從主機內存讀取數據和將數據寫入主機內存。
3.4.2 DMA模式讀寫過程
為提高主機和板卡之間的數據傳輸速率,并保證數據的不丟失,采用DMA傳輸的方式。DMA方式的工作原理圖5所示。

圖5 DMA方式的工作原理Fig.5 Working principle of DMA mode
板卡的FPGA芯片中有DMA控制器。它提供了2個獨立的DMA通道用于從主機到設備和從設備到主機的數據傳輸。
DMA寫操作,即設備將數據向上傳輸到主機中,當數據到來的時候,它將FIFO中的數據直接寫到服務器的內存空間,并產生一個DMA中斷通知驅動程序,驅動程序收到中斷后調用中斷響應函數來處理內存空間的數據.。
DMA讀操作,即主機將數據向下傳輸到設備中,傳輸卡直接從服務器的內存空間將數據讀取到FIFO中。服務器中用于DMA讀寫的內存空間由驅動程序初始化DMA操作時分配,PCI Express驅動程序利用這段內存空間直接與傳輸卡進行DMA通信。
開發的多DSP雷達信號處理板卡傳輸效率高、擴展靈活。用DriverStudio所開發的DMA模式PCIE驅動程序通用性好,并且驅動運行穩定,保證了主機應用程序與硬件板卡上各DSP數據的快速存取。
[1]全英匯,王宏現,邢孟道.分布式多DSP系統的CPCI總線接口設計和驅動開發 [J].現代電子技術,2006,20(235):91-93.QUAN Ying-hui,WANG Hong-xian,XING Meng-dao.Bus interface design of distributed multi-DSP system and driver development[J].Modern Electronics Technique,2006,20(235):91-93.
[2]Analog Devices,Inc.ADSP-TS20ISdata sheet[EB/OL].(2006)http://www.analog.com/stic/imported/data_sheets/ADSP_TS201S.pdf.
[3]龔翠玲,吳超,龔麗芳,等.TS201高速通信接口設計及實現[J].現代電子技術,2008,3(266):40-43.GONG Cui-ling,WU Chao,GONG Li-fang,et al.Design and realization of TS201 high speed communication interface[J].Modern Electronics Technique,2008,3(266):40-43.
[4]楊子元,包啟亮,王旭.基于PCIE/104總線的高速數據接口設計[J].現代電子技術,2011(14):75-78.YANG Zi-yuan,BAO Qi-liang,WANG Xu.Design of highspeed data interface based on PCIE/104 bus[J].Modern Electronic Technique,2011(14):75-78.
[5]武安河,邰銘,于洪濤.Windows 2000/XPWDM設備驅動程序開發[M].北京:電子工業出版社,2003.
[6]田玉敏,王崧,張波.PCIExpress系統體系結構標準教材[M].北京:電子工業出版社,2005.
[7]梁國龍,何昕,魏仲慧,等.PCIE數據采集系統的驅動程序開發[J].計算機工程與應用,2009,45(31):63-65.LIANG Guo-long,HE Xin,WEI Zhong-hui,et al.Driver development of PCIE data acquisition card[J].Computer Engineering and Applications,2009,45(31):63-65.
[8]李國光,羅豐.一種64位高速PCI總線接口的設計與實現[J].電子科技,2011(2):57-59.LI Guo-guang,LUO Feng.Design and realization of a 64bit high-speed PCIbus interface[J].Electronic Science and Technology,2011(2):57-59.