以太网

AI summary
Last edited time
Dec 29, 2025 03:19 AM
Last edited by
Tags

第一节:CRC算法

CRC是一种常用于高速接口或者总线的信道编码,它具备检错能力,它可以对任意比特数据的进行检查。
CRC=  (N,K) ,K为任意bit,监督位为crc码,也可以是任意比特
通过以上可以看出,CRC是一种扩展性和灵活性较高的信道分组码,因此在数字通信中得到非常广泛的应用,比如USBx.x,ETH,PCIE,…..。

1.1 CRC码

CRC校验的核心就是计算监督位,这里监督位我们习惯上叫做CRC码,任何信道分组码主要是计算监督位,这里就是计算crc码。

1.1.1 CRC定义

CRC码倍定义为,(N,K),监督位为N-K,将Kbit的信息为乘以2N-K,模2除以生成多项式,最后得到的余数即为CRC码。
notion image
例如:crc=(11,8) ,data[7:0]=8’b1001_1100,      plot = 4’b1001
第一步:data[7:0]*2(N-K) =  data[7:0]*211-8 = {data[7:0],3’b000}= 11’b1001_1100_000
第二步:求余数
notion image

1.1.2 任意CRC硬件实现

notion image
练习:G(x )=  x5+x3+1 实现crc5的CRC码计算电路实现
notion image
notion image

第二节:ETH

以太网作为目前为数不多的对等传输类接口,它支持复杂的通信模型,需要路由协议完成通信控制。

1.1 ETH接口特点

  • 独立媒体介质传输
    • ETH采用高速驱动电路,IEEE802.3规定ETH物理驱动为高速驱动电路,并且驱动电路与上层电路分类(物理驱动电路与上层电路为独立的电路,不是一个整体),这两个电路同时规定了相关接口,我们叫做独立媒体介质接口。
      notion image
  • 速率
    • 速率等级
      独立媒体介质接口
      线路编码
      10Mbps
      MII(rmii)+ Mdio
      曼彻斯特编码
      100MBPS
      4B/5B
      1000MBPS
      GMII(rGmii)+ Mdio
      8B/10B
      10000MBPS
      XGMII+Mdio
      64B/66B
  • 通信方式
    • 采用对等传输,并且在正常模式下为全双工,其中10mbps/100mbps允许工作在半双工。
  • 通信模型
    • ETH由于是对等多点通信,在通信中这种通信是路由最为复杂的通信。
      notion image
      notion image
      notion image
      notion image
      notion image
  • 可靠性
    • ETH为了符合实际需求,提供了2种传输方式,可靠传输和非可靠传输,具体在传输协议中体现,可靠传输采用TCP协议,非可靠传输采用UDP协议。
      这里我们简单说一下可靠传输的机制,在数字通信中可靠通信一般他有2种机制
      1. 应答机制
        1. 比如I2C总线,每发送一个数据,从机需要给出应答
      1. 链接机制
        1. 每次传输数据都需要请求连接,数据发生完之后释放连接,一旦链接成功,连。续发送数据,如果需要重新发送信的数据,需要重新连接,ETH采用这种机制。
  • ECC
    • ETH采用的CRC32作为校验码,具体要求如下:
      生成多项式:G(X)=X32+X26+X23+X22+X16+X12+X11+X10+X8+X7+X5+X4+X3+X+1
      初值:32’HFFFFFFFF
      结果:CRC码 xor  32’HFFFFFFFF
  • 传输单位
    • 以太网以帧作为数据传输单位,每次传输只能传输一个数据单位同时ETH要求每次传输需要有IFG,规定最小96bit时间。
      notion image
      10MBPS:9600ns
      100Mbps:960ns
      1000MBPS:96ns
      10000MBPS:9.6ns
      notion image
      名称
      字节数
      数值
      含义
      前导码
      7字节
      0x55_5555_5555_5555
      同步码,实现数据同步
      帧起始界定符
      1字节
      0xD5
      表示一帧的开始
      目的MAC地址
      6字节
      /
      指示目标设备的MAC地址
      源MAC地址
      6字节
      /
      发送端的MAC地址
      长度/类型
      2字节
      /
      小于1536字节时表示数据长度;特定数值表示不同协议包 当为0x0800时,表示该数据包是IPv4协议包。 当为0x08DD时,表示该数据包是IPv6协议包。 当为0x0806时,表示该数据包是ARP协议包
      数据
      46~1500字节
      /
      包含TCP、IP、UDP、ARP等协议数据
      校验FCS
      4字节
      /
      CRC32校验结果,确保数据正确性
      IFG(帧间间隔)
      /
      /
      10M网络:9600ns;100M网络:96ns;1000M网络:96ns
  • 寻址
    • ETH采用双寻址,MAC+IP寻址,需要2个地址进行寻址
      Mac地址:48bit,叫做物理地址,本质上是设备编号,每个设备都由唯一的地址
      IP地址  (32bit[IPV4]/48bit[IPV6]):网络节点地址,节点编号,通信模型多样化,需要节点编号。

1.2 协议

Eth协议参考了IOS的7层协议模型,采用分层协议,一共7层:
notion image

1.2.1 网络层协议

网络层是针对节点路由的一些规定的协议,主要有2种协议,IP协议,arp协议
IP协议 :用来封装上层数据
ARP协议:协助型的协议,一般情况下知道对方IP地址就可以发送数据,如果在不知道对方MAC地址的情况下,需要通过这个协议解析对方MAC。

1.2.1.1 IP协议

IP协议为本质是一个IP包,包内部规定了与节点路由相关的参数
notion image
字段名称
长度
作用
版本号(Version)
4位
区分IP v4和IP v6
首部长度
4位
表示IP包头长度,前20字节固定,后40字节可选
服务类型(Type of Service TOS)
8位
表示用户请求的服务质量 前3位为优先级(Precedence),后4位标志位,最后1位保留未用。优先级主要用于QoS,表示从0(普通级别)到7(网络控制分组)的优先级。标志位可分别表示D(Delay更低的时延)、T(Throughput 更高的吞吐量)、R(Reliability更高的可靠性)、C(Cost 更低费用的路由)
总长度(Total Length)
16位
表示IP包总长度,最大可达65535字节
标识符(Identifier)
16位
用于数据包分段重组时的序列号标识
标志(Flags)
3位
指示数据包是否需要分段以及是否还有后续分片 长度为3位,三位从左到右分别是MF、DF、未用。MF=1表示后面还有分段的数据包,MF=0表示没有更多分片(即最后一个分片)。DF=1表示路由器不能对该数据包分段,DF=0表示数据包可以被分段。
偏移量(Fragment Offset)
13位
标识数据段在上层数据报文中的偏移量
生存时间(TTL)
8位
避免数据包无限转发,每经过一个路由器减1,减至0则丢弃
协议(Protocol)
8位
标识上层使用的协议 · 6 表示 TCP(传输控制协议) · 17 表示 UDP(用户数据报协议)
首部校验和(Header Checksum)
16位
对IP数据包首部进行校验,不包含数据部分 反码求和运算
源IP地址(Source IP)
32位
表示数据发送的主机IP
目的IP地址(Destination IP)
32位
表示数据接收的主机IP
选项字段(Options)
0-40字节
提供额外的功能,如安全、路径记录、时间戳等

1.2.1.2 ARP协议

ARP协议本质就是arp包,目的根据当前IP地址解析对方的MAC地址,规定了和地址解析相关参数。
notion image
字段名称
长度
作用
硬件类型
2字节
指明硬件接口类型,以太网值为1
协议类型
2字节
表示协议地址类型,值为0x0800,表示IP地址
硬件地址长度和协议长度
2字节
分别指出硬件地址和协议的长度,以字节为单位,以太网上的值分别为6和4
操作类型
2字节
表示报文类型,请求为1,响应为2,RARP请求为3,RARP响应为4
发送方MAC地址
6字节
发送方设备的硬件地址
发送方IP地址
4字节
发送方设备的IP地址
目标MAC地址
6字节
接收方设备的硬件地址
目标IP地址
4字节
接收方设备的IP地址

1.2.2 传输层协议

该层主要是针对如何传输的相关规定,比如可靠传输,非可靠传输,主要有TCP/UDP协议
TCP:可靠传输,面向字节流,传输效率特别低,主要用于传输软件或者操作系统的有关命令和消息等信息
UDP:非可可传输,面向报文,用于传输数据

1.2.2.1 UDP

UDP协议本质就是报文,规定了传输相关的参数,支持虚拟端口(最多216个端口)
notion image
字段名称
内容
源端口
范围:0-65535;保留端口号:1-1024,为标准的服务端口
目的端口
无须多解释
UDP长度
header+data 总长度
UDP校验和
伪头部、头部、data三部分校验和
数据
上层应用层的数据
伪头部格式
源地址、目的地址、零位、协议、UDP长度

1.2.2.2 TCP

TCP采用报文形式,同样规定了可靠传输的相关参数,采用链接机制(请求连接需要3次握手,释放连接需要4次握手)
notion image
字段名称
长度
作用
源端口
16位
发送方主机的应用程序的端口号
目的端口
16位
目的主机的应用程序的端口号
序列号
32位
表示本报文段所发送数据的第一个字节的编号
确认号
32位
表示接收方期望收到发送方下一个报文段的第一个字节数据的编号
首部长度
4位
确定TCP报文的报头部分长度
保留字段
6位
必须全部为0
标志位字段
6位
共有6个标志位,每个标志位占1个bit标志位说明URG表示本报文中发送的数据(有效载荷)是否包含紧急数据ACK表示本报文前面的确认号字段是否有效PSH告诉对方收到该报文段后,上层应用程序立即把数据从TCP接收缓冲区读取RST表示是否重置连接SYN在建立连接时使用,用来同步序号FIN标记数据是否发送完毕
窗口大小
16位
表示发送该TCP报文的接受窗口还可以接受多少字节的数据量
校验和
16位
用于确认传输的数据有无损坏
紧急指针
16位
仅当标志位字段的URG标志位为1时才有意义
选项字段
变长
提供了一些额外的功能或对TCP协议进行扩展
请求链接
notion image
释放链接
notion image
注意:Eth传输数据用UDP,传输操作协议或者软件的命令,消息等数据才会使用TCP

1.3 独立媒体介质无关接口

1.3.1 MII(RMII)接口

10mbps和100mbps采用这种接口,下来我们对该接口进行分析
notion image
信号
方向
位宽
含义
RX_CLK
O
1
发送时钟,PHY芯片产生,100Mbps时为25MHz,10Mbps时为2.5MHz。
RX_DV
O
1
高电平表示发送的数据有效。
RX_ER
O
1
高电平表示发送数据的错误,接收端不接受该数据。
RX_D
-
4
发送数据总线。
TX_CLK
O
1
接收时钟,PHY芯片产生,频率与RX_CLK一致。
TX_EN
1
1
高电平表示接收的数据有效。
TX_ER
1
1
高电平表示接收的数据包有误,丢弃该数据包。
TX_D
1
4
接收数据总线。
CRS
0
1
载波侦测信号,不需要同步于参考时钟,有数据传输,CRS就有效,仅PHY在半双工模式下有效。
COL
O
1
冲突检测信号,不需要同步于参考时钟,仅PHY在半双工模式下有效。

1.3.2 GMII(rgmii)

GMIIG向下兼容MII
notion image
信号名称
描述
方向
GTX_CLK
1000M发送时钟
MAC→PHY
TX_CLK
100/10M发送时钟
MAC→PHY
TX_ER
发送数据错误
MAC→PHY
TX_EN
发送使能
MAC→PHY
TX_[7:0]
发送数据8bit,如果工作中在10mbps/100mbps,只有低4位有效
MAC→PHY
RX_CLK
接收时钟
PHY→MAC
RX_DV
接收数据有效
PHY→MAC
RX_ER
接收数据错误
PHY→MAC
RX_[7:0]
接收数据8bit,如果工作中在10mbps/100mbps,只有低4位有效
PHY→MAC
CRS
载波监测
PHY→MAC
COL
冲突碰撞监测
PHY→MAC

1.3.3 xGMII

该接口为万兆以太网的接口,为74根线,采用双沿采样
信号名称
描述
方向
TXD[31:0]
32位并行Q数据总线,传输MAC层发送的数据
发送方向(TX)
TXC[3:0]
4位控制信号,每位对应TXD总线的8位数据,用于指示数据或控制信息
发送方向(TX)
TX_CLK
发送时钟信号,频率为156.25 MHz,同步TXD和TXC信号
发送方向(TX)
RXD[31:0]
32位并行数据总线,传输PHY层接收的数据
接收方向(RX)
RXC[3:0]
4位控制信号,每位对应RXD总线的8位数据,用于指示数据或控制信息
接收方向(RX)
RX_CLK
接收时钟信号,频率为156.25 MHz,同步RXD和RXC信号
接收方向(RX)
在实际项目开发中,由于XGMII线较多,一般需要寻求别的方式进行传输,而不采用官方的接口,一种能够被大众接收的方式是用XAUI代替XGMII的方式。
XAUI的本质是采用4路高速驱动电路直接驱动,每路传输8bit数据,采用8B/10编码
在FPGA开发中,万兆网不需要PHY的情况下使用4路高速收发器即可实现网络传输。

1.3.4 MDIO接口

MDIO接口是IEEE802.3规定的独立媒体介质无关接口的管理接口,通过2根新信号线(MDC ,MDIO)实现PHY的寄存器配置,用于和PHY人机交互。
notion image
notion image
字段名称
长度
含义
开始标志
2Bits
标志该数据帧开始,必须为01。
操作码
2Bits
10标志为读操作,01标志为写操作。
PHY地址
5Bits
表示所访问的PHY地址,一个MDIO总线最大支持32个PHY。
寄存器地址
5Bits
表示所访问的寄存器的地址,共计32个寄存器。
翻转标志位
2Bits
读话Z0,写10
数据
16Bits
操作符为读操作时,该数据为对于地址PHY的特定寄存器的数值;操作符为写时,该数据为对该寄存器写入的数值。
Loading...