今天想和大家交流一下MAC和PHY之间的通达信服务接口,接口MII。MII是介质无关通达信服务接口,接口。MII接口定义了在MAC层和物理层之间传送数据和控制状态等信息的接口,它是10M和100M兼容的接口,经过扩展后还可以用于1000M的MAC层与物理层的接口。个人使用心得交流抛出这个定义后,想和大家聊一下我当时认识这个接口的过程。首先本人方向是嵌入式软件,像这种常用的PHY芯片,如88e111DP83848等在uboot和linux下都有相应的驱动支持,不用开发者去关心。而且都是用基本的网路通讯功能。一些复杂的PHY芯片如XL53XXX,有1588功能的,就需要厂家提供相关的驱动,驱动中包含了一些特殊寄存器的配置和相关api接口。在软件工程师不关心的前提下是要保证硬件原理设计、pcb设计没问题的前提下。在实际做工程应用中,如果不是迭代产品,像新研制的板卡有较大概率出现问题。在这样的前提下,我也更深入的了解PHY和硬件相关的知识。MAC与PHY之间用MII接口,在网上搜索MII,出来各种mii详解看了以后头都晕。后面看了一些其他的资料,了解了常用PHY接口,常用的就4种:MII、RMII、GMII、SGMII。上文提到过:内部的MAC外设会通过相应的接口来连接外部PHY芯片,根据数据传输模式不同,大致可以分为以下两类:⚫MII/RMII接口:支持10Mbit/s和100Mbit/s数据传输模式;⚫GMII/RGMII接口:支持10Mbit/s、100Mbit/s以及1000Mbit/s数据传输模式。在PHY芯片手册中会讲到该芯片支持哪种接口。下为88e1111的手册的接口描述:下为DP83848的手册的接口描述:88e1111为千兆PHY,DP83848为百兆PHY。在zynqps侧MAC只支持RGMII,若使用emio则出来的是GMII接口。若再想换其他接口,可使用IP核转换GMIItoXXXX。因此在选用PHY和硬件设计上需要注意。网上对MII相关的资料比较全,笔者也摘录以下内容完善本文结构。MII接口MII全称是MediaIndependentInterface,直译过来就是介质独立接口,它是IEEE-803定义的以太网标准接口,MII接口用于以太网MAC连接PHY芯片,连接示意如下所示:MII接口一共有16根信号线,含义如下:TX_CLK:发送时钟,如果网速为100M的话时钟频率为25MHz,10M网速的话时钟频率为5MHz,此时钟由PHY产生并发送给MAC。TX_EN:发送使能信号。TX_ER:发送错误信号,高电平有效,表示TX_ER有效期内传输的数据无效。10Mpbs网速下TX_ER不起作用。TXD[3:0]:发送数据信号线,一共4根。RXD[3:0]:接收数据信号线,一共4根。RX_CLK:接收时钟信号,如果网速为100M的话时钟频率为25MHz,10M网速的话时钟频率为5MHz,RX_CLK也是由PHY产生的。RX_ER:接收错误信号,高电平有效,表示RX_ER有效期内传输的数据无效。10Mpbs网速下RX_ER不起作用。RX_DV:接收数据有效,作用类似TX_EN。CRS:载波侦听信号。COL:冲突检测信号。MII接口的缺点就是所需信号线太多,这还没有算MDIO和MDC这两根管理接口的数据线,因此MII接口使用已经越来越少了。RMII接口RMII全称是ReducedMediaIndependentInterface,翻译过来就是精简的介质独立接口,也就是MII接口的精简版本。RMII接口只需要7根数据线,相比MII直接减少了9根,极大的方便了板子布线,RMII接口连接PHY芯片的示意如下所示:TX_EN:发送使能信号。TXD[1:0]:发送数据信号线,一共2根。RXD[1:0]:接收数据信号线,一共2根。CRS_DV:相当于MII接口中的RX_DV和CRS这两个信号的混合。REF_CLK:参考时钟,由外部时钟源提供,频率为50MHz。这里与MII不同,MII的接收和发送时钟是独立分开的,而且都是由PHY芯片提供的。GMII接口GMII,千兆MII接口。GMII采用8位接口数据,工作时钟125MHz,因此传输速率可达1000Mbps;同时兼容MII所规定的10/100Mbps工作方式。GMII接口数据结构符合IEEE以太网标准,该接口定义见IEEE803-2000。信号定义如下:GTX_CLK:1000M工作模式下的发送时钟。TX_EN:发送使能信号。TX_ER:发送错误信号,高电平有效,表示TX_ER有效期内传输的数据无效。TXD[7:0]:发送数据信号线,一共8根。RXD[7:0]:接收数据信号线,一共8根。RX_CLK:接收时钟信号。RX_ER:接收错误信号,高电平有效,表示RX_ER有效期内传输的数据无效。RX_DV:接收数据有效,作用类似TX_EN。CRS:载波侦听信号。COL:冲突检测信号。与MII接口相比,GMII的数据宽度由4位变为8位,GMII接口中的控制信号如TX_ER、TX_EN、RX_ER、RX_DV、CRS和COL的作用同MII接口中的一样,发送参考时钟GTX_CLK和接收参考时钟RX_CLK的频率均为125MHz。在这里有一点需要特别说明下,那就是发送参考时钟GTX_CLK,它和MII接口中的TX_CLK是不同的,MII接口中的TX_CLK是由PHY芯片提供给MAC芯片的,而GMII接口中的GTX_CLK是由MAC芯片提供给PHY芯片的,两者方向不一样。在实际应用中,绝大多数GMII接口都是兼容MII接口的,一般的GMII接口都有两个发送参考时钟:TX_CLK和GTX_CLK,在用作MII模式时,使用TX_CLK和8根数据线中的4根。RGMII接口RGMII,精简版GMII接口。将接口信号线数量从24根减少到14根,时钟频率仍旧为125MHz,TX/RX数据宽度从8为变为4位,为了保持1000Mbps的传输速率不变,RGMII接口在时钟的上升沿和下降沿都采样数据,在参考时钟的上升沿发送GMII接口中的TXD[3:0]/RXD[3:0],在参考时钟的下降沿发送GMII接口中的TXD[7:4]/RXD[7:4]。RGMII同时也兼容100Mbps和10Mbps两种速率,此时参考时钟速率分别为25MHz和5MHz。TX_EN信号线上传送TX_EN和TX_ER两种信息,在TX_CLK的上升沿发送TX_EN,下降沿发送TX_ER;同样的,RX_DV信号线上也传送RX_DV和RX_ER两种信息,在RX_CLK的上升沿发送RX_DV,下降沿发送RX_ER。RGMII接口定义如下所示:如有错误请指正!下次想交流一下MDIO,希望和大家共同进步!
文章为作者独立观点,不代表股票交易接口观点