千兆以太网入门

1、什么是PHY?

        网线传输数据使用是串行的差分信号,PHY就是一个电压转换器件,将FPGA/ARM/DSP的TTL电平的并行信号转换为能够在网线传输的串行电信号。其还会完成编码(千兆:8b/10b,百兆:4b/5b)。

        PHY还会进行自协商,与另一个设备协商传输模式与速率,以两个设备同时能支持的最大数率传输数据。

2、FPGA与PHY传输数据

        若要传输以太网数据,我们只需要管fpga和phy之间的数据传输就行,至于phy和其他设备之间的通信和数据传输都由phy去完成。

        fpga和phy之间传输数据的方式有4种,都是并行信号。GMII,RGMII,MII,RMII这四种分别适用于不同的速度,方式的区别也就在于是单边沿传输还是双边沿传输。"G"表示千兆,否者是100M或10M,"R"表示简化,是使用双边沿传输减少了数据线,所以有了4中组合。

        RGMII信号连接关系:

RGMII 接收信号时序图

         实现双边沿发送数据和接收数据,使用的是FPGA的IDDR和ODDR资源。发送信号时,时钟相位需要偏斜90°,可以使用PLL生成两路相位相差90°的时钟,一路产生数据,一用作时钟。

3、MAC协议

        以太网MAC帧格式:

  • 长度/类型:当这两个字节的值小于 0x0600时,代表该以太网中数据段的长度;否则表示该以太网中的数据属于哪个上层协议, 0x0800 代表 IP 协议(网际协议)、0x0806 代表 ARP 协议(地址解析协议)等。
  • FCS校验:不包含前导码、SFD(帧起始界定符)与FCS本身其他所有数据的检验结果(CRC)。CRC要取反。
  • 注意:帧与帧之间的时间有时间间隔要求:96个时钟周期,如1000M为96*1ns=96ns。

4、ARP协议

        ARP是什么?:ARP(Address Resolution Protocol),即地址解析协议,是根据 IP 地址(逻辑地址)获取 MAC 地址的一种 TCP/IP 协议。 

        ARP做什么?:应用在发送以太网数据时,是以帧发送的,帧里面包含有目的ip和mac,只有接收设备和自己mac匹配的数据才会被接收和解析使用,否者会被抛弃。所以在通信前需要先获得目的地的MAC地址,ARP协议就是这个作用。

        ARP映射是什么:获取到目的MAC以后,缓存到ARP缓存表中,称为ARP映射

        ARP映射怎么做?:

                1、静态映射,手动将MAC地址和ip绑定,但是MAC地址可能会变。

                2、动态映射:发送一个 ARP 请求报文,这个报文包含了发送方的 MAC 地址和 IP 地址以及接收方的 IP 地址。因为发送方不知道接收方的物理地址,所以这个查询分组会在网络层中进行广播,即 ARP 请求时发送的接收方物理地址为广播地址,用48’hff_ff_ff_ff_ff_ff 表示。

ARP 请求示意图
ARP 应答示意图

        封包过程:ARP数据包→MAC帧

        ARP数据包格式:

  • 硬件类型:硬件地址的类型,1 表示以太网地址。
  • 协议类型:要映射的协议地址类型,ARP 协议的上层协议为 IP 协议,因此该协议类型为 IP 协议,其值为 0x0800。
  • OP:操作码,用于表示该数据包为 ARP 请求或者 ARP 应答。1 表示 ARP 请求,2 表示ARP 应答。
  • 硬件地址长度为MAC长度,为6(Byte)。协议地址长度为ip地址长度为4(Byte)。
  • 目的 MAC 地址:ARP请求时,为广播地址48’hff_ff_ff_ff_ff_ff。

5、UDP协议

            UDP,即用户数据报协议,是一种面向无连接的传输层协议。无连接是指在传输数据时,数据的发送端和接收端不建立逻辑连接。简单来说,当一台计算机向另外一台计算机发送数据时,发送端不会确认接收端是否存在,就会发出数据,同样接收端在收到数据时,也不会向发送端反馈是否收到数据。    

    封包过程:用户数据→UDP数据包→IP数据包→MAC帧。

           

            

            UDP数据包格式:

    •  端口:用于区分不同服务的端口,端口号的范围从 0 到 65535。
    • UDP 长度:16 位 UDP 长度,包含 UDP 首部长度+数据长度,单位是字节(byte)。
    • UDP 校验和:UDP 伪首部,UDP 首部和 UDP 的数据部分。伪首部的数据是从 IP 数据报头和 UDP 数据报头获取的,包括源 IP 地址,目的 IP 地址,协议类型和 UDP 长度,其目的是让 UDP 两次检查数据是否已经正确到达目的地,只是单纯为了做校验用的。在大多数使用场景中接收端并不检测 UDP 校验和

            IP数据包格式:

    • 版本:4 位 IP 版本号,0100 表示 IPv4,0110 表示IPv6,目前使用比较多的是 IPv4。
    • 首部长度:表示 IP 首部一共有多少个 32 位(4 个字节)。在没有可选字段时,IP 首部长度为 20 个字节,因此首部长度的值为 5。
    • 服务类型:分为3 位优先级字段(现在已经基本忽略掉了)和 4 位 TOS 字段加固定最后1位为0。服务类型为 0 时表示一般服务。
    • 总长度:包括 IP 首部和 IP 数据部分,以字节为单位。一般小于1500?
    • 标识字段:通常每发送一份报文它的值就会加 1。
    • 标志字段:3 位标志字段,第 1 位为保留位;第 2 位表示禁止分片(1 表示不分片 0:允许分片);第 3 位标识更多分片(除了数据报的最后一个分片外,其它分片都为 1)。
    • 片偏移:13 位片偏移,在接收方进行数据报重组时用来标识分片的顺序。
    • 生存时间:TTL(Time To Live)域防止丢失的数据包在无休止的传播,一般被设置为 64 或者 128。
    • 协议:表示此数据报所携带上层数据使用的协议类型,ICMP 为 1,TCP为 6,UDP 为 17。
    • 首部校验和:16 位首部校验和,只校验首部,不包含数据部分。
    • 用户数据:以太网数据最小46个字节,IP首部20个字节+UDP首部8个字节,所以数据至少46-20-8=18个字节。

    例如:

            TCP协议:

            TCP 协议设计之初是根据软件灵活性设计的,如果使用硬件逻辑实现,工程量会十分巨大,而且功能和性能无法得到保证,因此,TCP 协议设计并不适合使用硬件逻辑实现。故略。

    文献参考:正点原子领航者ZYNQ之FPGA开发指南 

    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值