大漠 发表于 2024-1-28 14:54:39

MAC 与 PHY 组成原理的简单分析


作者:fireaxe_hq@hotmail.com

**1. general**

下图是网口结构简图。网口由 CPU、MAC 和 PHY 三部分组成。DMA 控制器通常属于 CPU 的一部分,用虚线放在这里是为了表示 DMA 控制器可能会参与到网口数据传输中。

![](https://file.mculoop.com/images/2024/01/16/202401160107973.png)

对于上述的三部分,并不一定都是独立的芯片,根据组合形式,可分为下列几种类型:

方案一:CPU 集成 MAC 与 PHY;

方案二:CPU 集成 MAC,PHY 采用独立芯片;

方案三:CPU 不集成 MAC 与 PHY,MAC 与 PHY 采用集成芯片;

本例中选用方案二做进一步说明,因为 CPU 总线接口很常见,通常都会做成可以像访问内存一样去访问,没必要拿出来说,而 MAC 与 PHY 之间的 MII 接口则需要多做些说明。

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

![](https://file.mculoop.com/images/2024/01/16/202401160109022.png)

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

1)为数据收发分配内存;

2)初始化 MAC 寄存器;

3)初始化 PHY 寄存器(通过 MIIM);

4)启动收发;



**2. MII**

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

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

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

| **PIN Name** | **Direction** | **Description**       |
| ------------ | ------------- | --------------------- |
| TXD   | MAC to PHY    | Transmit Data         |
| TXEN         | MAC to PHY    | Transmit Enable       |
| TXCLK      | MAC to PHY    | Transmit Clock      |
| RXD   | 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 上的寄存器。



**3. DMA**

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

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

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



**4. MAC**

![](https://file.mculoop.com/images/2024/01/16/202401160113135.png)

CPU 上有两组寄存器用与 MAC。一组用户数据的收发,对应上面的 DMA;一组用户 MIIM,用户对 PHY 进行配置。

两组寄存器由于都在 CPU 上,配置方式与其他 CPU 上寄存器一样,直接读写即可。

数据的转发通过 DMA 完成。



**5. PHY**

![](https://file.mculoop.com/images/2024/01/16/202401160114107.png)

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

PHY 芯片有一组寄存器用户保存配置,并更新状态。CPU 不能直接访问这组寄存器,只能通过 MAC 上的 MIIM 寄存器组实现间接访问。

同时 PHY 芯片负责完成 MII 总线的数据与 Media Interface 上数据的转发。该转发根据寄存器配置自动完成,不需要外接干预。



页: [1]
查看完整版本: MAC 与 PHY 组成原理的简单分析