搜索
當前位置:首頁 > 傳統電子行業 > 通信網絡 > 簡談基于FPGA的千兆以太網

簡談基于FPGA的千兆以太網

作者: 2019-08-05 10:28:00 浏覽:166

       大家好,又到了學習時間了,學習使人快樂。今天我們來簡單的聊一聊以太網,以太網在FPGA學習中屬于比較高級的內容了,有些同學肯定會感覺以太網學習起來非常不容易。其實,我可以告訴大家,前期學習的基礎打紮實了,後期的學習也沒那麽難。總之就是說難沒那麽難,說容易也不是那麽容易。那麽,言歸正傳,下面讓我們一起來聊一聊以太網的學習。
       說起以太網,大家可能就會想到百兆以太網、千兆以太網以及萬兆以太網等等。局域以太網從10M開始發展,經曆幾多的變遷,發展到現在的千兆以太網。千兆以太網以高效、高速、高性能爲特點,已經廣泛應用在金融、商業、教育、政府機關及廠礦企業等行業。吉比特以太網,或譯千兆以太網是一個描述各種以吉比特每秒速率進行以太網幀傳輸技術的術語,由IEEE 802.3-2005標准定義。該標准允許通過集線器連接的半雙工千兆連接,但是在市場上利用交換機的全雙工連接所達到的速度才真正符合標准。
       當今,隨著互聯網技術的迅速發展,采用以太網實現數據采集和控制方面的應用,成爲了電子系統設計的熱點。以太網具有價格低廉、穩定可靠、傳輸速度快、傳輸距離遠等特點,以太網技術發展成熟,具有很高的性價比。采用以太網技術的設備,可以通過TCP/IP協議進行數據的傳輸,不需要進行傳輸協議轉換,使用和維護設備簡單。隨著技術的發展和各類應用的需求,出現了各種以太網的標准,包括標准以太網(10Mbit/s)、百兆以太網(100Mbit/s)、千兆以太網(1000Mbit/s)和10G(10Gbit/s)以太網[1]。不同類型的以太網有其各自需要遵循的標准,同時其所用的傳輸介質以及數據吞吐量也各不相同。千兆以太網技術作爲新一代的高速以太網技術,它可以提供1Gbps的通信帶寬,采用和傳統10M、100M以太網同樣的CSMA/CD協議、幀格式和幀長、全/半雙工工作方式、流控模式以及布線系統,給用戶帶來了提高核心網絡的有效解決方案,這種解決方案的最大優點是繼承了傳統以太網技術價格便宜的特點。
       對于學習者而言,你就是要搞清楚弄明白以太網如何去實現,在實際操作中怎麽去做,從這個角度出發的話,你就會發現其實沒那麽複雜,這就是說起來沒那麽難。那真正實現起來,到具體的各個接口以及細節的調試以及調通,你會發現還是比較燒腦的。所以呢,咱們先來聊一聊以太網的各個接口,從大體框架來分析如何去學習。
       咱們就以千兆以太網舉例,千兆以太網,只是說以太網的速率爲千兆,也就是1G。除了千兆網,還有百兆網,萬兆網,當然這些都是指的以太網的速率。不同速率的以太網,在FPGA端的接口表現形式也是不一樣的。下邊就來介紹百兆網和千兆網的接口形式。
       這是網口與FPGA連接的常用方案,RJ45就是咱們平常說的水晶頭,Ethernet PHY是以太網的PHY芯片,之後就是Ethernet PHY與FPGA相連。

       

下邊是以太網PHY芯片與FPGA連接的簡單的架構圖(不代表全部的信號輸入輸出端口)

先說百兆網,百兆網的接口一般爲MII(Media Independent Interface),當然10M網用的也是MII接口。下圖是一塊以太網PHY芯片的一些手冊資料截圖。

在百兆網模式下,其RXCLK的周期爲40ns,也就是25M,數據端口RXD只用了4根線RXD[3:0],然後25M*4 = 100M,這樣算出來,就是100M的速率了。接著再來說一下千兆網,千兆網的接口,就目前接觸比較多的接口有3種,GMII,RGMII和SGMII。先說GMII,RxClk的周期爲8ns,也就是125M,數據端口使用了8bit,125M*8 = 1000M,速率就是千兆網了。

還有RGMII,其時鍾頻率也爲125M,但是它只使用了4個線,不過,RGMII使用的是雙沿模式,也就是DDR模式,在時鍾的上下沿都可以傳送數據。這樣算的話,125M*4*2 = 1000M,還是千兆網。RGMII與GMII主要的區別就是雙沿采樣與單沿采樣。

之後還有SGMII,全稱爲Serial Gigabit Media Independent Interface,也就是串行的以太網接口。RGMII,GMII還是MII,都是使用並行接口,而且還需要隨路時鍾,而SGMII只需要2組線,一組是發送,一組是接收,當然一組線由兩根差分線組成。SGMII也是需要8/10B編碼。這樣在PCB布線時,就可以節省一些布線的空間。當然,對于FPGA來講,也節省了FPGA的引腳資源。SGMII一般在公司的項目會用的多一些,像GMII,RGMI在某寶上賣的開發板上一般都有。
       下面就簡單的說說以太網數據格式,IEEE.802.3數據格式彙總,幀間隙IFG>=96bittime,10zM/100M/1000M格式一樣。如下圖簡單的端口信號顯示截圖。

上面介紹了那麽多接口以及以太網的相關知識,那麽問題來了,如何去快速學習千兆以太網呢?個人認爲掌握好總體框架以及接口細節,理解UDP協議,掌握抓包等等,慢慢琢磨學習,大家都可以慢慢掌握好的。那麽下面咱們就來聊聊千兆以太網的UDP協議,並且會結合wireshark抓包軟件抓取到的以太網包,帶著大家看一下以太網的協議到底是怎麽樣的呢?當然,像我們常用的以太網協議有TCP/IP,UDPTCP/IP和UDP相比,TCP/IP是一種數據可靠的協議,而UDP是一種數據不可靠的協議。至于爲什麽TCP/IP是可靠的,而UDP是不可靠,留給大家自行百度。在wireshark中可以抓取到經過網口傳輸的很多數據包,可以說只要是經過網口的數據,在wireshark中都能抓到。大家可以去下載一個WireShark來學習一下吧,免費下載使用哦!(備注:網絡協議分析器  WireShark是一款開源的網絡數據幀分析軟件,可以抓取網絡數據封包,提供每個數據幀的詳細信息,如MAC地址、數據幀類型、IP地址、UDP端口、等重要信息,方便開發者對網絡數據協議的分析與相關測試。WireShark官網:https://www.wireshark.org/)

下面我們根據抓取到的一個UDP包,來給大家介紹UDP的協議

       第一部分,可以粗略的知道該UDP包,其源IP和目的IP到底是什麽。
       第二部分,是對該UDP包的簡短描述,從中可以大約的知道該數據包的數據長度,源MAC地址,目的MAC地址,等等相關信息。
       第三部分,可以說是這個包的所有數據。一個完整的數據包,還會有數據包的幀頭,幀尾還有CRC校驗的數據。
       看到第三部分,這全是十六進制的字符,這TMD的到底是什麽意思呢?
       關于這些內容,點開第二部分的展開圖標,就可以一探究竟了。    

這樣看,是不是就可以知道這個UDP包的前6個字節,就是目的MAC地址了呢?再來看接著的6個字節數據:6c fd b9 87 48 de

這6個字節,代表著源MAC地址。我們也可以通過查看自己電腦上的MAC地址來確認。

       接著的這些數據,大家也可以自己跟著文章中的講解,自己下載一個WireShark來學習一下。
       當然,這裏特別需要說明的一下是,UDP協議涉及到校驗和的計算。總共有兩個校驗和,一個是在IP首部的校驗和,另一個是在UDP首部的校驗和。

參與評價

最新評價

相關推薦

熱文推薦