|
1.1 基础概念 Ethernet接口也叫做以太网接口,是计算机网络中常见的一种局域网技术,它允许多台计算机通过物理媒介(如双绞线、光纤)进行连接,以便彼此之间进行数据传输和通信。 目前以太网根据速度等级分类大概分为:标准以太网(10Mbit/s),快速以太网(100Mbit/s),千兆以太网(1000Mbit/s),以及更快的万兆以太网(10Gbit/s)。但在平常使用中,快速以太网和千兆以太网已经足够了。 因为以太网通信不是像蓝牙那样无限通信,而是通过连接线进行通信,所以以太网接发双方都会有接口。以太网接口类型有RJ45接口,RJ11接口(电话线接口),SC光纤接口。其中RJ45接口使我们最常用的以太网接口(电脑接口)。 RJ45接口也称为水晶头,由插头和插座组成: 可以看到,RJ45接口和HDMI等接口一样,也是采用差分数据传输,这种传输有抗干扰能力强的特性(这在高速数据传输中很重要)。 以太网常用于大型数据传输(如:视频数据),以太网也叫以太网协议,就是一种传输规则,发收双方必须遵守这种规则才能正确地进行数据传输和接收。 以太网通信是以数据包的形式传输,其单包数据量达到几十,甚至成百上千个字节。
1.2 接口分类 以上是Ethernet接口对外的物理展示形式,在PC端和嵌入式板卡以太网都是以网卡的形式存在,网卡需要将网络数据包传递给控制器,也需要控制器想要传递的数据转发到网络中。 网卡的组成分为MAC+PHY,两者协作实现数据的传输与接收。MAC 是数据链路层的一部分,负责在网络介质上传输数据。它主要负责数据的封装和与 PHY 层的协作,保证数据能够正确传输到目的地。PHY 是网络协议栈中的物理层部分,负责实现物理信号的传输和接收。它负责在物理介质上传输和接收信号,与网线、光纤或无线信号直接交互,确保数据传输的物理层实现。 这样的分工合作方式也就注定了,它们两者之间是解耦的,现在CPU默认仅提供MAC而没有PHY,原因是将phy集成进 CPU 会导致芯片设计的复杂性和成本增加。集成 PHY 部分可能会导致 CPU 增加不必要的额外硬件和电路,尤其是在许多应用场景中,用户可能只需要特定类型的 PHY(如仅需要以太网而不需要 Wi-Fi 或光纤)。因此,将 PHY 作为独立模块而非集成到 CPU 中,可以提供更多的灵活性,使系统设计更加模块化。 MAC与PHY之间的通信方式分为MII接口、RMII接口、GMII接口和RGMII接口。 1.MII接口 MII(Media Independent interface)接口即介质无关接口,是百兆以太网接口,它是IEEE-802.3定义的行业标准,是MAC与PHY之间的接口。MII数据接口包含16个信号和2个管理接口信号。 MII接口一共有16根线: TXD(Transmit Data)[3:0]:数据发送信号,共4根信号线; RXD(Receive Data)[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只有PHY在半双工模式下有效; COL:Collision Detectd,冲突检测信号,不需要同步于参考时钟,只有PHY在半双工模式下有效。 2.RMII接口 RMII接口全称是Reduced Media Independant Interface,属于精简版的MII接口,节省了一半的数据线。RMII收发使用2位数据进行传输,收发时钟均采用50MHz时钟源。 该接口的连接线数量由16根减少为8根。 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,用来协调两个不同的时钟,在发送接收的数据时提供缓冲。PHY层芯片的发送部分则不需要FIFO,它直接将接收到的数据发送到MAC就可以了。 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中数据发送完为止。在接收过程中如果出现无效的载波信号或者无效的数据编码,则RX_ER会变为有效,表示物理层芯片接收出错。 与MII接口相比,GMII的数据宽度由4位变为8位,GMII接口中的控制信号如TX_ER、TX_EN、RX_ER、RX_DV、CRS和COL的作用同MII接口中的一样,发送参考时钟GTX_CLK和接收参考时钟RX_CLK的频率均为125MHz(1000Mbps/8=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根。 3. RGMII接口 RGMII即Reduced GMII,是GMII的简化版本,将接口信号线数量从24根减少到14根(COL/CRS端口状态指示信号,这里没有画出),时钟频率仍旧为125MHz,TX/RX数据宽度从8为变为4位。 为了保持1000Mbps的传输速率不变,RGMII接口在时钟的上升沿和下降沿都采样数据。在参考时钟的上升沿发送GMII接口中的TXD[3:0]/RXD[3:0],在参考时钟的下降沿发送GMII接口中的TXD[7:4]/RXD[7:4]。RGMI同时也兼容100Mbps和10Mbps两种速率,此时参考时钟速率分别为25MHz和2.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。 ![]()
|