乙太網學習(三)——FPGA的MAC與PHY晶片之間的介面,以及RGMII介面時序
主要有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或J46的中間的引腳通過短路片與1腳相連,那麼就可以將PHY晶片配置成傳送時鐘和接收時鐘都新增延遲。
參考:正點原子官方視訊