以太网基础理论—MAC+PHY

MAC层在OSI模型的数据链路层,负责帧的封装和错误校准,控制PHY芯片。PHY层处理物理编码和信号转换,与MAC通过MII或MIIM接口交互。在CPU中,MAC可能集成或独立,与PHY配合实现网络数据传输。配置PHY芯片通常通过MAC的MIIM接口进行。
摘要由CSDN通过智能技术生成

MAC (Medium Access Control),简称媒体访问控制。MAC层在OSI模型中是属于数据链路层,其主要任务是解决数据包发给谁。数据链路层包含MAC(介质访问控制)子层和LLC(逻辑链路控制)子层。

 

PHY(physical),简称物理层,是一个对OSI模型物理层的简称。PHY包括两个接口三个子层:

两个接口:
1、MII接口:媒体独立接口。PHY与MAC之间的通信方式,其中包括数据接口、管理接口。在MII的基础上,又发展了RMII(Reduced Media Independant Interface,简化了MII,比MII用的信号线更少)、GMII(Gigabit Media Independent Interface,即先兆的MII接口)、RGMII(Reduced Gigabit Media Independent Interface,及简化先兆的MII接口);
2、MDI接口:媒体相关接口;

三个子层:

1、PCS子层:物理编码子层,负责编码;
2、PMA子层:物理介质连接子层,进一步将PCS编码向各种媒介进行传送。完成串并、并串转化;
3、PMD子层:物理介质相关子层,完成物理连接;

MAC的功能

1)封装网络层的数据,将数据封装为帧,实现帧同步对目标MAC地址和源MAC地址进行处理,对PHY传输错误时进行校准。MAC帧的数据部分只有一个字段,其长度;
2)控制PHY芯片;

PHY的功能

1)通过MII接受MAC的数据,并对数据进行进一步编码;
2)数字信号转化为模拟信号;

MAC和PHY的结构简图

一般的链路层和物理层实现方式有以下几种:
1)CPU集成MAC和PHY
2)CPU集成MAC,PHY采用外部芯片实现
3)CPU不集成MAC和PHY,MAC和PHY都通过外部芯片实现
一般采用的是第二种方法。 

PHY芯片

PHY芯片的主要功能就是将数据再次编码,然后数字信号转化为电信号。PHY一般有32个寄存器,其中的前16个寄存器是根据802.3协议定义的,后面的16个寄存器是芯片制造商定义的功能寄存器。下图是RTL8211FD芯片的系统框图:

 **驱动PHY芯片的驱动其实就是调用MAC控制器,通过SMI接口控制PHY芯片。在做协议适配的时候,主要就是通过MAC控制器与PHY芯片通信,来完成数据的控制。**详细的适配过程,可以参考和学习LWIP适配的详细讲解。

具体举例说明

下图是采用方案二的网口结构图.虚框表示CPU,MAC集成在CPU中.PHY芯片通过MII接口与CPU上的Mac连接.

 

在软件上对网口的操作通常分为下面几步:

  1. 为数据收发分配内存;
  2. 初始化MAC寄存器;
  3. 初始化PHY寄存器(通过MIIM);
  4. 启动收发;

 

1.MII

MII接口是MAC与PHY连接的标准接口.因为各厂家采用了同样的接口,用户可以根据所需的性能、价格,采用不同型号,甚至不同公司的phy芯片.

需要发送的数据通过MII接口中的收发两组总线实现.而对PHY芯片寄存器的配置信息,则通过MII总的一组串口总线实现,即MIIM(MII Management).

下表列出了MII总线中主要的一些引脚

PIN Name

Direction

Description

TXD[0:3]

Mac to Phy

Transmit Data

TXEN

Mac to Phy

Transmit Enable

TXCLK

Mac to Phy

Transmit Clock

RXD[0:3]

Phy to Mac

Receive Data

RXEN

Phy to Mac

Receive Enable

RXCLK

Phy to Mac

Receive Clock

MDC

Mac to Phy

Management Data Clock

MDIO

Bidirection

Management Data I/O

 MIIM只有两个线, 时钟信号MDC与数据线MDIO.读写命令均由Mac发起, PHY不能通过MIIM主动向Mac发送信息.由于MIIM只能有Mac发起, 我们可以操作的也就只有MAC上的寄存器.

2. DMA

收发数据总是间费时费力的事,尤其对于网络设备来说更是如此.CPU做这些事情显然不合适.既然是数据搬移, 最简单的办法当然是让DMA来做.毕竟专业的才是最好的.

这样CPU要做的事情就简单了.只需要告诉DMA起始地址与长度, 剩下的事情就会自动完成.

通常在MAC中会有一组寄存器专门用户记录数据地址, tbase与rbase, cpu按MAC要的格式把数据放好后, 启动MAC的数据发送就可以了.启动过程常会用到寄存器tstate.

3. MAC

CPU上有两组寄存器用与MAC.一组用户数据的收发,对应上面的DMA;一组用户MIIM,用户对PHY进行配置.两组寄存器由于都在CPU上,配置方式与其他CPU上寄存器一样,直接读写即可.数据的转发通过DMA完成.  

4. PHY

 

该芯片是一个10M/100M Ethernet网口芯片

PHY芯片有一组寄存器用户保存配置,并更新状态.CPU不能直接访问这组寄存器,只能通过MAC上的MIIM寄存器组实现间接访问.同时PHY芯片负责完成MII总线的数据与Media Interface上数据的转发.该转发根据寄存器配置自动完成,不需要外接干预.

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值