姚 旺, 李 璞,2, 李 環, 金紅新, 牟宏偉
1(中國運載火箭技術研究院, 北京 100076)2(國防科技大學, 長沙 410073)
千兆以太網高速數據通信記錄系統①
姚 旺1, 李 璞1,2, 李 環1, 金紅新1, 牟宏偉1
1(中國運載火箭技術研究院, 北京 100076)2(國防科技大學, 長沙 410073)
為開展航空、航天領域各項專項試驗并實現數據獲取與分析, 提出了一種基于FPGA的具備千兆以太網接口的高速數據通信記錄系統的設計方案, 詳細描述了該記錄系統的功能設計、硬件設計、接口設計、嵌入式軟件設計方法, 其主要功能是通過通信接口與配套使用的系統進行通信, 在通信過程中, 將所有的通信數據記錄至非易失性存儲器中, 事后通過數據讀取接口將記錄的數據讀取至上位機完成數據處理與分析.
以太網; 通信; 記錄; 設計
隨著工業技術的不斷發展, 特別是在航天、航空與工業控制領域, 為了驗證某項新技術的攻關情況或者某種新研制的產品的功能與性能是否合格, 均需要開展多項的專項試驗, 通過在試驗中獲取海量的試驗數據, 并針對這些數據開展詳細的數據分析工作, 才能夠支撐進一步的技術攻關或者產品改進工作[1]. 因此, 對于海量試驗數據的獲取對于技術突破與產品研制均是十分重要的. 但是, 隨著航天、航空與工業控制領域的不斷延伸, 其技術驗證與產品的使用環境日漸復雜, 利用人工的手段完成數據的記錄已經難以實現,需要研制專用的配套數據記錄系統, 在開展飛行試驗中完成所有數據的記錄. 試驗結束后, 設計人員需要將試驗數據從數據記錄系統中讀出, 并完成數據分析.
在很多種情況下, 試驗中需要數據記錄系統持續記錄, 在全部試驗完成后, 再完成數據的讀取, 這使得數據記錄系統將會記錄海量的試驗數據. 傳統的數據記錄系統在讀取數據時, 多采用串口[2-4]、USB接口[5-7]等. 對于串口, 其最高速率約可達到10Mbps(理論值),對于USB2.0接口, 約可達到480Mbps(理論值). 當時候讀取海量數據時, 采用傳統的串口、USB接口傳輸數據往往需要花費數十小時, 不能滿足快速獲取試驗數據、持續開展試驗的需求.
隨著網絡技術的不斷發展, 以太網的速度由10Mbps發展到1000Mbps, 其高速穩定工作的能力使其可以應用到海量數據的傳輸[8-10]. 本文設計了一種基于FPGA的具備千兆以太網接口的數據通信記錄系統, 可通過RS485接口接收試驗數據, 將海量試驗數據存儲至FLASH中, 并可針對FLASH進行管理, 同時可通過千兆以太網接口以1000Mbps的速率向上位機完成數據傳輸, 大大縮短了傳統串口、USB等慢速接口傳輸數據所需要花費的時間, 在航天、航空與工業控制領域中具有廣泛的應用前景. 接口傳輸數據所需要花費的時間, 在航天、航空與工業控制領域中具有廣泛的應用前景.
本文設計的具備千兆以太網接口的通信記錄系統,具有兩種工作模式. 模式一為與被測系統通信, 模式二為與上位機進行通信.
在模式一中, 通信記錄系統與被測系統通過一路RS485接口相連接, 通信記錄系統以20ms為通信周期,向被測系統發送測試指令, 被測系統接收到測試指令后, 回送相關的測試數據, 通信記錄系統將接收到的所有測試數據, 連同發送的測試指令, 記錄到FLASH中.
在模式二中, 通信記錄系統通過千兆以太網接口與上位機(PC機)相連接, 通過運行在上位機的配套軟件管理通信記錄系統. 上位機的軟件如圖1所示. 通過上位機軟件, 可完成對于存儲在通信記錄系統的數據進行查找, 查詢結果顯示在軟件“查詢結果”區域,用戶可選取某一包數據, 點擊“讀取FLASH”按鈕, 將該包數據從通信記錄系統中通過千兆網口讀取至上位機中, 之后用戶可點擊“存為Excel”按鈕, 將數據存儲為特定格式文件, 便于事后的數據處理.

圖1 上位機操作軟件
除了完成對于通信記錄系統存儲的系統的讀取,通過上位機軟件可針對通信記錄系統進行日常的維護,主要包括對于通信記錄系統中存儲的數據擦除功能與標記存儲器壞塊的功能. 數據擦除功能用于在通信記錄系統長時間使用后, 系統中存儲了大量的數據, 用戶可以選擇將數據擦除; 標記存儲器壞塊功能用于系統在使用過程中定期的維護, 系統在使用過程中, 存儲介質有可能出現個別的壞塊, 通過標記存儲器的壞塊功能, 當系統在記錄數據時, 可跳過特定的壞塊, 確保即使出現個別壞塊也不影響整個通信記錄系統的使用.
通信記錄系統的數據處理核心為FPGA, 型號為Xilinx公司Virtex-5系列的XC5VLX50T, 非易失性存儲器選用三星公司FLASH, 型號為K9K8G08U0M,容量為8Gb.
根據功能需求, 將核心FPGA劃分為通信管理模塊、FLASH管理模塊與以太網IP核控制模塊, 通信記錄系統的系統架構如圖2所示.

圖2 通信記錄系統架構圖
當通信記錄系統工作于模式一時, 通信記錄系統通過RS485接口與被測系統相連接, 通信記錄系統上電后, 通信管理模塊通過定時器, 以20ms為周期, 讀取發送數據RAM中存儲的測試指令, 將該測試指令完成并串轉換, 構建同步時鐘, 通過RS485接口發送至被測系統; 被測系統接收到該測試指令后, 通過RS485接口回送測試數據, 通信管理模塊將該測試數據完成串并轉換, 并存儲于接收數據RAM中, FLASH管理模塊讀取接收數據RAM中的數據, 通過FLASH寫入模塊, 將測試數據寫入至FLASH中.
當通信記錄系統工作于模式二時, 通信記錄系統通過網口與上位機相連接, 上位機通過網口向通信記錄系統發送控制指令, 主要包括握手指令、數據查詢指令、數據讀取指令、擦除數據指令與標記壞塊指令,通信記錄系統接收到控制指令后, 通過以太網IP核控制模塊, 完成網絡接口協議的解析, 之后FLASH管理模塊通過指令譯碼模塊, 完成指令譯碼, 識別上位機發送的控制指令, 并根據相應的控制指令, 調用FLASH寫入模塊、讀取模塊與擦除模塊, 完成針對FLASH的特定操作, 并將相應的數據通過以太網IP核控制模塊回送至上位機.
2.1 通信記錄模塊
通信記錄模塊由發送數據RAM、接收數據RAM、串并轉換模塊與并串轉換模塊組成. 利用FPGA內RAM資源, 例化2個容量為64×8bit的雙口RAM, 分別作為發送數據RAM與接收數據RAM, 其中將發送RAM中寫入初始化的測試指令數據.
通信記錄系統上電后, 讀取發送數據RAM中的測試指令數據, 利用并串轉換模塊將讀取的RAM數據加入兩個字節的數據幀頭(0x7E7E), 并逐個字節進行CRC校驗計算, 最后將CRC校驗和結果(1字節)作為幀尾附加在測試數據最后, 以20ms為周期輸出.
當被測系統收到測試指令后, 向通信記錄系統回復測試數據, 串并轉換模塊首先識別兩個字節的數據幀頭(0x7E7E), 幀頭正確后, 按字節計算CRC校驗和,最后將計算的校驗和與幀尾的校驗和相比對, 數據一致視為通過校驗, 將該幀數據存儲至接收數據RAM中. 同時調用FLASH管理模塊, 將該幀數據存儲至FLASH中.
2.2 FLASH管理模塊
本通信記錄系統選用的FLASH為K9K8G08U0M,由8192個塊組成, 其中每1塊包括64頁, 每頁包含2048+64=2112Byte字節, FLASH總共包含512K頁, 總容量為8448Mbits.
為了便于管理FLASH中的數據, 將FLASH中數據存儲格式構建如表1所示. 對于每頁數據, 前四個字節為數據頭, 從字節5至字節2K為記錄的測試數據,每頁中2K后的字節不使用. 由于FLASH中的數據字初始狀態均為0xFF, 因此, 將每頁數據頭的初始值設計為0xFFFFFFFF, 并用于表示第1次試驗數據, 為了區分每次試驗的試驗數據(每次試驗中, 通信記錄系統持續加電, 試驗完成后斷電), 將每次試驗數據的數據頭依次減1, 例如: 第2次試驗數據的數據頭為0xFFFFFFFE, 第3次試驗數據的是巨頭為0xFFFFFFFD, 以此類推.
FLASH中第1塊至第8191塊用于記錄試驗數據,第8292塊中的第512K頁用于記錄FLASH的壞塊信息.

表1 FLASH中數據存儲格式
FLASH管理模塊包括指令譯碼模塊、FLASH寫入模塊、FLASH擦寫模塊與FLASH讀取模塊. FLASH管理模塊一方面執行上位機發送的控制指令, 另一方面管理FLASH, 完成數據的存儲、擦除與讀取. FLASH管理模塊主要完成的功能如下:
① 上電后查找本次試驗數據開始記錄的位置;
② 與測試系統連接時, 記錄試驗數據;
③ 根據上位機指令, 查找歷史試驗數據記錄的位置;
④ 根據上位機指令, 讀取歷史試驗數據;
⑤ 根據上位機指令, 擦除歷史試驗數據;
⑥ 根據上位機指令, 標記壞塊.
2.2.1 查找數據起始位置
為了保證本次試驗數據不能覆蓋之前記錄的試驗數據, 通信記錄系統上電后, 首先需要查找本次試驗數據應該寫入FLASH的起始位置. 具體實現方法為:當系統上電后, FLASH管理模塊首先逐頁讀取FLASH中每頁的數據頭(前4個字節), 并與前一頁的數據頭相比較, 若本次讀取的數據頭的值不大于前一頁的值時,說明當前頁不是本次試驗數據應該寫入的起始位置,應該繼續讀取下一頁; 若當前頁的數據頭的值大于前一頁的值, 則說明本頁為本次試驗數據FLASH的起始記錄地址. 本次試驗數據在記錄時從本頁開始記錄, 并將上一頁的數據頭的值減1, 作為本次試驗的數據頭.
2.2.2 記錄測試數據
通信記錄系統上電完成查找數據起始位置后, 以20ms為周期向被測系統通過RS485發送測試指令, 被測系統接收到測試指令后, 向通信記錄系統回復長度為60字節的測試數據, 通信記錄系統首先將該幀數據存儲至接收數據RAM中, 待數據接收完畢, FLASH寫入模塊將該幀數據從RAM中讀出, 在該幀數據前加入本次試驗的數據頭, 順序寫入到本次試驗數據記錄的FLASH頁地址中. 由于單幀測試數據(含數據頭)不超過64字節, 為保證數據對齊, 每幀數據在測試數據之后補齊至64字節, 因此FLASH每頁可記錄32幀測試數據.
2.2.3 查找歷史數據記錄位置
當通信記錄系統連接上位機時, 可利用上位機軟件, 查找歷史試驗數據在FLASH中存儲的位置. 當用戶在點擊上位機軟件中“查找數據位置”按鈕時, 上位機通過網口向通信記錄系統發送查找數據位置指令,通信記錄系統接收到指令后, FLASH讀取模塊逐頁讀取FLASH每頁的數據頭, 并將該頁的數據頭與前一頁的數據頭相比較, 如果該頁數據頭不大于前一頁的數據頭, 則將該頁的數據頭通過網口發送給上位機; 如果該頁數據頭大于前一頁的數據頭, 則說明該頁之后的數據不是歷史數據, 此后不再讀取下一頁的數據頭.上位機收取到FLASH逐頁的數據頭后, 利用上位機軟件, 計算每幀數據的起始頁與終止頁, 并顯示在上位機軟件界面上.
2.2.4 讀取歷史試驗數據
通信記錄系統連接上位機后, 用戶可以選取任意一次歷史試驗數據, 點擊“讀取FLASH”按鈕, 上位機將需要讀取FLASH的起始頁地址與終止頁地址通過網口發送至通信記錄系統, FLASH管理模塊中的指令譯碼模塊解析出起始頁地址與終止頁地址, 驅動FLASH讀取模塊, 從起始頁至終止頁逐頁將數據從FLASH中讀出, 通過網口發送至上位機.
2.2.5 擦除歷史試驗數據
通信記錄系統連接上位機后, 用戶可以點擊上位機軟件中“擦除FLASH”按鈕, 上位機向通信記錄系統發送擦除FLASH指令, FLASH管理模塊中的指令譯碼模塊識別該指令, 驅動FLASH擦寫模塊, 擦除FLASH第1塊至第8191塊的試驗數據, 由于FLASH的第8192塊中記錄著FLASH的壞塊信息, 該塊數據不擦除.
2.2.6 標記壞塊
在通信記錄系統長期使用過程中, FLASH可能產生壞塊, 在存儲數據的時候, 壞塊是不能成功寫入數據的, 因此需要在存儲數據的時識別壞塊并跳過.
用戶通過上位機軟件點擊“標記壞塊”按鈕, 上位機通過網口向通信記錄系統發送標記壞塊指令, 通信記錄系統譯碼模塊識別該指令后, 首先將FLASH第1塊至第8191塊的數據擦除, 此時擦除成功的FLASH數據內容應該全部為0xFF, 然后依次讀取每頁數據的數據頭, 如果某1頁數據的數據頭不為0xFFFFFFFF,說明該頁所在的塊是壞塊, 則將該塊的地址記錄在第8192頁中(第8192頁記錄FLASH全部壞塊的信息).在針對FLASH進行寫入數據的操作時, 首先要判斷該頁是否為壞塊, 如果該頁不是壞塊, 則正常寫入數據;如果該頁為壞塊, 則直接跳過該塊.
2.3 以太網IP核控制模塊
通信記錄系統的網絡接口控制采用Xilinx Virtex-5系列FPGA網口控制IP核Embedded Tir-Mode Ehternet MAC Wrapper, 通過后端控制邏輯驅動IP核控制以太網口, 其內部組織架構如圖3所示.

圖3 以太網控制模塊結構圖
在使用該IP核之前需要完成IP核的配置, 配置界面如圖4所示. 將通信記錄系統使用的IP核進行如下配置:
① 僅使用EMAC0(IP核支持2個網口, 通信記錄系統僅使用1個即可);
② 不使用Host Interface;
③ 物理接口配置為1000BASE-X PCS/PMA, 速度配置為1000Mbps;
④ 數據位寬為8位.

圖4 以太網控制IP核配置界面
后端控制邏輯訪問該網絡控制IP核時, 僅需要針對發送FIFO與接收FIFO進行操作, 主要包含6個信號, 如表2所示.

表2 發送FIFO與接收FIFO控制信號
對于發送FIFO與接收FIFO的時序操作如圖5所示, 向發送FIFO寫入數據時, 以時鐘上升沿驅動寫入;從接收FIFO讀取數據時, 以時鐘下降沿驅動采集. 當sof_n信號出現1個周期的低電平時, 說明網絡數據幀開始, 可向發送FIFO寫入數據或從接收FIFO讀取數據, 當eof_n出現1個周期低電平時, 說明網絡數據幀結束, 停止向發送FIFO寫入數據或從接收FIFO接收數據. 當src_rdy_n或dst_rdy_n不為低電平時, 說明信源或信目沒有準備好, 在此時鐘周期的數據沒有被成功發送或接收, 需要當src_rdy_n或dst_rdy_n重新為低電平時, 繼續進行數據寫入或者讀取.

圖5 發送FIFO與接收FIFO操作時序
通過記錄多次試驗數據, 并通過上位機進行數據讀取, 實測了上位機讀取數據記錄系統的速率, 如所示, 由表中可知, 數據傳輸速率可達約800Mbps, 系統性能良好, 接近千兆以太網傳輸的理論值.

表3 上位機讀取數據速率測試

3 256 0.32 801.85 4 128 0.16 801.53 5 64 0.80 801.22
本文針對航天、航空以及工業控制領域大數據量試驗數據記錄與維護的需求, 設計了一種具有千兆以太網接口的通信記錄系統. 系統以FPGA為控制核心, 實現對于FLASH的管理, 系統容量為8Gb, 利用Xilinx網口控制IP核實現了千兆以太網接口, 可通過網口連接上位機實現試驗數據的讀取, 并可針對通信記錄系統進行日常的維護工作. 本文可為試驗數據記錄等相關應用的系統設計提供參考, 具有廣泛的應用前景.
1 Kayeni B, Yisah S. Cloud based architecture solution for aircraft flight data recorder. British Journal of Applied Science & Technology, 2016, 13(2): 1–13.
2 劉根賢,呂國瑛,王曉林,邢勇.基于STM32的嵌入式數字記錄模塊關鍵技術研究.測控技術,2014,10:98–10.
3 張海洋.船載天線串口數據采集系統的設計與實現.計算機技術與發展,2016,1:156–160.
4 樊文俠,孫賓.LPC2478的通用串口數據記錄器的設計與實現.西安工業大學學報,2010,6:565–569.
5 王安,錢曉亮,樊文俠.基于ARM的USB接口數據記錄器的設計.計算機應用,2007,1:254–256.
6 Lehmann AE, Kirichenko DE, Gupta D. Improved high-speed data recorder for superconducting digital-RF receivers.IEEE Trans. on Applied Superconductivity, 2014, 24(4): 1–4.
7 Xu M, Bodik R, Hill MD. A “flight data recorder” for enabling full-system multiprocessor deterministic replay. ISCA-30, 2003: 122–133.
8 焦新泉,孫英良,焦亞濤.以太網大容量固態數據記錄器的設計.電測與儀表,2010,12:77–80.
9 聶玉鑫.一種千兆以太網數據記錄設備的實現.聲學與電子工程,2013,2:33–34.
10 聶玉鑫,徐永剛,任國強,吳欽章,吳威.NAND Flash高速圖像記錄壓力測試系統.紅外與激光工程,2013,10:265–271.
Gigabit Ethernet High-Speed Data Communication Recording System
YAO Wang1, LI Pu1,2, LI Huan1, JIN Hong-Xin1, MOU Hong-Wei112
(China Academy of Launch Vehicle Technology, Beijing 100076, China) (National University of Defense Technology, Changsha 410073, China)
For the special experiment data acquire and analysis of aviation and spaceflight, this paper puts forward a design of a gigabit Ethernet interface based on FPGA of high speed data communication recording system, which describes function design, hardware design, interface design, embedded software design detailly, communicating with the system through the communication interface. The system can record data to the nonvolatile memory in the process of communication, afterwards, through the data interface output data to PC to complete the data processing and analysis.
ethernet; communication; recording system; design
2016-03-28;收到修改稿時間:2016-06-01
10.15888/j.cnki.csa.005557