这两天修改网卡驱动以实现10/100/1000M自适应,因此研究了下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等。接口规范中定义了数据收发信号线个数。接口定义可以看这篇文章:
http://blog.csdn.net/skyflying2012/article/details/8252843

以GMII/MII为例来研究,GMII是有8根rx/tx线,MII有4根rx/tx线。
首先以外接100Mphy芯片来研究。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芯片的datasheet,RTL88E1111,对于GMII/MII接口的描述如下:

根据这段描述看出,GMII接口模式支持1000M环境,但是在10/100M环境下phy完成自动协商确定为10/100BASE-TX后就切换为MII模式,GMII引脚都是与MII兼容的(MII下8根数据线有4根不用),GMII接口定义中有2个clk线,GTX_CLK TX_CLK(GMII/MII下rx clk由phy提供),GTX_CLK在GMII模式下提供125MHZ,TX_CLK在MII模式下提供2.5/25MHZ。下面给出一个mac与1000M phy硬件电路连接图。

可以看出对于1000M phy,GTX_CLK TX_CLK都需要与mac相连,在10/100/1000M环境下我分别用示波器测量clk的确如上所说。

综上,

对于100M phy,外部网络10/100M切换,仅需要改变mac提供的数据时钟即可,mac接口模式不变,因为MII兼容10/100M。

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

当然phy在自动协商完成后是其硬件逻辑会完成模式GMII/MII的转换,而对于mac,则要由驱动根据phy的工作状态来确定mac的接口模式以及需要提供的clk。
这也是我们软件开发人员最需要关注的地方,根据phy的状态,如何配置mac(接口模式 数据时钟)来保证与phy一致。

mac与phy如何实现网络自适应相关推荐

  1. 网络编程入门教程01——网卡(MAC与PHY)

    由于自己是首次接触网络编程,所以本专栏与其说是一个教程,不如说是学习分享.我的写作目的是尽力简洁有效生动地介绍网络编程的内容,使看到本文章的入门读者不至于望而却步. 1. OSI七层网络模型 在介绍本 ...

  2. 网卡介绍——MAC与PHY的关系分析

    (一) 网卡初步认识 网络适配器又称网卡或网络接口卡(NIC),英文名Network Interface Card.它是使计算机联网的设备.平常所说的网卡就是将PC机和LAN连接的网络适配器.网卡(N ...

  3. Ksz8081目前为MICROCHIP主推的PHY芯片之一,原为MICREL公司设计;芯片分为MII接口型号,RMII接口型号,分了两种不同的产品型号。enc28j60集成了MAC和PHY芯片

    从硬件的角度看,以太网接口电路主要由 MAC(Media Access Control,MAC)控制器和物理层接口 PHY(Physical Layer,PHY)两大部分构成.如下图所示: Ksz80 ...

  4. 转载:网口扫盲三:以太网芯片MAC和PHY的关系

    原文地址:http://www.cnblogs.com/jason-lu/articles/3195473.html 问:如何实现单片以太网微控制器? 答:诀窍是将微控制器.以太网媒体接入控制器(MA ...

  5. 太网设计FAQ:以太网MAC和PHY

    问:如何实现单片以太网微控制器? 答:诀窍是将微控制器.以太网媒体接入控制器(MAC)和物理接口收发器(PHY)整合进同一芯片,这样能去掉许多外接元器件.这种方案可使MAC和PHY实现很好的匹配,同时 ...

  6. 有关MAC、PHY和MII

    这是一篇转载,原文链接:http://www.cppblog.com/totti1006/archive/2008/04/22/47829.html 以太网(Ethernet)是一种计算机局域网组网技 ...

  7. 【NanoPi T2】 5.uboot gmac网卡驱动(1) - mac控制器,phy芯片,rgmii协议

    1.mac控制器,phy芯片,rgmii协议 2.寄存器介绍 3.驱动源码解析 4.nanopi t2 移植rtl8211e网卡驱动(首发) 硬件构成部分 以太网卡或者是ARM开发板的网络部分通常由M ...

  8. 以太网芯片MAC和PHY

    网口扫盲三:以太网芯片MAC和PHY的关系 问:如何实现单片以太网微控制器? 答:诀窍是将微控制器.以太网媒体接入控制器(MAC)和物理接口收发器(PHY)整合进同一芯片,这样能去掉许多外接元器件.这 ...

  9. 网卡构造:MAC与PHY的关系,GMAC介绍

    GMAC:千兆网媒体访问控制 GMAC接口(1)--GMAC简介_daikaimiao的博客-CSDN博客_gmac GMAC接口(2)--协议_daikaimiao的博客-CSDN博客_gmac协议 ...

最新文章

  1. 10.原码 反码 补码
  2. java学习论坛汇总
  3. pipenv相关指令
  4. python idle运行anaconda_在Python IDLE 下调用anaconda中的库教程
  5. Ubuntu 14.04 下 Virtual Judge 的搭建
  6. ASP.Net WebForm温故知新学习笔记:二、ViewState与UpdatePanel探秘
  7. [原创]MYSQL周期备份shell脚本
  8. php错误日志框架,错误与日志 - Laravel - 为 WEB 艺术家创造的 PHP 框架。
  9. html5 web报表工具,Web报表工具的填报功能
  10. 用R语言进行Cox回归生存分析
  11. 斯坦福、康奈尔都推荐的量子计算课程教材:《量子计算》
  12. Shiro整合JWT实现认证和权限鉴定(执行流程清晰详细)
  13. android:ems什么意思
  14. 交通灯控制系统(30-5-20-5)【数电课设】
  15. 内部系统自己搭建还是花钱购买?这是一个问题
  16. 90% 都会的 ES6 简化代码技巧,你用过哪些?
  17. asp.net强大工作流引擎,learun助力开发升级
  18. win10怎么放计算机在桌面,win10怎么把此电脑放到桌面_w10如何把此电脑添加到桌面...
  19. 意迷观看欧冠决赛慌乱踩踏 公共安防再次升级
  20. iOS - AliPay 支付宝支付

热门文章

  1. 6.2 常见多媒体标准及压缩技术
  2. 洛谷 P1340 兽径管理
  3. 【转】wordpress/wp-includes目录文件概述
  4. npm升级package.json依赖包
  5. iOS 够逼格的注释总结
  6. ASP.NET Web API 应用教程(一) ——数据流使用
  7. 写在SDOI2016Round1前的To Do List
  8. 13 个超炫的 Conky 配置
  9. sublime 无法下载插件解决办法(亲测有效)
  10. ShopXO本地化部署安装之centeros 安装Apache2.4.6 + PHP7.0.33 + Mysql5.7.25环境