【以太网硬件二十】USXGMII是什么?

👉个人主页: highman110
👉作者简介:一名硬件工程师,持续学习,不断记录,保持思考,输出干货内容

目录

回顾 

概览

功能框图描述

XGMII接口和数据包

XGMII接口信号

XGMII数据流

XGMII信号传输示例


回顾 

        先来回顾一下以前讲过的各种媒体独立接口:

        MII:连接MAC和PHY的媒体独立接口,数据位宽4bit,支持速率10/100Mbit/s。

        GMII:千兆媒体独立接口,数据位宽8bit,向下兼容MII,当兼容MII时,只使用低4bit数据线,支持速率10/100/1000Mbit/s。

        SGMII:串行千兆媒体独立接口,连接千兆PHY和MACserdes速率1.25Gbps,思科定的规范,ENG-46158

        QSGMII:四路串行千兆媒体独立接口,连接四端口千兆PHY和MAC,serdes速率5Gbps,思科定的规范,EDCS-540103。

        USGMII:通用串行千兆媒体独立接口,是SGMII和QSGMII的扩展规范,可向后兼容,还支持连接4端口或8端口千兆PHY和MAC,serdes速率5Gbps或10Gbps,思科定的规范,EDCS-1155168。

        USXGMII:通用串行10G媒体独立接口,支持连接多端口、多速率PHY和MAC,思科定的规范,EDCS-1150953。

        本文讲述USXGMII,下面先贴一张该接口的连接示意图,有个直观的认识:

        从上图可以看到USXGMII可以连接单端口PHY,支持端口速率从10M到10G,也可以连接4端口PHY,支持端口速率从10M到2.5G,还可以支持2端口PHY,支持端口速率从10M到5G。通过以上端口数量和速率的分布,可以知道USXGMII支持的最大数据速率约为10G,之所以说是约为10G,是因为serdes里面会有一些编码开销,后面会说明。

概览

        USXGMII链路由收发各一对差分对组成,用来在单端口或多端口PHY和MAC之间传递数据帧和link速率等控制信息,USXGMII serdes的最大速率由外部端口最大速率决定,一般是有5G和10G两种serdes速率,如下图:

        UXSGMII还有如下特性:

        1、只支持全双工;

        2、支持传输PTP时间戳;

        3、支持所有速率的硬件辅助自动协商;

        3、支持灵活地在前导码的扩展字段中添加新功能。

        注意:

        1、UXSGMII只支持10G和5G两种serdes速率,如果要直接出光口,只能出10Gbase-R,如果想要出1000base-x或者2500base-x,只能通过PHY转,不能直接出。

        2、10M电口也是可以从PHY出的,上表中没有列出来,如果是单端口10M,那5G-USXGMII就要将端口报文复制500份,10G-USXGMII就要将端口报文复制1000份。

功能框图描述

        USXGMII直接沿用了IEEE 803.2 clause 49中定义的64B/66B PCS。PCS功能框架保持不变,另外通过IEEE定义的“有序集”机制添加了额外的功能。      

        ASIC侧(比如CPU)的USXGMII模块包含的组成部分如下:

        1、10G和1G MAC模块,出XGMII和GMII标准接口,其中GMII接口会在速率自适应模块被映射到XGMII;

        2、沿用自802.3 clause 49中10Gbase-R的PCS模块,新增了一些ordered sets;

        3、自协商处理模块;

        4、5.15625/10.325Gbps SERDES PMA模块。

        PHY侧的USXGMII模块包含的组成部分如下:

        1、系统侧的PMA、PCS、速率自适应模块与前面说的ASCI中包含的相关模块一样,就是ASIC侧把MAC模块出的标准接口XGMII或GMII转成串行输出了,在PHY芯片里就要把这个串行接口恢复成标准接口;

        2、后面就是和外部网络侧接口相关的PHY子层:PCS、PMA、PMD;

        3、自协商模块,沿用802.3 clause 37。

        4、在发送测(下面绿框),当网络接口是100M或1G模式时,GMII信号将被编码到XGMII中以15.6254M/s速率进行传输,当网络接口是2.5G、5G、10G模式时,直接使用XGMII进行传输。

XGMII接口和数据包

        由于USXGMII是XGMII的串行化,USXGMII上传输的数据来源就是XGMII上的数据,所以有必要先学习一下XGMII接口的数据包格式。

        XGMII数据包,由于XGMII是MAC与PHY之间的标准接口,所以XGMII数据包实际上就是MAC内封装成的以太网帧,关于以太网的帧结构我们以前的文章讲MAC功能时也说过,这里不多提了。

XGMII接口信号

        XGMII接口信号如下:

        TXD[31:0]:数据发送通道,32位并行数据。

        RXD[31:0]:数据接收通道,32位并行数据。

        TXC[3:0]:发送通道控制信号,TXC=0时,表示TXD上传输的是数据;TXC=1时,表示TXD上传输的是控制字符。TXC[3:0]分别对应TXD[31:24],TXD[23:16],TXD[15:8],TXD[7:0],每8个数据位在逻辑上为一条lane。

        RXC[3:0]:接收通道控制信号,RXC=0时,表示RXD上传输的是数据;RXC=1时,表示RXD上传输的是控制字符。RXC[3:0]分别对应RXD[31:24],RXD[23:16],RXD[15:8],RXD[7:0],每8个数据位在逻辑上为一条lane。

        TX_CLK:TXD和TXC的参考时钟,时钟频率156.25MHz,在时钟信号的上升沿和下降沿都采样数据。156.25MHz * 2 * 32 = 10Gbps 。

        RX_CLK:RXD和RXC的参考时钟,时钟频率156.25MHz,在时钟信号的上升沿和下降沿都采样数据。

XGMII数据流

        XGMII上传输的数据流结构如下:

        Inter-frame:帧间隙,两段数据帧之间的间隙,以Terminate控制字开始,接着是Idle控制字,以start控制字符前一个Idle字结束。这个帧间隙有几个功能:1、RS lane间对齐;2、PHY子层PCS到PMA速率适配;3、10GBASE-W数据速率自适应。

        Preamble:前导,由MAC生成往下传,就是MAC帧结构中的前导码,共7个字节:

10101010 10101010 10101010 10101010 10101010 10101010 10101010,在发送时,RS会将前导码的第一个字节转换为XGMII上的开始控制字符(0xFB,11011111),接收时又会将开始控制字符转换回前导码。

        SFD:帧起始分隔符,表示以太网帧的开始,紧跟在前导码之后,XGMII里面的SFD和以太网MAC帧结构中的SFD一致,为0xD5,10101011。

        注意:以上前导码和SFD字节中,最左边的比特是八位字节中的LSB,而最右边的比特是该八位字节组中的MSB。

        有同学看到这可能有疑问,MAC帧结构中已经有了一个帧起始标志SFD了,为什么XGMII上传输又多了一个由前导码第一个字节转换而成的开始控制字符?这么做的目的是为了把XGMII传输的开始字符固定在lane0上,方便更好地做字符对齐,经过处理后的前导和SFD分布如下:

 

        Data:数据包,这个很好理解。

        EFD:帧结束分隔符,当TXC或RXD为1时,由任何一条lane上数据为0xFD构成EFD。

XGMII信号传输示例

        XGMII上的信号组合有如下几种:

        第1个是数据信息,TXC为0,TXD上为数据比特;

        第3个是LPI请求的控制信息,TXC为1,每条lane上TXD同时为0x06;

        第4个是idle控制信息,TXC为1,TXD上为0x07;

        第5个是序列号控制信息,TXC为1,TXD[7:0]为0x9C,序列号只能在lane0上,是XGMII上的ordered sets的第一个字节;XGMII定义了如下几种ordered sets:

         第7个是报文起始控制信息,TXC为1,TXD[7:0]为0xFB,起始信号只能在lane0上;

        第8个是报文结束控制信息,TXC为1,TXD为0xFD;

        第9个是发送错误控制信息,TXC为1,TXD为0xFE;

        接收端和发送端类似,大家自行查阅规范802.3 46.3.2。

        如下是一个正常的数据帧传输的示意图:

        找到上图中的S,即XGMII上由前导码第一个字节转换而来的起始控制字符,在这个字符之前是帧间隙,之后是6个字节的前导码,注意前导码也是data字符,所以对应的TXC为0。前导码之后就是SFD,以太网帧起始分隔符,随后就是帧data,数据发完就是结束控制字符T,后面就又是帧间隙了。 

        今天先介绍到这里,下篇介绍USXGMII框架中PCS子层的功能细节和XGMII到USXGMII之间的映射。

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

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

相关文章

pdf怎么转换成word?

随着数字化时代的到来,PDF(Portable Document Format)已成为最受欢迎的文档格式之一,因其在各种设备上的可视性和稳定性而备受推崇。然而在某些情况下,将PDF转换为Word文档可能是必要的,这使得编辑、修改和重新格式化文本变得更加…

龙蜥开发者说 :戮力同心,砥砺前行,为国产操作系统发展出一份力 | 第 23 期

「龙蜥开发者说」第 23 期来了!开发者与开源社区相辅相成,相互成就,这些个人在龙蜥社区的使用心得、实践总结和技术成长经历都是宝贵的,我们希望在这里让更多人看见技术的力量。本期故事,我们邀请了龙蜥社区开发者李崇…

【DEVOPS】Jenkins使用问题 - 控制台输出乱码

0. 目录 1. 问题描述2. 解决方案3. 最终效果4. 总结 1. 问题描述 部门内部对于Jenkins的使用采取的是Master Slave Work Node的方式,即作为Master节点的Jenkins只负责任务调度,具体的操作由对应的Slave Work Node去执行。 最近团队成员反馈一个问题&a…

cs231n assignmen3 Extra Credit: Image Captioning with LSTMs

文章目录 嫌墨迹直接看代码Extra Credit: Image Captioning with LSTMslstm_step_forward题面解析代码输出 lstm_step_backward题面解析代码输出 lstm_forward题面解析代码输出 lstm_backward题面解析代码输出 CaptioningRNN.loss解析代码输出 最后输出结语 嫌墨迹直接看代码 …

【Dart】学习使用(二):基本类型

前言 基本类型是语言的基础。 Dart 语言支持以下基础类型:Numbers(int、double), 整形Strings(String), 字符串Booleans(bool) , 布尔型Records((value1,value2)) 记录Lists(List ) 数组Sets(Set) 集合Maps(Map) 映射Runes(Runes,通常由 characters AP…

【STM32】学习笔记(串口通信)-江科大

串口通信 通信接口硬件电路电平标准USARTUSART框图 通信接口 串口是一种应用十分广泛的通讯接口,串口成本低、容易使用、通信线路简单,可实现两个设备的互相通信 单片机的串口可以使单片机与单片机、单片机与电脑、单片机与各式各样的模块互相通信&#…

2023京东酒类市场数据分析(京东数据开放平台)

根据鲸参谋平台的数据统计,今年7月份京东平台酒类环比集体下滑,接下来我们一起来看白酒、啤酒、葡萄酒的详情数据。 首先来看白酒市场。 鲸参谋数据显示,7月份京东平台白酒的销量为210万,环比下滑约49%;销售额将近19…

mfc140u.dll丢失如何修复?解析mfc140u.dll是什么文件跟修复方法分享

大家好!今天,我将和大家分享一下关于计算机中mfc140u.dll丢失的6种解决方法。希望我的分享能对大家在计算机使用过程中遇到问题时提供一些帮助。 首先,我想请大家了解一下什么是mfc140u.dll文件。mfc140u.dll是一个动态链接库文件&#xff0…

Unity碰撞检测(3D和2D)

Unity碰撞检测3D和2D 前言准备材料3D2D 代码3D使用OnCollisionEnter()进行碰撞Collider状态代码 使用OnTriggerEnter()进行碰撞Collider状态代码 2D使用OnCollisionEnter2D()进行碰撞Collider2D状态代码 使用OnTriggerEnter2D()进行碰撞Collider2D状态代码 区别3D代码OnCollisi…

对于uts namespace共享的测试

前言 单单以下列命令运行虽然是root,还不行,我们需要加--privileged,不然会报 hostname: you must be root to change the host name docker run -it --utshost ubuntu:latest /bin/bash 如果加上--privileged后 docker run -it --priv…

Watermark 是怎么生成和传递的?

分析&回答 Watermark 介绍 Watermark 本质是时间戳,与业务数据一样无差别地传递下去,目的是衡量事件时间的进度(通知 Flink 触发事件时间相关的操作,例如窗口)。 Watermark 是一个时间戳, 它表示小于该时间戳的…

nodepad++ 插件的安装

nodepad 插件的安装 一、插件安装二、安装插件:Json Viewer nodepad 有 插件管理功能,其中有格式化json以及可以将json作为树查看的插件: Json Viewer 一、插件安装 1、首先下载最新的notepad 64位【https://notepad-plus.en.softonic.com…

frida动态调试入门01——定位关键代码

说明 frida是一款Python工具可以方便对内存进行hook修改代码逻辑在移动端安全和逆向过程中常用到。 实战 嘟嘟牛登录页面hook 使用到的工具 1,jadx-gui 2,frida 定位关键代码 使用jadx-gui 进行模糊搜索,例如搜索encyrpt之类的加密关键…

语言基础篇1——Python概述,Python是什么?Python能干什么?

概述 简介 Python,计算机高级语言,读作/ˈpaɪθən/(英音)、/ˈpaɪθɑːn/(美音),意为蟒蛇,Python的logo为两条缠绕的蟒蛇 特点 Python以开发效率高而运行效率低著称 应用领域…

CASAIM与北京协和医院达成合作,通过CT重建和3D打印技术为医学实验提供技术辅助和研究样本

近期,CASAIM与北京协和医院达成合作,通过CT重建和3D打印技术为医学实验提供技术辅助和研究样本,在实验样本的一致性和实验研究的严谨性原则下设计方案,推动产学研一体化发展。 北京协和医院是集医疗、教学、科研于一体的现代化综合…

WPF工控机textbox获得焦点自动打开软键盘

1.通过nuget安装 osklib.wpf 2.在textbox getFoucs中敲入如下代码即可实现获得焦点弹出软键盘 private void txtPLC_IP_GotFocus(object sender, RoutedEventArgs e){try{// Osklib.OnScreenKeyboard.Close();Osklib.OnScreenKeyboard.Show();}catch (Exception ex){MessageB…

奥维转债上市价格预测

奥维转债 基本信息 转债名称:奥维转债,评级:AA-,发行规模:11.4亿元。 正股名称:奥特维,今日收盘价:168.31元,转股价格:180.9元。 当前转股价值 转债面值 / 转…

css中文本阴影特效

文字颜色渐变 .text-clip{color:transparent;font-size: 40px;font-weight: bold;background: linear-gradient(45deg, rgba(0,173,181,1) 0%, rgba(0,173,181,.4) 100%);-webkit-background-clip: text; } 文字模糊 .text-blurry{text-align: center;color: transparent;text-…

国产操作系统开放麒麟安装

国产操作系统 开放麒麟 银河麒麟 中科方德 统信UOS 红旗Linux 深度系统 优麒麟系统 开放麒麟操作系统 “开放麒麟1.0”是通过开放操作系统源代码的方式、由众多开发者共同参与研发的国产开源操作系统,系统的发布将有助于推动面向全场景的国产操作系统迭代更新&…

【LeetCode】剑指 Offer <二刷>(1)

目录 前言: 题目:剑指 Offer 03. 数组中重复的数字 - 力扣(LeetCode) 题目的接口: 解题思路: 代码: 过啦!!! 写在最后: 前言: …