【FPGA设计】千兆以太网

一. OSI 七层模型

OSI(Open Systems Interconnection)七层模型是由国际标准化组织(ISO)制定的一个概念模型,用于描述网络中各部分如何通信。这个模型将网络通信分解为七个不同的层次,每一层都有特定的功能,并且依赖于下一层提供的服务来实现其功能。下面是OSI七层模型的详细介绍:

  1. 应用层(Application Layer)

    • 提供应用程序之间的接口。
    • 支持文件传输、电子邮件、虚拟终端等服务。
    • 协议示例:HTTP, FTP, SMTP。
  2. 表示层(Presentation Layer)

    • 负责数据格式化、加密和解密等功能。
    • 确保发送的数据对应用层来说是可理解的。
    • 协议示例:JPEG, MPEG, ASCII, Unicode, PGP, SSL/TLS。
  3. 会话层(Session Layer)

    • 控制会话的建立、管理和终止。
    • 可以提供同步点,以便在发生错误时恢复数据。
    • 协议示例:RPC, SQL, NFS, NetBIOS, RPC, LDAP。
  4. 传输层(Transport Layer)

    • 提供端到端的数据传输服务。
    • 保证数据的可靠传输,包括错误检测、流量控制和拥塞控制。
    • 协议示例:TCP, UDP。
  5. 网络层(Network Layer)

    • 负责路由选择和数据包交换。
    • 提供逻辑寻址和路径选择服务。
    • 协议示例:IP, ICMP, ARP, RARP, OSPF。
  6. 数据链路层(Data Link Layer)

    • 提供物理地址(MAC地址),并确保数据帧的正确传输。
    • 进行错误通知、帧序列以及流控。
    • 协议示例:Ethernet, Wi-Fi (802.11), PPP, HDLC, VLAN。
  7. 物理层(Physical Layer)

    • 定义连接介质的标准,如电压、电缆规格、物理接口等。
    • 负责比特流的传输。
    • 协议示例:RJ45, BNC, AUI, RS-232, V.35。

每一层都与相邻的上一层和下一层进行交互。数据从发送方的应用层开始向下传递,经过每一层的封装过程,最终通过物理层传输到接收方,接收方则相反,数据从物理层向上逐层解封装。这种分层结构有助于清晰地定义不同组件的功能,并且使得各个部分能够独立发展。

二. FPGA 在 UDP 通信中的角色

FPGA在这样的通信系统中的主要职责是处理数据的低层级传输,通常只实现传输层,网络层和数据链路层,而更高层级的功能,如会话层和表示层的服务,则通常由软件或其他硬件来实现。
在这里插入图片描述

在基于FPGA的UDP通信系统中,FPGA主要负责以下几项任务:

1. 数据包的构建与解析:

构建UDP数据包,包括添加源端口号、目的端口号等信息。
解析接收到的UDP数据包,提取必要的信息,如端口号和数据负载。

2. 错误检测:

实现CRC校验等机制来检测传输过程中可能出现的错误。
在接收到的数据包中计算CRC值,并与数据包中携带的CRC值进行比较以验证数据的完整性。

3. 数据的封装与解封装:

封装数据进入IP数据包,并将UDP数据包嵌入其中。
解封装接收到的数据包,提取出UDP数据段。

4. 与PHY的接口:

FPGA需要与PHY(Physical Layer,物理层)芯片进行交互,完成物理层的数据传输。
PHY芯片负责比特流的编码与解码,例如4b/10b编码。

在这里插入图片描述

三. GMII和RGMII接口

1. GMII 接口:

GMII(Gigabit Media Independent Interface)是一种千兆位媒体独立接口,用于连接以太网MAC(介质访问控制)层与PHY(物理层)层。它提供了一种全双工的数据传输方式,支持10Mbps、100Mbps和1000Mbps三种速率。GMII接口通常由7个数据信号线(发送和接收各3个,加上一个时钟信号线)组成,并且还需要额外的控制信号线来协调数据传输。
在这里插入图片描述

2. RGMII 接口:

在这里插入图片描述
RGMII(Reduced Gigabit Media Independent Interface)则是简化版的GMII接口,减少了所需的引脚数量。RGMII 的时序分为两种:延时模式和非延时模式,可以通过配置 PHY 芯片改变模式。

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

校验字节强制设置0,IP头部20字节按2字节即16比特分隔分别相加,若结果大于FFFF那么把高16位与低16位相加,直到最终结果为16比特数据。将计算结果取反作为IP首部校验和。

例如:抓取IP数据包,取IP数据报头部分(20B),数据如下,
45 00 00 30 80 4c 40 00 80 06 b5 2e d3 43 11 7b cb 51 15 3d, 计算IP 首部校验和。

(1) 将校验和字段 b5 2e 设置为 00 00,数据变为:
45 00 00 30 80 4c 40 00 80 06 b5 2e d3 43 11 7b cb 51 15 3d

(2) 以 2 字节为单位,数据反码求和:
4500+0030+804c+4000+8006+00d3+d343+117b+cb51+153d=34ace

(3) 进位(3)加到低16位(ace)上:
0003+4ace=ad1

(4) 将 ad1 取反:
checksum = b52e

  • 22
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值