问:如何实现单片以太网微控制器?
答:诀窍是将微控制器、以太网媒体接入控制器(MAC)和物理接口收发器(PHY)整合进同一芯片,这样能去掉许多外接元器件。这种方案可使MAC和PHY实现很好的匹配,同时还可减小引脚数、缩小芯片面积。单片以太网微控制器还降低了功耗,特别是在采用掉电模式的情况下。
问:以太网MAC是什么?
答:MAC就是媒体接入控制器。以太网MAC由IEEE-802.3以太网标准定义。它实现了一个数据链路层。最新的MAC同时支持10Mbps和100Mbps两种速率。通常情况下,它实现MII接口。
问:什么是MII?
答:MII即媒体独立接口,它是IEEE-802.3定义的以太网行业标准。它包括一个数据接口,以及一个MAC和PHY之间的管理接口(图1)。数据接口包括分别用于发送器和接收器的两条独立信道。每条信道都有自己的数据、时钟和控制信号。MII数据接口总共需要16个信号。管理接口是个双信号接口:一个是时钟信号,另一个是数据信号。通过管理接口,上层能监视和控制PHY。
问:以太网PHY是什么?
答:PHY是物理接口收发器,它实现物理层。IEEE-802.3标准定义了以太网PHY。它符合IEEE-802.3k中用于10BaseT(第14条)和100BaseTX(第24条和第25条)的规范。
问:造成以太网MAC和PHY单片整合难度高的原因是什么?
答:PHY整合了大量模拟硬件,而MAC是典型的全数字器件。芯片面积及模拟/数字混合架构是为什么先将MAC集成进微控制器而将PHY留在片外的原因。更灵活、密度更高的芯片技术已经可以实现MAC和PHY的单芯片整合。
问: 除RJ-45接口外,还需要其它元件吗?
答:需要其它元件。虽然PHY提供绝大多数模拟支持,但在一个典型实现中,仍需外接6、7只分立元件及一个局域网绝缘模块。绝缘模块一般采用一个1:1的变压器。这些部件的主要功能是为了保护PHY免遭由于电气失误而引起的损坏。
问:10BaseT和100BaseTX PHY实现方式不同的原因何在?
答:两种实现的分组描述本质上是一样的,但两者的信令机制完全不同。其目的是阻止一种硬件实现容易地处理两种速度。10BaseT采用曼彻斯特编码,100BaseTX采用4B/5B编码。
问:什么是曼彻斯特编码?
答:曼彻斯特编码又称曼彻斯特相位编码,它通过相位变化来实现每个位(图2)。通常,用一个时钟周期中部的上升沿表示“1”,下降沿表示“0”。周期末端的相位变化可忽略不计,但有时又可能需要将这种相位变化计算在内,这取决于前一位的值。
问:什么是4B/5B编码?
答:4B/5B编码是一种块编码方式。它将一个4位的块编码成一个5位的块。这就使5位块内永远至少包含2个“1”转换,所以在一个5位块内总能进行时钟同步。该方法需要25%的额外开销。
PHY:物理接口收发器,它实现物理层。IEEE-802.3标准定义了以太网PHY。除了我们平时见到通过RJ-45接口连接的双绞线外,还有比较少见的通过BNC接头连接的同轴电缆,甚至还有光纤作为介质。但是这些物理上的传输介质对于上层提供的都是统一的MII接口。
MAC:媒体接入控制器。以太网MAC由IEEE-802.3以太网标准定义。它实现了一个数据链路层。这个控制器通过MII接口与PHY通信。
所以对于这两层来说,中间的MII作为一个统一的接口起到了隔离所用。也就是说对于一个集成了MAC的CPU来说,可通过更换不同的PHY来实现在不同的物理介质上传输相同的数据。
MII总线
MII (Media Independent Interface(介质无关接口,或称为媒体独立接口),它是IEEE-802.3定义的以太网行业标准, 描述以太网收发器与网络控制器之间的接口, 很多市场上的产品遵守这个接口.。介质无关表明在不对MAC硬件重新设计或替换的情况下,任何类型的PHY设备都可以正常工作。在IEEE802.3中规定的MII总线是一种用于将不同类型的PHY与相同网络控制器(MAC)相连接的通用总线。网络控制器可以用同样的硬件接口与任何PHY进行连接。
它包括一个数据接口,以及一个MAC和PHY之间的管理接口。
数据接口包括分别用于发送器和接收器的两条独立信道。每条信道都有自己的数据、时钟和控制信号。MII数据接口总共需要16个信号。
管理接口是个双信号接口:一个是时钟信号,另一个是数据信号。通过管理接口,上层能监视和控制PHY。MII (Management interface)只有两条信号线。
管理配置接口控制PHY的特性。该接口有32个寄存器地址,每个地址16位。其中前16个已经在“IEEE 802.3,2000-22.2.4 Management Functions”中规定了用途,其余的则由各器件自己指定。
信号名称 | 数量 | Direction | Description | Belong To |
TX_CLK | 1 | Input | Transmit Clock | 10/100M信号时钟 |
TXD[0:3] | 4 | Output | Transmit Data | 被发送数据 |
TX_ER | 1 | Output | Transmit Coding Error | 发送器错误 |
TX_EN | 1 | Output | Transmit Enable | 发送器使能信号 |
RX_CLK | 1 | Input | Receive Clock | 接收时钟信号 |
RXD[0:3] | 4 | Input | Receive Data | 接收数据 |
RXER | 1 | Input | Receive Error | 接收数据出错指示 |
RXDV | 1 | Input | Receive Data Valid | 接收数据有效指示 |
COL | 1 | Input | Collision Detected | 冲突检测 |
CRS | 1 | Input | Carner Sense | 载波检测 |
Total bus Width | 16 | ------------ | ------------------ | ------------------------ |
MDC | 1 | Input | Management Clock | 管理配置接口时钟 |
MDIO | 1 | I/O | Management Data l/0 | 管理配置接口数据I/O |
MII标准接口用于连快Fast Ethernet MAC-block与PHY。在其他速率下工作的与 MII等效的接口有:AUI(10M 以太网)、GMII(Gigabit 以太网)和XAUI(10-Gigabit 以太网)。
GMII (Gigabit MII)
◇ GTXCLK——吉比特TX..信号的时钟信号(125MHz)
◇ TXCLK——10/100M信号时钟
◇ TXD[7..0] ——被发送数据
◇ TXEN——发送器使能信号
◇ TXER——发送器错误(用于破坏一个数据包)
接收器:注:在千兆速率下,向PHY提供GTXCLK信号,TXD、TXEN、TXER信号与此时钟信号同步。
在10/100M速率下,PHY提供TXCLK时钟信号,其它信号与此信号同步。其工作频率为25MHz(100M网络)或2.5MHz(10M网络)。
◇ RXCLK——接收时钟信号(从收到的数据中提取,因此与GTXCLK无关联)
◇ RXD[7..0] ——接收数据
◇ RXDV——接收数据有效指示
◇ RXER——接收数据出错指示
◇ COL——冲突检测(仅用于半双工状态)
◇ CRS——载波检测
◇ MDC——配置接口时钟
◇ MDIO——配置接口I/O
RMII(Reduced Media Independant Interface)
RMII是简化的MII接口,是标准的以太网接口之一。RMII的目的是减少芯片间的信号线数量,一般用在多端口的交换机。在数据的收发上它的信号线是MII接口的一半,所以它的总线时钟一般是MII的两倍。RMII不是每个端口都安排收、发两个时钟,而是所有的数据端口公用一个时钟来同步数据的收发,这里就节省了不少信号线的数目。RMII的一个端口要求7个数据线,是MII的一半,所以同样数量的信号线,交换机就能够接入多一倍的端口。和MII一样,RMII支持10兆和100兆的总线接口速度。
SMII
SMII是由思科提出的一种媒体接口,它有比RMII更少的信号线数目,S表示串行的意思。因为它只用一根信号线传送发送数据,一根信号线传输接受数据,所以在时钟上为了满足100Mbps的需求,它的时钟频率很高, 达到了125MHz,为什么用125MHz,是因为数据线里面会传送一些控制信息。SMII一个端口仅用4根信号线完成100Mbps信号的传输,比起RMII差不多又少了一倍的信号线。SMII在工业界的支持力度是很高的。同理,所有端口的数据收发都公用同一个外部的125M时钟。
对比RMII、MII和GMII
RMII口是用两根线来传输数据的;
MII口是用4根线来传输数据的;
GMII是用8根线来传输数据的。
MII/RMII只是一种接口,对于10M线速,MII的速率是2.5MHz,RMII则是5MHz;对于100M线速,MII的速率是25MHz,RMII则是50MHz。
以太网帧的格式:前导符+开始位+目的mac地址+源mac地址+类型/长度+数据+padding(optional)+32bitCRC
如果有vlan,则要在类型/长度后面加上2个字节的vlan tag,其中12bit来表示vlan id,另外4bit表示数据的优先级!