不管是SGMII还是RGMII,PHY和MAC之间的传输信息不仅包含网口数据,而且包含端口速率、半双工或全双工等指示信息,RX_DV/TX_EN/RX_ERR/TX_ERR等流控信息,还有COL和CRS。
SGMII
1、数据以1.25G(单lane)运行,时钟以625M运行(可以不用,采用自恢复功能),这是基于千兆带宽,8b/10b编码,DDR的需求而要求的参数。
2、不管是PHY侧还是MAC侧,都有发送PCS和接收PCS,接收PCS的前端会有个同步模块,推测是用于恢复时钟,这个同步模块和发送接收PCS都与自协商模块有交互,自协商模块部分后续再研究。
3、除了以上大模块外,PHY的接收模块跟往外发的TX_EN和TX_ER之间会有一个小block,用于TX_ER的抑制,基本功能应该是在TX_EN不为true时,哪怕TX_ER置位了也不往外报true,免得引发丢帧(此功能仅在全双工下用,不知道为什么)。MAC侧在PCS的后级,从RX_DV中解析出CRS,从RX_DV和TX_EN中解析出COL。
4、控制信息,包含link状态、双工配置、速率,从PHY传输到MAC,通过两侧的TX_CONFIG_REG[15:0]来实现,MAC会通过将bit14置1来答复其收到了控制信息。
5、SGMII的1.25Gbaud传输速率对于以10或100Mbps运行的接口来说是过高的。当这些情况发生时,接口通过将每个帧字节复制10次(对于100 Mbps)和100次(对于10 Mbps)来“延长”帧。起始帧定界符(SPD)每帧仅出现一次。
RGMII
1、对于千兆操作,时钟将在 125MHz 下运行,而对于 10/100 操作,时钟将分别在 2.5MHz 或 25MHz 下运行。
2、接口信号含:TXC TD0~TD3 TX_CTL RXC RD0~RD3 RX_CTL MDIO MDC,其中TXC和RXC分别是发送和接收的时钟信号,TD和RD分别是4bit的发送和接收信号,TX_CTL和RX