| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 嵌入式 -> 查以太网时序问题 -> 正文阅读 |
|
[嵌入式]查以太网时序问题 |
序:当前出现的以太网问题,比较典型,防止后面再踩坑,所以作个记录。以太网驱动和查问题过程都是我同事陈x(大佬级)一手搞定,很荣幸跟着一起讨论,填补了一下自己的知识盲区,拿起我的小本本,赶紧记下来。 后面从五个小点来进行说明:问题简述,实测,分析,总结、感谢 注: 1.下面的图由于是前期测,后面再分析的,所以图只能作为定性分析,当时测试的时候没有考虑在发送端还是接收端测试才是更准确的。 2.实际测试应为:PHY->MAC,应该在MAC端测量,? ?MAC->PHY应该在PHY端测量,原因是减少线路和反射的影响,这样更加准确, 一、问题简述芯片使用ZYNQ7000,PHY之前使用的是9031,后由于芯片缺货,改为了9021,这一更换就出问题了,数据丢包非常严重,由1000M改为了100M,涛声依旧。以前的老产品,芯片是TI的AM335X搭配9021,100M速度,很稳定,这就不得不查一下原因了。 二、实测(上示波器+文档截图)1.一代产品,TI AM335X + 90211.1 MAC->PHY,一条时钟线 + 一条数据线: 100M是时钟上升沿采集数据,这波形很6.再一张远观的。 时钟上升沿基本在数据的中间位置, 1.2 看一下AM335X的说明: ?芯片在发出数据时,对时序作了控制,当然需要注意,RGMII的版本需要在1.3-2.0之间。 1.3 PHY->MAC,一条时钟线 + 一条数据线: 这是PHY发出来的,时钟线和数据线就没有作处理,这就需要软件搞定或在PCB布线上去搞定了。不过AM335X可以识别到这个信号,猜测这个TI芯片内部做了skew,后面再去研究一下这个芯片的文档(有点不严谨,后期再补证明,知识盲区啊)。 2.二代产品,Xilinx?zynq7000?+ 90312.1 MAC->PHY: ?这张图是在公司做样机的时候,1000M时测量的,时钟比数据线延后了1.08ns, 高温测试时有丢包,后面通过修改了PHY的skew解决了问题。 2.2 MAC->PHY: ?1000M时测量的,时钟线比数据线延后了1.16ns, 通过上面的图,猜测是在PCB上做了延时处理,这个当时没有向硬件大佬讨教,错失良机。但不影响后面的分析。 3.改版,Xilinx?zynq7000?+ 9021在100M模式下测试的结果 3.1 MAC->PHY: 时钟线与数据线没有延时,导致采样不准,数据丢包 3.2 PHY->MAC: ? ?时钟线与数据线没有延时,导致采样不准,数据丢包 三、分析本分析过程,非常感谢同事陈x提供的相当硬核的证据,我赶紧拿小本本记下了: 1.Candence的一个技术手册(陈大佬很猛)?手册名:《RGMII_DataSheet.pdf》 大体是这样的:RGMII在1.3版本,需要有一个1.5-2ns的时钟延时,需要在PCB上布线来实现,但在2.0的版本中,芯片就提供了可以选择延时的功能,在芯片中配置实现,可以参考GRMII-ID, 这里有一个概念:RGMII有版本之分,必定是国际标准,需要实现RGMII接口的OEM商需要按不同版本来实现相应功能,可能是这个原因吧 2.瑞萨的资料?手册名:《RZG Series, 2nd Generation Guide to Using RGMII in Making an Ethernet-IF Connection.pdf》 这里就将RGMII在名字上就作了明确的区分:Original RGMII和RGMII-ID, 分别对应RGMII 1.3和RGMII 2.0.? ?我晕了,但你们不能。 这里也提到了,Original RGMII需要通过PCB设计来实现延时,RGMII-ID可通过MAC的配置来实现。 3.项目分析当前项目比较麻烦,主要是由于芯片短缺,不确定使用何种芯片,硬件设计上,管脚上适应了KSZ9031,KSZ9021,KSZ9131.? (等国家再强大了,就不会被卡脖子了,所以要支持国产啊!!!) 3.1 主芯片zynq7000? zynq7000使用的是RGMII V2.0, ?来源于:《Ug585.pdf》 可是这个在芯片里,没法配置skew,这就很纳闷儿啊,这也要阉割一下,哭了!!!!!下面就看下不能修改的证据: 停止哭,?我们继续............ ?3.2?9031会自己添加延时,(开心的笑了) ?9031使用的2.0版本的RGMII,看一下他是有多么的智能, ?都知道我们搞嵌入式的苦,人人都这样做,那做产品就容易多了,多为用户考虑啊!值得国人学习。可惜9031买不到了,还是得用9021,又得哭了....... 3.3 KSZ9021 V1.3的GRMII ?不用说了,延时得通过硬件绕线处理了,但有个小秘密,这个芯片里也可以配置skew,很良心啊。 五,总结1.RGMII有两个版本,1.3和2.0,也可以分别叫:Orignal RGMII和RGMII-ID 2.常理是1.3的没有配置延时的功能,2.0的有配置时钟延时的功能。 3.非常理,zynq7000,RGMII v2.0,但延时功能不可调,? KSZ9021 V1.3,但延时功能也支持可调,对zynq7000说,需要改正。? 给KSZ9021点赞。 4.时序调整,一方面通过调整RGMII的SKEW寄存器实现,? 一方面通过PCB绕线或串电阻实现时钟和数据的相位错开。 六、感谢感谢陈大佬(不便透露真是姓名)。 |
|
嵌入式 最新文章 |
基于高精度单片机开发红外测温仪方案 |
89C51单片机与DAC0832 |
基于51单片机宠物自动投料喂食器控制系统仿 |
《痞子衡嵌入式半月刊》 第 68 期 |
多思计组实验实验七 简单模型机实验 |
CSC7720 |
启明智显分享| ESP32学习笔记参考--PWM(脉冲 |
STM32初探 |
STM32 总结 |
【STM32】CubeMX例程四---定时器中断(附工 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 0:24:39- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |