前言
为完整对以太 通信相关概念进行阐述,部分图文内容引用自参考文献。所有引用的参考文献都附在文章最后。
千兆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是什么strong>
答:PHY是物理接口收发器,它实现物理层。IEEE-802.3标准定义了以太 PHY。它符合IEEE-802.3k中用于10BaseT(第14条)和100BaseTX(第24条和第25条)的规范。
问:以太 MAC是什么strong>
答: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 个。
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数据以数据的形式包含在以太 数据帧中。
1.8 UDP数据包格式
UDP数据包以数据的形式包含在IP数据包中。
以太 帧格式如下图所示:
- 每个以太 帧中允许包含的数据字节个数在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的以太 接口td> |
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的实现 |
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!