黃 睿,趙英瀟,蘇 陽,張 月
(國防科學(xué)技術(shù)大學(xué) 電子科學(xué)與工程學(xué)院,湖南 長沙 410073)
多數(shù)據(jù)高速并行錄取系統(tǒng)軟件平臺設(shè)計
黃 睿,趙英瀟,蘇 陽,張 月
(國防科學(xué)技術(shù)大學(xué) 電子科學(xué)與工程學(xué)院,湖南 長沙 410073)
為滿足雷達系統(tǒng)對多種類型數(shù)據(jù)的高速傳輸錄取的需求,文中設(shè)計了一種基于PCIe總線的多數(shù)據(jù)高速并行錄取的系統(tǒng)軟件平臺。平臺采用WinDriver開發(fā)PCIe驅(qū)動程序?qū)崿F(xiàn)上位機程序?qū)τ布牟倏?,上位機程序采用多線程技術(shù),設(shè)計了一種合理高效的通信流程與驅(qū)動程序進行交互,以滿足3種雷達數(shù)據(jù)的高速并行錄取。經(jīng)測試,該平臺運行穩(wěn)定,數(shù)據(jù)傳輸錄取速率滿足要求,錄取數(shù)據(jù)經(jīng)過事后回放軟件能夠回放出正確波形,保證了數(shù)據(jù)錄取的正確性。
PCI-Express(PCIe);WinDriver;直接內(nèi)存訪問(DMA);并行錄取
為滿足高速實時數(shù)據(jù)記錄的需求,當(dāng)前的數(shù)據(jù)采集記錄系統(tǒng)主要采用基于PCIe的串行總線架構(gòu)。作為板間通信常用的標(biāo)準(zhǔn)之一[1],采用點對點串行傳輸,內(nèi)嵌時鐘等技術(shù)[2-4],可以滿足高速實時數(shù)據(jù)記錄要求。
然而隨著雷達數(shù)據(jù)類型越來越多,采集記錄系統(tǒng)還需要滿足多種數(shù)據(jù)的高速傳輸錄取,針對多光纖通道的多種數(shù)據(jù)類型輸入,設(shè)計了一種基于PCIe總線的多數(shù)據(jù)高速并行錄取軟件平臺。文中設(shè)計并編寫了一種基于PCIe總線實現(xiàn)軟硬件交互的驅(qū)動程序以及基于多線程的上位機軟件程序,采用PCIe接口時分復(fù)用的方式,配合上位機實現(xiàn)了多種數(shù)據(jù)的高速并行傳輸錄取。
本文的硬件平臺是數(shù)據(jù)采集記錄系統(tǒng)中的數(shù)據(jù)存儲工作站,數(shù)據(jù)存儲與管理工作站的結(jié)構(gòu)組成和數(shù)據(jù)通路如圖1所示,該系統(tǒng)主要由兩塊光纖接口卡和磁盤陣列組成。光纖接口卡主要負責(zé)接收來自不同數(shù)據(jù)光纖通道輸入的數(shù)據(jù)。
板卡結(jié)構(gòu)與功能如圖2所示。FPGA采用Xilinx公司Kintex-7系列芯片,主要完成光纖高速串行通信控制、PCIe接口控制和高速緩存芯片控制等功能。光纖接口卡還加入了DDR3,接口卡將接收到的數(shù)據(jù)傳遞給FPGA,在控制邏輯的作用下存放于DDR3,在接收到上位機程序的數(shù)據(jù)請求后,在PCIe系統(tǒng)邏輯控制下將數(shù)據(jù)傳送至上位機內(nèi)存區(qū)。板卡與主機接口為PCIe 8x 2.0,考慮到PCIe協(xié)議的開銷,實際傳輸速度可達到3.0 GB/s,可滿足數(shù)據(jù)高速傳輸速率要求。
圖1 工作站結(jié)構(gòu)與數(shù)據(jù)通路
圖2 光纖接口卡結(jié)構(gòu)框圖
外部硬件設(shè)備通過物理總線與上位機硬件主板直接連通,然而在用戶層的應(yīng)用程序無法直接訪問外部設(shè)備,因此需要設(shè)計運行在操作系統(tǒng)內(nèi)核的驅(qū)動程序才能將它們連接起來[5]。本驅(qū)動采用WinDriver進行開發(fā),利用WinDriver開發(fā)驅(qū)動程序不需熟悉操作系統(tǒng)的內(nèi)核,整個驅(qū)動程序是工作在用戶態(tài)下的,這樣可以大幅加速PCIe設(shè)備驅(qū)動程序的開發(fā)[6-7]。WinDriver的易用性并不影響驅(qū)動程序運行效率,實驗證明用WinDriver開發(fā)的驅(qū)動程序滿足高速數(shù)據(jù)傳輸?shù)囊骩8-9]。
本文主要錄取的數(shù)據(jù)類型有3種:DBF(Digital Beam Form)輸出回波數(shù)據(jù)、寬帶直接采集數(shù)據(jù)、以及寬帶去斜采集數(shù)據(jù)。其中,直采數(shù)據(jù)和去斜數(shù)據(jù)共用一塊板卡的PCIe接口進行傳輸。DBF輸出回波數(shù)據(jù)有6個波束,采用6根光纖(可選通)輸入至另一塊光纖接口卡進行傳輸。3種數(shù)據(jù)的并行傳輸錄取示意圖如圖3所示。
圖3 數(shù)據(jù)傳輸錄取示意圖
在實際的采集過程中,寬帶直采數(shù)據(jù)和DBF輸出數(shù)據(jù)傳輸速率較高,在全寬帶雷達周期,最大波門占空比下直采集數(shù)據(jù)的傳輸速率可以達到約1 700 MB/s,DBF輸出數(shù)據(jù)在6根光纖全部選通時的傳輸速率可以達到約1 800 MB/s??紤]到DMA(Direct Memory Access)傳輸機制不通過CPU,直接進行數(shù)據(jù)交換,是一種較為快速的數(shù)據(jù)傳輸方式,適合大量數(shù)據(jù)的傳輸,且WinDriver本身支持DMA,并提供了相關(guān)的操作函數(shù),因此采用DMA機制進行數(shù)據(jù)傳輸。
DMA數(shù)據(jù)傳輸本質(zhì)上是硬件板卡將需要傳輸?shù)臄?shù)據(jù)存入DMA緩存塊的一個地址范圍,然后上位機在某個信號到達時,取出DMA緩存塊中某個地址范圍內(nèi)的數(shù)據(jù)。因此,DMA傳輸數(shù)據(jù)需要緩存塊、數(shù)據(jù)在緩存塊中的起始地址和數(shù)據(jù)長度、存取數(shù)據(jù)的信號。由此可知,對DMA的初始化工作包括為DMA申請內(nèi)存,定義DMA緩存塊的地址范圍,激活DMA功能并鎖定DMA緩存塊。
為DMA緩存塊申請內(nèi)存空間的方式有兩種:(1)為DMA分配一塊連續(xù)的內(nèi)存空間;(2)為DMA分配分散/集中(Scatter/Gather)的內(nèi)存空間,簡稱S/G DMA模式[10]。S/G DMA模式可以為DMA緩存分配分塊的物理內(nèi)存,能夠更合理的利用物理內(nèi)存空間。但S/G DMA模式需要將分散的物理內(nèi)存映射到一塊完整的虛擬地址空間中。本文采用連續(xù)方式為DMA緩存塊申請內(nèi)存空間。
由于光纖接口卡加入了DDR3,因此板卡接收到的數(shù)據(jù)首先會傳遞給FPGA,然后在控制邏輯作用下存放于DDR3。在DMA數(shù)據(jù)傳輸時,設(shè)置DMA傳輸?shù)某跏蓟瘏?shù),完成相應(yīng)的DMA寄存器的設(shè)置工作,即可完成DMA數(shù)據(jù)傳輸。DMA數(shù)據(jù)傳輸整體流程圖如圖4所示,具體步驟如下。
圖4 DMA數(shù)據(jù)傳輸流程圖
(1)清空DDR3緩存,保證每次開始錄取數(shù)據(jù)前進入DDR3緩存內(nèi)的數(shù)據(jù)為最新數(shù)據(jù),為上位機程序正確錄取數(shù)據(jù)至磁盤陣列提供保證;
(2)為DMA緩存塊申請內(nèi)存空間,該內(nèi)存空間為上位機和硬件板卡之間進行數(shù)據(jù)交互的紐帶;
(3)設(shè)置DMA讀/寫地址(即DMA緩存塊申請的內(nèi)存空間首地址)、一次DMA發(fā)送的TLP包數(shù)量、設(shè)置TLP包載荷等;
(4)開啟DMA讀/寫,輪詢DMA完成標(biāo)志位;
(5)DMA數(shù)據(jù)讀/寫完成后,若數(shù)據(jù)未處理完成則重復(fù)上述步驟,啟動下一次DMA傳輸。數(shù)據(jù)全部處理完成后對程序占用的內(nèi)存區(qū)進行釋放。
由于直采數(shù)據(jù)和去斜數(shù)據(jù)在傳輸時共用一塊光纖接口卡的PCIe接口,因此需要通過時分復(fù)用PCIe接口的方式實現(xiàn)兩種數(shù)據(jù)的并行傳輸。在實現(xiàn)直采數(shù)據(jù)和去斜數(shù)據(jù)并行錄取時,考慮到兩種數(shù)據(jù)都采用DDR3作為數(shù)據(jù)緩存,直采數(shù)據(jù)傳輸速率快,其對應(yīng)的DDR3緩存容易變滿,因此采用直采數(shù)據(jù)優(yōu)先傳輸?shù)臋C制。上位機軟件配合驅(qū)動程序在錄取寬帶直采數(shù)據(jù)和寬帶去斜數(shù)據(jù)時采用的實現(xiàn)流程如圖5所示。
在開始錄取直采/去斜數(shù)據(jù)時,分別清除直采/去斜數(shù)據(jù)對應(yīng)的DDR3緩存。監(jiān)測直采/去斜數(shù)據(jù)標(biāo)志位,錄取直采數(shù)據(jù)時,當(dāng)直采數(shù)據(jù)標(biāo)志位有效,硬件板卡選通直采數(shù)據(jù)通路,開啟直采數(shù)據(jù)的DMA傳輸。錄取去斜數(shù)據(jù)時,當(dāng)直采數(shù)據(jù)標(biāo)志位無效且去斜數(shù)據(jù)標(biāo)志位有效,硬件板卡選通去斜數(shù)據(jù)通路,開啟去斜數(shù)據(jù)的DMA傳輸。數(shù)據(jù)的DMA傳輸成功后,發(fā)送事件告知數(shù)據(jù)拷貝線程,將DMA緩存塊中的數(shù)據(jù)拷貝到對應(yīng)數(shù)據(jù)的緩存隊列,保證數(shù)據(jù)不會被下次DMA傳輸?shù)臄?shù)據(jù)覆蓋造成軟件丟數(shù)。數(shù)據(jù)存儲線程監(jiān)聽對應(yīng)數(shù)據(jù)緩存隊列,只要隊列不為空,就將隊列內(nèi)數(shù)據(jù)存儲至磁盤陣列,實現(xiàn)數(shù)據(jù)錄取。DBF輸出數(shù)據(jù)通過一個獨立的PCIe接口,與直采數(shù)據(jù)和去斜數(shù)據(jù)的傳輸互不干擾,只要DBF輸出數(shù)據(jù)標(biāo)志位有效即進行DMA數(shù)據(jù)傳輸。DBF數(shù)據(jù)錄取的過程與直采/去斜數(shù)據(jù)一致。
在硬件層面雖然每一種數(shù)據(jù)在時間上并非同時進行,但在用戶層面來看,3種數(shù)據(jù)是在并行錄取,且通過上位機軟件操控硬件選通相應(yīng)的數(shù)據(jù)進行傳輸,而不是由硬件決定某一時刻應(yīng)該傳輸?shù)臄?shù)據(jù)類型,既保證數(shù)據(jù)能正確傳輸錄取,也大幅降低了硬件的內(nèi)部邏輯。
圖5 上位機與硬件交互流程圖
為確保設(shè)計的可行性與可靠性,采用設(shè)計的軟件平臺對3種數(shù)據(jù)同時進行錄取,并采用事后回放軟件回放數(shù)據(jù)波形,結(jié)果如圖6~圖9所示。
圖6顯示了3種數(shù)據(jù)并行錄取的實時速度。其中直采數(shù)據(jù)速率達到約860 MB/s,去斜數(shù)據(jù)達到約55 MB/s,DBF輸出數(shù)據(jù)達到約930 MB/s。圖7~圖9為事后回放軟件分別讀取3種數(shù)據(jù)對應(yīng)的文件所顯示的波形。其中,寬帶直采數(shù)據(jù)通過脈沖壓縮正確的顯示了其一維距離像,寬帶去斜數(shù)據(jù)和DBF輸出數(shù)據(jù)也能夠正確顯示頻譜。由此表明開發(fā)的軟件平臺能夠在保證錄取數(shù)據(jù)正確的情況下,實現(xiàn)多種數(shù)據(jù)的高速并行錄取。
圖6 數(shù)據(jù)錄取界面
圖7 直采數(shù)據(jù)時域圖和脈壓結(jié)果
圖8 去斜數(shù)據(jù)時頻圖
圖9 DBF輸出數(shù)據(jù)時頻圖
從工程實踐出發(fā),設(shè)計了一種基于PCIe總線的多數(shù)據(jù)高速并行錄取軟件平臺,并對其實用性進行了測試。結(jié)果表明,該軟件平臺工作穩(wěn)定可靠,數(shù)據(jù)錄取速率滿足實際需求,且事后能夠回放出正確波形,驗證了該平臺的可行性。
[1] Kavianipour H,Bohm C.A high-reliability PCIe communication system for small FPGAs[C].Canada:Nuclear Science Symposium and Medical Imaging Conference(NSS/MIC),2013.
[2] Jun L,Wei W.PCI express interface design and verification based on Spartan-6 FPGA[C].MA,USA:IEEE 12th International Conference on Communication Technology,2010.
[3] 梁國龍,何昕,魏仲慧,等.PCIE數(shù)據(jù)采集系統(tǒng)的驅(qū)動程序開發(fā)[J].計算機工程與應(yīng)用,2009,45(31):63-65.
[4] 王齊.PCI Express體系結(jié)構(gòu)導(dǎo)讀[M].北京:機械工業(yè)出版社,2010.
[5] 隋佳彬.基于DSP的數(shù)字傳輸系統(tǒng)的PCI上位機WinDriver驅(qū)動設(shè)計與研究[D].北京:北京理工大學(xué),2014.
[6] 張銀發(fā).利用WinDriver開發(fā)KernelPlugIn驅(qū)動程序[J].工業(yè)控制計算機,2007,20(7):28-29.
[7] Jungo Ltd.WinDriver V6. 03 user’s guide[Z/OL]. (2006-08-10)[2016-11-12]http://www.jungo.com.
[8] 王聰,王彬,薛潔,等.基于PCIe總線協(xié)議的設(shè)備驅(qū)動開發(fā)[J].信息技術(shù),2013(3):32-35.
[9] 王琳,陳健,闊永紅.PCI數(shù)據(jù)采集卡的DMA和中斷實現(xiàn)[J].電子科技,2007,2(2):16-17.
[10] 李晃,鞏峰,陳彥化.基于PCIE驅(qū)動程序的數(shù)據(jù)傳輸卡DMA傳輸[J].電子科技,2014,27(1):117-120.
Design of Software Platform for Multi-data High-speed Parallel Admission System Based on PCIe Bus
HUANG Rui,ZHAO Yingxiao,SU Yang,ZHANG Yue
(School of Electronic Science and Engineering,National University of Defense Technology,Changsha 410073,China)
In order to meet the requirement of radar system for high-speed transmission of multiple types of data, this paper designs a system software platform for multi-data high-speed parallel admission based on PCIe bus. The platform using WinDriver development PCIe driver to achieve the host computer program on the hardware control, the host computer program using multi-threaded technology, designed a reasonable and efficient communication process and the driver to interact to meet the three radar data high-speed parallel admission. After the test, the platform is stable, the data transmission admission rate to meet the requirements, the data after the game after the release of the correct playback of the waveform, to ensure the correctness of data entry.
PCI-Express(PCIe); WinDriver; direct memory access; parallel admission
2017- 03- 01
國家自然科學(xué)基金(61571449)
黃睿(1993-),男,碩士研究生。研究方向:信息獲取等。趙英瀟(1990-),男,博士研究生。研究方向:數(shù)字陣列雷達信號處理。蘇陽(1993-),男,碩士研究生。研究方向:信息獲取等。張月(1980-),男,博士,講師。研究方向:高速數(shù)據(jù)采集和雷達信號處理。
10.16180/j.cnki.issn1007-7820.2017.12.025
TN919.3
A
1007-7820(2017)12-092-04