引言
英飛凌的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. (英飛凌汽車電子生態圈)官方微信公眾號
評論