上面简单介绍了相关接口的信息,下面简单介绍一下目前常用MII接口的相关知识。
MII接口Medium Independent Interface
接口连线很多,是能、时钟、标志信号的error、valid等等,共16根线,不管对于硬件还是FPGA控制都是不怎么友好的!
MII接口如上图所示,也不需要了解太多,下面也不会一一介绍其他各种接口,一个表格全部搞定。
表8‑2 MII接口对比
简述 | Pins | 速率计算 | |
---|---|---|---|
MII | 基本的100Mbps/10Mbps接口 | RXD[3:0]、TXD[3:0]TX_ER、TX_ENRX_ER、RX_DVTX_CLK、RX_CLKCRS、COL | Clock=25MHz or 2.5MHz数据位宽4bit(一个时钟周期传输4bit数据)100Mbps=25 MHz *4bit10Mbps=2.5 MHz *4bit |
RMII | 在MII基础上精简的100Mbps/10Mbps接口;通过提升Clock频率保持与MII一样的速率; | RXD[1:0]、TXD[1:0]TX_ENRX_ERCLK_REFCRS_DV | Clock=50MHz数据位宽2bit(一个时钟周期传输2bit数据)100Mbps=50 MHz *2bit10Mbps是利用10个周期采样一次数据,相当于10Mbps=50MHz/10*2bit |
SMII | 串行MII 100Mbps/10Mbps接口;进一步提升Clock频率保持与MII一样的速率; | RXD[1:0]TXD[1:0]TX_ENRX_ERCLK_REFCRS_DV | Clock=125MHz数据位宽1bit(一个时钟周期传输1bit数据)串行数据帧:一帧10bit(8bit data 2bit control)计算有效带宽时需要去掉控制位100Mbps=125 MHz *(8bit/10bit)10Mbps是利用10个周期采样一次数据,相当于10Mbps=(125 MHz/10)*(8bit/10bit) |
GMII | 在MII接口基础上提升了数据位宽和Clock频率成为1000Mbps接口 | RXD[7:0]、TXD[7:0]TX_ER、TX_ENRX_ER、RX_DVGTX_CLK、RX_CLKCRS、COL | Clock=125MHz数据位宽8bit(一个时钟周期传输8bit数据)1000Mbps=125 MHz *8bit |
RGMII | GMII的简化版本 | RXD[3:0]、TXD[3:0]TX_ENRX_DVTX_CLK、RX_CLKCRS、COL | Clock=125MHz数据位宽4bit(一个时钟周期里,上升沿取TXRX的0-3bit,下降沿取TXRX的4-7bit,所以实际还是在一个时钟周期里传输8bit数据)1000Mbps=125 MHz *8bit100Mbps=25 MHz *8bit10Mbps=2.5MHz *8bit |
SGMII | 串行GMII,在此基础上提升了时钟频率达到1000Mbps | RXD[0]、TXD[0]RX_CLK | Clock=125MHz数据位宽1bit(一个时钟周期传输1bit数据)串行数据帧:一帧10bit(8bit data 2bit control)计算有效带宽时需要去掉控制位1000Mbps=125 0MHz *(8bit/10bit) |
MII接口直接的区别与联系通过上表很容易进行区分。
在FPGA实现网络通信时,还有一个特殊的接口不得不提,那就是SerDes。
这个接口应该不陌生吧,那么问题就来了:
GMII、SGMII和SerDes的区别和联系?
GMII、SGMII和SerDes的区别和联系?
答案下期揭晓,请持续关注哟!