?

基于DIC算法的萬兆以太網RS發送控制方法研究

2018-11-01 03:43唐金鋒劉澤響
機械工程與自動化 2018年5期
關鍵詞:萬兆狀態機字符

劉 揚,唐金鋒,劉澤響

(西安微電子技術研究所,陜西 西安 710054)

0 引言

萬兆以太網基于傳統千兆以太網發展而來,以更高的傳輸速率將以太網的應用范圍從局域網擴展到城域網和廣域網[1],其中的一個顯著變化是MAC(Media Access Controller,介質訪問控制)層與物理層的接口由原來的低帶寬接口變更為32 bits或64 bits位寬的XGMII(10 Gigabit Media Independent Interface)接口[2],這給以太網數據連續發送時的幀間隔控制和XGMII接口時序控制增加了設計難度,帶來了更大的挑戰。為提高以太網幀連續發送的效率,本文在IEEE802.3ae協議的基礎上,提出了一種基于DIC(Deficit Idle Count)算法的萬兆以太網RS(Reconcilation Sublayer)發送控制方法,并對該方法進行了實驗驗證。

1 基于DIC算法的RS發送控制方法

1.1 RS發送控制基本原理

萬兆以太網RS子層的作用是將MAC子層的數據映射到物理層接口——XGMII[3]。根據協議,XGMII可為4通道32 bits數據位寬DDR(雙沿)采樣模式或者8通道64 bits數據位寬SDR(單沿)采樣模式[4],本文實現的XGMII接口為SDR采樣模式。當MAC子層有數據需要發送時,RS子層發送控制將IEEE802.3協議幀按照XGMII接口時序規范發送至物理層,包括組幀(添加前導碼與幀結束標志符T)、保持幀間隔和控制幀對齊等[5],幀格式如圖1所示。其中各字段從左至右依次為前導碼、幀起始定界符、目的地址、源地址、長度/類型、數據、填充、CRC檢驗、幀結束符。

在以太網協議中,數據以幀的形式發送,在一幀發送完成后,以太網的相關組件需要短暫的時間恢復,為發送下一幀做準備。幀間隔時間設置過長,會降低數據的傳輸效率;若設置過短,則不能保證設備正?;謴?。因此,在IEEE802.3協議中,MAC層定義的參數IFG規定了最小的幀間隔為96 bits時間,相當于發送12字節數據的時間[6]。千兆以太網MAC均采用單字節的數據發送方式,故在一幀發送完成后發送12個空閑(IDLE)字符即可。而萬兆以太網XGMII接口為8通道并行發送數據,要求幀起始位置必須位于Lane0或Lane4,故幀長度不是4字節整數倍時,需要增刪IDLE字符以使下一幀開始對齊在Lane0或Lane4上。

圖1 幀格式

為解決保持幀間隔和幀對齊的問題,IEEE802.3ae協議中提供了兩種方法:直接插入IDLE字符法與基于DIC算法插入IDLE字符法。

1.2 直接插入IDLE字符法

由于XGMII接口是8通道并行傳輸數據,一個時鐘周期發送8通道數據,發送T字符時鐘周期內剩余通道發送IDLE字符,不計入幀間隔,之后再發送12個IDLE字符以保證幀間隔。如圖2所示,圖中數字序號表示第幾幀數據,連續發送兩幀數據,T字符都結束在Lane3,幀間隔均為16個IDLE字符。此方法保證幀間隔滿足協議要求并保證幀對齊,但此方法會使得平均幀間隔大于協議規定的12個IDLE字符的最小幀間隔,帶入不必要的延遲,影響以太網幀連續發送時的效率。

圖2 直接插入IDLE字符

假設連續發送的以太網幀的數據長度為隨機值,幀結束發送IDLE字符個數為0個~7個,且出現概率均等,則使用直接插入IDLE字符法時的平均幀間隔所包含的IDLE字符個數A可由公式(1)得出:

(1)

1.3 基于DIC算法插入IDLE字符法

DIC算法可動態控制插入IDLE字符的個數,該算法定義了一個變量dic_cnt用來累計增加或減少的IDLE字符個數。以IEEE802.3協議中規定的最小幀間隔(12個IDLE字符)為參考,若增加1個IDLE字符,則變量dic_cnt的值減1;反之,若減少1個IDLE字符則變量dic_cnt的值加1。規定變量dic_cnt的取值范圍為-3~3,即最多累計添加3個IDLE字符或減少3個IDLE字符。這樣會使得幀連續發送時的幀間隔取值在9個~15個IDLE字符之間變化。如圖3所示,連續發送兩幀數據,T字符都結束在Lane5,第一幀補充了12個IDLE字符,此時幀間隔為14個IDLE字符,參考IFG已多補充2個IDLE字符,則dic_cnt為-2。為保證dic_cnt不超過范圍以及幀對齊,第二幀補充8個IDLE字符,此時幀間隔為10個IDLE字符,則dic_cnt為0,平均幀間隔為12個IDLE字符。

圖3 基于DIC算法插入IDLE字符

假設連續發送N個以太網幀,則此N個以太網幀發送時的平均幀間隔所包含的IDLE字符數A可由公式(2)得出:

(2)

DIC算法中,變量dic_cnt取值為-3~3,為有限值。受到這一制約,隨著連續發送的幀數量N逐漸增加,平均的IDLE字符數會趨近12,即:

(3)

由公式(3)可知,當N足夠大時平均的IDLE字符個數會收斂到12,故該方法能夠滿足IEEE802.3協議中規定的最小幀間隔要求。相比于直接插入IDLE字符法的平均值15.5,此方法可將平均幀間隔IDLE字符個數減少22.58%。

本文給出超導磁場儲能技術下的渦流損耗預測控制具有重要的研究價值。超導磁場儲能的預判控制模型存在均衡約束和預測控制,即外環控制和內環控制,采用兩組PI調控裝置,通過有功反饋調控和無功反饋調控技術設計儲能架構。若微網處在孤島運轉狀態時,超導磁場儲能技術可轉變現有控制策略,轉換為恒壓恒頻控制方法,進而保障微網孤島運轉過程中的電位與頻率的穩定性,從而保障超導磁場儲能技術下的實時調控和供電質量。

2 基于DIC算法的RS發送控制實現

2.1 RS發送控制流程

RS發送控制通過RS發送控制狀態機將MAC幀數據組幀,結合DIC算法控制XGMII接口數據映射,并參與鏈路錯誤消息檢測及幀對齊控制,最終將MAC幀數據發送至XGMII發送通道。RS的發送控制工作流程如圖4所示。

2.2 RS發送控制狀態機

RS發送控制狀態機根據IEEE802.3ae協議的RS子層發送規范進行設計,采用獨熱碼編碼方式,共有7個狀態,如圖5所示。

圖4 RS發送控制工作流程

(1) TX_IDLE:此狀態為發送狀態機的初始狀態,發送任務中斷或結束時會返回該狀態,默認發送8字節IDLE字符。待發送FIFO中數據完備,并檢測無本地和遠端錯誤時,設置tx_fifo_ren讀使能有效,并進入TX_PREAMBLE狀態。

圖5 RS發送狀態機

(2) TX_PREAMBLE:檢測到幀開始,發送前導碼及對應控制字符,發送完成后進入TX_FRAME狀態。

(3) TX_FRAME:該狀態發送幀數據主體部分,當檢測到幀數據結束信號時,鎖存幀結束狀態,即幀結束時最后一個有效數據的位置信息,并進入TX_EOP狀態。若沒有收到幀數據結束信號發送FIFO就讀空或發送FIFO溢出等異常時,則進入TX_TERM_FAIL狀態。

(4) TX_EOP:根據幀結束狀態,完成幀結束符T的發送。如圖6所示,當數據D結束在通道Lane0、Lane1或Lane2時,在該狀態下即可完成T字符的發送,計算當前幀幀尾的IDLE數量,并根據on_lane0(用來標識幀是否起始于lane0)、add_4b(表示需添加4字節IDLE)、add_8b(表示需添加8字節IDLE)信號進行狀態跳轉。on_lane0有效或add_4b有效時跳轉至TX_IDLE狀態;on_lane0信號無效但add_8b有效時進入IFG狀態;若數據D結束在Lane3~Lane7,則進入TX_TERM狀態。

圖6 TX_EOP狀態T字符發送情況

圖7 TX_TERM狀態T字符發送情況

(6) TX_TERM_FAIL:發送異常時進入此狀態,此狀態時結束當前幀的發送。跳轉至TX_IDLE狀態。

(7) TX_IFG:該狀態直接發送8個字節IDLE字符,并進入TX_IDLE狀態。

2.3 DIC算法控制模塊

DIC算法控制模塊根據幀數據結束狀態和當前的dic_cnt值,通過DIC算法生成on_lane0、add4、add83個主要信號來控制RS狀態機跳轉和IFG的值,其結構如圖8所示。

DIC算法控制的4個子模塊具體功能設計如下:

(1) 幀結束IDLE數計算:根據發送幀結尾數據狀態以及幀起始位置計算出發送T字符的時鐘周期發送的IDLE字符個數。

(2) 幀對齊控制:TX_EOP狀態后,在TX_TERM狀態或TX_IDLE狀態,根據當前幀對齊位置控制信號和添加IDLE字符個數,生成新的幀對齊位置控制信號。

(3) 幀間隔調整控制:在TX_EOP狀態,由幀結束IDLE字符個數和當前DIC變量值,計算出幀結束時為調整控制幀間隔需要添加的IDLE字符個數。

(4) DIC變量計算:在TX_EOP狀態,根據幀結束IDLE字符個數、添加IDLE字符個數以及當前的DIC變量值,計算新的DIC變量值。

圖8 DIC算法控制模塊框圖

3 仿真驗證

模擬連續以太網幀發送進行仿真驗證,在RS發送控制中分別使用直接插入IDLE字符法與DIC算法控制幀對齊與幀間隔。連續發送多個以太網幀,對比使用兩種方法發送完同樣幀個數所用的時間,仿真結果如圖9所示。其中,xgxs_txd[63:0],xgxs_txc[7:0]為發送至XGMII接口上的信號,frame_cnt記錄已發送的以太網幀個數,為方便邏輯設計,dic_cnt值用0~6表示實際值-3~3。圖9(a)中,idle_cnt表示采用直接插入IDLE字符法時在幀間隔中累計發送IDLE字符的個數。圖9(b)中,dic_cnt表示相對于IEEE802.3規定的最小幀間隔累積添加的IDLE字符個數。

圖9 兩種方法仿真波形

如圖9(a)所示,采用直接插入IDLE字符法時,當發送完第999幀后,累計發送IDLE字符個數為15 484個,平均幀間隔為15.499個,發送共用時72 425.6 ns。如圖9(b)所示,采用DIC算法時,當前dic_cnt為3,即實際的0,表示累計添加了0個IDLE字符,由公式(1)計算得,平均幀間隔為12.000個,發送共用時72 214.4 ns。仿真結果表明:本文基于DIC算法的RS發送控制方法,功能設計符合預期,連續發送萬兆以太網幀間隔收斂于IEEE802.3協議中規定的最小幀間隔12個IDLE字符,平均幀間隔較直接插入IDLE字符法減少了22.58%。

4 結語

本文在研究分析IEEE802.3ae協議的基礎上,提出了一種基于DIC算法的萬兆以太網RS發送控制方法,并基于該方法實現了RS發送控制。仿真驗證結果表明:連續發送萬兆以太網幀間隔收斂于IEEE802.3協議中規定的最小幀間隔12個IDLE字符,且平均幀間隔較直接插入IDLE字符法減少了22.58%,提高了萬兆以太網幀連續發送的效率。

猜你喜歡
萬兆狀態機字符
字符代表幾
一種USB接口字符液晶控制器設計
圖片輕松變身ASCⅡ藝術畫
基于有限狀態機的交會對接飛行任務規劃方法
HBM電子稱與西門子S7-200系列PLC自由口通訊
基于Spring StateMachine的有限狀態機應用研究
高速公路萬兆環網建設探析
一種基于FPGA的萬兆光纖以太網高速傳輸方法
萬兆環網在京秦高速智能化監控中的應用
萬兆以太網在連徐高速公路通信系統改造中的應用
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合