主要有SMII, MII, RMII, GMII, RGMII這幾種接口,其中SMII是串行的接口,引腳最少。
MII接口
通信速率10M/100M(百兆以太網的通信接口)
ETH_RXC:PHY側輸出給MAC的以太網的接受時鍾
ETH_RXDV:PHY側輸出給MAC的接收有效信號
ETH_RXER:PHY側輸出給MAC的接收錯誤信號
ETH_RXD:PHY側輸出給MAC的4位接收數據
只有當ETH_RXDV為高電平,ETH_RXER為低電平時,這時傳輸的數據才是有效數據
ETH_TXC:發射時鍾同樣是有PHY芯片提供給MAC的
ETH_TXEN:MAC提供給PHY芯片的發送使能信號
ETH_TXER:MAC提供給PHY芯片的發送錯誤指示信號
ETH_TXD:MAC提供給PHY芯片的待發送的4位數據
只有當ETH_TXEN為高電平,ETH_TXER為低電平時,這時傳輸的數據才是有效數據
10M:時鍾為2.5MHz,單沿采樣;100M:時鍾為25MHz,單沿采樣
RMII接口(Reduced MII)
通信速率為10M/100M
發送數據核接收數據都是兩位的;
參考時鍾通常是由外部晶振提供給MAC側或PHY芯片的;
CRS和DV信號復用一個端口;
10M:時鍾為5M,單沿采樣;100M:時鍾為50M,單沿采樣
GMII接口(Gigabit MII)
通信速率1G/100M/10M
與MII接口相比,TXC由MAC側產生(原圖中畫錯了),並且將數據位寬從4位提高到了8位;
10M:時鍾為2.5M,單沿采樣,只用到了4位;100M:時鍾為25M,單沿采樣,只用到了4位;1G:時鍾為125M,單沿采樣
RGMII(Reduced GMII)
通信速率為1G/100M/10M
TXC由MAC側產生;
將RXDV和RXER信號集成到了RXCTL上,時鍾上升沿采到的是RXDV,下降沿采到的是RXDV^RXER(異或);
將TXEN和TXER信號集成到了TXCTL上,時鍾上升沿采到的是TXEN,下降沿采到的是TXEN^TXER(異或);
數據位寬由8位減少到了4位;
1G:時鍾為125M,雙沿采樣;100M:時鍾為25M,單沿采樣;10M:時鍾為2.5M,單沿采樣
RGMII接口時序
RGMII接收時序(1G)(PHY芯片產生的信號時序)
注:由於下降沿傳輸的是異或結果,所以正常情況下,RXCTL信號一直為高電平時傳輸的才是有效數據。
為保證能夠正確采到數據,PHY芯片需要將接收到的TXC信號延遲約1/4個時鍾周期。
RGMII發送時序(1G)(FPGA MAC側產生的信號時序)
注:由於下降沿傳輸的是異或結果,所以正常情況下,TXCTL信號一直為高電平時傳輸的才是有效數據。
為保證FPGA能夠正確采到數據,PHY芯片需要將發送給MAC的RXC信號延遲約1/4個時鍾周期。
對於ZC706開發板上的88E1116R PHY芯片來說,控制時鍾是否延遲的方式是CONFIG引腳或者通過寄存器的方式進行配置:
這個意思是,如果CONFIG[3]連到了LED[0]上,那么相當於配置了接收時鍾的延時處理,但是沒有配置發送時鍾的延時處理。
或者可以通過MDIO配置相對應的寄存器21_2.4和21_2.5,用軟件的方式配置時鍾延時:
查看ZC706的PHY芯片88E1116R部分的原理圖:
發現CONFIG[3]連到了排針的中間的引腳2,如果將J45中間的引腳通過短路片與1腳相連,那么就可以將PHY芯片配置成發送時鍾和接收時鍾都添加延遲。
參考:正點原子官方視頻