当前位置:   article > 正文

FPGA-UDP实验_udp数据发送时钟

udp数据发送时钟

1. 以太网简介

  1. 水晶头的规格就是RJ45
  2. 千兆网一般指的就是UDP千兆网
  3. PHY芯片是用来协商用的 协商匹配最低的通信速率

1.1. OSI模型

  1. 7层
    在这里插入图片描述

在这里插入图片描述

![外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传](https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=image-2.png&pos_id=img-SeubNYVv-1720108026560)
  • 1

1.2. 几种接口

  1. FPGA配置PHY芯片的接口 MDIO
  2. 数据交换相关的接口 MII-RMII-GMII(千兆)-RGMII(千兆)
    1. MII(Medium Independent Interface,媒体独立接口): MII 支持 10Mbps 和 100Mbps 的操作,数据位宽为 4 位,在 100Mbps 传输速率下,时钟频率为 25Mhz。
    2. RMII(Reduced MII): RMII 是 MII 的简化版, 数据位宽为 2 位,在 100Mbps 传输速率下,时钟频率为 50Mhz。
    3. GMII(Gigabit MII): GMII 接口向下兼容 MII 接口, 支持 10Mbps、 100Mbps 和 1000Mbps 的操作,数
    4. 据位宽为 8 位,在 1000Mbps 传输速率下,时钟频率为 125Mhz。RGMII(Reduced GMII): RGMII 是 GMII 的简化版,数据位宽为 4 位,在 1000Mbps 传输速率下,时钟频率为 125Mhz,在时钟的上下沿同时采样数据。 在 100Mbps 和 10Mbps 通信速率下,为单个时钟沿采样。
    5. 常用的接口为RGMII和GMII接口。**RGMII接口的优势是同时适用于10M/100M/1000Mbps 通信速率,同时占用的引脚数较少。**但 RGMII 接口也有其缺点,就是在 PCB 布线时需要尽可能对时钟、控制和数据线进行等长处理,且时序约束相对也更为严格
  3. GMII接口介绍
    在这里插入图片描述
时钟等于125M的时候   125M*8bit=1000Mbps      实现了千兆网 
时钟等于25M的时候    12.5M*8bit=100Mbps      实现了百兆网
通过设置不同的时钟频率来设置不同的传输速率
  • 1
  • 2
  • 3
  1. RGMII接口介绍
    在这里插入图片描述
  • 有延迟模式和非延迟模式,用的更多的是延迟模式,一般PHY芯片默认配置为延时模式
  • 所谓的非延时模式其实就是在时钟的跳变沿传输上一时刻的数据值,延时模式就是在是时钟的跳变沿的此刻传输数据(类似于I2S)
  • RGMII与GMII不同的是,RGMII在时钟的上升沿和时钟的下降沿都传输数据,但是GMII只在时钟的上升沿进行数据的传输
  • RGMII是后来发展而来的,节省了数据线
    在这里插入图片描述

RGMII 发送端口在 TXC 时钟的上升沿传输 TXD 的低 4 位和 TX_CTL 的使能信号;下降沿传输 TXD 的高 4 位和 TX_CTL 的错误信号(实际上是使能信号和错误信号的异或值);RGMII 接收端口在 RXC 时钟的上升沿传输 RXD 的低 4 位和 RX_CTL 的使能信号;下降沿传输 RXD 的高4 位和 RX_CTL 的错误信号(实际上是使能信号和错误信号的异或值)

1.3. 数据包介绍

数据包又叫做MAC数据包,存在于PHY芯片和外设(FPGA或者PC等)中
在这里插入图片描述

  • 红色的是前导码,绿色的是MAC层的有效数据,灰色的是校验码

  • 前导码(7Byte,默认为8’h55)+ SFD(1Byte,默认为8’hd5)一般作为帧头,目的MAC地址(6Byte)+源AMC地址(6Byte)+类型/长度(2Byte,小于1536表示长度,大于1536表示类型 ARP:16’h0806 ip:16’0800)

  • MAC数据中 IP头部/首部(20Byte)
    在这里插入图片描述

    1. 版本 + 首部长度 1byte,版本ipv4 : 4’h4 ,首部长度 : 4’h5
    2. 服务类型 1byte,一般为8’h0
    3. 总长度 2byte,ip首部长度 + ip数据包长度
    4. 标识 2byte,复位给0,发完一包数据自加1
    5. 标记 + 分段偏移 2byte,标记:3bit。最高位保留为0;中间位是否开启分段,0不开启,1开启;最低位表示是否存在下一个分段,0表示为最后一个分段,1表示还存在下一个分段。一般默认为3’b010,分段偏移:表示第0段,第1段…
    6. 生存时间 1byte,表示以太网数据包可以中转进过多少个路由器,每进过一个路由器,改值就会减少1,直到该值变成0,丢包该包。,win系统默认为8‘h80
    7. 协议 1byte,udp : 8’d17 ,tcp : 8’d6, icmp : 8’d1
    8. 首部校验和 2byte
    9. 源ip地址 4byte
    10. 目的ip地址 4byte
    11. 说明:MAC数据包的长度不能超过1526

1.4. UDP首部校验和、IP首部校验和计算方法

  1. 将校验和字段b5 2e置为00 00
  2. 以两个字节为单位,数据反码求和
  3. 将进位(3)加到低16位上
  4. 将上一步的数据取反

1.5. 软件的使用-网络调试助手&Wireshark

  1. ping是ICMP其中的一个功能
    ping的功能就是通过数据的回环,检查网络的连接情况
  2. ARP
    基本功能:知道目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行
    ARP表 静态绑定MAC地址

2. 实验1-ARP

  1. ARP协议介绍

    1. ARP(Address Resolution Protocol),即地址解析协议,是根据IP地址(逻辑地址)获取MAC地址的一种 TCP/IP 协议。32位的IP地址对应48位的MAC地址
    2. ARP 协议分为 ARP 请求和 ARP 应答
    3. ARP 协议位于以太网MAC帧格式的数据段, ARP数据包格式如下图所示:
      在这里插入图片描述
      在这里插入图片描述

    28 字节的 ARP 数据位于以太网帧格式的数据段。由于以太网数据段最少为46个字节,而 ARP数据包总长度为28个字节,因此在ARP数据段后面需要填充 18 个字节的数据,以满足以太网传输格式的要求。这个填充的过程称为 Padding(填充),填充的数据可以为任意值,但一般为0

  2. ARP广播过程

    1. ARP请求时,携带发送方的IP地址和MAC地以及目标的IP地址,目标的MAC地址是48位的1,因为要进行广播发送,下面是ARP广播的示意图
      在这里插入图片描述

    2. 只有验证成功的主机才能返回一个ARP应答报文(包含了接收方的IP地址和MAC地址)

    3. 发送方接收到报文,更新自己的ARP缓存表

  3. 以太网的帧格式
    ARP协议(在MAC层)通过以太网传输,下面介绍以太网的帧格式,以太网的通信是以数据包的形式传输的
    在这里插入图片描述

在这里插入图片描述

上图中长度/类型比较重要,当这两个字节的数据小于1536的时候 代表数据段的长度,大于1536代表数据属于哪个上层协议 例如0x0800代表IP协议(网际协议) 0x0806代表ARP协议(地址解析协议)
数据的长度最小46个字节,最大1500个字节,最大值1500称为以太网的最大传输单元(MTU)
FCS(Frame Check Sequence),为了确保数据的正确传输 应用最广泛的是CRC-32标准

IFG(Interpacket Gap)帧间隙,IFG 的最小值是96 bit的时间,在不同的媒介中IFG的最小值是不一样的

  1. ARP和以太网MAC层的关系
    TCP(传输控制协议)/IP(网际协议)协议簇。它包括上百个各种功能的协议,如TCP、 IP、ARP、 UDP 等。而其中的TCP和IP协议是保证数据完整传输的两个重要协议,因此TCP/IP协议用来表示Internet协议簇。

TCP/IP协议不仅可以运行在以太网上,还可以运行在FDDI(光纤分布式数据接口)和WLAN(无线局域网)上,反过来,以太网的高层协议不仅可以是TCP/IP协议,还可以是IPX(互联网分组交换)协议。只不过以太网+TCP/IP成为IT行业中应用最普遍的技术。

  1. ARP实验
    在这里插入图片描述

上面是FPGA发送给PC的ARP请求,下面是PC向FPGA开发板发送的数据,通过这样的过程,使通信的双方构建起了ARP的通信

3. 实验2-ICMP

3.1. ICMP协议介绍

  • ICMP(Internet Control Message Protocol) Internet 控制报文协议。它是 TCP/IP 协议簇的一个子协议,用于在 IP 主机、 路由器之间传递控制消息。
  • ping和tracert(显示到达目的主机的路径)都利用ICMP协议来实现网络功能。ICMP就是一个“错误侦测与回报机制”,目的是让我们能够检测网络的连接状况,确保网络连接的准确性。当路由器在处理一个数据包的过程中发生了意外,可以通过ICMP向数据包的源端报告有关事件
  • 主要功能有:
    • 侦测远端主机是否存在
    • 建立与维护路由资料
    • 重导资料传送路径(ICMP重定向)
    • 资料流量控制
      在这里插入图片描述

3.2. IP协议介绍

IP协议是TCP/IP协议簇中的核心协议,也是TCP/IP协议的载体,IP协议规定了数据传输时的基本单元和格式
所有的TCP UDP ICMP数据都以IP数据报格式传输,IP数据报的格式如图所示
在这里插入图片描述

第二行的标识|标志|片偏移都是和数据包分组发送相关的
第三行的协议:表示数据报所携带上层数据使用的协议类型 ICMP为1 TCP为6 UDP为17;首部校验和:校验IP数据报头部是都被破坏,篡改和修改等

3.3. ICMP协议

3.4. 协议介绍

IP头部就在ICMP报文的前面(ICMP的首部在IP层的数据段),一个ICMP报文包括IP头部,ICMP头部和ICMP报文IP头部的Protocol为1说明这是一个ICMP报文,ICMP头部的类型(Type)用于说明ICMP报文的作用与格式,此外还有一个代码(Code)域用于详细说明某种ICMP报文的类型,所有的数据都在ICMP头部的后面

3.5. 一帧ICMP报文

在这里插入图片描述

  • ICMP首部一共8个字节,同IP首部一样,也是一行以32位(4个字节)为单位

  • 类型和代码表示的含义

    类型/代码含义
    类型 0,代码 0表示回显应答(ping 应答)
    类型 8,代码 0表示回显请求(ping 请求)
    类型 11,代码 0超时
    类型 3,代码 0网络不可达
    类型 3,代码 1主机不可达
    类型 5,代码 0重定向
  • 标识符(Identifier):占用了 16 bit 位,对于每一个发送的数据报进行标识。

  • 序列号(Sequence number):占用了16bit位,对于发送的每一个数据报文进行编号,比如:发送的第一个数据报序列号为 1,第二个序列号为2。

4. 实验3-UDP

4.1. UDP回环系统框图

在这里插入图片描述

4.2. UDP回环程序编写

先把从PHY芯片接收到的双边沿的RGMII信号转为单边沿的GMII信号

4.3. demo的调用

  1. 步骤
    1. 前提:程序正常烧录到FPGA,网口线接好
    2. 在win进行ARP地址的映射(这个比较关键)
      1. 查看ARP缓存:在命令提示符中输入arp -a,就可以列出所有ARP缓存的条目。
      2. 添加ARP条目:在命令提示符中输入arp -s <IP地址> <MAC地址>,就可以将一个2新的IP和MAC的映射关系添加到ARP缓存中。
      3. 删除ARP条目:在命令提示符中输入arp -d <IP地址>,就可以将指定的映射关系从ARP缓存中删除。
    3. 在网络调试助手输入正确的远程主机的IP和端口号
      在这里插入图片描述
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/天景科技苑/article/detail/984848
推荐阅读
相关标签
  

闽ICP备14008679号