硬件构成
- FPGA只需要关注与PHY芯片通信,就能实现通过以太网和PC通信
OSI七层协议
FPGA使用TCP/IP五层协议
- TCP/IP协议与OSI七层协议类似,更简洁
- 一般来说,FPGA只做到了传输层,PHY芯片提供物理层
- 通过UDP、IP、MAC层,层层打包数据头部,最终通过PHY芯片将数据发送出去
GMII和RGMII接口
概念
- GMII与RGMII是物理层(PHY)和数据链路层(MAC)之间的标准接口,RGMII更新
GMII
- 数据宽度:8位(1字节)数据总线,用于发送/接收
- 时钟:发送/接收时钟都是125MHz(千兆)
- 控制信号:
- 发送使能:
TX_EN,表示发送数据有效 - 发送错误:
TX_ER,指示发送数据错误 - 接收数据有效:
RX_DX,接收数据有效 - 接收错误:
RX_ER,接收数据错误 - 载波监听、冲突检测:CRS、COL
- 发送使能:
- 引脚数量:约24个
- 带宽:支持1000M,也向下兼容10、100M
- 应用场景:早期千兆以太网设备、对引脚数量不敏感的设计
RGMII
RGMII是GMII的简化版本,通过减少引脚数量、优化信号传输方式,降低设计复杂性、成本- 数据宽度:4位(半字节)数据总线,即TXD[3:0],RXD[3:0],相比GMII减少一半
- 时钟:
- 使用双边沿触发(DDR)
- 时钟频率也125M(由于DDR技术,传输速率等同于GMII)
- 控制信号:
TX_EN和TX_ER在时钟的上升沿/下降沿复用(编码为TX_CTL)RX_DV和RX_ER同样复用RX_CTL- 不在需要独立的
CRS、COL信号
- 引脚数量:约12个,大幅减少
- 带宽:支持千兆速率,也向下兼容10、100M
- 延时补偿:时序分为延时模式和非延时模式,一般延时模式用的多
- 应用场景:广泛应用于现代嵌入式、SOC系统等
- 在时钟上升沿传输低四位,下降沿传输高四位,一共传输8bit/1字节数据
- 延时模式:接收时在RXD的中间位置接收;发送时正常发送。PHY芯片默认延时模式
MAC数据包
- 以太网MAC数据包根据
Type Length,分为IP数据包(8000)、ARP包(8060) - 根据IP首部的协议,IP数据包分为UDP、ICMP、TCP
MAC帧格式
- MAC帧:MAC子层是数据链路层的下半部分,主要负责与物理层进行数据交换。
- 格式:
- 前导码:帧头,内容为7个字节的0x55
- 帧起始界定符:用于区分前导段和数据段,内容为0xD5
- MAC地址:网卡的物理地址,在以太网传输的最底层
- 数据包类型Type/length:描述本MAC数据包是属于TCP/IP协议层的IP包、ARP包还是SNMP包
- 数据段:MAC包核心内容,包含的数据来自MAC上层
- FCS校验和域:保存了CRC校验序列,用于检错
IP帧格式
- IP协议:当MAC数据包通过数据链路层到达网络层,只有有效数据传入了网络层,通过IP协议实现网络层互联
- IP帧格式:
- IP首部(20字节):
- 版本:4bit,定义协议版本,如IPv4的值是4,IPv6的值是6
- 首部长度:4bit,指定ip头部的长度,单位是4字节。如最小值是5(20字节),最大值是15(60字节)
- 服务类型:8bit,指定数据包的优先级和服务质量
- 总长度
- 标识
- 标志
- 分段偏移
- 生产时间
- 协议
- 检测错误
- 源IP地址
- 目的IP地址
- DATA数据
- IP首部(20字节):
UDP帧格式
-
网络层接收到数据包后,取下数据包的IP首部,将剩余的有效数据包发送给传输层。
传输层有两种协议:TCP协议(更可靠)、UDP协议(简单)
-
UDP帧格式:
- UDP首部
- 源端口号
- 目的端口号
- UDP长度
- UDP校验和
- DATA数据
- UDP首部
UDP/IP首部校验和计算方法
-
计算方法:
-
抓取IP数据包,取IP数据报头部分(20B),
如:45 00 00 30 80 4c 40 00 80 06 b5 2e d3 43 11 787b cb 51 15 3d,将校验和字段b5 2e置零
为:45 00 00 30 80 4c 40 00 80 06 00 00 d3 43 11 787b cb 51 15 3d
-
以2字节为单位,数据反码求和:4500+0030+804c+4000+8006+0000+d343+117b+cb51+153d=34ade
-
将进位的0003加到低16位上:0003+4ace=4ad1
-
将4ad1取反,得:checksum = b52e
-