自协商SGMII_板上调试篇

自协商SGMII_板上调试篇

  • 前言
  • 环境搭建
  • 千兆分析
    • Q0
    • Q1
  • 千兆转百兆全双工
    • Q0
    • Q1
  • 百兆全转百兆半
    • Q0
    • Q1
  • PING包
    • PCping
      • Q0
      • Q1
    • BoardPing
      • Q0
      • Q1
  • 总结

前言

目前,网口和网口的都调通了,但截图比较早了,而且光口的验证还有点麻烦,需要光模块和光交换机,设备需要协调,说白了,找人借,光口验的时候是先两个光口自环,然后再分别通过一个光转电的模块与电脑互ping,然后,看寄存器或者抓的信号来验证的,本篇主要分享下电口的调试和验证。

环境搭建

单板通过网线与电脑直连,PC通过串口进入单板系统,主要是BSP:寄存器读写、以太网配置,还有交换芯片的底软,监测连接状态。

自协商SGMII_板上调试篇_第1张图片

千兆分析

Q0

前端只有PHY2有链接,所以只能抓到PHY2的data_valid脉冲信号,虽然PHY3的status_vector的[1:0]为11,但是bit[7]为0,表示link down,所以bit[7]为1的时候,状态向量显示的信息才有效。双、半双工、速率在bit[12]和bit[11:10],1、10即双工、1000
自协商SGMII_板上调试篇_第2张图片

Q1

能看出哪里有问题吗?有两个,第一,双工、半双工显示为0,这个待会说;第二,就是PHY1的配置AN_adv16‘h9821,这是因为上一版本赋值的默认值设置为了16‘h9821,导致的问题就是因为bit[15]为1,就通知了交换芯片侧的reg5为link up!并且这一状态会一直保持,上一篇笔记已经强调并解决了这个问题。
自协商SGMII_板上调试篇_第3张图片
但通过读交换侧的寄存器,发现已经配置好了千兆、双工模式
在这里插入图片描述

千兆转百兆全双工

咳咳,换了一个网口,所以现在是PHY1了

Q0

状态寄存器显示正确
自协商SGMII_板上调试篇_第4张图片
这一张是前一张的放大图,时钟域是在125MHz的userclk2,有效数据的时钟刚好是空闲的1/10,即12.5MHz
自协商SGMII_板上调试篇_第5张图片

Q1

我抓取的AN_restart信号,可以看到“重启”之后,phy mode的Q1与交换侧并没有立刻完成自协商,而是开始发送一系列数据,\C\码 AN sequence,就是上一篇所说的把Q1 reg4的内容advertise交换的reg5
自协商SGMII_板上调试篇_第6张图片
同样,这里也有个问题,双工模式显示不正确。
自协商SGMII_板上调试篇_第7张图片
但读寄存器显示的百兆全!至于这个问题,硬件的同事给的解释是电脑强制配置会导致全双工降至半双工,通过交换机就不会出现这种问题。
在这里插入图片描述

百兆全转百兆半

分析同上类似,可以看到读寄存器显示的信息是准确的d401-->c401

Q0

自协商SGMII_板上调试篇_第8张图片

Q1

自协商SGMII_板上调试篇_第9张图片
在这里插入图片描述

PING包

最直接的,两端配好IP,ping包

PCping

自协商SGMII_板上调试篇_第10张图片

Q0

自协商SGMII_板上调试篇_第11张图片

Q1

自协商SGMII_板上调试篇_第12张图片

BoardPing

自协商SGMII_板上调试篇_第13张图片

Q0

自协商SGMII_板上调试篇_第14张图片

Q1

自协商SGMII_板上调试篇_第15张图片

总结

目前该核的主要内容都已完成,一些细节的再慢慢补充。
但就调试的感悟就是,调试的一大目的也是为了发现问题,除了设计初期尽可能的保证设计,调试阶段则应尽可能的进行分析全面,否则,每次重新编译的时间就开销很大,对精力也是考验。

你可能感兴趣的:(Xilinx,IP,Core)