千兆以太网硬件设计及链路层 MAC 协议格式

以太网系列文章:
(1)千兆以太网硬件设计及链路层 MAC 协议格式
(2)千兆以太网网络层 ARP 协议的原理与 FPGA 实现
(3)CRC校验代码原理

文章目录

  • 前言
  • 一、以太网 MAC 层接口介绍
    • 1.MII 接口
    • 2.GMII 接口
    • 3.RGMII 接口
  • 二、以太网(MAC)帧协议介绍


前言

从本章开始,将分享千兆以太网设计的相关知识。将为大家分享千兆以太网硬件设计及链路层 MAC 协议格式、CRC校验原理与实现、网络层 ARP 协议的原理与FPGA 实现、网络层 IP 协议介绍与 IP 校验和算法实现、网传输层 UDP 协议原理与FPGA 实现、千兆以太网 UDP 回环测试等实验。
提示:以下是本篇文章正文内容,下面案例可供参考

一、以太网 MAC 层接口介绍

从数据传输角度来看,控制器(FPGA)和 PHY 侧芯片实现以太网传输的数据链路两端,有 3 种主要的接口形式。这 3 种接口形式主要是 MII,GMII 和 RGMII。MII 主要应用在百兆网传输中,而 GMII 和 RGMII 则均可以运用于千兆网,RGMII 相较于 GMII,则可以有更高的数据位通信效率。

1.MII 接口

MII 接口信号连接关系及各信号的介绍如下。
1
(注:表格中的方向是站在 MAC 侧角度看的)
在这里插入图片描述
在这里插入图片描述
其中,MAC 侧向 PHY 侧传输数据的时序图如下,参数 t1~t5 是 PHY 芯片能正常接收到数据需要满足的时序参数,VIL 和 VIH 是高低电平的电压标准,电压低于 VIL 表示低电平,电压高于 VIH表示高电平,详细参数参见具体的 PHY 芯片手册。从波形图可以看出,发送数据信号 TXD 和发送使能信号需要在时钟上升沿保持稳定。
在这里插入图片描述
PHY 侧向 MAC 侧传输数据(也就是 MAC 侧接收 PHY 侧传过来的数据)的时序图如下,参数 t1~t5是 PHY 芯片输出数据和与时钟之间的时序参数,VIL和 VIH是高低电平的电压标准,电压低于 VIL 表示低电平,电压高于 VIH 表示高电平,详细参数参见具体的 PHY 芯片手册。
从波形图可以看出,PHY 芯片传出(也就是 MAC 接收)数据信号 RXD 和数据有效信号在时钟上升沿保持稳定。在 MAC 接收数据时,需要根据传过来数据信号的时序特点进行正确的接收。
1

2.GMII 接口

GMII 接口信号连接关系及各信号的介绍如下。

1
(注:表格中的方向是站在 MAC 侧角度看的)
1
与 MII 接口类似,MAC 侧与 PHY 侧之间传输数据的时序图如下,图中的参数是 PHY 芯片能正常接收到数据和 PHY 发出数据需要满足的时序参数,VIL 和 VIH 是高低电平的电压标准,电压低于 VIL 表示低电平,电压高于 VIH 表示高电平,详细参数参见具体的 PHY 芯片手册。从波形图可以看出,发送数据信号 TXD 和发送使能信号需要在时钟 GTX_CLK 的上升沿保持稳定;同样的 PHY 芯片传出(也就是 MAC 接收)数据信号 RXD 和数据有效信号在时钟RX_CLK 上升沿保持稳定。在 MAC 发送/接收数据时,需要满足这些时序要求才能让 PHY 正确收到数据和正确接收到 PHY 传过来数据。
在这里插入图片描述

3.RGMII 接口

RGMII 即 ReducedGMII,是 GMII 的简化版本,将接口信号线数量从 24 根减少到 14 根,时钟频率仍旧为 125MHz,TX/RX 数据宽度从 8 位变为 4 位。RGMII 接口信号连接关系及各信号的介绍如下。
1
(注:表格中的方向是站在 MAC 侧角度看的)
在这里插入图片描述
在这里插入图片描述
RGMII 接口为了保持 1000Mbps 的传输速率不变,RGMII 接口在时钟的上升沿和下降沿都采样数据。在参考时钟的上升沿发送 GMII 接口中的 TXD[3:0]/RXD[3:0],在参考时钟的下降沿发送 GMII 接口中的 TXD[7:4]/RXD[7:4]。RGMII 同时也兼容 100Mbps 和 10Mbps 两种速率,此时参考时钟速率分别为 25MHz 和 2.5MHz。TX_CTL 信号线上传送 TX_EN 和 TX_ER 两种信息,在 TX_CLK 的上升沿,下降沿发送 TX_ER;同样的,RX_CTL 信号线上也传送 RX_DV和 RX_ER 两种信息,在 RX_CLK 的上升沿传输 RX_DV,下降沿传输 RX_ER。具体时序如下。关于 RTL8211 PHY 芯片具体时序参数与配置的 TXDLY 和 RXDLY 管脚的电平有关,详细可参见RTL8211 芯片手册。
【注:】要实现RGMII 接口的传输,只需要使用Vivado中ODDR或IDDR源语将数据变为时钟上升沿和下降沿传输即可,以至于都不需要任何编码。此部分可参考RGMII 与 GMII 转换电路设计

二、以太网(MAC)帧协议介绍

以太网是目前最流行的一种局域网组网技术(其他常见局域网组网技术还有令牌环局域网、无线局域网、ATM 局域网),以太网技术的正式标准是 IEEE 802.3 标准,它规定了在以太网中传输的数据帧结构,如下图所示。
在这里插入图片描述
在物理层上看,一个完整的以太网帧有 7 个字段,事实上,前两个字段并不能算是真正意义上的以太网数据帧,它们是以太网在物理层上发送以太网数据时添加上去的。为了实现底层数据的正确阐述,物理层使用 7 个字节前同步码(0 和 1 交替的 56 位(55-55-55-55-55-55-55))实现物理层帧输入/输出同步;使用 1 个字节的 SFD(帧首定界符,固定为 10101011)标识帧的开始。上图中剩下的 5 个字段是真正的以太网数据,其中包含了目的地址和源地址,它们都是 6 字节长度(通常每个网卡都有 1 个 6 个字节 MAC 地址,以在以太网中唯一地标识自己)。网卡接收数据时,通过将目的地址字段和自身的 MAC 地址做比较,判断是否接收该数据包。通常,将这里的 6 字节目的地址按照下面的格式来书写,如:00-01-02-03-04-05。这 6 个字节在以太网中是按照从左到右(先发该字段的高字节后发字段的低字节)的顺序发送的,同时对每个字节来说,最先发送的是最低位 bit0,最后是最高位 bit7。
各字段的简单介绍如下表。
1
在发送以太网帧头时,首先发送的前导码为 7 个字节长度的 0x55,用于帧的同步,它用于告诉潜在的接收方即将发送数据。那么为什么选择这7个字节长度的前导码为0x55呢?由于 0x55 的二进制表现形式为 0101 0101,相当于总线上出现了 7 个字节的 0101 0101。这样,相较总线的高低电平恒定而言,总线电平的波浪式频繁变化会成为一种判断特征,表征即将发送数据。
完成前导码的发送后,接下来发送帧开始符。帧开始符为 1 个字节的 0xD5。0xD5 的二进制表现形式为 1101 0101,其数据特征为出现了两个连续的高电平 1。
在以太网帧中,目的 MAC 地址可以分为三类:单播地址、多播地址和广播地址。单播
地址通常与一个具体网卡的 MAC 地址相对应,它要求第一个字节的 bit0(即最先发出去的位)必须是 0;多播地址则要求第一个字节的 bit0 为 1,这样,在网络中多播地址不会与任何网卡的 MAC 相同,多播数据可以被很多个网卡同时接收;广播地址的所有 48 位全为 1(即 FF-FF-FF-FF-FF-FF),同一局域网中的所有网卡可以接收广播数据包。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

进制转换问题

进制 二进制 (Binary):0、1。简写为B 八进制(Octonary):0、1、2、3、4、5、6、7。简写为O 十进制(decimalism):0、1、2、3、4、5、6、7、8、9 简写为D 十六进制&#xff…

Nacos深入原理从源码层面讲解

文章目录 1 Nacos原理1.1 Nacos架构1.2 注册中心原理1.3 SpringCloud服务注册1.4 NacosServiceRegistry实现1.4.1 心跳机制1.4.2 注册原理1.4.3 总结 1.5 服务提供者地址查询1.6 Nacos服务地址动态感知原理 1 Nacos原理 1.1 Nacos架构 Provider APP:服务提供者Cons…

如何从第一性原则的原理分解数学问题

如何从第一性原则的原理分解数学问题 摘要:牛津大学入学考试题目展示了所有优秀数学家都使用的系统的第一原则推理,而GPT4仍然在这方面有困难 作者:Keith McNulty 我们中的许多人都熟悉直角三角形的边的规则。根据毕达哥拉斯定理,…

Kotlin File useLines nameWithoutExtension extension

Kotlin File useLines nameWithoutExtension extension import java.io.Filefun main(args: Array<String>) {val filePath "myfile.txt"val file File(filePath)println(file.name) //文件名字&#xff0c;不包括路径println(file.isFile) //是文件吗pri…

VBA技术资料MF57:VBA_自动创建PowerPoint演示文稿

【分享成果&#xff0c;随喜正能量】会因为有情绪而烦闷&#xff0c;也因为没控制情绪而懊悔。莫道幽人一事无&#xff0c;闲中尽有静工夫。情绪就像水&#xff0c;宜疏不宜堵。学会控制情绪&#xff0c;不能把情绪看得过重&#xff0c;也不能一味遏制情绪的产生。倾听所有声音…

【Linux操作系统】信号的产生捕获

&#x1f525;&#x1f525; 欢迎来到小林的博客&#xff01;&#xff01;       &#x1f6f0;️博客主页&#xff1a;✈️林 子       &#x1f6f0;️博客专栏&#xff1a;✈️ Linux       &#x1f6f0;️社区 :✈️ 进步学堂       &#x1f6f0…

学习计算机网络中的一些疑问及解答

文章目录 前言一、为什么要进行三次握手二、三次握手的流程三、三次握手中seq和ack的值四、四次挥手流程五、四次挥手中seq和ack的值六、为什么要等待才回复七、为什么等待2MSL总结 前言 一个本硕双非的小菜鸡&#xff0c;备战24年秋招&#xff0c;在学习计算机网络的过程中遇…

780. 到达终点;2360. 图中的最长环;1871. 跳跃游戏 VII

780. 到达终点 核心思想&#xff1a;正难则反&#xff0c;如果从起点到终点很难想。那么我们就考虑从终点到起点&#xff0c;由于起点为正数&#xff0c;那么终点&#xff08;x,y&#xff09;的上一步一定是&#xff08;x-y,y&#xff09;或者(x,y-x)很明显肯定是大值减去小的…

Vue 2 组件间的通信方式总结

引言 组件间的关系有父子关系、兄弟关系、祖孙关系和远亲关系。 不同的关系间&#xff0c;组件的通信有不同的方式。 一、prop 和 $emit prop向下传递&#xff0c;emit向上传递。 父组件使用 prop 向子组件传递信息。 ParentComponent.vue <template><div><…

5-2 Pytorch中的模型层layers

深度学习模型一般由各种模型层组合而成。 torch.nn中内置了非常丰富的各种模型层。它们都属于nn.Module的子类&#xff0c;具备参数管理功能。 例如&#xff1a; nn.Linear, nn.Flatten, nn.Dropout, nn.BatchNorm2d, nn.Embedding nn.Conv2d,nn.AvgPool2d,nn.Conv1d,nn.ConvTr…

用AI在小红书做早教启蒙,2个月涨粉11.7万,获赞10万的新流量玩法

本期是赤辰第29期AI项目教程&#xff0c;底部准备了9月粉丝福利&#xff0c;可以免费领取。母婴、教育一直以来是最不缺流量的两大“真香”赛道。那么AI时代下有怎样新流量红利和玩法&#xff1f;接下来就给大家拆解一个在小红书上做AI绘画启蒙早教资源变现的新玩法&#xff01…

Dajngo06_Template模板

Dajngo06_Template模板 6.1 Template模板概述 模板引擎是一种可以让开发者把服务端数据填充到html网页中完成渲染效果的技术 静态网页&#xff1a;页面上的数据都是写死的&#xff0c;万年不变 动态网页&#xff1a;页面上的数据是从后端动态获取的&#xff08;后端获取数据库…

每日一博 - 防范彩虹表攻击_数据库存储密码的秘密武器

文章目录 概述图解小结 概述 加盐&#xff08;salting&#xff09;是一种安全存储数据库中密码并验证其真实性的常见方法&#xff0c;它的主要目的是增加密码的安全性&#xff0c;以防止常见的密码攻击&#xff0c;如彩虹表攻击。以下是关于如何使用加盐技术的简要介绍&#x…

Eclipse开源代码下载

当前插件开发&#xff0c;需要修改eclipse源码&#xff0c;如需要修改remote相关的代码&#xff0c;所以需要下载相关源码。网上大多资料都说的不清不楚的&#xff0c;也可能我太小白&#xff0c;不明白&#xff0c;反正就是折腾了一两天才感觉有点思路&#xff0c;改如何找源码…

信息安全三级真题一

目录 一、单选题 二、填空题 三、综合题 一、单选题 二、填空题 三、综合题 知法懂法&#xff0c;请各位网络安全从业者遵守《网络安全法》、《个人信息保护法》 业%$务*$&联&#系 XHU3ZjUxXHU3ZWRjXHU4ZmQwXHU3ZWY0XHU2ZTE3XHU5MDBmXHU1NmUyXHU5NjFmXHUyMDBiXHU2M…

安卓抓jdwskey

安装京东&#xff0c;VNET VNET下载地址 https://www.vnet-tech.com/zh/ 2给权限 打开 VNET --点击右下角 ▶ --保存 CA.pem 证书 --打开手机系统设置搜索 证书–点击安装刚刚保存的 CA.pem 如果开始出现数据表示已经有权限抓包了&#xff0c;下面给权限跳过&#xff0c;直接开…

【PowerQuery】Excel的PowerQuery按需刷新

将数据通过PowerQuery 导入进来后,这里将进行数据分组运算,最终的数据计算结果将保存在Excel 表格中,图为销售统计结果。 在Excel中,如果我们希望进行销售统计的手动更新可以使用几种不同的方法来进行刷新: 刷新单一数据连接如果仅仅需要刷新单一数据连接的话我们可以通过…

MyBatis获取参数值的两种方式

5、MyBatis获取参数值的两种方式 MyBatis获取参数值的两种方式&#xff1a;KaTeX parse error: Expected EOF, got # at position 4: {}和#̲{} 5.1、单个字面量类型的…{}和#{}以任意的名称获取参数的值&#xff0c;注意${}需要手动加单引号 ${} #{} 测试代码&#xff1a; 实验…

CocosCreator3.8研究笔记(十五)CocosCreator 资源管理Asset Bundle

在资源管理模块中有一个很重要的功能&#xff1a; Asset Bundle&#xff0c;那什么是Asset Bundle &#xff1f;有什么作用&#xff1f;怎么使用 Asset Bundle呢 &#xff1f; 一、什么是Asset Bundle &#xff1f;有什么作用&#xff1f; 在日常游戏开发过程中&#xff0c;为了…