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

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

文章目录

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


前言

从本章开始,将分享千兆以太网设计的相关知识。将为大家分享千兆以太网硬件设计及链路层 MAC 协议格式、网络层 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.mzph.cn/news/78657.shtml

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

相关文章

重建大师提交空三后引擎状态是等待,怎么开启?

答:图片中这是在自由网空三阶段,整个AT都是等待中,可以修改任务目录和监控目录看一下,先设置引擎,再提交空三。

可变参数JAVA

public class Main {public static void main(String[] args) {//方法形参的个数是可以变化的//格式:属性类型...名字System.out.println(getSum(1,2,3,4,5,6,7,8));}//通过键值对对象来遍历;public static int getSum(int a,int...args){//可变参数;int…

IDEA2023.2.1取消空包隐藏,切换包结构(Compact Middle Packages)

解决2023版idea的包结构 取消勾选即可。 取消勾选Compact Middle Packages选项后,再创建包时,即可自动创建树形结构。 仅供学习使用!

IP地址,子网掩码,默认网关,DNS讲解

IP地址:用来标识网络中一个个主机,IP有唯一性,即每台机器的IP在全世界是唯一的。 子网掩码:用来判断任意两台计算机的ip地址是否属于同一子网络的根据。最为简单的理解就是两台计算机各自的ip地址与子网掩码进行and运算后&#x…

黑马头条 热点文章实时计算、kafkaStream

热点文章-实时计算 1 今日内容 1.1 定时计算与实时计算 1.2 今日内容 kafkaStream 什么是流式计算kafkaStream概述kafkaStream入门案例Springboot集成kafkaStream 实时计算 用户行为发送消息kafkaStream聚合处理消息更新文章行为数量替换热点文章数据 2 实时流式计算 2…

医学访问学者申请四点规划建议

医学领域一直以来都是人类社会的重要组成部分,而作为一名有志于成为一名医学领域的访问学者,您需要明确自己的目标并做好充分准备。知识人网小编将为您提供四点规划建议,以帮助您成功申请医学访问学者的机会。 第一点:明确研究方向…

OOM分析实战

OOM分析&实战 OOM分析&实战引言:一、JVM内存结构二、JVM OOM错误情况三、实践案例一案例二案例三 四、总结五、分析工具推荐六、参考文献 OOM分析&实战 引言: 在Java开发中,随着应用程序变得越来越复杂,内存管理问题…

Debian11之稳定版本Jenkins安装

系统要求 机器要求 256 MB 内存,建议大于 512 MB 10 GB 的硬盘空间(用于 Jenkins 和 Docker 镜像)软件要求 Java 8 ( JRE 或者 JDK 都可以) Docker (导航到网站顶部的Get Docker链接以访问适合您平台的Docker下载 Maven 用于构…

【循环冗余码检错示例】

接收方怎么看有错没有 余数为0就是无错!

低代码框架开发平台厂家:做好产品,实现流程化办公!

在新的发展时代,低代码技术平台拥有诸多优势特点,成为广大企业实现降本、增效办公效率的得力助手。什么样的低代码框架开发平台厂家值得信任与青睐?都有哪些主要产品?为了帮助大家了解这一讯息,一起来了解流辰信息低代…

记录一次使用网云穿实现内网穿透操作

记录一次使用网云穿实现内网穿透操作 摘要 这段时间也很少写博客了,一方面工作表较忙,一方面觉得有些东西在百度上都能找到,甚至比我自己记录的详细,有些笔记也就没打, 这次记录笔记主要是觉得这个 网云穿 很好用,分享给大家. 1 什么是内网穿透? 内网穿透也叫内网映射&#xf…

JetBrains设置inline hint的背景色、前景色

如题。修改IDE的hint前景色和背景色。 修改后结果:

2023/9/14 -- C++/QT

作业&#xff1a; 仿照Vector实现MyVector&#xff0c;最主要实现二倍扩容 #include <iostream>using namespace std;template <typename T> class MyVector { private:T *data;size_t size;size_t V_capacity; public://无参构造MyVector():data(nullptr),size(…

数据可视化大屏模板 | 保姆级使用教程

近来很多朋友私信咨询怎么下载使用数据可视化大屏模板&#xff0c;在这里就给大家做一个相对简单的教程总结。有需要的朋友记得先收藏保存&#xff0c;以便不时之需。 数据可视化大屏制作软件&#xff1a;奥威BI系统 数据可视化报表模板板块&#xff1a;模板秀 主要操作&…

Redis常用应用场景

Redis是一款开源的基于内存的键值存储系统&#xff0c;它提供了多种数据结构和丰富的功能&#xff0c;适用于各种不同的应用场景。以下是Redis常用的应用场景&#xff1a; 1.缓存&#xff1a;Redis最常见的用途就是作为缓存。由于Redis存储在内存中&#xff0c;读取速度非常快…

使用navicat for mongodb连接mongodb

使用navicat for mongodb连接mongodb 安装navicat for mongodb连接mongodb 安装navicat for mongodb 上文mongodb7.0安装全过程详解我们说过&#xff0c;在安装的时候并没有勾选install mongodb compass 我们使用navicat去进行可视化的数据库管理 navicat for mongodb下载地址…

Python —— 捕获异常

1、Python中常见的异常 & 捕获异常 1、常见异常 1、NameError: name a is not defined 2、IndexError: list index out of range 3、KeyError: nam 4、ValueError: invalid literal for int() with base 10: b 5、ZeroDivisionError: div…

Windows10环境下安装VMware虚拟机来安装 CentOs7

软硬件准备 软件&#xff1a;VMware(16 pro)&#xff1a;阿里云盘分享. 硬件&#xff1a;因为是在宿主机上运行虚拟化软件VMware安装centos&#xff0c;所以对宿主机的配置有一定的要求。最起码i5CPU双核、硬盘500G、内存4G以上。 镜像&#xff1a;CentOS7 ,下载地址 http://is…

Python工程师Java之路(p)Module和Package

文章目录 1、Python的Module和Package2、Java的Module和Package2.1、Module2.1.1、分模块开发意义2.1.2、模块的调用 2.2、Package Module通常译作模块&#xff0c;Package通常译作包 1、Python的Module和Package Python模块&#xff08;Module&#xff09;&#xff1a;1个以.…

算法|Day49 动态规划17

LeetCode 647- 回文子串 题目链接&#xff1a;力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 题目描述&#xff1a;给你一个字符串 s &#xff0c;请你统计并返回这个字符串中 回文子串 的数目。 回文字符串 是正着读和倒过来读一样的字符串。 子…