以太网中的MAC、MII、PHY 详解

结构

从硬件的角度看,以太网接口电路主要由MAC(Media Access Control,MAC)控制器和物理层接口PHY(Physical Layer,PHY)两大部分构成。如下图所示:

但是,在实际的设计中,以上三部分并不一定是独立分开的。由于PHY整合了大量模拟硬件,而MAC则是典型的全数字器件。考虑到芯片面积模拟/数字混合架构的原因,通常,将MAC集成进微控制器,而将phy留在片外。(现在更灵活,密度更高的芯片技术已经可以实现MAC和PHY的单芯片整合。) 下图是网络接口内部结构图,虚框表示CPU,MAC集成在CPU中,PHY芯片通过MII接口与CPU上的MAC连接:

以上是以太网结构大框架,下面分别介绍各个部分。

MAC

MAC(Media Access Control) 即媒体访问控制层协议。MAC由硬件控制器及MAC通信协议构成。该协议位于OSI七层协议中数据链路层的下半部分,主要负责控制与连接物理层的物理介质。MAC硬件框图如下图所示:

在发送数据的时候,MAC协议可以事先判断是否可以发送数据,如果可以发送将给数据加上一些控制信息,最终将数据以及控制信息以规定的格式发送到物理层;在接收数据的时候,MAC协议首先判断输入的信息是否发生传输错误,如果没有错误,则去掉控制信息发送至LLC(逻辑链路控制)层。该层协议是以太网MAC由IEEE-802.3以太网标准定义。一般以太网MAC芯片的一端连接PCI总线,另一端连接PHY芯片,中间是RGMII接口。

PHY

PHY是IEEE-802.3中定义的一个标准模块,STA(Station Management Entity,管理实体,一般为MAC或CPU)通过MIIM(MII Manage Interface)对PHY的行为,状态进行管理和控制,而具体管理和控制动作是通过读写PHY内部的寄存器实现的。PHY的节本结构如下图:

PHY在发送数据的时候,收到MAC过来的数据(对PHY来说,没有帧的概念,对它来说,都是数据)然后把并行数据转换为串行流数据,再按照物理层的编码规则把数据编码,再变为模拟信号把数据送出去,收数据的流程反之。

PHY还有个重要的功能就是实现CSMA/CD的部分功能,它可以检测到网络上是否有数据在传送,如果有数据在传送中就等待,一旦检测到网络空闲,再等待一个随机时间后将数据送出去。如果两个碰巧同时送除了数据,那样必将造成冲突,这时候冲突检测机制可以检测到冲突,然后等待一个随机的时间重新发送数据。

PHY寄存器的地址空间为5位,从0到31最多可以定义32个寄存器(随着芯片功能不断增加,很多PHY芯片采用分页技术来扩展地址空间以定义更多的寄存器),IEEE802.3定义了0-15这16个进村器的功能,地址16-31的寄存器留给芯片制造商自由定义,如下表所示:

注:

上图B和E表示在特定接口下,寄存器是基本的还是扩展的。例如:MII接口下只有0和1寄存器是基本的,其它的是扩展的。所为扩展是指留给IEEE以后的扩展特性用,不是给PHY厂商的扩展,PHY厂商自定义的只能是16~31号寄存器 。

在IEEE标准文档及某些PHY手册中,某寄存器的比特(bit)用X.y表示,如0.15表示第0寄存器的第15位。

相关推荐
踏雪Vernon7 分钟前
[OpenHarmony5.0][Docker][环境]OpenHarmony5.0 Docker编译环境镜像下载以及使用方式
linux·docker·容器·harmonyos
Estar.Lee15 分钟前
时间操作[计算时间差]免费API接口教程
android·网络·后端·网络协议·tcp/ip
学Linux的语莫20 分钟前
搭建服务器VPN,Linux客户端连接WireGuard,Windows客户端连接WireGuard
linux·运维·服务器
legend_jz25 分钟前
【Linux】线程控制
linux·服务器·开发语言·c++·笔记·学习·学习方法
Komorebi.py26 分钟前
【Linux】-学习笔记04
linux·笔记·学习
黑牛先生27 分钟前
【Linux】进程-PCB
linux·运维·服务器
友友马1 小时前
『 Linux 』网络层 - IP协议(一)
linux·网络·tcp/ip
猿java1 小时前
Linux Shell和Shell脚本详解!
java·linux·shell
码老白2 小时前
【老白学 Java】Warshipv2.0(二)
java·网络
HackKong2 小时前
小白怎样入门网络安全?
网络·学习·安全·web安全·网络安全·黑客