前言

为完整对以太网通信相关概念进行阐述,部分图文内容引用自参考文献。所有引用的参考文献都附在文章最后。

千兆PHY芯片可以参考VSC8601(10/100/1000BASE-T PHY with RGMII MAC Interface)手册。也可以参考RTL8211EGVB 芯片手册。

一、以太网协议基础

1.1、TCP/IP 和 ISO/OSI

ISO/OSI模型,即开放式通信系统互联参考模型(Open System Interconnection Reference Model),是国际标准化组织(ISO)提出的一个试图使各种计算机在世界范围内互连为网络的标准框架,简称OSI。

TCP/IP协议模型(Transmission Control Protocol/Internet Protocol),包含了一系列构成互联网基础的网络协议,是Internet的核心协议,通过20多年的发展已日渐成熟,并被广泛应用于局域网和广域网中,目前已成为事实上的国际标准。TCP/IP协议簇是一组不同层次上的多个协议的组合,通常被认为是一个四层协议系统,与OSI的七层模型相对应。

1.2、TCP/IP分层模型

1.3、数据的封装与分用

当应用程序用TCP传送数据时,数据被送入协议栈中,然后逐个通过每一层直到被当作一串比特流送入网络。其中每一层对收到的数据都要增加一些首部信息(有时还要增加尾部信息),该过程如图所示。

TCP传给IP的数据单元称作TCP报文段或简称为TCP段(TCP segment);UDP数据与TCP数据基本一致。唯一的不同是UDP传给IP的信息单元称作U D P数据报(UDP datagram),而且UDP的首部长为8字节。IP传给网络接口层的数据单元称作IP数据报(IP datagram)。通过以太网传输的比特流称作帧(Frame )。

当目的主机收到一个以太网数据帧时,数据就开始从协议栈中由底向上升,同时去掉各层协议加上的报文首部。每层协议盒都要去检查报文首部中的协议标识,以确定接收数据的上层协议。这个过程称作分用(Demultiplexing)。协议是通过目的端口号、源I P地址和源端口号进行解包的。

1.4、以太网PHY和MAC

以太网PHY和MAC对应OSI模型的两个层——物理层和数据链路层。

物理层定义了数据传送与接收所需要的电与光信号、线路状态、时钟基准、数据编码和电路等,并向数据链路层设备提供标准接口(RGMII / GMII / MII)。

数据链路层则提供寻址机构、数据帧的构建、数据差错检查、传送控制、向网络层提供标准的数据接口等功能。

问:以太网PHY是什么?

答:PHY是物理接口收发器,它实现物理层。IEEE-802.3标准定义了以太网PHY。它符合IEEE-802.3k中用于10BaseT(第14条)和100BaseTX(第24条和第25条)的规范。

问:以太网MAC是什么?

答:MAC就是媒体接入控制器。以太网MAC由IEEE-802.3以太网标准定义。它实现了一个数据链路层。最新的MAC同时支持10/100/1000Mbps速率。通常情况下,它实现MII/GMII/RGMII接口,来同行业标准PHY器件实现接口。

1.5、MII/GMII接口

MII(Medium Independent Interface)即媒体独立接口。MII总线 是在IEEE802.3中规定的一种用于将不同类型的PHY与相同网络控制器(MAC)相连接的通用总线。它是IEEE-802.3定义的以太网行业标准。它包括一个数据接口,以及一个MAC和PHY之间的管理接口。数据接口包括分别用于发送器和接收器的两条独立信道。每条信道都有自己的数据、时钟和控制信号。MII数据接口总共需要16个信号。管理接口是个双信号接口:一个是时钟信号,另一个是数据信号。通过管理接口,上层能监视和控制PHY。

MII标准接口 用于连快Fast Ethernet MAC-block与PHY。“介质无关”表明在不对MAC硬件重新设计或替换的情况下,任何类型的PHY设备都可以正常工作。在其他速率下工作的与 MII等效的接口有:AUI(10M 以太网)、GMII(Gigabit 以太网)和XAUI(10-Gigabit 以太网)。

此外还有RMII(Reduced MII)、GMII(Gigabit MII)、RGMII(Reduced GMII)SMII等。所有的这些接口都从MII而来,MII是(Medium Independent Interface)的意思,是指不用考虑媒体是铜轴、光纤、电缆等,因为这些媒体处理的相关工作都有PHY或者叫做MAC的芯片完成。

MII支持10兆和100兆的操作,一个接口由14根线组成,它的支持还是比较灵活的,但是有一个缺点是因为它一个端口用的信号线太多,如果一个8端口的交换机要用到112根线,16端口就要用到224根线,到 32端口的话就要用到448根线,一般按照这个接口做交换机,是不太现实的,所以现代的交换机的制作都会用到其它的一些从MII简化出来的标准,比如 RMII、SMII、GMII等。

RMII是简化的MII接口,在数据的收发上它比MII接口少了一倍的信号线,所以它一般要求是50兆的总线时钟。RMII一般用在多端口的交换机,它不是每个端口安排收、发两个时钟,而是所有的数据端口公用一个时钟用于所有端口的收发,这里就节省了不少的端口数目。RMII的一个端口要求7个数据线,比MII少了一倍,所以交换机能够接入多一倍数据的端口。和 MII一样,RMII支持10兆和100兆的总线接口速度。

SMII是由思科提出的一种媒体接口,它有比RMII更少的信号线数目,S表示串行的意思。因为它只用一根信号线传送发送数据,一根信号线传输接受数据,所以在时钟上为了满足100的需求,它的时钟频率很高,达到了125兆,为什么用125兆,是因为数据线里面会传送一些控制信息。SMII一个端口仅用4根信号线完成100信号的传输,比起RMII差不多又少了一倍的信号线。SMII在工业界的支持力度是很高的。同理,所有端口的数据收发都公用同一个外部的125M时钟。

GMII是千兆网的MII接口,这个也有相应的RGMII接口,表示简化了的GMII接口。

RGMII(Reduced Gigabit Media Independent Interface)是Reduced GMII(吉比特介质独立接口)。RGMII 均采用4 位数据接口,工作时钟125MHz,并且在上升沿和下降沿同时传输数据,因此传输速率可达1000Mbps。同时兼容MII 所规定的10/100 Mbps 工作方式,支持传输速率:10M/100M/1000Mb/s ,其对应clk 信号分别为:2.5MHz/25MHz/125MHz。RGMII数据结构符合IEEE 以太网标准,接口定义见IEEE 802.3-2000。采用RGMII 的目的是降低电路成本,使实现这种接口的器件的引脚数从25 个减少到14 个。

GMII接口信号
FPGA发送信号端口
phy_rst_n 是低电平复位信号
gmii_tx_clk 是FPGA发送时钟,这里直接使用gmii_rx_clk即可
gmii_tx_en 发送数据有效标志,与gmii_tx_data对齐
gmii_tx_er 是错误标志
gmii_tx_data 是FPGA发送给PHY的数据
FPGA接收信号端口
gmii_rx_clk 是PHY发送过来的时钟,FPGA通过该时钟进行采样
gmii_rx_dv 是接收数据有效标志,与gmii_rx_data对齐
gmii_rx_er 是错误标志,当它有效时,说明发送帧错误
gmii_rx_data 是PHY发送过来的数据

GMII接口按以下时序发送数据

1.6、以太网数据帧(802.3)

以太网数据帧

以太网数据帧字段含义

1.7、IP数据包格式

IP数据以数据的形式包含在以太网数据帧中。

IP数据包格式

IP数据包字段含义

1.8 UDP数据包格式

UDP数据包以数据的形式包含在IP数据包中。

UDP数据包格式

UDP数据包字段含义

以太网帧格式如下图所示:

  • 每个以太网帧中允许包含的数据字节个数在46-1500字节范围内;
  • IP包文首部中含的16位总长度是指首部和数据之和的长度,最大数值为65535字节;
  • UDP首部里的用户数据包长度,是指当前以太网帧中的数据长度。

UDP帧发字节顺序,可按下表顺序发送

IP首部校验和:占16位,只检验数据报的首部、不检验数据部分(仅对IP首部20字节进行校验)。采用二进制反码求和,即将16位数据相加后,再将进位与低16位相加,直到进位为0,最后将16位取反。

CRC校验:从目的MAC地址开始到数据段,进行校验。

二、硬件架构

千兆以太网常用物理层接口有GMII和RGMII,应用情况有所差别。GMII占用的引脚较多,RGMII可以很大程序地减少引脚的使用。因此本设计采用RGMII接口进行设计,物理层芯片采用RTL8211E。

2.1、PHY芯片与RGMII简介

RTL8211E 是由Realtek(瑞昱半导体)公司推出的10Mbit/100Mbit/1000Mbit以太网物理层芯片,有RGMII和GMII两种接口,分别对应芯片RTL8211E和RTL8211EG。RGMII接口的RTL8211E具有48个引脚,相对与64脚的GMII接口的RTL8211EG,节约控制芯片引脚,但是时钟上升沿和下降沿都有数据操作,时序控制比较复杂一些,详细信息见其数据手册。

可以通过管理配置(控制和状态信息)接口实现对PHY芯片进行配置,通过RGMII方式进行数据传输。

发送器

GTX_CLK 吉比特TX..信号的时钟信号(125MHz)
TXD[3..0] 被发送数据,上升沿发送低四位数据,下降沿发送高四位数据
TX_CTL 发送控制
TXEN 发送器使能信号

注:在千兆速率下,向PHY提供GTXCLK信号,TXD、TXEN、TXER信号与此时钟信号同步。否则,在10/100M速率下,PHY提供TXCLK时钟信号,其它信号与此信号同步。其工作频率为25MHz(100M网络)或2.5MHz(10M网络)。

接收器:

RX_CLK 接收时钟信号(从收到的数据中提取,因此与GTX_CLK无关联)
RXD[3..0] 接收数据,上升沿为低四位数据,下降沿为高四位数据
RX_CTL 接收控制
COL 冲突检测(仅用于半双工状态)

管理配置 :

MDC 配置接口时钟
MDIO 配置接口I/O

管理配置接口控制PHY的特性。该接口有32个寄存器地址,每个地址16位。其中前16个已经在“IEEE 802.3,2000-22.2.4 Management Functions”中规定了用途,其余的则由各器件自己指定。

PHY芯片RGMII 通信时序:

PHY芯片管理配置(控制和状态信息)接口时序(芯片型号RTL8211EGVB):

管理帧格式:

读写格式:

MDC为MAC驱动时钟信号,MDIO是串行数据总线,需要连接上拉电阻保证idle状态下高电平。其中前导码包含32个比特“1”,PHY地址根据芯片引脚连接而定,此处为01.turn around域是为了防止读操作时数据冲突,在读操作过程中MAC和PHY均在第1比特处进入高阻态,PHY在第2比特处驱动MDIO接口为低电平以占据总线控制权。注意两点:第一如果时钟信号在读写操作后停止,时钟必须保证至少7个时钟周期持续翻转且MDIO高电平从而保证之前的操作完成。故在设计中可以等待一段时间后再拉低时钟使能信号。第二两个操作之间至少一个idle比特。

2.2、架构设计

PC通过网线插入RJ-45口中,再经过PHY芯片,PHY芯片与FPGA可以采用RGMII方式进行通信。

MAC内部设计结构也可以参照Altera的以太网MAC IP核,可见内部主要由发送和接收处理逻辑、缓存部分、配置与统计以及MDIO控制模块五部分组成.

>>点击这里返回导航页<<

参考文献

作者 博客
1、一苇度湖 Verilog实现千兆以太网传输
2、Pushment 基于RGMII的FPGA千兆以太网设计
3、ciscomonkey UDP千兆以太网FPGA_verilog实现(三、代码前期准备-时序要求)
  UDP千兆以太网FPGA_verilog实现(四、代码前期准备-UDP和IP协议构建)
  UDP千兆以太网FPGA_verilog实现(五、以太网帧的结构)
4、时间看得见 千兆UDP学习调试记录(一)
  千兆UDP的Verilog实现源码
5、LChanceea8 数据链路层之以太网协议
6、xgbing  Triple-Speed Ethernet(tse)FPGA软核MAC测试
7、 千兆以太网MAC控制器实现方案 - 基于Xilinx FPGA的千兆以太网控制器的开发
8、 如何开发FPGA的以太网接口?
9、没落骑士 FPGA设计千兆以太网MAC(1)——通过MDIO接口配置与检测PHY芯片
  FPGA设计千兆以太网MAC(2)——以太网协议及设计规划
  浅析Xilinx 三速以太网MAC IP核(仿真篇)
10、我心狂野 以太网PHY和MAC
11、hankscpp TCP/IP协议簇分层详解
12、朽月 基于FPGA的千兆以太网的实现(1)
  基于FPGA的千兆以太网的实现(2)
  基于FPGA的千兆以太网的实现(3)
  基于FPGA的千兆以太网的实现(4)
13、lzx6901152 千兆以太网TCP协议的FPGA实现
14、always@ 基于FPGA的以太网芯片W5300的tcp/ip协议的开发
15、Why_csdn_1 W5300网口芯片的FPGA控制协议流程
16、强迫症高级患者 基于FPGA的千兆以太网传输实例——ARP和UDP的实现
   

Xilinx ISE 千兆以太网通信基础相关推荐

  1. XILINX SGMII千兆以太网 (1)

    这篇文章将对以太网的学习过程进行简单记录和总结. 因为工程进度的原因,先采用xilinx自带的IP的形式进行开发,参考PG047. The LogiCORE™ IP 1G/2.5G Ethernet ...

  2. XILINX SGMII千兆以太网 (2)

    参考PG047 The LogiCORE™ IP 1G/2.5G Ethernet PCS/PMA or Serial Gigabit Media Independent Interface (SGM ...

  3. 基于Xilinx artix 7的FPGA高级应用(二):千兆以太网通信(原理篇)

    本项目是基于Xilinx Artix7 XC7A35T芯片 以太网芯片选用的是RTL8211EG PHY芯片 MAC 和PHY接口标准是GMII 开发工具是vivado 2018.3 FPGA高级应用 ...

  4. xilinx千兆以太网与万兆以太网IP接口

    说明:对于IP核输出数据的解析最好的工具就是其自带的仿真文件,里面既将接收的数据进行了解析,又将发送给IP核的数据进行了封装,这对于了解数据结构和协议是十分有帮助的,以太网如此,pcie.ram.fi ...

  5. 基于FPGA的千兆以太网设计

    今天给大侠带来基于FPGA的千兆以太网设计,话不多说,上货. 一.设计概述 由于设计比较复杂,本篇带来设计流程以及设计思路,仅供各位大侠参考. 本篇通过管理数据输入输出MDIO配置PHY寄存器,使其工 ...

  6. 【转】简谈基于FPGA的千兆以太网

    原文地址: http://blog.chinaaet.com/luhui/p/5100052903 大家好,又到了学习时间了,学习使人快乐.今天我们来简单的聊一聊以太网,以太网在FPGA学习中属于比较 ...

  7. 简谈基于FPGA的千兆以太网设计

    简谈基于FPGA的千兆以太网设计 今天给大侠带来简谈基于FPGA的千兆以太网设计,话不多说,上货. 今天我们来简单的聊一聊以太网,以太网在FPGA学习中属于比较高级的内容了,有些大侠肯定会感觉以太网学 ...

  8. 【千兆以太网】基于FPGA的千兆以太网MIMO通信系统开发

    1.千兆以太网技术 千兆以太网技术简介 以太网技术是当今应用广泛的网络技术,千兆以太网技术继承了以往以太网技术的许多优点,同时又具有许多新的特性,例如传输介质包括光纤和铜缆,使用8B/10B的编解码方 ...

  9. 基于米联客MA703FA开发板的MicroBlaze LWIP千兆以太网例程

    Xilinx FPGA MicroBlaze使用AXI 1G/2.5G Ethernet Subsystem(= Tri Mode Ethernet MAC + AXI Ethernet Buffer ...

  10. 1996 年 3 月. IEEE 成立了 802.3z 工作组开始制定 1000Mb/s 标准。下列千兆以太网中不属于该标准的是(19)【答案】C

    1996 年 3 月. IEEE 成立了 802.3z 工作组开始制定 1000Mb/s 标准.下列千兆以太网中不属于该标准的是(19) (19)A.1000 Base-SX B.1000 Base- ...

最新文章

  1. 浅谈Java中15种锁的分析比较
  2. java23中设计模式——结构模式——Composite(组合)
  3. 自己动手实现OpenGL-OpenGL原来如此简单(二)
  4. java中如何实现两个值互换
  5. python画三维立体图-Python 竟能绘制出如此酷炫的三维图
  6. javascript 中的call和apply
  7. QT的QIntValidator类的使用
  8. oracle安装静默
  9. 需要单机还是集群部署_单机、分布式、集群的区别与联系
  10. postgresql 备份 java_用JAVA执行CMD命令备份PG数据库,解决需要输入口令的问题
  11. suricata架构——数据结构和代码流程图解
  12. 浅谈JS、Ajax、JQuery之间的关系
  13. JedisPool介绍
  14. 汇总|实时性语义分割算法(共24篇)
  15. 卖零食怎么引流?怎么推广自己的零食产品,零食店怎么做引流?
  16. 非线性系统的理论和方法,神经网络的非线性
  17. java打印pdf文件乱码_java – 从PDF复制粘贴在原始文件上是乱码,但在使用CutePDF打印pdf时已修复...
  18. 基于关系数据库彩票开奖模拟系统 的设计与实现
  19. 迅捷新版PDF转换器
  20. 计算机文件夹加密文件,如何加密计算机文件夹4种加密文件夹的方法

热门文章

  1. 错误“ Java:不支持发行版本5”的正确解决方案
  2. UMail轻松搭建linux邮件服务器(一体盘安装)
  3. Linux学习(一) —— 各个文件夹的作用
  4. 接口调用一会正常,一会失败
  5. 【Android】Android Studio Profiler Memery (一)
  6. BiliDuang(哔哩哔哩视频下载器)
  7. 中国成网络攻击最大受害国之一
  8. 【React Router 6 快速上手一】重定向Navigate / useRoutes路由表 / 嵌套路由Outlet
  9. 微服务架构:基于微服务和Docker容器技术的PaaS云平台架构设计
  10. 从辣条国家标准到 java 接口规范