对10G/40Gphy中auto-negotiation功能调试
在近期有一个项目,是一台设备中发现mac与phy之间的信号质量有一些差,报文会出现很多的crc错误码。希望可以将mac与phy之间的工作模式改为10GBASE-KR/40GBASE-KR4,从而提高信号质量,减少crc错误码。要实现10GBASE-KR/40GBASE-KR4,需要打开auto-negotiation,所以,文章主要内容是如何开启自协商,以及相关参数的解释。
需要的文档:
1、802.3协议手册
2、所调试phy的芯片手册(我自己使用的是bcm的万兆phy)
万兆phy情况摘要
PHY寄存器分为两大部分:
1、system端,是phy与交换芯片连接的一侧;
2、line端,是phy与光模块连接的一侧
寄存器的读取地址有device address与register address。system-side 与 line-side寄存器的device address,register address 是一致的,他们是通过将寄存器【device address = 0x01, register address = 0xffff】赋值来进行区分,寄存器赋值为0,读写line-side方向的寄存器;寄存器赋值为1,读写为system-side方向的寄存器。
我们在阅读芯片手册的过程中,会发现cl72、cl73之类的字。如果是第一次读相关手册的童鞋们,肯定也是一脸迷惑,并且也很难百度到相关信息。此处的cl72, cl73指代的是802.3协议中的clause 72, clause 73。phy手册中的很多寄存器内容以及名词都没有相关解释,这些寄存器以及名词均可以从802.3手册中找到对应的解释。
cl73-auto-negotiation
IEEE802.3标准中,自协商功能被分为三类,分别在clause 28, clause 37 和 clause 73中进行说明:
1)clause 28规范了使用双绞线作为传输介质的以太网自协商类型
2)clause 37规范了1000BASE-X的以太网类型
3)clause 73规范了backplane ethernet 以及40GBASE-CR4, 100GBASE-CR10以太网的自协商。
上述图表是位于802.3 table 73-6。举例,表中的7.0.9 auto-negotiation restart, 7.0.9代表的是device address = 0x07, register address = 0x00, 第9比特位。自协商的过程是Link partner 发送一张page,其中携带了自协商的信息,该page的信息存储在mr_lp_adv_ability[48:1]。有的phy也会携带next page。我们接下来将查看一下这个48bit的page的具体信息(附:以下信息均可以在802.3 clause 73中找到)
该page 的信息是通过differential manchester encoding(DME)来进行传送的。
D[4:0]: selector field, 一般为00001 代表IEEE STD 802.3
D[5:9]: echoed nonced field,
D[12:10]: advertise capability not related to the phy
D[13:15]: RF, ACK, NP , those bit shall function as specified in 28.2.1.2
D[16:20]: transmitterd nonced field
D[21:45]: technology ability field
D[46:47]: FEC ability
a) F0 is FEC ablity
b) F1 is FEC request
对10G/40Gphy中auto-negotiation功能调试相关推荐
- 无线信标功能调试-2021-3-9-HALL检测与主控接口
▌01 无线信标控制板 1.功能介绍 在 无线节能信标调试说明-2021-3-3 对于 第十六届全国大学智能汽车竞赛竞速比赛规则 中的无线节能信标组的无线功率部分进行了调试.并对在输出功率50W,15 ...
- c语言程序中的基本功能,c语言程序中的基本功能模块为什么?
c语言程序中的基本功能模块为"函数".一个C语言程序可以由一个主函数和若干个函数构成:一个大的应用程序一般应该分为多个程序模块,每一个模块用来实现一个功能,而模块的功能是由函数完成 ...
- 探秘IntelliJ IDEA 13测试版新功能——调试器显示本地变量
为什么80%的码农都做不了架构师?>>> IntelliJ IDEA在业界被公认为最好的Java开发平台之一,JetBrains公司将在12月正式发布IntelliJ IDEA ...
- Qt for ios 在 xcode 中编译(便于调试)
前言 用 Qt 开发 IOS 程序需要搭配最新版的 xcode 才能进行编译,这个毫无疑问吧.如果需要设置程序图标或启动页之类这种平台性的功能,直接在 xcode 中进行设置是最方便的,并且在 xco ...
- vue中生产模式和调试模式_为什么在生产中进行调试是如此诱人?
vue中生产模式和调试模式 生产调试 为什么在生产中进行调试是如此诱人? 在我的第一份工作中,我要做的任务之一是修复一个错误,该错误过去在非常复杂的生产系统中有时会发生. 那很简单! - 我想. 我将 ...
- 谷歌浏览器开发调试工具中Sources面板 js调试等 完全介绍
这次分享的是Chrome开发工具中最有用的面板Sources. Sources面板几乎是我最常用到的Chrome功能面板,也是在我看来决解一般问题的主要功能面板.通常只要是开发遇到了js报错或者其他代 ...
- linux 审计oracle,开启和关闭oracle数据库中的审计功能
开启和关闭oracle数据库中的审计功能 第1步:查看审计功能是否开启? SQL> show parameter audit; NAME TYPE VALUE ...
- spring 5.x(1)-----Spring Framework 5.x中的新功能
Spring Framework 5.x中有什么新功能 5.1版中的新功能 一般核心修订 基础设施: 在类路径和模块路径上对JDK 11的无警告支持. 支持Graal原生图像约束(反射,参数名称). ...
- .NET Core 3.0中的新功能和增强功能
目录 介绍 主要变化 Windows桌面支持 本机可执行文件 JSON API 更好的垃圾收集器 性能改进 Docker增强 ARM64支持 物联网支持 密码学 与.NET Core 2.2的AP ...
- SQL Server 2016 SP1中的新功能和增强功能
SQL Server 2016 SP1 is released as announced by Microsoft. It comes with a bunch of new features and ...
最新文章
- ASP.NET遍历配置文件的连接字符串
- 理解 QEMU/KVM 和 Ceph(2):QEMU 的 RBD 块驱动(block driver)
- 408计算机考研大纲 doc,2020计算机专业408基础综合考研大纲
- 常见的蓝牙4.0模块
- Redis线程IO模型的秘密知多少
- Unity3D基础1:进入Unity3D
- 轻松调用Google翻译
- 最新百度网盘下载神器,免安装、免登录、不限速!一键打开网址就能用
- spring boot 报 http 406多种原因问题解决的总结
- 欧拉线 Euler line
- js获取剪切板文字图片方法
- 什么是蛋白质结构域?什么是HTH?
- 安装Rstudio-server,使用官网的程序下载安装不合理?其对应的安装包是Ubuntu14,而我的系统是Ubuntu18.
- CPU中的八个通用寄存器
- [附源码]计算机毕业设计JAVA宠物狗领养网站
- 共享内存 shmget函数
- 一个人尽然可以管理呢么多网站,强悍
- 松川仪表IPO被终止:年营收2.58亿 林茂波夫妇控制77%股权
- linux杀死线程函数,Linux线程-pthread_kill
- 网络三大参数(IP、NETMASK、PORT)简述
热门文章
- Density 计算公式
- 如果小米开放购买会怎么样?
- 前端二维表转化树结构。支持无限套娃
- PHP一句话木马后门
- php公众号回复接口,微信公众平台开发接口教程之公众账号自定义回复功能
- VUE时间戳和时间相互转换,使用UI库为Ant Design of Vue
- 土豆服务器延期修复,Uplay更新失败解决方法 教你对付土豆服务器!
- winxp计算机如何连接win7计算机,Win7电脑连接XP系统共享打印机的操作方法
- xp计算机连接不上网络打印机驱动,windows xp系统打印机共享提示连接失败的解决方法...
- 2020 年,从架构谈起,到 Mesh 结束