网站地址结构,做网站还有开发文档吗,wordpress网站变慢,公司做网站怎么收费Mac与Phy组成原理的简单分析 2011-12-28 15:30:43 //http://blog.chinaunix.net/uid-20528014-id-3050217.html 本文乃fireaxe原创#xff0c;使用GPL发布#xff0c;可以自由拷贝#xff0c;转载。但转载请保持文档的完整性#xff0c;并注明原作者及原链接。内容可任意使…Mac与Phy组成原理的简单分析 2011-12-28 15:30:43 //http://blog.chinaunix.net/uid-20528014-id-3050217.html 本文乃fireaxe原创使用GPL发布可以自由拷贝转载。但转载请保持文档的完整性并注明原作者及原链接。内容可任意使用但对因使用该内容引起的后果不做任何保证。 作者fireaxe_hqhotmail.com 博客fireaxe.blog.chinaunix.net Mac与Phy组成原理的简单分析 1 1.general 下图是网口结构简图。网口由CPU、MAC和PHY三部分组成。DMA控制器通常属于CPU的一部分用虚线放在这里是为了表示DMA控制器可能会参与到网口数据传输中。 对于上述的三部分并不一定都是独立的芯片根据组合形式可分为下列几种类型 方案一CPU集成MAC与PHY 方案二CPU集成MACPHY采用独立芯片 方案三CPU不集成MAC与PHYMAC与PHY采用集成芯片 本例中选用方案二做进一步说明因为CPU总线接口很常见通常都会做成可以像访问内存一样去访问没必要拿出来说而Mac与PHY之间的MII接口则需要多做些说明。 下图是采用方案二的网口结构图。虚框表示CPUMAC集成在CPU中。PHY芯片通过MII接口与CPU上的Mac连接。 在软件上对网口的操作通常分为下面几步 1 1) 为数据收发分配内存 2 2) 初始化MAC寄存器 3 3) 初始化PHY寄存器通过MIIM 4) 启动收发 2.2. MII MII接口是MAC与PHY连接的标准接口。因为各厂家采用了同样的接口用户可以根据所需的性能、价格采用不同型号甚至不同公司的phy芯片。 需要发送的数据通过MII接口中的收发两组总线实现。而对PHY芯片寄存器的配置信息则通过MII总的一组串口总线实现即MIIMMII 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上的寄存器。 3. 3.DMA 收发数据总是间费时费力的事尤其对于网络设备来说更是如此。CPU做这些事情显然不合适。既然是数据搬移最简单的办法当然是让DMA来做。毕竟专业的才是最好的。 这样CPU要做的事情就简单了。只需要告诉DMA起始地址与长度剩下的事情就会自动完成。 通常在MAC中会有一组寄存器专门用户记录数据地址tbase与rbasecpu按MAC要的格式把数据放好后启动MAC的数据发送就可以了。启动过程常会用到寄存器tstate。 4.4. MAC CPU上有两组寄存器用与MAC。一组用户数据的收发对应上面的DMA一组用户MIIM用户对PHY进行配置。 两组寄存器由于都在CPU上配置方式与其他CPU上寄存器一样直接读写即可。 数据的转发通过DMA完成。 5.5. PHY 该芯片是一个10M/100M Ethernet网口芯片 PHY芯片有一组寄存器用户保存配置并更新状态。CPU不能直接访问这组寄存器只能通过MAC上的MIIM寄存器组实现间接访问。 同时PHY芯片负责完成MII总线的数据与Media Interface上数据的转发。该转发根据寄存器配置自动完成不需要外接干预。 本文乃fireaxe原创使用GPL发布可以自由拷贝转载。但转载请保持文档的完整性并注明原作者及原链接。内容可任意使用但对因使用该内容引起的后果不做任何保证。 作者fireaxe_hqhotmail.com 博客fireaxe.blog.chinaunix.net