以太⽹学习(三)——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中间的引脚通过短路⽚与1脚相连,那么就可以将PHY芯⽚配置成发送时钟和接收时钟都添加延迟。
参考:正点原⼦官⽅视频