ETH的RGMII的时钟Delay问题

原作者: 英飞凌汽车电子生态圈

引言

英飞凌的TC2xx只支持MII和RMII模式, TC3xx还额外支持RGMII. RGMII经常用来MAC和MAC之间, 或者MAC跟PHY之间的通信.

RGMII可以工作的带宽可以是10Mbps, 100Mbps以及1000Mbps.   对于10MHz的带宽, 其TX和RX的时钟为2.5MHz, 100MHz的带宽, 时钟频率为25MHz, 1000MHz的时钟频率, 其带宽是125MHz.

下图(图1)是RGMII的信号线. 从TC3xx端来看, 时钟TXC是由TC3xx来产生的; 从另一端(其他MAC, 或者PHY)来看, 其RXC是由该MAC或者PHY产生的.

                                                              图1 RGMII的接口示意图

RGMII的时钟延迟问题

当TC3xx工作在RGMII的模式下, 尤其是1000Mbps的情况下, 会涉及到一个时钟Delay的问题.

因为时钟频率达到了125MHz, 数据会在时钟的上升沿和下降沿进行采样. 而TX和RX都是4跟线, 在时钟的上升沿和下降沿会采集8个bit, 从而让带宽达到1000Mbps.

理想的状况是, 时钟的上升沿或者下降沿对准数据电平的正中间, 但是因为各种原因, 信号线与时钟线之间会存在Delay, 原因主要来源有三种:

  • 发送端的TXD和TXC之间的Delay

  • PCB走线引起的TXD和TXC的Delay

  • 接收端的TXD和TXC之间的Delay


对于RX和RXC也是相同的.

下图(图2)说明了因为时钟延迟而造成的影响.

对于TXD和TXC,  有可能从发送端的TXC和TXD之间的情况如下图所示, 即TXC的上升沿和下降沿不能对准TXD的正中间, 而是在TXD数据切换的时间, 这样就会导致读取的bit不准确, 但凡一个bit错误就会导致通信的不正常. 而用户需要做的, 就是控制TXD和TXC之间的时序, 使其满足到达接收端的时候, TXC的上升沿和下降沿对准TXD的数据正中间.


                                                           图2 RGMII的TXC/TXD延迟
对于RXC和RXD也是类似的情况, 接收端的RXC和RXD的理想状态就是到达发送端的时候, RXC对准RXD的数据正中间.如图3所示

                                                                图3 RGMII的RXC/RXD延迟


RGMII时钟延迟的控制

如前文所说, 时钟Delay的来源是发送端, PCB走线以及接收端. 因此我们可以从Aurix端, 或者接收端来控制. 对于接收端如果是MAC, 需要查看该MAC是否支持Delay的设置, 对于PHY, 一般也是通过MDC/MDIO来设置。

Aurix端有相应的寄存器实现RGMII的Delay控制. 涉及到的寄存器为SKEWCTL寄存器. 对于TXC和RXC的Delay, 可通过TXCFG和RXCFG的4个bit有关. 单位是222.22ps, 最大支持15*222.22ps=3.3ns的时钟延迟。

PS: 具体需要做多少的时钟延迟需要通过高精度的示波器做实际的测量。

该文章来源于“英飞凌汽车电子生态圈”官方微信,英飞凌汽车电子生态圈对该内容拥有最终解释权。如需转载,请注明来源,英飞凌保留所有权利。
QR Code. (英飞凌汽车电子生态圈)官方微信公众号

★博文内容参考自 网站,与平台无关,如有违法或侵权,请与网站管理员联系。

★文明上网,请理性发言。内容一周内被举报5次,发文人进小黑屋喔~

评论