10G以太網(wǎng)接口

https://zhuanlan.zhihu.com/p/97662754
https://zhuanlan.zhihu.com/p/97792312
https://zhuanlan.zhihu.com/p/98448910
https://zhuanlan.zhihu.com/p/99303927

耽擱了很久,終于開始介紹在FPGA上實現(xiàn)一些高速接口了,本系列主要介紹的是如何在FPGA上實現(xiàn)10G以太網(wǎng)接口,當然25G或者更高速率的以太網(wǎng)接口的實現(xiàn)流程和這個系列所要說的基本一致,可以參考。
本系列和上篇文章一樣還是翻譯自Xilinx提供的IP核的手冊,不忘IP手冊翻譯大師的本分。

本系列將會分為:基本知識、接口的基本結(jié)構(gòu)、IP核的配置、接口的測試與使用等章節(jié)。


1. 基本知識

1.1 什么是以太網(wǎng)?

我們上了這么多年網(wǎng),聽了無數(shù)個關(guān)于網(wǎng)絡的名詞,像是因特網(wǎng)、以太網(wǎng)、局域網(wǎng)、廣域網(wǎng)、萬維網(wǎng)、蜘蛛網(wǎng)等等等等,筆者也不去細究這些玩意的具體含義和區(qū)別,就簡單講講什么是以太網(wǎng)(Ethernet)。

按照百度百科的說法,以太網(wǎng)是一種計算機局域網(wǎng)技術(shù)[1],就是為了給在同一局域網(wǎng)下不同設(shè)備之間進行通信的一項技術(shù)。

以太網(wǎng)標準對應于IEEE 802.3的標準中,自研制發(fā)布以來的10 Mbps標準,一直發(fā)展到了后面的100 Mbps、1000 Mbps、10 Gbps乃至現(xiàn)在的400 Gbps的標準,一直朝著高速的方向發(fā)展......(這部分吧啦吧啦一些背景),總之就是越快越好,有誰嫌棄自己的網(wǎng)速快呢。

這個系列提到的10G以太網(wǎng)接口也是目前是數(shù)據(jù)中心等場所應用較為廣泛的接口,而10G以太網(wǎng)就是以太網(wǎng)諸多標準中對應速率的一種,就是能跑10 Gbps的以太網(wǎng)。

1.2 以太網(wǎng)幀結(jié)構(gòu)

我們知道看小電影和玩游戲的畫面是一幀一幀顯示的,常說卡成PPT不過就是肉眼可感知到每一幀圖像的顯示,而網(wǎng)絡數(shù)據(jù)在傳輸時也是一幀一幀數(shù)據(jù)進行傳輸?shù)摹5c一幀視頻代表一張圖像不同,以太網(wǎng)幀的內(nèi)容是按照既定的規(guī)則組成的。下圖就是以太網(wǎng)幀的基本組成,以IP數(shù)據(jù)報為例的以太網(wǎng)幀結(jié)構(gòu)。

以太網(wǎng)幀結(jié)構(gòu)

從上圖中可以看出:

  • 以太網(wǎng)幀在物理層包括了7字節(jié)的前同步碼、1字節(jié)的幀開始定界符和MAC幀;
  • MAC幀包括了6字節(jié)的目的地址、6字節(jié)的源地址、2字節(jié)的類型、46~1500字節(jié)的數(shù)據(jù)報文和4字節(jié)的FCS,一般來說MAC幀的長度在64-1518字節(jié);
  • 對于更上一層結(jié)構(gòu)根據(jù)數(shù)據(jù)報的內(nèi)容規(guī)則不同有所區(qū)別,因為本系列只研究以太網(wǎng)接口,故更上層不做贅述。

在實際網(wǎng)絡通信過程中,為了解決網(wǎng)絡傳輸?shù)膹碗s性,從應用層來的數(shù)據(jù)就是這樣層層封裝,兩轉(zhuǎn)三轉(zhuǎn)四五六七八轉(zhuǎn),達到物理層用于物理上實際傳輸時的數(shù)據(jù)包就變成這樣了,作為人類看起來可能會覺得很復雜,但是對于喜歡規(guī)則的機器或者程序而言就很方便了。一個大文件也是這樣切成一幀一幀的數(shù)據(jù)幀層層封裝用于傳輸。

1.3 10G以太網(wǎng)OSI參考模型

前面簡單介紹了什么是以太網(wǎng)以及以太網(wǎng)數(shù)據(jù)幀的結(jié)構(gòu),本來這小節(jié)將講OSI的,但考慮到是講10G以太網(wǎng)接口,故直接就介紹10G以太網(wǎng)OSI參考模型一并帶過了。

OSI即開放系統(tǒng)互聯(lián)(Open System Interconnection),把網(wǎng)絡通信的工作分為7層,分別是物理層,數(shù)據(jù)鏈路層,網(wǎng)絡層,傳輸層,會話層,表示層和應用層[2]。層與層之間相對獨立,這樣工作在對應層的硬件設(shè)備或是程序模塊可以各自獨立進行設(shè)計。

下圖就是10G以太網(wǎng)OSI參考模型[3],以太網(wǎng)接口就工作在物理層和數(shù)據(jù)鏈路層上。

IEEE Std 802.3-2012 Ethernet Model

其中:

  • 10GBASE-R標準對應的傳輸介質(zhì)為光纖等,10GBASE-KR標準對應的是背板,兩種標準所對應的結(jié)構(gòu)有所區(qū)別;
  • 物理層一般包括PMD、PMA和PCS,分別實現(xiàn)物理連接、串化/解串和64B/66B編解碼;
  • 由于10G采用的是64B/66B編碼,故10 Gbps速率的數(shù)據(jù)經(jīng)編碼后在介質(zhì)上傳輸?shù)膶嶋H速率為10.3125 Gbps;
  • 數(shù)據(jù)鏈路層包括RS、MAC等,分別實現(xiàn)MII連接和MAC層數(shù)據(jù)流控制、檢錯等;

10G以太網(wǎng)接口也就包含上述介紹的部分,在接下來的(二)中也會再次詳細介紹,其他子層就不做介紹了。

前面所提到的以太網(wǎng)幀結(jié)構(gòu)就是在這些子層中完成封裝的,而以太網(wǎng)接口實質(zhì)上只做對MAC層以上的子層所封裝的數(shù)據(jù)幀進行與外部物理介質(zhì)的傳輸這樣的一個過程,對于數(shù)據(jù)內(nèi)容不關(guān)心,只關(guān)心傳輸是否正確。

1.4 Xilinx FPGA的高速串行收發(fā)器

高速串行收發(fā)器?好像在哪兒提過,對,就是在前一篇文章提到過使用IBERT工具去測試高速串行收發(fā)器的通信質(zhì)量,忘記了的可以再去復習復習??。

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

但這篇文章只是提了一嘴,但是基本沒講啥是高速串行收發(fā)器,在這一小節(jié)里講簡單說說Xilinx FPGA的高速串行收發(fā)器。

高速串行收發(fā)器,Xilinx的FPGA中將其稱為GT(Gigabit Transceiver),也就是能跑Gbps以上的收發(fā)器,從詞的組成來說分為高速串行收發(fā)器。

先講講高速串行,串行好理解,就是就是一連串一個時間只傳1個數(shù)據(jù)的數(shù)據(jù)流。那么高速呢?Xilinx FPGA的高速串行收發(fā)器到底能跑多快?下面這張圖就是常見的幾個高速串行收發(fā)器對應的速率,當然實際上在不同的FPGA上實際對應的速率有所差距。

高速收發(fā)器及其對應速率

然后再講講收發(fā)器,收發(fā)器就是既可以接收數(shù)據(jù),也可以發(fā)送數(shù)據(jù)(像是說廢話)。

那么問題來了,能跑這么快的收發(fā)器是怎么實現(xiàn)的?這又要扯到SerDes技術(shù),就是前面PMA層實現(xiàn)的功能,感覺沒完沒了了,這篇文章就不詳細說明SerDes技術(shù)是個啥了(可以參考一些相關(guān)的書或者等專欄其他文章會不會提這事),我們只要知道這么快的“串口”在SerDes技術(shù)的一番操作下就能跑這么快就好了。

我們有了10G以太網(wǎng)的基本知識,又有了高速串行收發(fā)器的加成,那么把它倆懟一塊,10G以太網(wǎng)接口不就出來了嘛。是的,我們只要使用具有高速串行收發(fā)器的FPGA,就能在上面實現(xiàn)一個10G以太網(wǎng)接口。但,前提是,高速串行收發(fā)器的速率需要在10.3125Gbps以上,那么使用GTX、GTH和GTY收發(fā)器就可以實現(xiàn)了。


2. 接口的基本結(jié)構(gòu)

本篇文章主要講講10G以太網(wǎng)接口的基本結(jié)構(gòu),本質(zhì)上還是屬于該掌握的基本知識,還沒有涉及到設(shè)計的部分。但是本部分大量參考自Xilinx的IP核手冊,具體參考可詳見文章末尾。

2.1 10G以太網(wǎng)接口基本結(jié)構(gòu)

上篇文章簡單說了接口的結(jié)構(gòu),我們知道以太網(wǎng)接口就是個搬運工,把MAC層來的數(shù)據(jù)報打包搬運到“貨車上”(光纖等),或者是把“貨車上”的卸下來拆了包裝盒送到MAC層,對包裝盒裝的啥東西根本不關(guān)心。

介于筆者的目的是采用進行光纖通信的,所以選擇的也是10GBASE-R標準作為講述對象。

下圖是一個以太網(wǎng)系統(tǒng)的典型結(jié)構(gòu)圖[1]。

Typical Ethernet System Architecture

從典型結(jié)構(gòu)圖中可以看出,接口的部分由PMD、PMA、PCSMAC子層組成:

  • 其中在設(shè)計當中PMD子層一般使用光模塊代替,實現(xiàn)光電/電光轉(zhuǎn)換,這樣高速數(shù)據(jù)就可以在光纖中得以傳輸;
  • 而接口的PMA、PCS和MAC的部分在設(shè)計中一般采用IP核實現(xiàn)設(shè)計,如上圖中就采用了10G Ethernet Subsystem實現(xiàn)這部分設(shè)計。

下圖是Xilinx 文檔PG157中的10GBASE-R標準的結(jié)構(gòu)圖[2],實質(zhì)上對應的就是上面那個典型結(jié)構(gòu)圖中的PMA、PCS和MAC部分。

10GBASE-R 結(jié)構(gòu)圖

從上圖中可以看出:

  • PMA層對應就是GT部分,利用SerDes技術(shù)實現(xiàn):對光模塊來的數(shù)據(jù)(rxn,p)進行時鐘恢復,并將串行信號轉(zhuǎn)換為并行66bit位寬的數(shù)據(jù),對應時鐘為156.25 MHz,可計算出速率為10.3125 Gbps;對PCS層來的66bit位寬、156.25 MHz的數(shù)據(jù)轉(zhuǎn)為串行數(shù)據(jù)(txn,p)再傳輸?shù)焦饽K;
  • PCS層如圖所示包括64b/66b編解碼器、繞碼/解繞碼等,該部分是為了將PMA層來的數(shù)據(jù)進行解繞碼、將66b位寬解碼成64b位寬,即轉(zhuǎn)為64bit位寬、156.25 MHz的數(shù)據(jù)了;對MAC層來的數(shù)據(jù)進行信道編碼(64b/66b編碼)、繞碼等操作送入信道傳輸;
  • PCS子層與MAC子層之間使用XGMII接口連接,該接口傳輸?shù)臄?shù)據(jù)其實已經(jīng)是完整的以太網(wǎng)幀數(shù)據(jù)(包括了前導碼、FCS等部分)。如果自行設(shè)計MAC的話,可以直接將XGMII對接到MAC上;
  • MAC部分將在下一小節(jié)詳細講述。

2.2 MAC層

讓筆者自行設(shè)計MAC?

設(shè)計是不可能設(shè)計的,這輩子都不可能設(shè)計,只有使用Xilinx的MAC核才能維持得了生活。

下圖就是Xilinx文檔PG157中的MAC核的結(jié)構(gòu)[3]。

Xilinx 10G MAC核的結(jié)構(gòu)

從上圖中可以看出:

  • MAC核基本上由數(shù)據(jù)傳輸引擎、流控制、MAC核配置和狀態(tài)信號等部分組成;
  • 數(shù)據(jù)傳輸引擎主要完成:將來自XGMII的數(shù)據(jù),去掉前導碼、起始符和幀校驗序列(FCS),轉(zhuǎn)為MAC幀(沒有FCS的)傳輸?shù)礁邔?,幀與幀之間有幀間隔;將MAC層的數(shù)據(jù),計算FCS、增加前導碼和起始符,封裝的數(shù)據(jù)幀按照規(guī)則形成幀間隔,轉(zhuǎn)為XGMII接口數(shù)據(jù)送到物理層用于傳輸;
  • 至于什么是流控制目前還不清楚,之后了解后再補上,還望不吝賜教;
  • 配置和狀態(tài)信號主要用于配置MAC核的一些參數(shù)以及輸出一些傳輸過程中的狀態(tài)信號,這個在下篇文章會提到;
  • 值得注意的是:Xilinx的很多IP核都采用AXI接口,至于什么是AXI接口可以參考下面的系列文章;

ljgibbs:深入 AXI4 總線(一)握手機制?zhuanlan.zhihu.com

2.3 時鐘結(jié)構(gòu)

以上詳解了接口的結(jié)構(gòu),接下來就是時鐘。在使用中發(fā)現(xiàn)7系的芯片和UltraScale芯片對應的IP核有很大的出入,這個在之后的IP配置中會詳解,這里只比較7系的IP核的時鐘結(jié)構(gòu)和UltraScale系列IP核的時鐘結(jié)構(gòu)。

下面是7系芯片對應的IP核的時鐘結(jié)構(gòu)。

7系 時鐘結(jié)構(gòu)

值得注意的是:

  • 在7系中可以發(fā)現(xiàn),如果使用10G Ethernet Subsystem IP核,它會有shared logic這樣的結(jié)構(gòu)。當然只使用一個10G口,那么可以直接無腦勾上,但是如果想做一個810G或者更多口的萬兆交換機,如果每個都選上shared logic那么就會出現(xiàn)資源不足的情況,主要就是GTCOMMON和IBUFDS_ GTE2資源不足,解決方法就是:如下圖所示,先配置一個帶shared logic的IP核,再配置一個不帶shared logic的IP核;然后10 G通道1例化使用這個帶shared logic的IP核,通道2、3、4例化使用不帶shared logic的IP核,這樣實現(xiàn)4個10 G通道共用這部分資源,這其實也是Xilinx希望這么做的;*
四個10G通道共用時鐘資源圖示
  • 其他時鐘就如圖所示,IP核需要一對頻率為156.25 MHz的差分參考鐘,如果PCS/PMA和MAC都使用的話,coreclk_out就是供用戶邏輯使用的時鐘,同樣為156.25 MHz;

下面是UltraScale系列芯片對應IP核的時鐘結(jié)構(gòu)[4]

image

<figcaption>UltraScale系列 時鐘結(jié)構(gòu)</figcaption>

值得注意的是:

  • 與7系不同的是,它不用特意操作一番供多個10G口使用了,具體操作會在下篇文章說明;
  • 同樣它也需要一對差分鐘,但是用戶邏輯可以使用的時鐘變成了tx和rx分開了,也就是必須按照手冊去對應狀態(tài)信號也好、以太網(wǎng)數(shù)據(jù)也好,是工作在哪個時鐘域下的,如果有問題的話可能就要進行跨時鐘處理了。

2.4 其他

上面其實也提到了,在實際設(shè)計過程中,使用Xilinx的芯片,由于7系和UltraScale系列的架構(gòu)不同,對應的IP核也有所區(qū)別,使用這些IP核的過程中需要仔細閱讀官方手冊,筆者因為能力有限,也只是分享自己學習過程中的一些理解,看官方手冊還是最為直接最為清楚的學習方式。


3. IP核的配置

本篇文章主要是講IP核的配置,鑒于Xilinx的7系和UltraScale+系列FPGA在架構(gòu)上的不同,部分IP核也有所區(qū)別,所以本文把這兩種FPGA所對應的10G以太網(wǎng)接口的IP核的配置都介紹一遍,以便參考。

需要注意的是:

  • 本次實驗用板選用的是:搭載7系芯片的VC707評估板、搭載UltraScale+系列芯片的KCU116評估板;
  • 兩者選用的IP核分別為:10G Ethernet Subsystem(3.1)、10G/25G Ethernet Subsystem(2.5)。

3.1 10G Ethernet Subsystem

這個IP核支持7系、Zynq和UltraScale的FPGA,詳見下圖[1]。以下諸多內(nèi)容主要參考理解自Xilinx的文檔PG157。

10G Ethernet Subsystem 所支持的芯片
  • IP核配置界面

該部分可以參考手冊PG157的第156頁到172頁。

Ethernet Standard 界面如下,能選的只有數(shù)據(jù)位寬,32 bit位寬對應312.5 MHz時鐘頻率,64 bit對應156.25 MHz。這里選64 bit。

Ethernet Standard 界面

MAC options 界面如下,能勾選的只有兩個,IP核的配置與流控制。其中配置勾上的話即選用AXI4-Lite作為配置信號接口,不勾的話就是多出很多配置vector自行配置。這里均不勾選。

MAC options 界面

PCS/PMA options 界面如下圖,可選擇的是DRP clocking的頻率和收發(fā)器Debug選項,DRP clocking用于IP核的一些初始化等操作,使用中輸入的頻率和設(shè)置的頻率一致。這里選100 MHz、其他不勾選。

PCS/PMA options 界面

shared logic 界面如下圖所示。在許多IP核中有這個選項,主要用于多個相同IP核使用時可以共用部分資源以達到節(jié)省資源的目的,這里所共用的就是一些與時鐘相關(guān)的資源,在前一篇文章中所有介紹,可以去回顧下。如果該IP核是被分享的即勾選上項(完整的),如果該IP核是節(jié)省部分資源要共享自其他的勾選下項(不完整的)。

shared logic 界面
  • IP核例化

重點來了,在配置好IP核的一些基本內(nèi)容并生成后,它的例化接口信號特別特別的多,如果不采用在block design中自動連線的方法似乎難以接線,筆者在這里簡單的把這些信號線進行分類加注解,以便使用。

當然以下截圖的內(nèi)容僅供參考,不完全對,更詳細的解釋詳見手冊PG157的第15頁到第49頁。

image
image
  • 其他

如果使用這個IP核去設(shè)計多個通道的以太網(wǎng)接口時,若這些通道中以4個為一組在同一Bank中時,可以參考前一篇文章中提到的方法去設(shè)計,即使用shared logic功能實現(xiàn)4個通道共用部分資源的設(shè)計方法。

3.2 10G/25G Ethernet Subsystem

這個IP核僅支持UtlraScale架構(gòu)的FPGA,詳見下圖[2]。

10G/25G Ethernet Subsystem所支持的芯片
  • IP核配置界面

該部分可以參考手冊PG210的第183頁到191頁。

Board界面如下,保持默認就好。

Board 界面

Configuration 界面如下,這部分內(nèi)容較多,需要注意的是:

  1. General的選項可參考自下面,選擇PCS/PMA+MAC 64 bit的、速度選擇10.3125 G,數(shù)據(jù)接口選擇AXI-Stream的,具體意思可參見前兩篇文章;
  2. Num of cores根據(jù)需求選擇,1對應一個10G通道、4對應4個10G通道,就不用與上面那個IP核一樣配置4個10G需要1+3操作了;
  3. R/KR標準選擇BASE-R;
  4. 控制與狀態(tài)信號選擇control and status vectors,當然熟悉AXI-Lite的也可以采用這個作為相關(guān)配置的總線協(xié)議。
Configuration 界面

MAC options 界面如下,F(xiàn)IFO logic主要在RX端增加FIFO用于接收的數(shù)據(jù)緩存和跨時鐘處理,如果有低時延的要求的話可以不勾。其他選項可不勾選。

MAC options 界面

GT Selection and Configuration 界面如下所示,該界面主要用于選擇與高速收發(fā)器相關(guān)的內(nèi)容:GT Refclk即收發(fā)器的參考時鐘,可以選的不多,根據(jù)設(shè)計中能提供的參考時鐘選擇,這里選擇156.25 MHz;DRP Clocking與前一致,選擇100 MHz;GT Type和GT Selection根據(jù)板子上提供的收發(fā)器的不同進行勾選,例如KCU116是GTY收發(fā)器、10G/25G口是在 Quad X0Y2上,如果只選擇一個10G通道,可如圖勾選。

GT Selection and Configuration 界面

shared logic 界面如圖所示,可按圖勾選。

shared logic 界面
  • IP核例化

與前一個IP核一樣,簡單的把諸多的接口信號進行分類注解,以便理解,但僅供參考,具體各信號描述詳見手冊PG210的第15頁到第78頁。

image
image
image
image.png

以上IP核接口信號僅是勾選一個10G通道對應的內(nèi)容,如果勾選了n個通道(2-4個)應該信號線會更加的多,大致多出的信號就是后三張圖的信號*n。

  • 其他

有疑惑的是,筆者沒有實際使用過該IP核的shared logic的功能,只用過前一個IP核的該功能,覺得10G/25G IP核已經(jīng)可以在一個IP核下支持4個10G/25G的通道,就不大清楚它的shared logic功能是用來干嘛的了(當然主要是懶沒有詳細去參看文檔了)。

3.3 簡單小結(jié)

單從IP核的配置而言并不復雜,可以參考上面筆者選項勾選,如果對一些沒提到的東西有所疑惑,也可以直接去參考Xilinx提供的IP核手冊PG157、PG210。

需要的注意的選項在“其他”中也有所提到,就是當實際使用場景中需要多個10G口的時候,兩種IP核配置使用的方式會有所區(qū)別。

4. 測試與使用

本篇文章主要是在前三篇的基礎(chǔ)上去測試與使用我們的10G以太網(wǎng)接口,當然,一般很多文章可能直接去open example design,在示例工程上再作進一步的設(shè)計,這樣設(shè)計的話比較簡單,但是筆者反正閑的沒事做,就直接例化IP核去使用了,手動連線也是一種樂趣。

4.1 測試

此次測試中采用:FPGA硬件平臺為Xilinx的評估板VC707和KCU116、硬件開發(fā)平臺為Xilinx的Vivado 2018.3、網(wǎng)絡測試儀為Spirent的TestCenter和信而泰的TestStrom。

在測試之前先感慨一波實驗室板子設(shè)備真多,隨便瞎折騰不用怕沒東西,搞科研是不會搞科研的,這輩子都不會搞科研的,只有折騰各類高端板子搞一些騷操作才能維持得了生活~

好,廢話不說了,開始測試!

筆者所采用的測試方法與其他很多接口的測試方法一致,就是自環(huán)測試。所謂自環(huán)測試,就是以太網(wǎng)接口接收到數(shù)據(jù)后不作任何處理,直接在內(nèi)部回環(huán)用于輸出,這樣可根據(jù)測試數(shù)據(jù)的收發(fā)情況用于判斷接口是否設(shè)計正確。

本次自環(huán)測試的結(jié)構(gòu)框圖如下圖所示。

自環(huán)測試框圖

在上圖中:

  • 網(wǎng)絡測試儀需要可支持10G測試,常用的測試儀有Spirent的TestCenter、國產(chǎn)的信而泰的TestStorm等,筆者在實際測試使用發(fā)現(xiàn)兩種測試儀有一定差別,如果財力雄厚買貴的就完事了;
  • 在FPGA工程中,根據(jù)芯片的不同,需要例化不同IP核(詳見前一篇文章),用戶側(cè)AXI4-Stream數(shù)據(jù)接口的Rx端和Tx端各接FIFO,接FIFO的目的是緩存突發(fā)數(shù)據(jù),Rx的FIFO輸出數(shù)據(jù)接到Tx端FIFO的輸入數(shù)據(jù),形成內(nèi)部FPGA自環(huán);
  • 網(wǎng)絡測試儀與FPGA之間采用光纖和光模塊進行連接,光模塊使用SFP+光模塊(對應10Gbps),光纖和光模塊需要匹配,即單模光纖對單模光模塊,多模光纖對多模光模塊,當然如果有10G SFP+的電纜,也可以直接用電纜連接;

具體測試流程(網(wǎng)絡測試儀以使用TestCenter為例):

  1. 生成工程的bit并且下載到FPGA上,按照上面測試框圖連接各設(shè)備;
  2. 使用TestCenter對應的軟件編輯網(wǎng)絡數(shù)據(jù)流,一般以太網(wǎng)幀長度設(shè)為64字節(jié)到1518字節(jié)之間隨機長度,設(shè)置發(fā)送速率(0-10Gbps間),設(shè)置固定發(fā)送速率或者突發(fā)發(fā)送,對接口進行多次測試,當然這只是筆者設(shè)置的測試數(shù)據(jù)流方案,并不全面,可以根據(jù)情況自行編輯數(shù)據(jù)流和發(fā)送方式;
  3. 觀察TestCenter的數(shù)據(jù)統(tǒng)計結(jié)果。

具體怎么使用TestCenter在這篇文章里就不說明了,默認大家會了,不會的話可以參見網(wǎng)絡測試儀的help或者直接詢問技術(shù)客服等。

在實際測試,7系FPGA的IP核所提供的用戶側(cè)的時鐘只有一個coreclk,而UltraScale+系列FPGA的IP核提供的用戶側(cè)時鐘為rx_clk和tx_clk,需要注意跨時鐘域操作(最簡單的就是使用異步FIFO),同樣對于使用多個接口的時候也需要注意跨時鐘操作,不然在測試中會有一定的錯誤。

但即使做了跨時鐘操作,由于異步時鐘總是存在頻差,10G實際測試速率上不了10Gbps,筆者在實際測試中,VC707的10G接口和KCU116的最高速率能到9.995Gbps左右,更高的速率(比如10Gbps)就會出現(xiàn)錯幀的情況了,從FIFO的狀態(tài)來看,猜測在持續(xù)10Gbps下FIFO滿了導致的錯幀。筆者覺得能到9.99Gbps以上基本夠用了 。

當然以上僅針對Xilinx的評估板做的測試,如果是自己做的板子呢?

其實10G接口設(shè)計實現(xiàn)和測試的流程基本一致,但需要注意的是,在進行測試之前需要對高速收發(fā)器進行IBERT測試以確保收發(fā)器有沒有問題,像是筆者之前在使用中發(fā)現(xiàn)某個通道傳輸?shù)囊蕴W(wǎng)數(shù)據(jù)一直會錯幀,后來一測IBERT發(fā)現(xiàn)做的板子的通道誤碼就很高。

扯了這么多的接口設(shè)計測試等等等等,如果板子本身就存在一定的問題該怎么辦,那你能幫幫我嗎?能,具體解決方法可參見下面文章,但也不是萬能的,實在沒救重新畫板子吧。

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

看之后還有啥補充的沒,想到了再說~

4.2 使用

使用?上面不是測試完了,還要咋使用?

的確,在上面講了測試就算是接口結(jié)束了,但是輾轉(zhuǎn)反側(cè)之后還是決定簡單談談高速接口的使用,當然這里的使用就是10G接口后可以用在哪,也就僅限于筆者參與過的一些例子來加以說明。

高速定制網(wǎng)卡:雖然萬兆或者更高速的以太網(wǎng)標準早已問世,但受限于多方面因素(硬件支持等),我們?nèi)粘I钪兴佑|的網(wǎng)卡仍是千兆網(wǎng)卡,但是很多服務器上已經(jīng)使用萬兆網(wǎng)卡了,但不是專為某種業(yè)務定制的,而FPGA的好處就在于可按照某種業(yè)務規(guī)則去編程定制,我們有了高性能FPGA,有了高速接口(萬兆網(wǎng)口、PCIe等)、有了特殊業(yè)務的需求,把它仨懟一塊就可以設(shè)計一個高速定制網(wǎng)卡,在硬件上處理某些業(yè)務以減輕服務器的負擔。

數(shù)據(jù)加速引擎:眾所周知,網(wǎng)絡數(shù)據(jù)量與日俱增,以至于很多與網(wǎng)絡相關(guān)的論文都會在背景里加上這句話,足以可見其海量,海量的網(wǎng)絡數(shù)據(jù)怎么處理是個很復雜的問題,不同的研究方向有不同的處理方式,而對研究FPGA的人來說就是把數(shù)據(jù)丟到FPGA上用硬件處理以減輕處理器的壓力。同樣,我們有高性能的FPGA,有多個高速以太網(wǎng)接口,也有了特殊加速業(yè)務的需求,那么就可以把一些數(shù)據(jù)的處理放在硬件上進行,相互間的傳輸采用10G或者是更高速率的以太網(wǎng)接口。

當然還有很多場合可以使用到10G接口,這里不再一一介紹。

在這些具體設(shè)計中,所使用的10G以太網(wǎng)接口的設(shè)計的步驟,還是如之前提到的步驟那樣:了解基本知識和接口結(jié)構(gòu)——翻閱手冊配置IP核——在工程中例化IP核并且添加必要模塊——進行接口的自環(huán)測試——數(shù)據(jù)接口接入實際工程用以使用

需要注意的是,在具體使用前需要反復測試接口在多種情況下均沒有問題再用于使用。

其他東西想到之后再予以補充~

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容