zoukankan      html  css  js  c++  java
  • 嵌入式开发之网卡--- Ethernet 以太网 MAC、MII、PHY、MDIO、IEEE802.3 详解

    (1)、PHY 基本知识

    (2)、MAC 概述

    (3)、MDIO 接口

    (4)、IEEE802.3 协议标准

    (5)、MAC 、MII、PHY、MDIO之间的联系

    (6)、MII 家族

    对于MAC和PHY连接,我们称为 Forward (G)MII 
    对于MAC和MAC相连,叫 Reverse (G)MII

    ----------author:midu

    -----------------dateTime:20200612

    ----------------------qq:1327706646

    ios 网络模型

     图phy

     图 mac

    mac 和phy 关联图

    (1)、PHY 基本知识

    PHY((Physical Layer,PHY))是IEEE802.3中定义的一个标准模块,STA(station management entity,管理实体,一般为MAC或CPU)通过SMI(Serial Manage Interface)对PHY的行为、状态进行管理和控制,而具体管理和控制动作是通过读写PHY内部的寄存器实现的。

    PHY是物理接口收发器,它实现OSI模型的物理层。IEEE-802.3标准定义了以太网PHY。包括MII/GMII(介质独立接口)子层PCS(物理编码子层)PMA(物理介质附加)子层PMD(物理介质相关)子层MDI子层。它符合IEEE-802.3k中用于10BaseT(第14条)和100BaseTX(第24条和第25条)的规范。

    注:PHY寄存器在IEEE802.3标准的 22.2.4 Management functions 节有介绍,但不涉及所有寄存器,个别寄存器需要到其它章节中看,当然,文档里面也提到该在哪里找到哪个寄存器。

    (2)、MAC 概述

    MAC(Media Access Control)即媒体访问控制子层协议。该部分有两个概念:MAC可以是一个硬件控制器 及 MAC通信以协议。该协议位于OSI七层协议中数据链路层的下半部分,主要负责控制与连接物理层的物理介质。MAC硬件大约就是下面的样子了:

     网卡(Network Interface Card,简称NIC),也称网络适配器,是电脑与局域网相互连接的设备。无论是普通电脑还是高端服务器,只要连接到局域网,就都需要安装一块网卡。如果有必要,一台电脑也可以同时安装两块或多块网卡。  
    电脑之间在进行相互通讯时,数据不是以流而是以帧的方式进行传输的。我们可以把帧看做是一种数据包,在数据包中不仅包含有数据信息,而且还包含有数据的发送地、接收地信息和数据的校验信息。一块网卡包括OSI模型的两个层——物理层和数据链路层。物理层定义了数据传送与接收所需要的电与光信号、线路状态、时钟基准、数据编码和电路等,并向数据链路层设备提供标准接口。数据链路层则提供寻址机构、数据帧的构建、数据差错检查、传送控制、向网络层提供标准的数据接口等功能。  
    网卡的功能主要有两个:一是将电脑的数据封装为帧,并通过网线(对无线网络来说就是电磁波)将数据发送到网络上去;二是接收网络上其它设备传过来的帧,并将帧重新组合成数据,发送到所在的电脑中。网卡能接收所有在网络上传输的信号,但正常情况下只接受发送到该电脑的帧和广播帧,将其余的帧丢弃。然后,传送到系统CPU做进一步处理。当电脑发送数据时,网卡等待合适的时间将分组插入到数据流中。接收系统通知电脑消息是否完整地到达,如果出现问题,将要求对方重新发送。

    需要说明的是网卡芯片也有“软硬”之分,特别是对与主板板载(LOM)的网卡芯片来说更是如此,这是怎么回事呢?大家知道,以太网接口可分为协议层和物理层。 
    协议层是由一个叫MAC(Media Access Layer,媒体访问层)控制器的单一模块实现。 
    物理层由两部分组成,即PHY(Physical Layer,物理层)和传输器。 
    常见的网卡芯片都是把MAC和PHY集成在一个芯片中,但目前很多主板的南桥芯片已包含了以太网MAC控制功能,只是未提供物理层接口,因此,需外接PHY芯片以提供以太网的接入通道。这类PHY网络芯片就是俗称的“软网卡芯片”,常见的PHY功能的芯片有RTL8201BL、VT6103等等。 
    “软网卡”一般将网络控制芯片的运算部分交由处理器或南桥芯片处理,以简化线路设计,从而降低成本,但其多少会更多占用系统资源

    (3)、MDIO 接口

    MDIO(Management Data Input/Output),对G比特以太网而言,串行通信总线称为管理数据输入输出 (MDIO)。 该总线由IEEE通过以太网标准IEEE 802.3的若干条款加以定义。 MDIO是一种简单的双线串行接口(2个管脚:MDC和MDIO),将管理器件(如MAC控制器、微处理器)与具备管理功能的收发器 (如多端口吉比特以太网收发器或 10GbE XAUI收发器)相连接,从而控制收发器并从收发器收集状态信息。 可收集的信息包括链接状态、传输速度与选择、断电、低功率休眠状态、TX/RX模式选择、自动协商控制、环回模式控制等。 除了拥有 IEEE 要求的功能之外,收发器厂商还可添加更多的信息收集功能。

    MDC是管理数据的时钟输入,最高速率可达8.3MHz。 MDIO是管理数据的输入输出双向接口,数据是与MDC时钟同步的。

    MDIO的工作流程为: MDIO接口在没有传输数据的空闲状态(IDLE)数据线MDIO处于高阻态。 MDIO出现一个2bit的开始标识码(01)一个读/写操作开始。 MDIO出现一个2bit数据来标识是读操作(10)还是写操作(01)。 MDIO出现一个5bit数据标识PHY的地址。 MDIO出现一个5bitPHY寄存器地址。 MDIO需要2个时钟的访问时间。 MDIO串行读出/写入16bit的寄存器数据。 MDIO恢复成IDLE状态,同时MDIO进入高阻状态。

    管理配置:(控制和状态信息) MDC——配置接口时钟 MDIO——配置接口I/O 管理配置接口控制PHY的特性。该接口有32个寄存器地址,每个地址16位。 其中前16个已经在“IEEE 802.3,2000-22.2.4 Management Functions”中规定了用途,其余的则由各器件自己指定。

    (4)、IEEE802.3 协议标准

    IEEE802.3标准文档下载地址:https://ieeexplore.ieee.org/browse/standards/get-program/page/。它分为很多个section。

    第一部分大致是10Mb/s以太网(其中有关于MAC的规范),第二部分是100BASE-T 100Mb/s基带网络介绍,第三部分是1000 Mb/s基带网络介绍,第四部分是10 Gb/s基带网络介绍。但是,并不是说每部分都是独立的

    (5)、MAC 、MII、PHY、MDIO之间的联系

    工作过程:

    PHY在发送数据的时候,收到MAC过来的数据(对PHY来说,没有帧的概念,对它来说,都是数据而不管什么地址,数据还是CRC),每4bit就增加1bit的检错码,然后把并行数据转化为串行流数据,再按照物理层的编码规则(10Based-T的NRZ编码或100based-T的曼彻斯特编码)把数据编码,再变为模拟信号把数据送出去。收数据时的流程反之。现在来了解PHY的输出后面部分。一颗CMOS制程的芯片工作的时候产生的信号电平总是大于0V的(这取决于芯片的制程和设计需求),但是这样的信号送到100米甚至更长的地方会有很大的直流分量的损失。而且如果外部网现直接和芯片相连的话,电磁感应(打雷)和静电,很容易造成芯片的损坏。

    再就是设备接地方法不同,电网环境不同会导致双方的0V电平不一致,这样信号从A传到B,由于A设备的0V电平和B点的0V电平不一样,这样会导致很大的电流从电势高的设备流向电势低的设备。我们如何解决这个问题呢? 
    这时就出现了Transformer(隔离变压器)这个器件。它把PHY送出来的差分信号用差模耦合的线圈耦合滤波以增强信号,并且通过电磁场的转换耦合到连接网线的另外一端。这样不但使网线和PHY之间没有物理上的连接而换传递了信号,隔断了信号中的直流分量,还可以在不同0V电平的设备中传送数据。 
    隔离变压器本身就是设计为耐2KV~3KV的电压的。也起到了防雷感应(我个人认为这里用防雷击不合适)保护的作用。有些朋友的网络设备在雷雨天气时容易被烧坏,大都是PCB设计不合理造成的,而且大都烧毁了设备的接口,很少有芯片被烧毁的,就是隔离变压器起到了保护作用。

    10BaseT和100BaseTXPHY实现方式不同:10BaseT采用曼彻斯特编码,100BaseTX采用4B/5B编码。

    曼彻斯特编码,常用于局域网传输。在曼彻斯特编码中,每一位的中间有一跳变,位中间的跳变既作时钟信号,又作数据信号;从高到低跳变表示”1”,从低到高跳变表示”0”。还有一种是差分曼彻斯特编码,每位中间的跳变仅提供时钟定时,而用每位开始时有无跳变表示”0”或”1”,有跳变为”0”,无跳变为”1”。

    phy 和mac 的区别:

    PHY 里面的部分寄存器是IEEE定义的,这样PHY把自己的目前的状态反映到寄存器里面,MAC 通过SMI 总线不断的读取PHY 的状态寄存器以得知目前PHY 的状态。例如连接速度、双工的能力等。当然也可以通过SMI设置PHY的寄存器达到控制的目的。例如流控的打开关闭、自协商模式还是强制模式等。不论是物理连接的MII总线和SMI总线还是PHY的状态寄存器和控制寄存器都是由IEEE的规范的。因此不同公司的MAC和PHY一样可以协调工作。当然为了配合不同公司的PHY的自己特有的一些功能,驱动需要做相应的修改。
      MII支持10Mbps和100Mbps的操作,一个接口由14根线组成,它的支持还是比较灵活的。但是有一个缺点是因为它一个端口用的信号线太多,如果一个8端口的交换机要用到112根线,16端口就要用到224根线,到32端口的话就要用到448根线。一般按照这个接口做交换机是不太现实的。所以现代的交换机的制作都会用到其它的一些从MII简化出来的标准,比如RMII、SMII、GMII等。

    (6)、MII 家族

    MII(Media Independent Interface)即媒体独立接口,MII接口是MAC与PHY连接的标准接口。它是IEEE-802.3定义的以太网行业标准。MII接口提供了MAC与PHY之间、PHY与STA(Station Management)之间的互联技术,该接口支持10Mb/s与100Mb/s的数据传输速率,数据传输的位宽为4位。"媒体独立"表明在不对MAC硬件重新设计或替换的情况下,任何类型的PHY设备都可以正常工作。802.3协议最多支持32个PHY,但有一定的限制:要符合协议要求的connector特性。MII接口如下图所示:

    MII接口主要包括四个部分。一是从MAC层到PHY层的发送数据接口,二是从PHY层到MAC层的接收数据接口,三是从PHY层到MAC层的状态指示信号,四是MAC层和PHY层之间传送控制和状态信息的MDIO接口。

    MII是英文Medium Independent Interface的缩写,翻译成中文是“介质独立接口”,该接口一般应用于MAC层和PHY层之间的以太网数据传输,也可叫数据接口。(MAC与PHY间的管理接口一般是MDIO)
        MII接口的类型有很多,常用的有MII、RMII、SMII、SSMII、SSSMII、GMII、RGMII、SGMII、TBI、RTBI、XGMII、XAUI、XLAUI等。下面对它们进行一一介绍。 这里fpga 做了mac 的芯片,实现mac的功能

       图 phy1 百兆网

      对于10/100M的MII
       rx_clk都是PHY提供,为2.5MHz/25MHz
       tx_clk都是PHY提供,为2.5MHz/25MHz
       数据位4bit,即使用MDI的4根线,即2对差分线

     图 phy3 以太网

    对于10/100/1000M的(G)MII
      rx_clk由PHY提供,为 2.5MHz/25MHz/125MHz
      10/100M时,使用tx_clk,由PHY提供,为2.5MHz/25MHz
      1000M时, 使用gtx_clk,由MAC提供,为125MHz

      图 phy4 千兆网

    对于1000M的GMII
      rx_clk 由PHY提供,为125MHz 
      gtx_clk由MAC提供,为125MHz
      数据位8bit 即使用MDI的8根线,即4对差分线

     图 phy5 以太网

     对于10/100/1000M的RGMII
        rx_clk由PHY提供,为125MHz
        gtx_clk由MAC提供,为125MHz

    图二:MAC和PHY集成在一颗芯片的以太网卡(点击放大)

    ①RJ-45接口 ②Transformer(隔离变压器) ③PHY芯片

    ④MAC芯片   ⑤EEPROM    ⑥BOOTROM插槽
    ⑦WOL接头   ⑧晶振    ⑨电压转换芯片
    ⑩LED指示灯

    鸣谢:

    https://www.cnblogs.com/YINBin/p/10980936.html 什么事phy

    https://blog.csdn.net/u012712636/article/details/81287436 phy 的基本知识

    https://www.cnblogs.com/zxc2man/p/3769777.html   mdio rgmii mac phy简单了解

    http://blog.chinaunix.net/uid-24148050-id-131084.html mii 接口全家福

    https://blog.csdn.net/weixin_34101784/article/details/85992166 对于phy芯片的认识

    https://www.cnblogs.com/cute/archive/2011/04/08/2009572.html phy 芯片

    https://blog.csdn.net/ZCShouCSDN/article/details/80090802  Ethernet(以太网)之一 详解 MAC、MII、PHY

    https://www.cnblogs.com/feitian629/archive/2013/01/25/2876857.html   MAC和PHY的区别

  • 相关阅读:
    JS高程研读记录一【事件流】
    事件冒泡的应用——jq on的实现
    模式学习小结[工厂模式|构造函数|原型模式]
    几个CSS-content的小例子
    构造函数new执行与直接执行的区别
    gulp布局构建小结
    理解上下文与作用域
    定义变量的注意问题
    JUC的世界III
    JUC的世界II
  • 原文地址:https://www.cnblogs.com/pengkunfan/p/13101648.html
Copyright © 2011-2022 走看看