曹慶年 鄭博 孟開元 穆偉


關鍵詞:確定性網絡;RGMII接口;千兆以太網;MAC幀;節點;高并發
1 引言
在航空航天、工業控制、自動駕駛、遠程醫療等對網絡實時性要求比較苛刻的通信領域,需要將端到端的時延控制在微妙級,可靠性控制在接近百分之百。而傳統的網絡采用事件觸發的方式,端系統采用競爭訪問的方式,使得網絡的實時性和確定性較差[1]。確定性網絡在現有網絡基礎設施上,借助SDN、節點控制與轉發擴展等技術機制,提供確定性網絡服務,與現有網絡其他業務和設施兼容,可對5G場景下超低時延、超可靠連接場景提供有效的支撐[2]。
早前,維也納技術大學便提出時間觸發以太網(TTE) 技術,旨在改變傳統以太網基于事件觸發的傳輸模式。該技術是局域網首個時間確定性網絡組網技術,主要通過調度業務的傳輸時刻,保障業務的時延[3]。文獻[4]研究時間的分區技術,可以提高IMA體系網絡的帶寬利用率。文獻[5]在OPNET網絡仿真的基礎上,采用網絡演算理論,分析了TTE網絡的性能。
本設計采用了多節點收發的功能,將全部節點分為1個時鐘同步主端(MC) 節點和多個時鐘同步從端(RN) 節點。在消息發送的時候,MC節點可以向其他節點提供系統標準時間,RN節點將本節點的時間同步至系統時間,實現多設備之間數據的可靠傳輸,更適合千兆以太網等高速傳輸場合。
2 總體設計方案
2.1 系統結構設計
該設計包括一路2.5G、4LANE的PCIe接口、一路RGMII接口的1000MHZ以太網MAC接口,在發送端支持至多可配置的64 條控制/狀態消息和8 條流消息、接收端支持可配置的64條控制/狀態消息和8條流消息。外圍接口電路包括PCIe接口、以太網MAC接口;內部模塊包括DMA模塊、發送控制模塊、接收控制模塊、寄存器模塊、通道配置寄存器組模塊。PCIe空間包括BAR0、BAR1、BAR2三個空間,BAR0用于PCIe內部的寄存器,BAR1和BAR2基地址可配置,系統結構設計如圖1所示。
主要功能特性:
(1) 支持一路2.5Gbps 4Lane的PCIe2.0主機接口;
(2) 具有一路RGMII 接口的千兆以太網MAC 接口,支持與RGMII接口的千兆以太網PHY芯片通信;
(3) 支持通過配置表實現數據收發管理,配置表存儲在主機FLASH,上電后由主機寫入芯片;
(4) 支持兩種數據幀格式,包括64路控制/狀態消息(數據包長度至多128字節)和8路流消息(數據包負載長度至多1416字節);
(5) 提供DMA寄存器,供主機填寫存儲流消息的主機地址、長度和啟動三個參數,主機填寫啟動后電路自動將數據負載搬運至主機指定內存地址;
(6) 支持以太網數據包接收過濾功能,主機可設定過濾的消息ID,芯片將自動對接收到的以太網數據包按照消息ID進行過濾;
(7) 發送和接收的以太網數據包均支持單播、多播、廣播。
2.2 數據包格式
2.2.1 MAC 封裝
1) MAC地址的目的地址如表1所示。
其中相關定義如下:
(1) 單/多播:選擇單播時填入0x00,多播時填入0x01;
(2) MAC常量填入當前節點的MAC常量;
(3) 節點ID/多播分組:選擇單播時填入目的節點的ID,選擇多播時填入目的節點的多播分組。
2) MAC地址的源地址如表2所示。
其中相關定義如下:
(1) 節點ID:填入本節點的節點ID;
(2) MAC常量填入當前節點的MAC常量。
2.2.2 STOF(傳輸起始包)幀格式
其中相關定義如下:
(1) 目的地址使用的地址是廣播地址,為0XFFFFFFFFFFFF;
(2) 源地址為MC節點的MAC地址;
(3) 長度/類型字段填充長度為0X002E(ETH數據包最小包長度),實際有效數據長度為5個字節;
(4) 幀類型填充0x01,指示為STOF幀;
(5) 4個字節的節點狀態指示當前網絡中節點上線狀態;
(6) 填充字段使用0x00。
2.2.3 SNM(系統網絡管理包)幀格式
其中相關定義如下:
(1) 目的地址使用MC節點的MAC地址;
(2) 源地址使用RN節點的MAC地址;
(3) 長度/類型字段填充長度為0x002E(ETH數據包最小包長度),實際有效數據長度為2個字節;
(4) 幀類型填充0x02,指示為SNM幀;
(5) 節點ID填充RN分配的節點ID號;
(6) 填充字段使用0x00。
2.3 數據流程
2.3.1 數據包發送流程
數據包發送流程如下所示:
(1) 上層軟件上線后配置設備ID寄存器、MAC地址常量定義寄存器、節點狀態發送偏移寄存器、狀態/控制消息發送通道偏移寄存器、流消息發送通道偏移寄存器、流消息發送通道數據存儲地址寄存器;
(2) 上層軟件配置設備工作模式寄存器為正常工作模式,系統上線;發送控制/狀態消息參見第(3)步,發送流消息參見第(4)步;
(3) 上層軟件配置狀態/控制通道發送緩沖區,填入數據包PAYLOAD(負載),之后填寫狀態/控制消息發送通道緩沖占用標志寄存器,填入PAYLOAD存放位置,之后填寫狀態/控制消息發送通道配置寄存器,填入數據包關鍵參數,之后讀取狀態/控制消息發送通道配置寄存器VLD(有效)位,直到此位段位0;
(4) 上層軟件在主機軟件可讀可寫區域填入數據包PAYLOAD,之后填寫流消息發送通道數據存儲地址寄存器,填入PAYLOAD存放位置,之后填寫流消息發送通道配置寄存器,填入數據包關鍵參數,之后流消息讀取發送通道配置寄存器VLD位,直到此位段位0。
2.3.2 數據包接收流程
數據包發送流程如下所示:
(1) 上層軟件上線后配置設備ID寄存器、MAC地址常量定義寄存器、節點狀態發送偏移寄存器、狀態/控制消息發送通道偏移寄存器、流消息發送通道偏移寄存器、流消息發送通道數據存儲地址寄存器中斷屏蔽寄存器;
(2) 上層軟件配置設備工作模式寄存器為正常工作模式,系統上線;
(3) 上層軟件等待中斷,當收到中斷時,首先配置中斷使能寄存器為0,之后讀接收消息信息FIFO狀態寄存器;
(4) 讀接收消息信息FIFO,判斷當前接收包類型、消息號、長度等參數,若當前數據包類型為控制狀態消息,參見第(5)步,否則,參見第(6)步;
(5) 根據消息號和長度讀相應狀態/控制通道接收緩沖區;
(6) 根據消息號和長度讀流消息接收通道數據存儲地址寄存器,根據讀得的數據讀主機內存相應地址;
(7) 寫中斷狀態寄存器REV_MSG位段為1,清除中斷。
2.4 硬件電路設計
該設計采用Zynq-7000 MZ7035FA開發板作為控制芯片,用戶可以基于核心板設計功能底板,降低項目底板設計難度和生產成本,加速項目開發。具有多個高性能接口,4路PCIE2.0接口,3路千兆網口,4路DDR接口,可以充分滿足該設計的需求。
2.4.1 RGMII 接口電路
RGMII 時鐘頻率為125MHZ,TXD/RXD(發送/接收)數據寬度為4位。該接口為了保持1000Mbps的傳輸速率不變,在時鐘的上升沿和下降沿都采樣數據。發送方向,時鐘通過1 個DCM 和4 個BUFG 驅動相位為0、90、180、270 的4 種時鐘。接收方向,線路時鐘通過1 個DCM 和2 個BUFG 恢復相位為0°和180°的2 種時鐘[6]。
RGMII以太網芯片集成在核心模塊上,將發送控制模塊發送的數據整理后轉換時序送至千兆以太網MAC模塊。如圖2為RGMII接口電路時序。
2.4.2 PCIE 接口電路
PCIe2.0 是全雙工串行總線,在物理層使用8B/10B 編碼[7],PCIe2.0 x 1 的帶寬= (5Gb/s x 2(雙向通道)) / 10bit = 1GB/s。PCIe連接可以通過增加通道數擴展帶寬,通道越多,速度越快,在該設計中最多使用4通道。各設備之間,數據傳輸都是以Packet形式進行的。數據從一組信號線上發送,在另一組信號上接收。設備的各個端口使用差動驅動器和接收器,采用差分對進行收發。在本文中,主機通過PCIe總線從接口訪問內部的地址空間包括各個寄存器、發送緩沖區、接收緩沖區。事務層根據上層(軟件層或者應用層)請求的類型、目的地址和其他相關屬性,把這些請求打包,產生TLP。然后這些TLP往下,經歷數據鏈路層、物理層,最終到達目標設備[8]。
PCIe接口電路的AC耦合電容要求靠近發送端放置,取值范圍在75~200nf;差分線阻抗要求為:68~105R,一般按照100R±10%設計;差分數據信號線盡量做到等長,長度差控制在10mil 以內。如圖3 為PCIE接口電路。
2.5 實驗結果
為了驗證具體的設計功能,需要搭建自動化仿真驗證平臺,從而進行功能仿真。在VNC 下使用Ca?dence NC Simvision15.1仿真驗證工具[9],如圖4為仿真驗證結構。
(1) 注入激勵用于驅動主機模型;
(2) 主機模型驅動PCIe主設備模型和ETH主設備模型;
(3) PCIe主設備模型用于向待測模塊發送寄存器讀寫請求和MEM(存儲器)讀寫請求;
(4) ETH主設備模型用于發送和接收以太網接口的數據包。
2.5.1 以太網發送數據包仿真
仿真步驟如下:
(1) 主機通過PCIe向以太網發送DATA發送STOF數據包,并對參數進行配置,DATA_LENGTH(數據長度)分別為32’h00000010,32’h00000014,32’h00000100,32’h00000200,32’h00000300,32’h00000400,32’h00000404,32’h00000588;
(2) 等待數據包接收完成,判斷數據包的IP地址與寫入的是否一致;判斷數據包的UDP地址與寫入的是否一致;
(3) 判斷數據包的最高8位是否為8’h00,是則為單播,否則為多播。如圖5,仿真后在波形圖中讀到的值與寫入的值相同,符合要求。
在開發板上進行測試,數據緩沖區中的數據與發送的數據一致。將數據長度傳入接收地址,在軟件中進行抓包,接收地址中的數據與發送的數據一致,如圖6所示為抓包數據。
3 結論
相比傳統的事件觸發的傳輸模式,本文介紹的多節點收發傳輸方式可以實時獲取時鐘主端節點和時鐘從端節點的系統時間,極大地保證了系統的實時性、可靠性。由于FPGA硬件具有并行優勢,在一個時鐘周期內,可以完成更多的處理任務[10]。并且搭載的開發板IO 口數量多、可編程、開發靈活;具有豐富的IP核,可以縮短周期,提高穩定性。每個數據幀都有8B/10B 和CRC 循環校驗來增加系統的抗干擾和檢錯能力。最后實現的基于千兆網的時間確定性網絡設計提供實時數據傳輸,保證確定的通信服務質量,可以滿足大多數的高速設備的數據傳輸。