楊 瑩,張 琴,楊燦美,林福江
(1.中國科學技術大學 信息科學技術學院,安徽 合肥 230027;2.中國科學技術大學 先進技術研究院,安徽 合肥 230027)
?
萬兆以太網(wǎng)MAC的流量控制電路設計與實現(xiàn)
楊瑩1,張琴1,楊燦美2,林福江1
(1.中國科學技術大學 信息科學技術學院,安徽 合肥 230027;2.中國科學技術大學 先進技術研究院,安徽 合肥 230027)
摘要:深入研究以太網(wǎng)組幀、傳輸?shù)姆绞揭约傲髁靠刂频脑?,結合萬兆以太網(wǎng)介質(zhì)訪問控制(XGMAC)64 bit數(shù)據(jù)并行處理的特點,針對PAUSE幀響應周期長、占用硬件資源多的問題,設計了一種精簡的基于PAUSE幀的流量控制電路,在ISE中邏輯綜合與仿真。驗證結果表明,該電路可滿足萬兆以太網(wǎng)流量控制的要求。
關鍵詞:萬兆以太網(wǎng);流量控制;XGMAC;PAUSE幀
引用格式:楊瑩,張琴,楊燦美,等. 萬兆以太網(wǎng)MAC的流量控制電路設計與實現(xiàn)[J].微型機與應用,2016,35(13):25-27.
0引言
自2002年萬兆以太網(wǎng)標準IEEE802.3ae[1]提出以來,萬兆以太網(wǎng)技術得到迅速發(fā)展與廣泛應用,近年來逐步取代千兆以太網(wǎng)成為新一代的城域骨干網(wǎng)絡。相對于千兆以太網(wǎng)MAC層的125 MHz時鐘頻率與8 bit數(shù)據(jù)處理位寬,萬兆以太網(wǎng)介質(zhì)訪問控制(10 Gigabit Ethernet Media Access Controller, XGMAC)層采用156.25 MHz時鐘頻率與64 bit數(shù)據(jù)處理位寬。時鐘頻率的提高、數(shù)據(jù)位寬的增大給MAC層流控制電路的設計帶來新的挑戰(zhàn)[2]。本文針對XGMAC層的特點提出一種高效、低功耗的流控制電路設計方案,旨在減少流控制機制對系統(tǒng)造成的額外延時并以此提高發(fā)送和接收以太網(wǎng)幀的效率。
1基于PAUSE幀流控制的原理
為了提高傳輸效率,XGMAC層采用PAUSE幀進行流量控制。PAUSE幀為符合IEEE802.3協(xié)議的一種控制幀,遵從以太網(wǎng)最小幀長度64 B的限制[3]。
圖1 XGMAC流量控制示意圖
流量控制原理如圖1所示,當local_XGMAC 接收模塊中接收緩存快滿(快空)時,local發(fā)送模塊根據(jù)流量控制模塊指示的信號發(fā)送時間參數(shù)為0xFFFF(0x0000)的PAUSE幀。remote_XGMAC接收模塊接收到PAUSE幀并確認有效后,提取時間參數(shù)用于流量控制模塊的暫停發(fā)送計數(shù)器賦值,并以此控制發(fā)送模塊暫停(恢復)發(fā)送數(shù)據(jù)幀。
2流量控制電路的結構
如圖2所示,XGMAC流量控制模塊分為發(fā)送和接收兩個部分。
圖2 流量控制電路結構圖
2.1PAUSE幀發(fā)送電路設計
千兆以太網(wǎng)中,因其8 bit的數(shù)據(jù)處理位寬限制,PAUSE幀通常使用邏輯狀態(tài)機,按照幀格式通過狀態(tài)轉換填充至發(fā)送緩存,邏輯略顯繁瑣。
本文經(jīng)過對比分析后發(fā)現(xiàn),對于暫停發(fā)送與恢復發(fā)送這兩種功能的幀,數(shù)據(jù)中有且只有時間參數(shù)與CRC校驗碼不同,考慮到XGMAC內(nèi)部數(shù)據(jù)為64 bit并行處理,設計時可將幀中固定部分(即目的地址到操作碼)與控制字節(jié)直接固化于72 bit位寬的PAUSE ROM空間內(nèi),時間參數(shù)根據(jù)幀的功能對應賦值即可。發(fā)送電路的結構如圖2上半部分所示。實際工作中,由發(fā)送PAUSE控制器根據(jù)接收緩存邏輯判斷結果選擇PAUSE ROM或發(fā)送緩存FIFO作為數(shù)據(jù)源,按照XGMAC數(shù)據(jù)格式送至預存數(shù)據(jù)FIFO即可。
本文設計的PAUSE發(fā)送控制器流程如圖3所示。
圖3 PAUSE幀發(fā)送控制流程
計數(shù)器于發(fā)送PAUSE幀后啟動,用于保證兩次PAUSE幀發(fā)送的間隔時間;local XGMAC處于暫停接收狀態(tài)時,檢測到接收緩存快空時,即進入發(fā)送PAUSE幀狀態(tài),設置時間參數(shù)0x0000,通知remote XGMAC可以繼續(xù)發(fā)送數(shù)據(jù)。PAUSE幀所需的CRC32校驗、填充及組幀可共用XGMAC本身的數(shù)據(jù)處理模塊。
使用Verilog HDL[4]語言對PAUSE發(fā)送控制器進行描述,部分關鍵代碼如下:
always@(posedge clk_tx or negedge reset_tx_n) begin
if(!reset_tx_n) pauserom_sel <= 1′b0;
else if(local_busy&pause_tmzero&(tx_empty|tx_eop)) pauserom_sel <= 1′b1;
else if(pause_eop) pauserom_sel <= 1′b0;
end
assign txl_rdat= pauserom_sel? pauserom _rdat : tx_rdat;
assign txl_eop = pauserom_sel? pauserom_eop : tx_eop;
assign txl_sop = pauserom_sel? pauserom_sop : tx_sop;
assign txl_empty = pauserom_sel? pause_rempty : (tx_empty | pause_state);
assign pauserom_ren = pauserom _sel? txl_ren : 1′b0;
assign tx_ren =pauserom _sel? 1′b0 : txlfifo_ren;
其中,local_busy表示接收緩存FIFO快滿;pause_tmzero表示計數(shù)器計時結束;pause_state表示當前處于暫停發(fā)送狀態(tài)。
2.2PAUSE幀接收電路設計
本文設計的接收電路結構如圖2下半部分所示,接收PAUSE幀控制器是本設計的重點。與千兆以太網(wǎng)的8 bit數(shù)據(jù)處理位寬不同,64 bit并行識別PAUSE幀與定位參數(shù)的方式可大幅提高處理速度。XGMAC采用Deficit Idle Count(DIC)算法保證數(shù)據(jù)32 bit對齊;在本設計中利用移位寄存器,實現(xiàn)了數(shù)據(jù)幀的64 bit對齊,方便XGMAC的后續(xù)處理。實際工作中,3個時鐘周期可完成PAUSE識別。
PAUSE接收控制流程如圖4所示。
圖4 PAUSE幀接收控制流程
檢測到幀頭后進行判斷:若為PAUSE幀,設置暫停發(fā)送或者恢復發(fā)送的狀態(tài);若是數(shù)據(jù)幀,則根據(jù)當前接收FIFO狀態(tài)保存數(shù)據(jù),遞交上層協(xié)議。部分關鍵代碼為:
if (curr_cnt == 11′d0 && rx_aligndat[47:0] == ′PAUSE_FRAME) begin
next_pause_addr = 1′b1;
end
if (curr_cnt == 11′d8) begin
next_pause_addr = 1′b0;
if( pause_addr && rx_aligndat [47:32] == ′PAUSE_TYPE &&
rx_aligndat [63:48] == ′PAUSE_OPERATE) begin
next_pause_opera = 1′b1;
end
end
if (curr_cnt == 11′d16 && pause_opera == 1′b1) begin
next_pause_opera = 1′b0;
next_pause_time = rx_aligndat [15:0];
next_pause_frame = 1′b1;
end
其中,第一個時鐘沿完成組播目的地址的檢測;第二個時鐘沿結合地址檢測結果并行檢測幀的類型與操作碼;第三個時鐘根據(jù)前兩個檢測結果獲取時間參數(shù)并用于發(fā)送計數(shù)器。
3仿真及驗證
電路選用Virtex5系列 XC5VSX50T型FPGA芯片,按以下流程使用ISIM進行仿真驗證:(1)模擬以太網(wǎng)數(shù)據(jù)幀發(fā)送過程中插入PAUSE幀;(2)模擬以太網(wǎng)數(shù)據(jù)幀接收過程中檢測PAUSE幀;(3)將發(fā)送部分與接收部分相連進行環(huán)回測試,檢測PAUSE幀發(fā)送與接收整個過程。環(huán)回測試截取仿真時間140 ns~550 ns的波形如圖5所示。
圖5 回環(huán)測試結果
A處表示正常狀態(tài)下發(fā)送PAUSE控制器選擇讀取發(fā)送緩存 FIFO;B處監(jiān)測到接收緩存FIFO快滿,進入監(jiān)測數(shù)據(jù)幀發(fā)送狀態(tài)階段;C處表示當前數(shù)據(jù)幀讀取完畢;結合B處狀態(tài),D處發(fā)送PAUSE控制器切換讀取PAUSE ROM并發(fā)送,若持續(xù)檢測到接收緩存FIFO快滿,則于計數(shù)器計數(shù)完成后再次進入D狀態(tài),計數(shù)過程中正常發(fā)送數(shù)據(jù)幀;E處pause_frame_ok信號指示PAUSE幀環(huán)回后被正常接收識別。
在ISE中對關鍵路徑進行約束,綜合后得到最高運行頻率達181.23 MHz,頻率設計余量約16%,滿足XGMAC設計要求。
4結論
針對萬兆以太網(wǎng)MAC層64 bit并行數(shù)據(jù)的特殊性,本文通過在發(fā)送緩存鏈路中插入控制電路,利用小容量ROM配合簡易邏輯的方式,實現(xiàn)了發(fā)送端的流量控制。相對于純狀態(tài)邏輯的實現(xiàn)途徑,此方式更容易凸顯電路的簡潔,從而提升電路的高速性能;接收鏈路中,將接收數(shù)據(jù)64 bit對齊后,并行檢測特征參數(shù)以識別PAUSE幀,并提取時間參數(shù)反饋至發(fā)送端,有效地提升了處理速度。經(jīng)過仿真,驗證了該方案可行。本文的思路對其他高速通信的流量控制電路設計具有一定借鑒意義。
參考文獻
[1] IEEE Std 802.3ae-2002, Media Access Control (MAC) Parameters, Physical Layers, and Management Parameters for 10 Gb/s Operation[S].2002 .
[2] 張友亮, 劉志軍, 馬成海,等. 萬兆以太網(wǎng)MAC層控制器的FPGA設計與實現(xiàn)[J/OL]. 計算機工程與應用,(2011-02-24).http://www.cnki.net/kcms/detail/11.2127.TP.20110224.1050.005.html.
[3] 張立明,章建雄,王玉艷. 千兆以太網(wǎng) MAC 的流量控制策略[J]. 計算機工程,2011,37(15):256-258.
[4] 夏宇聞.Verilog數(shù)字系統(tǒng)設計(第二版)[M].北京:北京航空航天大學出版社,2008.
中圖分類號:TP47
文獻標識碼:A
DOI:10.19358/j.issn.1674- 7720.2016.13.008
(收稿日期:2016-03-04)
作者簡介:
楊瑩(1992-),女,碩士研究生,主要研究方向:數(shù)字集成電路設計。
張琴(1990-),女,碩士研究生,主要研究方向:數(shù)字集成電路設計。
楊燦美(1965-),男,博士,研究員,主要研究方向:信號處理、低功耗與高密度SoC架構與設計。
林福江(1958-),男,教授,博士生導師,主要研究方向:微波、微電子建模與設計。
Design and implementation of flow control circuit for 10-Gigabit Ethernet media access ccontroller
Yang Ying1,Zhang Qin1,Yang Canmei2, Lin Fujiang1
(1.School of Information Science and Technology, University of Science and Technology of China, Hefei 230027, China;2.Institute of Advanced Technology, University of Science and Technology of China, Hefei 230027, China)
Abstract:This paper analyzes the Ethernet frame packing, transmitting and flow control principle for 10 Gigabit Ethernet Media Access Controller (XGMAC).Combined with parallel data processing of 64 bit wide, an efficient flow control circuit based on PAUSE frame is introduced, which has the advantage of reducing response time and economizing the hardware resource. The design is synthesized and simulated in ISE, and the result shows the circuit can meet the flow control requirements of XGMAC.
Key words:10 Gigabit Ethernet; flow control; XGMAC; PAUSE frame