您的位置  > 互联网

phy芯片和emac驱动如何兼容10/100/1000M网络环境

网络中的设备侧数据链路层由mac芯片和phy芯片组成。 phy芯片根据外部网络环境完成自动协商和配置。 驱动根据phy状态配置mac,实现phy和mac的相互配合。

目前主流的网卡phy芯片有100M和1000M,两者都是向下兼容的。 100M phy 支持10/100M 环境,1000M phy 支持10/100/1000M 环境。

首先,10/100/1000M指的是数据发送和接收速率,单位是bps。 那么这里就要从mac和phy的数据发送和接收接口开始说起。

mac和phy之间主流的数据接口有GMII MII RMII等,接口规范中定义了数据发送和接收信号线的数量。 接口定义可以阅读这篇文章:

以GMII/MII为例进行研究。 GMII 有 8 条 rx/tx 线,MII 有 4 条 rx/tx 线。

首先,研究外部芯片。 phy与外部网络环境完成自动协商以确定自身的速度。 100M phy均支持MII接口,因此mac侧需要使用MII接口定义与phy连接。

数据发送和接收最重要的是提供正确的数据时钟,以保证数据的正确采样和发送。

对于100M phy,这个问题很容易解决,因为MII接口支持10/100M,4条数据线,只需要mac为phy提供2.5/25MHZ数据时钟。

最值得研究的是连接外部1000M phy时如何适应10/100/1000M网络环境。

首先,这是一个落后的过程。 首先,让我们看看 phy 如何处理 10/100M 和 1000M 环境。 mac的接口模式和时钟根据phy配置进行配置。

随机找到一块1000M的phy芯片,GMII/MII接口的说明如下:

根据这个描述,GMII接口模式支持1000M环境,但在10/100M环境下,phy完成自动协商确定为10/-TX后,切换到MII模式。 GMII引脚与MII兼容(MII下4条8条数据线未使用),GMII接口定义中有2条clk线,(GMII/MII下rx clk由phy提供),在GMII中提供模式,MII模式下提供2.5/25MHZ。 下面是mac和1000M phy之间的硬件电路连接图。

可以看出,对于1000M phy,需要连接mac。 在10/100/1000M环境下,我使用示波器测量clk,如上所述。

总结,

对于100M phy,外网10/100M切换只需要改变mac提供的数据时钟。 由于MII兼容10/100M,mac接口模式保持不变。

对于1000M phy,切换外网10/100/1000M时,首先需要更改mac的接口模式(使用的数据线数量不同),因为10/100M phy下会切换到MII模式,其数据会根据接口模式而改变。 钟。

当然,phy的自动协商完成后,其硬件逻辑会完成模式GMII/MII的转换。 对于mac来说,驱动程序必须根据phy的工作状态来确定mac的接口模式以及需要提供的clk。

这也是我们软件开发者最需要关注的。 根据phy的状态,如何配置mac(接口模式数据时钟)以保证与phy的一致。