天天看點

分析以太網幀結構_100G以太網接口調試初體驗

分析以太網幀結構_100G以太網接口調試初體驗

是的,标題沒有多敲一個“0”,明人不說暗話,就是在FPGA上實作100G以太網接口設計。

正好參與了實驗室某項目中的100G接口的調試,早想寫個專欄文章了,由于調試過程中發現了一些硬體問題,導緻遲遲沒有往前推進,現在問題解決了之後可以簡單分享一下100G以太網接口的調試初體驗了~

(好像DDR4讀寫測試系列文章還沒搞完 )

這篇初體驗暫時不分多個章節了,基本設計流程與之前釋出的“10G以太網接口”系列文章一緻,忘了的可以下戳連結檢視

十二點過九分:10G以太網接口(一):基本知識​zhuanlan.zhihu.com

分析以太網幀結構_100G以太網接口調試初體驗

十二點過九分:10G以太網接口(二):接口的基本結構​zhuanlan.zhihu.com

分析以太網幀結構_100G以太網接口調試初體驗

十二點過九分:10G以太網接口(三):IP核的配置​zhuanlan.zhihu.com

分析以太網幀結構_100G以太網接口調試初體驗

十二點過九分:10G以太網接口(四):測試與使用​zhuanlan.zhihu.com

分析以太網幀結構_100G以太網接口調試初體驗
本次調試中采用:FPGA硬體平台為搭載ZU19EG晶片自制闆子,硬體開發平台為XIlinx的Vivado 2019.2,網絡測試平台為Spirent的TestCenter。

調試内容

由于實驗室某項目所設計制作的闆子上有4*100G以太網接口,是以此次分享的就是測試闆子上的四個100G以太網接口的功能。

調試具體内容為:
  • 利用XIlinx提供的IBERT工具測試每個100G網口對應的4路GTY收發器的收發性能,觀察眼圖等;
  • 利用Xilinx提供的100G以太網相關的IP核進行以太網接口的設計,簡單設計一個自環工程;
  • 利用Spirent的網絡測試儀(可支援100G以太網測試)對設計的接口進行打流測試,通過不斷設定不同的資料包和發送速率等,觀察測試儀的收發情況,以判斷設計的100G以太網接口性能是否良好。

其中所使用的設計和測試方法與之前的10G以太網接口的設計與測試基本一緻,可以參考其流程,IBERT測試不再說明,忘記的可以詳見下面的文章 。

十二點過九分:在開始高速接口前,我們來試試IBERT測試吧!​zhuanlan.zhihu.com

分析以太網幀結構_100G以太網接口調試初體驗

IP配置

本次100G以太網接口的調試中采用的IP為

UltraScale+ 100G Ethernet Subsystem

,其手冊為

PG203

,對于IP的結構等内容可以詳見手冊,本部分隻分享其配置部分和IP核例化後的接口信号等。

值得注意的是,在使用這個IP之前,需要先去Xilinx官網

申請這個IP的License

,這裡預設都有License了。

建立工程不必多講,直接到IP Catalog裡找100G的Ethernet Subsystem,如下圖所示。

分析以太網幀結構_100G以太網接口調試初體驗

在IP Catalog 裡選擇“UltraScale+ 100G Ethernet Subsystem”IP Core

接下來就是該IP的各項定制界面,具體可以參考PG203,首先是General界面,如下兩張圖所示。

分析以太網幀結構_100G以太網接口調試初體驗

General 界面1

分析以太網幀結構_100G以太網接口調試初體驗

General 界面2

在General界面中,值得注意的是:

  • Physical Layer中根據自身條件設定:比如是采用10*10G構成的100G則選擇CAUI10、若是4*25G構成的100G則如圖選擇,另外收發器參考時鐘與闆子提供的一緻,這裡選擇161.1328125MHz,Uer Interface選擇AXIS(也可以選擇LBUS,如果熟悉的話);
  • 其他選擇根據需求選擇,筆者是沒有勾選流控制和RS-FEC(後面會說原因),沒有選擇AXI-Lite作為配置信号的總線協定。

接下來是Control/Pause Packet Processing 界面,如下圖所示,由于前面已經勾了相關選項了,是以這裡都沒用到。

分析以太網幀結構_100G以太網接口調試初體驗

Control/Pause Packet Processing 界面

接下來是CMAC/GT Selection and Configuration 界面1,如下兩幅圖所示。

分析以太網幀結構_100G以太網接口調試初體驗

CMAC/GT Selection and Configuration 界面1

分析以太網幀結構_100G以太網接口調試初體驗

CMAC/GT Selection and Configuration 界面2

在CMAC/GT Selection and Configuration 界面中,這一頁基本保持預設選項,值得注意的是:

  • Shared Logic選擇Core,這裡在專欄之前的文章有介紹;
  • 其他保持預設,但是也可以根據自定義勾選,如果設計的闆子在信号完整上有問題的話,可以勾選RX均衡等用于改善信号等。

最後是RS-FEC Transcode Bypass 界面,如下圖所示。

分析以太網幀結構_100G以太網接口調試初體驗

RS-FEC Transcode Bypass 界面

大概完成上面内容的基本配置,就直接生成IP就好了。

根據習慣不同,使用IP的方法也不大一樣,如果對該IP不大熟悉的話,依舊可以在生成IP後在其上右鍵“Open Example Design”打開一個Xilinx提供的示例工程,然後在這個示例工程上,根據自己的需求進行修改,作為一個

翻譯大師

連線狂魔

,筆者選擇自行連線。

例化這個IP可以看到諸多的信号線,便于了解和使用期間,筆者簡單将其分類和注釋,如下多張圖所示。

分析以太網幀結構_100G以太網接口調試初體驗

100G IP 例化接口信号1

分析以太網幀結構_100G以太網接口調試初體驗

100G IP 例化接口信号2

分析以太網幀結構_100G以太網接口調試初體驗

100G IP 例化接口信号3

分析以太網幀結構_100G以太網接口調試初體驗

100G IP 例化接口信号3

上面的信号中還缺少Tx端和Rx端的資料統計信号線,由于都是輸出信号以及信号太多太長,并且暫時沒有用到均不予以截圖了,望知。

工程結構

當然,上面隻是例化了IP,為了完成對4*100G接口的測試還需要在工程中完善其他部分。

首先,測試四個100G口,那麼需要例化四個IP;

其次,要自環測試的話,需要把IP的Tx資料接口與Rx資料接口相連接配接,才能做到自發自收,鑒于二者接口略有不同,需要接一級FIFO做跨時鐘域和資料緩存操作;

然後,為了設計的接口在日後能直接用于使用,還需要引出一個全局時鐘作為對接收到的以太網資料做處理時鐘;

最後,将上述各項内容“怼一塊”,就得到了下圖所示的工程結構圖。

分析以太網幀結構_100G以太網接口調試初體驗

工程結構框圖

之後就是寫各類限制xdc了,包括引腳限制和時序限制等。

弄完上述這些之後就跑綜合、布局布線和生成bit檔案等,確定時序沒啥問題且能生成bit後就直接下闆子即可。

100G自環測試

接下來是自環測試,筆者使用的是Spirent的網絡測試儀,使用的是其提供的測試子產品FX3-100GQ-T2,如下圖所示,最高可支援100G以太網測試。

分析以太網幀結構_100G以太網接口調試初體驗

Spirent 網絡測試儀

至于TestCenter軟體的使用,這裡不再說明,可以詳詢其技術客服或者其提供的資料或help(如下圖)等。

分析以太網幀結構_100G以太網接口調試初體驗

Spirent TestCenter Help 界面

筆者在調試100G以太網接口前看到過一篇文章說在客制化IP時需要勾上RS-FEC選項[1],不然在使用網絡測試儀連接配接設計的接口時連接配接不上,實際測試中發現,其實配置IP時不勾上也沒關系,隻要在使用TestCenter軟體時設定網絡測試儀100G端口時也去掉就行了,

如下圖所示

,去掉這兩個選項後,就會發現有Link(綠燈亮了)。不過,兩者都勾上也可以,畢竟這個IP支援這個糾錯碼也有利于降低連接配接器件的成本等。

分析以太網幀結構_100G以太網接口調試初體驗

測試儀100G端口設定

測試部分其實沒啥好講的了,就是使用TestCenter的軟體編輯各類測試的資料流,設定好資料發送各項模式速率後,直接打流到FPGA闆子上即可,筆者對于測試儀的使用也僅限于此,更進階的功能也沒怎麼使用過了。

那怎麼知道設計的接口的性能呢?

首先,在TestCenter上觀察是否有Link(亮燈),如果能連接配接上,那麼就已經成功一大半了,之前由于調試的闆子的硬體問題搞了好久才Link;

其次,對FPGA闆子打流操作後,可以觀察TestCenter的首發情況,比如收發的以太網資料幀幀數是否一緻,是否有錯幀,錯幀的類型是什麼,捕捉接收到的資料幀(可以是TestCenter上的,也可以是Vivado加Debug信号觸發的)是否和想要的一緻;

最後,可以嘗試一些更嚴苛的測試,比如長時間測試其穩定性和準确性等(當然,這是我瞎測試的,不一定要這麼做)。

測試結果如下圖所示,多番測試下,大概最高可到99.999Gbps收發情況下無丢幀錯幀,單口跑不滿100Gbps,其他一些文章所推測是由于時鐘有一定的偏差所導緻的,不過基本影響不大,

一般使用能用滿100Gbps?
分析以太網幀結構_100G以太網接口調試初體驗

Spirent TestCenter 測試結果

分析以太網幀結構_100G以太網接口調試初體驗

Vivado ILA抓取的Rx資料

注意事項

  • 需要 财力雄厚 ,因為既需要有 支援100G以太網 接口的FPGA闆子(具有4個GTY或10個GTX收發器以上),又需要有 支援100G以太網測試 的網絡測試儀(國産或者洋貨都無所謂);
  • 使用IP設計前需要 申請該IP的License ,具體申請方法可詳見網上教程;
  • 對于AXIS資料接口熟悉的可使用 Vivado 2019 以上的進行開發,因為Vivado之前版本的資料接口隻有LBUS總線接口(對于不熟悉的人來說可能比較複雜);
  • 該IP較為複雜,各類信号線很多,如果有更高需求要 詳細翻閱手冊
  • 如果有一塊闆子(比如 KCU116 )隻有四個25G(4*SFP28)的接口,也可以設計100G接口,前提是有一根 100G(QSFP28)轉4*25G(4*SFP28)的轉接線 ,然後在FPGA端使用上述同樣的IP設計,引腳根據順序限制好即可,不過切記轉接線連接配接要按照順序連,不然會沒有Link;
  • 網絡測試儀與FPGA闆上的100G以太網接口的連接配接可以使用100G光子產品( 稍微有點貴 ),也可以使用電纜( 省錢 ),反正能插得上能連接配接就行;
  • 如果硬體闆在設計過程中,100G使用的四組收發器收與發的順序不對應的話(例如Rx為1234,而Tx為1324或者其他),隻要在引腳限制時按照Rx正确順序對應的引腳限制就好,不用管Vivado自動根據Rx進行Tx的引腳限制(這個可能講的有點亂,大概是這個意思),實測這麼操作是可以成功使用接口的。
  • 其他注意事項想到再說

作為初體驗也就簡單的分享上面這麼多了,總結就是無論是10G的還是100G以太網,接口設計這東西就這麼回事,拿個IP Core一搭就完事了,如果要再做更上層協定上的東西,那就各憑本事了。

當然,我還是個蔡雞,還要繼續學習一個。如果有老哥也做這方面東西的可以交流研究 ,如果文中有啥不足之處還望指正~

參考

  1. ^100G以太網光口的FPGA測試執行個體 https://mp.weixin.qq.com/s/PqaZt487zU0LmJ05U_ZHsQ