实验室回来一批板子,上面有RGMII接口、SGMII接口等各种接口,怎么测试这些网口是否正常呢?的确需要一些经验。比如RGMII接口,最重要的是看在哪里去做的时钟和数据偏移。这时,常常需要使用VIO去读取PHY里面对应寄存器的值,看是否工作在正常RGMII接口时序模式。
测试场景
测试拓扑图如下
试场景连接图
测试方法:使用TestCenter向被测板子上的千兆以太网口打流,在FPGA内部通过自回环从源端口返回给TestCenter,通过看TestCenter控制界面上显示结果判断自回环是否正确。
测试RGMII接口时使用的PHY芯片为MARVELL 公司的88e1512PHY芯片,RGMII顶层接口信号如图1所示。
图1 测试代码顶层接口信号
采用以往经验发现问题
按照以往的RGMII接口使用经验,通过约束将接口的输出时钟延迟了2ns,如图2所示。使用TestCenter对以太网口进行测试,以太网口无法正常发送数据。具体表现为,TestCenter接收的数据帧数目,和发送的数据帧数目相等,但是接收的bit数明显比发送的bit数少。抓取测试代码的内部信号发现,FPGA接收到的以太网数据帧均正常,所以推测FPGA给PHY芯片的发送数据的时序不正常。
图2 发送时钟偏移2ns约束代码
修改代码,不对发送时钟进行2ns的偏移,如图3所示。使用TestCenter对以太网口进行测试,以太网口正常地工作。
图3 发送时钟不进行偏移2ns
问题原因定位
推测在不同的PHY芯片的工作模式下,对时钟的要求不一样。
之前使用的REALTEK的RTL8211E PHY芯片,需要对发送时钟进行2ns的延迟,查找该 PHY芯片手册, PHY芯片对发送时钟有图4所示的要求。表格中明确指出,需要自己添加时钟和数据之间的2ns时延。
图4 RTL8211E的发送时钟
查找目前调试板子上所使用MARVELL的88e1512 PHY芯片的芯片手册,发现RGMII接口有4种不同的时钟工作模式。
图5 88e1512的4种时钟工作模式
4种时钟工作模式下的信号时序图如图6、图7所示,结合上板现象,推测当前的工作模式为add delay模式,即Register21_2.4=1。
图6 RGMII发送时序
图7 RGMII接收时序
图8 寄存器的时钟模式配置
由上面图6、图7和图8可以看出,跟前面RTL8211E PHY