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]