MII是Medium Independent Interface的缩写,中文意思是“介质独立接口”,该接口一般应用于以太网硬件平台的MAC层和PHY层之间,MII接口的类型有很多,常用的有MII、RMII、SMII、SSMII、SSSMII、GMII、RGMII、SGMII、TBI、RTBI、XGMII、XAUI、XLAUI等。本文只介绍百兆以太网的MII、RMII、SMII、SSMII、SSSMII五种接口,其它千兆、万兆以太网接口另行介绍。
MII接口(下图):
TXD[3:0]:数据发送信号,共4根信号线;
RXD[3:0]:数据接收信号,共4根信号线;
TX_ER(Transmit Error): 发送数据错误提示信号,同步于TX_CLK,高电平有效,表示TX_ER有效期内传输的数据无效。对于10Mbps速率下,TX_ER不起作用;
RX_ER(Receive Error): 接收数据错误提示信号,同步于RX_CLK,高电平有效,表示RX_ER有效期内传输的数据无效。对于10Mbps速率下,RX_ER不起作用;
TX_EN(Transmit Enable): 发送使能信号,只有在TX_EN有效期内传的数据才有效;
RX_DV(Reveive Data Valid): 接收数据有效信号,作用类型于发送通道的TX_EN;
TX_CLK:发送参考时钟,100Mbps速率下,时钟频率为25MHz,10Mbps速率下,时钟频率为2.5MHz。注意,TX_CLK时钟的方向是从PHY侧指向MAC侧的,因为此时钟是由PHY提供的。
RX_CLK:接收数据参考时钟,100Mbps速率下,时钟频率为25MHz,10Mbps速率下,时钟频率为2.5MHz。RX_CLK也是由PHY侧提供的。
CRS:Carrier Sense,载波侦测信号,不需要同步于参考时钟,只要有数据传输,CRS就有效,另外,CRS只在半双工模式下有效;
COL:Collision Detectd,冲突检测信号,不需要同步于参考时钟,只在半双工模式下有效。
MII接口一共有16根线(TX_CLK, RX_CLK未记入)。
RMII接口(下图):
TXD[1:0]:数据发送信号线,数据位宽为2,是MII接口的一半;
RXD[1:0]:数据接收信号线,数据位宽为2,是MII接口的一半;
TX_EN(Transmit Enable):数据发送使能信号,与MII接口中的该信号线功能一样;
RX_ER(Receive Error):数据接收错误提示信号,与MII接口中的该信号线功能一样;
CLK_REF:是由外部时钟源提供的50MHz参考时钟,收发共用,与MII接口不同(MII接口中的接收时钟和发送时钟是分开的,而且都是由PHY芯片提供给MAC芯片的)。这里需要注意的是,由于数据接收时钟是由外部晶振提供而不是由载波信号提取,所以在PHY层芯片内的数据接收部分需要设计一个FIFO,用来协调两个不同的时钟。
CRS_DV:此信号是由MII接口中的RX_DV和CRS两个信号合并而成。当介质不空闲时,CRS_DV和RE_CLK相异步的方式给出。当CRS比RX_DV早结束时(即载波消失而队列中还有数据要传输时),就会出现CRS_DV在半位元组的边界25MHz/2.5MHz的频率在0、1之间的来回切换。因此,MAC能够从CRS_DV中精确的恢复出RX_DV和CRS。
在100Mbps速率时,TX/RX每个时钟周期采样一个数据;在10Mbps速率时,TX/RX每隔10个周期采样一个数据,因而TX/RX数据需要在数据线上保留10个周期,相当于一个数据发送10次。
当PHY层芯片收到有效的载波信号后,CRS_DV信号变为有效,此时如果FIFO中还没有数据,则它会发送出全0的数据给MAC,然后当FIFO中填入有效的数据帧,数据帧的开头是“101010---”交叉的前导码,当数据中出现“01”的比特时,代表正式数据传输开始,MAC芯片检测到这一变化,从而开始接收数据。
当外部载波信号消失后,CRS_DV会变为无效,但如果FIFO中还有数据要发送时,CRS_DV在下一周期又会变为有效,然后再无效再有效,知道FIFO中数据发送完为止。
SMII接口(下图):
SMII即Serial MII,串行MII的意思,跟RMII相比,信号线数据进一步减少到3根;
TXD:发送数据信号,位宽为1;
RXD:接收数据信号,位宽为1;
SYNC:收发数据同步信号,每10个时钟周期置1次高电平,指示同步。
CLK_REF:所有端口共用的一个参考时钟,频率为125MHz,为什么100Mbps速率要用125MHz时钟?因为在每8位数据中会插入2位控制信号,请看下面介绍。
TXD/RXD以10比特为一组,以SYNC为高电平来指示一组数据的开始,在SYNC变高后的10个时钟周期内,TXD上依次输出的数据是:TXD[7:0]、TX_EN、TX_ER,控制信号的含义与MII接口中的相同;RXD上依次输出的数据是:RXD[7:0]、RX_DV、CRS,RXD[7:0]的含义与RX_DV有关,当RX_DV为有效时(高电平),RXD[7:0]上传输的是物理层接收的数据。
当速率为10Mbps时,每一组数据要重复10次,MAC/PHY芯片每10个周期采样一次。MAC/PHY芯片在接收到数据后会进行串/并转换。
SSMII接口(见下图):
SSMII即Serial Sync MII,叫串行同步接口,跟SMII接口很类似,只是收发使用独立的参考时钟和同步时钟,不再像SMII那样收发共用参考时钟和同步时钟,传输距离比SMII更远。
SSSMII接口(见下图):
SSSMII即Source Sync Serial MII,叫源同步串行MII接口,SSSMII与SSMII的区别在于参考时钟和同步时钟的方向,SSMII的TX/RX参考时钟和同步时钟都是由PHY芯片提供的,而SSSMII的TX参考时钟和同步时钟是由MAC芯片提供的,RX参考时钟和同步时钟是由PHY芯片提供的,所以顾名思义叫源同步串行。
文章评论(0条评论)
登录后参与讨论