【FPGA设计】千兆以太网

news2025/1/19 11:27:03

一. 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1958228.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

嵌入式学习Day14---C语言进阶

目录 一、构造类型 1.1.结构体 1.存储 2.输入输出(传参) 3.结构体数组 1.2.共同体(联合体) 1.格式 2.存储 3.测试一个平台是打端还是小端 1.3.枚举 1.格式 2.特点 二、位运算(操作二进制) 2.1.&a…

研究人员在进行文献综述时可能面临哪些挑战以及如何解决这些挑战

VersaBot一键生成文献综述 对于研究人员来说,进行全面的文献综述可能是一种丰富但具有挑战性的经历。以下是一些常见的障碍以及如何克服这些障碍的技巧: 挑战 1. 信息过载: 已有大量已发表的研究成果,识别、选择和管理相关来源…

学到了一种新的技巧

1、通过erase删除方向,让原本很复杂的代码变得简洁。 2、通过return两个不同类型的答案,使得代码量变得更少。 3、通过bfs将状态转移给后面。 4、这种集成的技巧,根据相同点把不同类的代码组合成一个函数,这种技巧是需要学习的…

React 的 KeepAlive 实战指南:深度解析组件缓存机制

Vue 的 Keep-Alive 组件是用于缓存组件的高阶组件,可以有效地提高应用性能。它能够使组件在切换时仍能保留原有的状态信息,并且有专门的生命周期方便去做额外的处理。该组件在很多场景非常有用,比如: tabs 缓存页面 分步表单 …

C++类与对象-六大成员函数

默认成员函数就是用户没有显式实现,编译器会⾃动⽣成的成员函数称为默认成员函数。⼀个空类编译器会默认⽣成8个默认成员函数。本文只介绍其中6个,C11增加两个函数见后续博客。 目录 一、构造函数 1.1 概念 1.2 特性 1.3 使用举例 1.4 初始化列表 1…

旷野之间32 - OpenAI 拉开了人工智能竞赛的序幕,而Meta 将会赢得胜利

他们通过故事做到了这一点(Snapchat 是第一个)他们用 Reels 实现了这个功能(TikTok 是第一个实现这个功能的)他们正在利用人工智能来实现这一点。 在人工智能竞赛开始时,Meta 的人工智能平台的表现并没有什么特别值得…

Java面试八股之@Qualifier的作用

Qualifier的作用 Qualifier 是 Spring 框架中的一个非常有用的注解,它主要用于解决在依赖注入过程中出现的歧义问题。当 Spring 容器中有多个相同类型的 Bean 时,Qualifier 可以帮助指明应该使用哪一个具体的 Bean 进行注入。 Qualifier 的作用&#x…

【error】AttributeError: module ‘cv2.dnn‘ has no attribute ‘DictValue‘(库冲突)

conda list conda remove opencv pip uninstall opencv-python conda list pip 同时卸载两个库 pip uninstall opencv-contrib-python opencv-python 没有and 直接写库名 module ‘cv2.dnn‘ has no attribute ‘DictValue‘解决办法_module cv2.dnn has no attribute d…

spark 3.0.0源码环境搭建

环境 Spark版本:3.0.0 java版本:1.8 scala版本:2.12.19 Maven版本:3.8.1 编译spark 将spark-3.0.0的源码导入到idea中 执行mvn clean package -Phive -Phive-thriftserver -Pyarn -DskipTests 执行sparksql示例类SparkSQLExam…

人工智能如何推动工业数字化转型?

随着科技的浪潮汹涌向前,人工智能(AI)正日益成为推动工业数字化发展的核心引擎。其强大的影响力不仅为工业生产注入了智能化、自动化的新活力,更在优化资源配置、提升生产效率以及实现个性化制造等关键领域展现出了无与伦比的潜力…

2020真题-架构师案例(五)

问题1(13分) 针对该系统的功能,孪工建议采用管道-过滤器(pipe and filter)的架构风格,而王工则建议采用仓库(reposilory)架构风格。满指出该系统更适合采用哪种架构风格&#xff0c…

数据库练习5

建立两个表:goods(商品表)、orders(订单表) 在商品表中导入商品记录并查看数据 建立触发器,订单表中增加订单数量后,商品表商品数量同步减少对应的商品订单出数量,并测试 下订单前查询数据库 下订单后查询数据库 建立触发器,实现功能:客户取消…

Matlab编程资源库(17)符号对象

一、建立符号对象 1 .建立符号变量和符号常量 MATLAB 提供了两个建立符号对象的函数: sym 和 syms ,两个函数的用法不同。 (1) sym 函数 sym 函数用来建立单个符号量,一般调用格式为: 符号量名 sym( 符号字符串 )…

第一代iPad Mini完美降级8.4.1

文章目录 写在前面准备工作iOS 9.3.5版本越狱踩坑记录正确步骤越狱后设置 写在最后 写在前面 前几天打扫房间,不小心翻出来了10年前的第一代iPad Mini,版本升级到9.3.5之后,基本上算是报废了,运行啥都卡成狗;但是买不…

R语言 爬取数据+简单清洗

小小练习。见代码注释 # 加载必要的包 library(rvest) library(dplyr) library(tidyr)# 指定网页URL url <- "https://research.un.org/en/unmembers/scmembers"# 读取网页内容 webpage <- read_html(url)# 提取所有表格节点 table_nodes <- html_nodes(web…

聊聊基于Alink库的特征工程方法

独热编码 OneHotEncoder 是用于将类别型特征转换为独热编码的类。独热编码是一种常用的特征编码方式&#xff0c;特别适用于处理类别型特征&#xff0c;将其转换为数值型特征。 对于每个类别型特征&#xff0c;OneHotEncoder 将其编码成一个长度为类别数量的向量。 每个类别对…

使用 Python 进行马尔可夫链职业路径建模

欢迎来到雲闪世界。从职业角度来说&#xff0c;我是个非常奇怪的人&#xff1a;我在一家初创公司担任软件/机器学习工程师&#xff0c;拥有物理学硕士学位&#xff0c;即将为航空航天和机械工程博士学位论文答辩。在我不断变化的职业生涯中&#xff0c;有两件事始终不变&#x…

Java9-21的开发相关新特性总结

目录 下载地址 Java 21(LTS) 概述 变动说明 1、JEP 441: Switch 的模式匹配&#xff08;正式特性&#xff09; 功能进化 Switch 模式匹配 类型标签 null标签 守卫标签 使用enum常量作值 语法总结 2、JEP 440&#xff1a;Record模式&#xff08;正式特性&#xff09…

GPU的shader分支跳转性能总结

引言&#xff1a; 如下的&#xff08;一&#xff09;与&#xff08;二&#xff09;分别属于uniform branch与宏定义&#xff0c;&#xff08;一&#xff09;至始至终是一个固定的值&#xff0c;分支只执行一条而不是既有执行condition ture 也有执行condition false 的情况&am…

基于CentOS Stream 9平台安装MySQL Community Server 9.0.1 Innovation

1. 安装之前 1.1 查看系统版本 cat /etc/redhat-releaseCentOS Stream release 9 1.2 查看cpu架构 lscpu架构&#xff1a; x86_64 CPU 运行模式&#xff1a; 32-bit, 64-bit 2. 官网下载 https://dev.mysql.com/downloads/mysql/ 要多看看 官方9.0文档&#xff1a;https://d…