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次,發文人進小黑屋喔~

評論