写这篇文章的目的主要是了解ET1100和PHY的相关知识以及在连接配置时的相关东西。因为也是首次接触这个知识,而笔记大多记录的又都是自己的理解,所以难免有不足和错误,欢迎大家指出来,共同讨论。
1.首先介绍一些基础知识:MAC、RII、PHY
一块以太网网卡包括OSI(开方系统互联)模型的两个层。物理层和数据链路层。物理层定义了数据传送与接收所需要的电与光信号、线路状态、时钟基准、数据编码和电路等,并向数据链路层设备提供标准接口。数据链路层则提供寻址机构、数据帧的构建、数据差错检查、传送控制、向网络层提供标准的数据接口等功能。
以太网卡中数据链路层的芯片一般简称之为MAC控制器,物理层的芯片我们简称之为PHY。许多网卡的芯片把MAC和PHY的功能做到了一颗芯片中,比如Intel 82559网卡的和3COM 3C905网卡。但是MAC和PHY的机制还是单独存在的,只是外观的表现形式是一颗单芯片。当然也有很多网卡的MAC和PHY是分开做的,比如D-LINK的DFE-530TX等。
(1)MAC
以太网数据链路层其实包含MAC(介质访问控制)子层和LLC(逻辑链路控制)子层。一块以太网卡MAC芯片的作用不但要实现MAC子层和LLC子层的功能,还要提供符合规范的PCI界面以实现和主机的数据交换。
MAC是Media Access Control的缩写,即媒体访问控制子层协议。该协议位于OSI七层协议中数据链路层的下半部分,主要负责控制与连接物理层的物理介质。MAC从PCI总线收到IP数据包(或者其他网络层协议的数据包)后,将之拆分并重新打包成最大1518Byte,最小64Byte的帧。这个帧里面包括了目标MAC地址、自己的源MAC地址和数据包里面的协议类型(比如IP数据包的类型用80表示)。最后还有一个DWORD(4Byte)的CRC码。以太网MAC芯片的一端接计算机PCI总线,另外一端就接到PHY芯片上。以太网的物理层又包括MII/GMII(介质独立接口)子层、PCS(物理编码子层)、PMA(物理介质附加)子层、PMD(物理介质相关)子层、MDI子层。而PHY芯片是实现物理层的重要功能器件之一,实现了前面物理层的所有的子层的功能。
(2)MII
MII即媒体独立接口, “媒体独立”表明在不对MAC硬件重新设计或替换的情况下,任何类型的PHY设备都可以正常工作。包括分别用于发送器和接收器的两条独立信道。每条信道都有自己的数据、时钟和控制信号。MII数据接口总共需要12个信号,包括:
transmit data - TXD[3:0] ////被发送数据
transmit strobe - TX_EN////发送使能
transmit clock - TX_CLK///10/100M信号时钟
transmit error - TX_ER/TXD4////发送器错误
receive data - RXD[3:0]///接收数据
receive strobe - RX_DV///接收数据有效指示
receive clock - RX_CLK///接收信号时钟
receive error - RX_ER/RXD4///接收数据出错指示
collision indication - COL////冲突检测
carrier sense - CRS////载波检测
management data clock - MDC////管理配置接口
management data input/output - MDIO ////管理配置接口数据IO
MII管理接口是个双信号接口,一个是时钟信号,另一个是数据信号。通过管理接口,上层能监视和控制PHY。MII界面传递了网络的所有数据和数据的控制,而MAC对PHY的工作状态的确定和对PHY的控制则是使用SMI(Serial Management Interface)界面通过读写PHY的寄存器来完成的。PHY里面的部分寄存器是IEEE定义的,这样PHY把自己的目前的状态反映到寄存器里面,MAC通过SMI总线不断的读取PHY的状态寄存器以得知目前PHY的状态,例如连接速度,双工能力等。当然也可以通过SMI设置PHY的寄存器达到控制的目的,例如流控的打开关闭,自协商模式还是强制模式等。不论是物理连接的MII总线和SMI总线还是PHY的状态寄存器和控制寄存器都是有IEEE的规范的,因此不同公司的MAC和PHY一样可以协调工作。
RMII(Reduced Media Independant Interface)简化媒体独立接口,是标准的以太网接口之一,比MII有更少的I/O传输
MII/RMII只是一种接口,对于10M线速,MII的时钟是2.5M,RMII则是5M;对于100M线速,MII的时钟是25M,RMII则是50M。
MII/RMII 用于传输以太网包,在MII/RMII接口是4/2bit的,在以太网的PHY里需要做串并转换、编解码等才能在双绞线和光纤上进行传输,其帧格式遵循IEEE 802.3(10M)/IEEE 802.3u(100M)/IEEE 802.1q(VLAN)
以太网帧的格式为:
前导符+开始位+目的mac地址+源mac地址+类型/长度+数据+padding(optional)+32bitCRC
(3)PHY
PHY是物理接口收发器,它实现物理层。包括MII/GMII(介质独立接口)子层、PCS(物理编码子层)、PMA(物理介质附加)子层、PMD(物理介质相关)子层、MDI子层。
100BaseTX采用4B/5B编码。PHY在发送数据时,收到MAC过来的数据(对PHY来说,没有帧的概念,对它来说,都是数据而不管什么地址,数据还是CRC),每4bit就增加1bit的检错码,然后把并行数据转化为串行流数据,再按照物理层的编码规则把数据编码,再变为模拟信号把数据送出去。收数据时的流程反之。PHY还有个重要的功能就是实现CSMA/CD的部分功能。它可以检测到网络上是否有数据在传送,如果有数据在传送中就等待,一旦检测到网络空闲,再等待一个随机时间后将送数据出去。如果两个碰巧同时送出了数据,那样必将造成冲突,这时候,冲突检测机构可以检测到冲突,然后各等待一个随机的时间重新发送数据。这个随机时间很有讲究的,并不是一个常数,在不同的时刻计算出来的随机时间都是不同的,而且有多重算法来应付出现概率很低的同两台主机之间的第二次冲突。通信速率通过双方协商,协商的结果是两个设备中能同时支持的最大速度和最好的双工模式。这个技术被称为Auto Negotiation或NWAY。
基于以上知识,回头来看以太网接口的知识。
以太网(Ethernet)是一种计算机局域网组网技术,基于IEEE制定的IEEE 802.3标准,它规定了包括物理层的连线、电信号和介质访问层协议的内容。以太网是当前应用最普遍的局域网技术。
Ethernet的接口实质是MAC通过MII总线控制PHY的过程。他们之间的关系是pci总线接mac总线,mac接phy,phy接网线。
通过图可能会更清晰:
下图是网口结构简图.网口由CPU、MAC和PHY三部分组成.DMA控制器通常属于CPU的一部分,用虚线放在这里是为了表示DMA控制器可能会参与到网口数据传输中.
对于上述的三部分,并不一定都是独立的芯片,根据组合形式,可分为下列几种类型:
1.CPU集成MAC与PHY;
2.CPU集成MAC,PHY采用独立芯片;
3.CPU不集成MAC与PHY,MAC与PHY采用集成芯片;
2.Ethercat从站控制器(ESC)-ET1100
(1)Ethercat从站构成
Ethercat从站设备同时实现通信和控制两部分功能。结构如下
可以看出,从站与外界的接口可以是EBUS或者MII,MII是标准的以太网物理层接口,使用外部物理层芯片(PHY);EBUS是德国倍福公司使用LVDS标准定义的数据传输标准,可以直接接ESC芯片,不需要接额外的物理层芯片。
ESC从具有四个数据收发端口,每个端口都可以收发以太网数据帧。数据帧在ESC内部的传输顺序是固定的。通常,数据从0端口进入ESC,然后按照端口3-1-2-0依次传输。如果ESC检测到某个端口没有外部链接,则自动闭合此端口,数据将自动回环并转发到下一个端口。一个Ethercat从站设备至少使用两个数据端口。
(2)Ethercat从站控制芯片
Ethercat从站控制芯片是ESC实现Ethercat数据链路层协议的专用集成芯片。他处理Ethercat数据帧,并为从站控制装置提供数据结口。
ESC由倍福公司提供,包括ASIC芯片和IP-Core,目前有两种规格的芯片,ET1100(4端口)和ET1200(3端口)
ET1100关于PHY的存储空间的定义如下、:
ET1100结构图
ET1100有关引脚定义
PHYAD_OFF用来设置偏移地址
这两个引脚用来控制PHY
ET1100对PHY的要求:
ET1100没有使用标准MII接口的全部引脚信息。下表和图分别描述了ET1100所使用的的MII接口信号和MII与PHY在使用时的连接示意图
MI_DATA应该连接外部上拉电阻,推荐阻值为4.7欧。MI_CLK为轨到轨驱动,空闲时为高。
每个端口的PHY地址等于其逻辑端口号加1(PHYAD_OFF=0,PHY地址为1-4)或逻辑端口号加17(PHYAD_OFF=1,PHY地址为17-20)
一般情况下,偏移地址应该设为0,但当端口0被用作广播地址时,偏移地址应该设为1.
ET1100的引脚配置
以下是ET1100读取PHY的步骤