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连接.

 

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

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

 

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上数据的转发.该转发根据寄存器配置自动完成,不需要外接干预.

 

 

精彩内容

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: