【转】简谈基于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.
        各位,加油!!!架构

相关文章
相关标签/搜索