【轉】簡談基於FPGA的千兆以太網

原文地址:算法

  http://blog.chinaaet.com/luhui/p/5100052903網絡

 

你們好,又到了學習時間了,學習令人快樂。今天咱們來簡單的聊一聊以太網,以太網在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首部的校驗和
         
         
        校驗和的計算,有其本身特定的算法,除此以外,還有在數據包尾部的CRC校驗數據。
        加強理論性知識,推薦你們大概瀏覽早期的論文。
        [1]趙吉志.10G以太網應用前景分析[J].科技浪潮,2008,02:30-31.
        [2]徐洪波.餘成芳.基於FPGA的以太網MAC子層協議設計實現[J].復旦學報(天然科學版),2004,02:50-53.  
        [3]周華茂.程小輝,龔幼民.以太網MAC層IP軟核設計方法研究[J].集成電路設計與開發,2007,08:692-696. 
        [4]Xilinx  Inc.LogiCORE  IP  Tri-Mode  Ethernet  MAC  User  Guide  Version4.4[2010-04][EB/OL].http://www.xilinx.com. 
        [5]高展.以太網介質訪問控制器(MAC)的研究[D].西安:西北工業大學,2004. 
        [6]王蘭芳.全分析模式的網絡計費系統的設計和實現[D].南京:南京理工大學,2010. 
        [7]Alberto Leon-Garcia,王海濤.通訊網——基本機率與主體結構(第二版)[M].北京:清華大學出版社,2005.  
        [8]史旭明.面向企業網的微機電火花加工數控系統的研究[D].哈爾濱:哈爾濱工業大學,2010.  
        [9]尉志偉.千兆以太網MAC控制器IP軟核的設計[D].成都:電子科技大學,2010. 
        [10]IEEE802 LAN/MAN Standards Committee. IEEE Std 802.3 2005 Edition Part3:Carrier Sense multiple aeeess with collision detection (CSMA/CD) aeeess method and Physical layer specifications. 2005.
        各位,加油!!!架構

相關文章
相關標籤/搜索