王慧英1,曹志鋒2
(1.吉首大學 張家界學院,湖南 張家界 427000;2.國防科技大學 機電工程與自動化學院儀器系,湖南 長沙 410004)
摘要:設計了一個基于PCI-E總線的高速光纖數據采集系統。對高速光纖數據的處理、傳輸、存儲和WDM驅動程序的開發做了論述。經測試表明,該系統能夠對處理后的2路2.5 Gb/s SDH光纖信號連續采集近3小時不丟幀,采集的數據量達6 TB,穩定的存盤速率高達600 MB/s,具有很好的應用價值。
關鍵詞:PCI-Express總線;高速采集;光纖數據;磁盤陣列;DMA
0引言
高速采集系統中的數據具有數據速率高、數據量大的特點,要對高速數據進行實時長時間存儲,必須克服高速數據的傳輸與存儲的技術難題。本設計采用PCI Express總線技術對高速數據進行傳輸,用高速磁盤陣列技術對高速數據進行存儲。
PCI Express[12],簡稱PCIE,是用來互聯諸如計算機和通信平臺應用中外圍設備的第三代I/O總線。PCIE總線每個通道的單向速率不低于2.5 Gb/s,可以根據用戶的需要靈活配置成x1、x4、x8、x16的工作模式。
冗余磁盤陣列[3],簡稱RAID,是一種由多塊廉價磁盤構成的冗余陣列,主要由陣列控制卡和多個硬盤組成。數據分布在陣列的各個磁盤中, 磁盤數據的讀寫由多個磁盤并行完成,非常適用于高速大容量數據的存取。
1系統總體設計概述
本高速采集系統由PCIE采集卡、上位機、PCIE驅動和應用程序組成,如圖1所示。PCIE采集卡以FPGA為核心,FPGA外圍有光電轉換模塊、電源模塊、時鐘模塊和JTAG模塊。
FPGA用于對高速數據的處理和PCI-E總線的控制,電源模塊為FPGA和光電轉換模塊供電,時鐘模塊為FPGA提供高精度的差分(LVDS)時鐘信號,JTAG模塊用于FPGA的調試和程序下載。
驅動程序負責把上位機數據緩存區內的數據搬運到磁盤陣列中,并對FPGA中的DMA寄存器賦初值[4];應用程序用于人機交互,控制PCIE采集卡的采集與停止,并提供一些相關的狀態信息。
2PCI-E采集卡設計
PCI-E采集卡用于對高速光纖數據的處理和傳輸。
2.1硬件構成及性能分析
本設計選用Altera公司的Stratix II GX系列EP2SGX90FF1508C3N芯片來實現PCIE總線功能,并用其對數據進行處理。該芯片內部有4 520 448 bit的RAM資源,16對處理速度高達6.375 Gb/s的Transceiver通道,片內的PCIE IP核(軟核)支持PCIE 1.0a和1.1規范,通道可配置成x1、x4或x8的類型。在本設計中,把PCIE的IP配置成x4模式。x4 IP除去8b/10b編碼的開銷,有效數據帶寬為8 Gb/s,可以滿足接入2路2.5 Gb/s信號的傳輸。PCIE采集卡的光電轉換模塊選用武漢電信器件公司的RTXM192450,該器件的速率為2.488 32 Gb/s,輸出的信號可直接給FPGA處理。PCIE采集卡的結構框架如圖2所示。
2.2數據處理機制
SDH信號[5]的一幀數據有9行270×N列,共9×270×N字節,大體分為3個主要的區域:段開銷(SOH),管理單元指針(AU PTR)和凈荷區域。其中段開銷又可分為再生段開銷(RSOH)和復用段開銷(MSOH)。圖3為STM-N的幀結構。
在本設計中,接入的SDH信號為STM16,且只對其凈荷進行存盤。故接入的信號要進行幀同步、解擾(解擾多項式為x7+x6+1)、凈荷提取等處理。
為了使采集卡能適應2路不同源SDH信號的輸入,還需對接入的信號進行速率調整。速率調整機制為:在片內開2個位寬為64 bit、容量為64 KB的FIFO,分別命名為FIFO_A、FIFO_B,FIFO_A和FIFO_B分別用于緩存SFP_A和SFP_B的接入數據,當有FIFO半滿時,交替地從2個輸出位寬為64 bit的FIFO中讀出32 KB的數據,另外加入64 bit的線路標識,以便存盤時進行數據分離,這樣向RAM寫一次的數據量就為32 KB。
2.3DMA傳輸機制
對于高速數據流, 必須用DMA傳輸方式才能保證數據在采集卡和上位機之間通信時不丟失[6]。
在本設計中,一次DMA傳輸的大小為雙口RAM的容量。雙口RAM快寫滿時開始DMA,每次DMA完成后,向上位機發中斷信號通知驅動去上位機數據緩存區搬數據寫盤。為了克服Windows操作系統響應PCIE中斷的非實時性和相對不確定性[7], 同時考慮FPGA存儲資源的限制, 雙口RAM 的容量選取256 KB,位寬為64 bit。
64位雙口RAM的地址范圍是0~7FFFh,且向雙口RAM寫一次的數據量為32 KB,為了保證每次啟動DMA傳輸時雙口RAM中都有256 KB的數據,且不引起讀寫沖突,設定RAM的寫地址等于7100h時啟動DMA傳輸,即向RAM中寫入了226 KB的數據,此時第8個32 KB的數據塊已經向RAM中寫了2 KB。DMA的啟動時序如圖4所示。
3系統存儲機制
該采集系統的存儲部分由上位機、PCI-E驅動和應用程序構成。
3.1上位機配置
在本設計中,上位機選用IBM公司的System x3650 M3服務器。該服務器采用英特爾至強5600系列六核處理器,主頻為3.33 GHz,內存配置為20 GB,內部存儲由16塊型號為42D0752的硬盤組成RAID 0陣列,總存儲容量為8 TB。
3.2WDM驅動程序開發
本設計選用Visual C++ 6.0 、DriverStudio和DDK來進行WDM驅動程序開發。
由于Windows操作系統的非實時性和寫磁盤陣列的瞬時速度的不穩定性,有時不能實現將寫入內存緩沖區的數據立即存儲在硬盤上,因此為了連續不斷地接收光纖數據,必須在內存中分配一塊大的連續內存作為DMA的數據緩沖區,這個緩沖區的大小一定要大于一次DMA傳輸的數據量,并采取環行存儲結構[8]。經在上位機上調試,在保證系統工作穩定的前提下,數據緩存可開到512 MB,即可緩存2 048次DMA的數據。采集數據時,驅動收到一次中斷就進行一次256 KB的寫磁盤操作。驅動程序的工作流程如圖5所示。
4性能測試與分析
為測試系統性能,設計一個已知格式的類STM16信號源:幀長為16 bit×19 440=311 040 bit,幀頭為48個F6,48個28,其余段開銷和管理單元指針全填充0;凈荷區域,第1行前4個字節為幀序號,幀序號后為2個字節的數據標識,SFP_AS、FP_B的數據標識分別為CCCC和DDDD,其余位置填充數據為0~18 788(0~4964h),第1行的前144個字節在發送時不加擾。
由于只存儲了STM16的凈荷數據,因此在查看采集的數據時,把每行數據大小設為16 bit×18 192 bit,這時看到的數據就如圖6所示。圖中左邊為數據文件的縮小圖,右邊為數據文件的放大圖。如果存儲文件的幀序號是連續的,且數據是對齊的,則證明數據沒有丟幀。
5結論
本系統能夠對2路2.5 Gb/s的STM16信號進行實時長時間存儲,保證連續存儲6 TB的光纖數據不丟幀,可連續存儲近3小時,穩定的存儲速率高達600 MB/s。該系統測試完后已移交給用戶使用。該系統還具有良好的適應性并具有極大的升級空間,對FPGA代碼稍作修改并更換相應速率的光電轉換模塊,該系統就可以采集STM1和STM4速率的SDH光纖數據;如果把PCIE的IP配置成x8模式,并使用高性能的服務器和固態硬盤,該系統每秒的存儲速率可以達到GB級。該系統的研制,對于光通信設備的研發和光傳輸系統特性的測試具有重要的意義。
參考文獻
[1] BUDRUK R, ANDERSON D, SHANLE T.PCI Express系統體系結構標準教材[M].田玉敏,王崧,張波,譯.北京:電子工業出版社,2005.
[2] PCISIG. PCI Express base specification revision 3.0[S].2010.
[3] 丁涇莉,朱春紅,成雪莉.RAID磁盤陣列技術及應用[J].石油工業計算機應用,2006,14(2):3941.
[4] 溫宇辰,李明偉,陳玉龍.PCIE總線光纖接口卡的設計[J].電子技術應用,2014,40(4)126129.
[5] ITUT. ITUT Recommendation G.707/Y.1322 Network node interface for the synchronous digital hierarchy (SDH) [S].2007.
[6] 楊阿鋒,吳帥,劉凱,等.PCIe接口高速數據傳輸卡的驅動程序開發[J].中國測試技術,2008,34(2):6768.
[7] 呂喜在,張寶文,趙德鑫,等.基于PCI Express總線的高速海量光纖數據記錄儀的設計[J].計算機測量與控制,2010,18(9):22032206.
[8] 周立國,梁淮寧,謝冬冬,等.基于PCI Express總線的數據傳輸卡的設計與實現[J].電子測量技術,2007,30(11):2831.