【以太网硬件十九】SGMII到底能不能直接出光模块?

news2024/11/15 13:51:35

SGMII接口到底能不能直接出光模块?先说结论:我认为可以,但是有限制,此时的光口只支持强制模式,不支持自协商。如果对端是1000base-X接口,对端也需要把自协商关闭才能与SGMII直出的光口建立连接。

为什么SGMII明明是媒体独立接口,也就是MAC和PHY之间的接口,为什么又能直接出光模块,直接和传输媒体打交道呢?

下面分析原因。

我们先来梳理一下串行接口的主要技术的由来。首先,诸如GMII或者RGMII等并行口数据线较多,占用PCB面积和引脚多,同时不同走线之间的skew和串扰会影响数据速率的进一步提升,于是人们想办法将并行信号转换成串行信号发送,这就可以大大减少引脚数量,且需要使用差分信号来增加抗共模干扰的能力,同时为了收发端不同电平的对接,通常使用交流耦合,使用了交流耦合就需要保证信号的直流平衡,于是就有8B/10B、64B/66B、scramble等技术的引入,同时通过编码技术,还可以进行接收端CDR时钟恢复,进一步减少时钟引脚和时钟与数据之间的skew。有了这些技术之后,就具备了从GMII到SGMII的演进能力。

xGMII是IEEE定的标准,SGMII是思科定的标准(1999年10月出的第一版规范),本质上来说,SGMII就是将1000base-X(802.3zclause36 1998年出的规范)的PCS层(8B/10B编码,码组对齐同步和1000base-X物理层pcs编码一样,但自协商功能有差异)和PMA层(串并转换,时钟恢复,早期定义的SGMII规范没有CDR)拿过来用。

先来看一下SGMII的由来和框架。

如下是MAC和PHY通过SGMII对接的框架图。可以看到发送和接收数据通道直接拿了802.3z的PCS层,PCS层的两边都是传统的GMII接口信号,8位数据TXD/RXD[7:0]和数据有效信号(TX_EN、RX_DV)、数据错误信号(TX_ER、RX_ER)经过编吗解码、串行解串,在625M的DDR时钟作用下,通过一对差分对传输。初始架构还没有CDR,所以还保留了随路时钟。可以看到,MAC端从RX_DV信号得到载波侦听CRS信号,从TX_EN和RX_DV的逻辑与得到冲突检测COL信号。

了解了SGMII两端的整体框架,再来细看SGMII与PHY芯片的连接细节:

接收侧,收到PHY芯片下游(如果是1000base-X,则有PCS+PMA+PMD,如果是1000base-T则有PCS+PMA)的GMII信号,速率可能是10、100、1000M,时钟速率2.5、25、125M,经过rate adaptation,将所有GMII接口速率数据都用125M时钟发给SGMII在PHY中的PCS模块,然后经过8B/10B编码将10位并行数据给到串行器转成串行数据,在625M时钟的作用下发给MAC。

发送侧,MAC将串行数据发给SGMII PHY,先经过解串器解出并行数据,然后经过同步模块将数据对齐,剩下的部分和接收侧相反,不再赘述。

继续看MAC侧的连接细节:

结构基本和PHY侧类似,只是经过这里的PCS再往上就是GMII和RS子层对接,再往上才是真正的MAC,附上一张802.3定义的1000base-X的框架图有助理解,可以看到两个规范里的pcs层内容确实是一样的:

了解的框架之后我们再看为什么SGMII和1000base-X为什么不能自协商对接。

从第一张SGMII框图可以看到SGMII是支持MAC和PHY之间的自协商的,直接沿用802.3zclause 37 1000base-x的协商规范,但是发送的配置信息是不一样的,如下表所示为SGMII PHY和MAC之间传输的协商配置信息,可以看到定义的主要PHY发给MAC的信息,很好理解,IEEE规范里,自协商是PHY芯片完成的功能,PHY芯片要将自己的能力或者和对端PHY的协商结果告诉MAC,而MAC没必要再将自己的能力告诉PHY,只要协商成功给ACK就行,所以MAC发给PHY的配置信息是预留的。

配置信息包括:link状态、ACK、双工能力、速率能力。

而1000base-x的发送的协商配置信息则有不同,如下图:

所以两个使能了自协商的SGMII和1000base-x接口对接,是无法协商成功建立连接的。要想对接,需要将二者的自协商功能关闭,两边同时发送idle码流,这时理论上可以建立连接。

同时需要注意的是,SGMII的接口速率1.25Gbaud是固定的,并不会因为物理层端口协商成10M、100M而降速,当协商为10M时,MAC芯片内,PCS层之前,会将每个帧复制100次来拉长帧,填满这1.25Gbaud的速率,同样,当协商为100M时,将每帧复制10次。

估计读者又会问了,什么是IDLE码流?这就得从8B/10B编码说起。

下面我们来回顾一下1000base-X的8B/10B编码,相关详细内容在802.3 clause 36。

如上图,发送方向将GMII数据TXD[7:0]和配置寄存器tx_config_reg[15:0],通过8B/10B编码,然后经PMA完成并串转换,从PMD发送出去。接收方向,PMA完成串并转换和码组对齐后,发给PCS进行8B/10B解码,解出GMII数据RXD[7:0]和配置寄存器rx_config_reg[15:0]。

未编码的数据或控制字符为A、B、C、D、E、F、G、H,编码完后为A、B、C、D、E、i、F、G、H、j表示,用/Dx.y/表示256个有效数据代码组,/Kx.y/表示特殊控制代码组,其中其中x是位EDCBA的十进制值,y是位HGF的十进制值。所有代码组的定义见802.3表36–1和表36-2。

1000base-x的8B/10B编码后定义了如下一些码组序列:

以上的码组序列就有IDLE码,下面对各个码组序列逐一介绍:

C码。当1000base-X使能自协商时,通过发送C码完成建链。规范定义码流的运行时极性初始为-,C1和C2交替发送,其中C1为头两个代码组K28.5+D21.5后的运行时极性与初始运行极性相反,C2为头两个代码组K28.5+D2.2后的运行时极性与初始运行极性相同,如果配置寄存器的值是固定的,要保证发送序列C1/C2后的运行时极性与初始阴性极性相反,也就是要选择含comma+的K28.5。

I码。当GMII的TX_EN和TX_ER均无效时,PCS层将发送I码,用来建立和维持时钟同步。I码由一个或多个连续传输的I1或I2序列组成。其中I1 序列被定义为在传输/I1/结束时的运行时极性与开始的运行极性相反,I2 序列被定义为在传输/I2/结束时的运行时极性与开始的运行极性相同。D码流或C码流之后的第一个I码应将当前正或负运行极性恢复为负值,所有后续/I/均为/I2/,以确保负的结束时运行极性。不同的载波事件由/I/码分隔。

LI码。当GMII指示了使能LPI时,pcs将连续重复发送LI码,相当于LPI低功耗接口模式下的idle码。

可以观察到,C码、I码、LI码都是以/K28.5/代码组为开头,通常链路建立连接过程是通过C码或者I码,/K28.5/的作用是为了使接收机能对输入的码流进行对齐同步,同时/K28.5/可以用来区分序列码order set的边界。

另外,K28.1、K28.5、K28.7这三个特殊码组的前7位是相同的,这前7位被称为comma码,0011111为comma+,1100000为comma-,comma码的作用就是用来码组对齐。

封装部分:

SPD。Start of packet定界符,是数据传输序列码流的起始边界。当GMII的TX_EN使能,且在当前PCS的order set传输完成之后,PCS将用SPD替换MAC前导码的当前八位,在接收端PCS又会用和MAC前导码相关的8位数据替换SPD定界符。对于单个数据包或突发中的第一个数据包,SPD跟随/I/。对于突发的第二个和后续分组,SPD跟随/R/。

EPD。End of packet定界符,顾名思义,就是数据序列的结束边界。PCS将在GMII的TX_EN撤销,并在MAC帧结构最后的FCS校验数据之后发送EPD定界符。EPD的构成遵循如下规则:

a、PCS在MAC数据帧最后一个字节之后发送/T/R/。

b、如果MAC有载波扩展给到PCS,则载波扩展规则生效。

C、如果MAC没有载波扩展给到PCS,则遵循如下规则:

1、如果/R/是在偶数代码组位置发送的,则PCS向代码组流附加一个单独的附加/R/,以确保后续/I/与偶数代码组边界对齐,并且EPD传输完成;

2、PCS传输I码。

R码,载波扩展序列。R码有如下3个用途:

1、载波扩展是MAC用于延长载波事件的持续时间的方法。当用于此目的时,载波扩展由MAC发出并由MAC解释,并由PCS对相应的代码组进行编码和解码。为了扩展载波,GMII必须撤销TX_EN。TX_EN变为无效的同时,TX_ER有效时,触发PCS发出具有两个8bit延迟的/R/,这使PCS有时间在开始传输之前完成其EPD。PCS发射的/R/码组的数量等于其扩展载波的GMII GTX_CLK周期的数量(通俗就是就是PCS层用R码来表示MAC帧中的载波扩展数据)。

2、数据包分离:MAC使用载波扩展来分离数据包突发中的数据包。当用于此目的时,载波扩展从MAC发出并由MAC解释,并由PCS编码到相应的代码组并从中解码;

3、EPD2。End_of_Packet定界符/T/R/I/或/T/R/R/I/中/T/之后的第一个/R/。

4、EPD3。End_of_Packet定界符/T/R/R/I/中/T/之后的第二个/R/。如果需要,这个/R/用于填充数据包突发中的唯一或最后一个数据包,以便后续/I/在偶数代码组边界上对齐。

V码。Error_Propagation是向对端发送的发送错误指示,即PCS将从GMII收到的TX_ER信息,通过V码发送出去。

如下图为GMII到PCS封装成比特码流的示意:

看到这里大家应该能明白了,当SGMII与1000base-X对接时,两边都关闭自协商,用强制千兆全双工,两边在相同的PCS作用下发送I码,此时可以通过I码实现同步,建立连接。如果两边都使能自协商,两边的C码流内容不一样,无法建立连接。

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

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

相关文章

你是真的“C”——C语言详解求素数n种境界~

详解C语言函数模块知识(下篇)😎前言🙌必备小知识~😘C语言详解《试除法》求解素数🙌试除法第一层境界~ 😊试除法境界2~😊试除法境界3~😊试除法境界4~😊C语言详解《筛选法》…

为何限制英伟达出售GPU芯片?中国的AI技术领先,让美国怕了

2022年下半年美国突然要求GPU芯片领军者NVIDIA停止对中国出售高端GPU芯片,此举让人疑惑不解,近期日本媒体《日本经济新闻》与荷兰的一家学术信息巨头的分析给出了答案,中国在AI技术上已领先于美国,而NVIDIA的高端GPU芯片有助于中国…

Web端即时通信技术-WebSocket

最近在做项目的时候,遇到了一个前端页面需要实时刷新的功能,一种方法是我们通过短轮询的方式,但这种方式虽然简单,但是无用的请求过多,占用资源,并且如果是对数据要求高较高的场景,就不适用了。…

汽车ECU软件开发之应用层软件与底层软件

随着汽车产品日渐趋向电子化,人们对各类先进的安全系统、高级驾驶辅助系统的接受程度日益提升。而原本昂贵的盲点检测、自动紧急制动等功能的成本下滑,使其快速获得了市场青睐。富士奇美拉研究所(Fuji Chimera Research Institute&#xff09…

MySQL算术/比较/逻辑/位/运算符与正则全解

文章目录1. 算术运算符加法与减法运算符乘法与除法运算符求模(求余)运算符2. 比较运算符等号运算符安全等于运算符不等于运算符非符号类型的运算符空运算符非空运算符最小值运算符最大值运算符BETWEEN AND运算符IN运算符NOT IN运算符LIKE运算符ESCAPEREG…

〖金融帝国实验室〗(Capitalism Lab)v8.2.00官方重大版本更新(2023.01.17正式发布)

〖金融帝国实验室〗(CapLab)v8.2.00正式发布! ————————————— ※v8.2.00更新内容摘要: 1.新增生活服务业:快餐店、比萨店、蛋糕店和咖啡店。 2.可以通过在农场周围购买土地并耕耘来实现产能扩容。 3.…

九龙证券|重磅会议召开,工信部强调推进民爆行业高质量发展

工信部强调推动民爆职业高质量开展,民爆概念股午后拉升。 工业和信息化部举行 民爆职业安全出产视频会议 据工信部网站,1月17日,工业和信息化部举行民爆职业安全出产视频会议。 工业和信息化部副部长徐晓兰表明,部党组对安全出…

【Linux操作系统】环境变量和命令行参数

文章目录一.环境变量1.什么是环境变量?2.windows下配置PATH环境变量的原理3.一览常见的环境变量4.指令方式如何查看环境变量5.PATH-存放系统默认搜索路径的环境变量6.两种方法使运行我们写的可执行程序不带路径二.环境变量和本地变量三.和环境变量相关的命令1.echo:…

元组的操作

1 元组的定义: 元组就是用一对小括号括起来的多个元素的有序集合,个元素之间用逗号隔开。 2 元组的创建: 2.1 使用()创建元组对象。例:lt(12,34,"one") 2.2 使用内置方法tuple创建元组对象。…

mysql 为什么说加上了索引,查询速度就快了呢?(文末附视频)

一天,老板跟我们提出说网站访问的速度太慢,要求我们尽快优化一下。我赶快去查询了一下,发现有几条 SQL 查询的时间异常,我相信这个时候很多小伙伴的大脑里浮现出来的第一个解决办法就是:加索引。 那么到底什么是索引呢…

字符加密-C语言实现

任务描述 请编写程序将一串5个字符组成的英文字符串译成密码,规则为:例如,将“China”译成密码,密码规律是:用原来的字母后面第4个字母代替原来的字母。例如,字母A后面第4个字母是“E”,用“E”…

虚拟电厂负荷控制系统三维可视化监控 | 数字孪生

随着国家“双碳”及“构建以新能源为主体的新型电力系统”等目标的提出,清洁化、数字化越来越成为电力系统面临的迫切需求,负控系统的发展对电力营销现代化建设具有重要的意义。负控管理系统是一个着眼于全面加强电力信息管理的,集负荷控制、…

FMC子卡设计方案原理图:FMC550-基于ADRV9002双窄带宽带射频收发器FMC子卡

FMC550-基于ADRV9002双窄带宽带射频收发器FMC子卡一、产品概述 ADRV9002 是一款高性能、高线性度、高动态范围收发器,旨在针对性能与功耗系统进行优化。该设备是可配置的,非常适合要求苛刻、低功耗、便携式和电池供电的设备。ADRV9002 的工作频率为 …

我的2022年度总结

今天是腊月廿七,又到了写年度总结的时候了,这是写年度总结的第七个年头,希望可以一直坚持写下去。今年是新冠疫情的第三年,疫情管控结束了,同时疫情流行也开始了。我在北京刚全面放开的时候就阳了。用了差不多一周多的…

Go 语言就是在“面向未来”学习(文末附视频)

你好,欢迎学习 Go 语言! 我们知道,Go 程序设计语言是由 Robert Griesemer、Rob Pike、Ken Thompson 主持,于 2007 年末开始开发的全新高级编程语言。在 2009 年 11 月开源,并于 2012 年发布了第一个稳定版本&#xff…

基于OpenCv的人脸识别,翻车了居然识别错误。

前言 我们身边的人脸识别有车站检票,监控人脸,无人超市,支付宝人脸支付,上班打卡,人脸解锁手机。 人脸检测是人脸识别系统组成的关键部分之一,其目的是检测出任意给定图片中的包含的一个或多个人脸&#xf…

23种设计模式(十)——原型模式【对象创建】

原型模式 文章目录 原型模式意图什么时候使用原型真实世界类比原型模式的实现原型模式的优缺点亦称:克隆、Clone、Prototype 意图 原型模式属于对象的创建模式。通过给出一个原型对象来指明所有创建对象的类型,然后用复制这个原型对象的方法创建出更多同类型的对象。这就是原…

Tailscale 开源版中文部署指南

目前国家工信部在大力推动三大运营商发展 IPv6,对家用宽带而言,可以使用的 IPv4 公网 IP 会越来越少。有部分地区即使拿到了公网 IPv4 地址,也是个大内网地址,根本不是真正的公网 IP,访问家庭内网的资源将会变得越来越…

大模型算法演进

分布式训练系统包括多个组成部分,如AI集群架构、通信机制、并行技术等。基于这些内容,我们可以设计出不同的大模型算法。下面我们简单讲述下大模型的发展脉络,大模型的结构以及SOTA大模型算法。 大模型发展脉络 随着2017年Transformer结构的提…

中国区域创新能力指数《中国区域创新能力报告》

一、《中国区域创新能力评价报告》2002-2021年 《中国区域创新能力报告》旨在对中国各省、直辖市、自治区的创新能力做一个客观、动态和全面的评价。该报告通过大量的数字和科学的分析框架,对中国区域创新总的能力做了一个较全面的分析,并对各省、直辖市…