FPGA 以太网学习

发布于:2024-04-26 ⋅ 阅读:(22) ⋅ 点赞:(0)

1 MAC和PHY

从硬件的角度来说,以太网接口电路主要由 MAC Media Access Control )控制器和物理层接口 PHY(Physical Layer PHY )两大部分构成。 MAC 指媒体访问控制子层协议,它和 PHY 接口既可以整合到单 颗芯片内,也可以独立分开,对于本次学习来说,MAC 控制器由 FPGA 实现, PHY 芯片指开发板板载的以太网芯片。
PHY芯片在发送数据时,接收MAC传输的无帧结构的原始数据(包括地址、数据和CRC),执行并串转换、编码及模数转换,将数据转换为模拟信号发送。接收过程则相反。PHY还负责物理连接的管理和状态显示,如通过LED指示灯反映连接状况和运行状态。在建立连接时,PHY会自动探测对端设备并启动自协商(Auto Negotiation),通过发送握手信号与对方协商一致,决定最优的连接参数,如速率、双工模式和流控设置等。

MDIO接口

MDIO(Management Data Input/Output)接口是根据IEEE 802.3标准定义的一种简单双线串行接口,主要用于以太网MAC(Media Access Control)控制器与物理层(PHY, Physical Layer)器件之间的管理通信。这种接口允许MAC控制器或者上层管理系统读取和修改PHY芯片内部的寄存器设置,以便控制和监测PHY的工作状态。

MDIO接口包含了两条信号线:

  1. MDIO: 这是一条双向数据线,用于在管理器件和PHY之间交换控制和状态信息。在不同的时间段内,这条线既可以用作数据输入也可以用作数据输出。

  2. MDC (Management Data Clock): 这是MDIO接口的时钟信号线,由管理器件提供,用来同步MDIO上的数据传输。

通过MDIO接口,可以实现以下功能:

  • 配置PHY芯片的各种参数,比如速度选择、双工模式、自动协商、节能模式等。
  • 查询PHY芯片的状态,如链路状态(Link Up/Down)、接收信号强度、错误统计等。
  • 控制物理层的特性,例如启动和停止物理层的自动协商过程。

MDIO协议基于特定的时序进行操作,允许MAC控制器按照一定的命令格式读取或写入PHY的多个寄存器,从而实现了对以太网物理层设备的灵活配置和实时监控。

3 以太网帧格式

典型的以太网帧格式主要包括以下几个主要部分:

前导码(Preamble)

  • 一组连续的7个字节(56比特)的10101010…101010序列,用于接收设备同步时钟和确定帧的开始。

帧起始定界符(SFD, Start-of-Frame Delimiter)

  • 第8个字节,值为10101011,标志着帧正文的开始。

以太网帧头(Ethernet Header)

  • 源MAC地址(Source MAC Address):6个字节,表示发送方的物理地址。
  • 目标MAC地址(Destination MAC Address):6个字节,表示接收方的物理地址。
  • 类型/长度字段(Type/Length Field):2个字节,指明上层协议类型(如IPv4、IPv6、ARP等)或在某些类型的帧中表示帧的数据部分的长度。

数据负载(Payload)

  • 可变长度,最小46字节,最大取决于以太网类型。通常承载的是上层协议数据单元(如IP数据包)。

帧校验序列(FCS, Frame Check Sequence)

  • 4个字节(32位),采用循环冗余校验(CRC)算法计算得出,用于检测帧在传输过程中是否出错。

4 ARP

在以太网中,每个设备都有一个唯一的MAC地址,这是其硬件标识符,用于在物理层上识别设备。而IP地址则是网络层为了寻址和路由数据包所使用的逻辑地址。当一台主机想要与同一网络内的另一台主机通信时,即使它知道目标主机的IP地址,也需要知道目标主机的MAC地址以便封装数据包到以太网帧中进行传输。

以下是ARP的工作流程:

  1. ARP请求: 当主机A需要向主机B发送数据,并且只知道主机B的IP地址时,主机A会通过广播的方式发送一个ARP请求到整个局域网中。这个请求中包含了目标主机B的IP地址,并询问:“具有这个IP地址的设备,请告诉我你的MAC地址。”

  2. ARP响应: 主机B收到ARP请求后,发现请求的目标IP地址与自己的IP地址匹配,便会回复一个ARP应答给主机A。ARP应答中包含了主机B的MAC地址。

  3. ARP缓存: 主机A收到ARP应答后,会将主机B的IP地址与其对应的MAC地址存储在本地的ARP缓存中,这样下次再需要发送数据给主机B时,就可以直接从缓存中查找MAC地址,无需再次发起ARP请求。

4.1 以太网 ARP 数据包格式

帧格式: 

 ARP 数据报文格式:

硬件类型(Hardware Type,2字节)

  • 表示物理层地址类型,例如对于以太网,其值通常为0x0001。

协议类型(Protocol Type,2字节)

  • 表示要映射的网络层协议地址类型,对于IPv4,其值为0x0800。

硬件地址长度(Hardware Address Length,1字节)

  • 指定硬件地址(MAC地址)的字节数,对于以太网,该值为6。

协议地址长度(Protocol Address Length,1字节)

  • 指定协议地址(IP地址)的字节数,对于IPv4,该值为4。

操作代码(Operation Code,2字节)

  • 定义了ARP请求(0x0001)或ARP应答(0x0002)的操作类型。

发送者硬件地址(Sender Hardware Address,6字节)

  • 发送ARP数据报文的设备的MAC地址。

发送者协议地址(Sender Protocol Address,4字节)

  • 发送ARP数据报文的设备的IP地址。

目标硬件地址(Target Hardware Address,6字节)

  • 在ARP请求中通常填充全0,表明请求未知的目标MAC地址;
  • 在ARP应答中填充请求者期望的目标MAC地址。

目标协议地址(Target Protocol Address,4字节)

  • 在ARP请求中填充需要解析的远程IP地址;
  • 在ARP应答中填充请求者的IP地址。

4.2 ARP协议