Linux网卡驱动一硬件原理篇

1.网卡的基本构成

   1.1mac与phy

    要说网卡构成,我们先看看IEEE802对网络ISO模型的定义,网卡显然是物理层的东西由硬件实现。基本上网卡靠mac和phy组成。phy和mac可以是在一个芯片里,phy和mac也可以分开在俩个芯片里面,现在嵌入式的cpu里面都集成一个mac功能,如果需要网络功能可以在硬件设计时底板上集成phy。之所以cpu不把phy集成到内部,主要是因为phy属于模拟信号,到目前器件还做不小,我手套有一个ti的phy芯片,基本体积和一个stm32差不多大小,显然不适合集成到cpu内部。

  • PHY 是物理层,也称为 OSI 堆栈的第 1 层。它包括处理数据恢复的 PLL,并具有用于各种协议的编码器,并且它包含多个发送器/接收器对。多协议 PHY 需要支持不同的编码方案,例如曼彻斯特编码 (10 Mbps) 和 4B/5B 编码 (100 Mbps)。
  • MAC 是介质访问控制模块,负责处理流量控制、发送和接收缓冲区以及媒体独立接口 (MII) 管理逻辑。MAC 主要使用 802.3 以太网协议(也称为 OSI 网络堆栈的第 2 层)管理数据流。

  1. 网线 它按通信速度分类。
  2. RJ-45 以太网连接器。
  3. 脉冲变压器 它可以防止电流从外部直接流入并保护设备内部的电路。
  4. 物理层:电缆端的模拟信号与MAC(MCU/FPGA)端的数字信号相互转换。
  5. MAC:媒体访问控制器 控制与对方通信(通信控制)

1.2 mac和phy的通讯协议   (Media Independent Interface) 

       上面我们提到phy和mac可以分开,那他们之间必然有相关的通讯协议,到目前基本上有以下几种:MII、RMII、GMII、RGMII、SMII、SGMII。

  1. MII: 支持10M/100M,缺点是信号线太多,16根线。
  2. RMII: Reduced MII. 简化的MII,信号线少一倍,8根线,因此时钟也要快一倍。
  3. SMII: Serial MII. 比RMII信号线更少,4根线。
  4. GMII: Gigabit MII。也就是千兆接口了。 相对前面三个,数据从4bit变成8bit。时钟125MHz(1000/8)。缺点是信号线太多,24根线。
  5. RGMII: Reduced GMII。 简化版GMII,为了保持传输速率(1000Mbps)不变,在时钟上升沿和下降沿都采样。
  6. SGMII: Serial GMII。 时钟速率625MHz,所以能到1.2Gbps.

MII: Media Independent Interface


MII接口信号包括三类,分别为:

  • 发送端信号:TXCLKTXD[0-3]TXENTXER
  • 接收端信号:RXCLKRXD[0-3]RXDVRXERCRSCOL
  • 配置信号:MDIOMDC

信号方向如下图所示,其中 TXER 为选配。MII 共计 18 根信号线,只有 MDIO/MDC 信号可以在不同PHY间级联。假定系统中有 8 个PHY,则MII信号总数为 8*16 + 2 = 130 根!为减少信号数,RMII接口应运而生。

RMII: Reduced Media Independent Interface


相比于MII接口,RMII有以下四处变化:

  • TXCLK 和 RXCLK 两个时钟信号,合并为一个时钟 REFCLK

  • 时钟速率由 25MHz 上升到 50MHz,单向数据由 4 bits 变为 2 bits

  • CRS 和 RXDV 合并为一个信号 CRSDV

  • 取消了 COL 信号

RMII信号如下图所示。RMII只要 9 根信号线,相比于MII的 18 根信号可谓有不少的删减,在同一个系统中的多个设备可以共享 MDIOMDC 和 REFCLK 信号线。

GMII: Gigabit Media Independent Interface


GMII接口的数据速率可达 1000Mbps,其时钟频率为 125MHz ,单向数据位宽 8 bits。GMII向下兼容MII,可以像MII一样工作在 100Mbps 和 10Mbps 的数据速率。

GMII接口信号包括三类,分别为:

  • 发送端信号:GTXCLKTXCLKTXD[0-7]TXENTXER
  • 接收端信号:RXCLKRXD[0-7]RXDVRXERCRSCOL
  • 配置信号:MDIOMDC

发送端包括两个时钟信号 GTXCLK 和 TXCLK,当设备工作于 1000Mbps 模式时,TXD, TXEN, TXER 是与 GTXCLK (125MHz)同步的,而在 10/100Mbps 工作模式时,以上数据信号是同步于由PHY提供的TXCLK 的,其中 100Mbps 时是 25MHz10Mbps 时是 2.5MHz。接收端时钟只有一个时钟信号 RXCLK,它是从接收数据中恢复的时钟。

RGMII: Reduced Gigabit Media Independent Interface


RGMII相比于GMII减小将近一半的管脚数(24 → 12),通过以下两种方式:

  • 1000Mbps模式下,在时钟的上/下边沿均采样数据
  • 取消不重要的如 CRSCOL 等信号

在RGMII接口中 MAC 在 TXC 上一直提供时钟信号,而不像在GMII接口中那样,10/100Mbps 模式下时钟是由 PHY 提供(TXCLK),而 1000Mbps 模式下时钟是由 MAC 提供(GTXCLK)。在RGMII中应用到源同步时钟,即数据与时钟信号是同步的。这要求在PCB设计中,要对时钟信号额外增加 1.5~2 ns 的延迟以保证接收端的建立/保持时间满足要求。在 RGMII v2.0 规范中有定义MAC/PHY内部延迟(RGMII-ID),由此避免PCB设计中再要增加这个延迟。

在RGMII接口中:

  • 1000Mbps 模式,数据在时钟的上/下边沿均采样
  • 10/100Mbps 模式,数据仅在时钟上升沿采样

RXCTL 和 TXCLT 为复用的传输控制信号。RXCTL 在时钟的上升沿代表 RXDV,在时钟的下降沿代表(RXDV xor RXER);TXCTL 在时钟的上升沿代表 TXEN,在时钟的下降沿代表(TXEN xor TXER)。

RGMII v1.3 采用 2.5V CMOS 电平,RGMII v2 采用 1.5V HSTL 电平。

SGMII: Serial Gigabit Media Independent Interface


SGMII发送和接收时钟频率均为 625MHz,采用 DDR 模式,因此数据速率为1.25Gbps。SGMII相比于GMII,功耗更低,采用 SerDes 接口后管脚数更少。SGMII发送和接受数据各 1 对差分信号(LVDS),另外还有 1 对差分时钟,共 6 根线。对于 MAC/PHY 中包括时钟恢复电路(CDR, Clock and Data Recovery circuitry )的系统,TXCLK 可以省略,SGMII接口只需要 4 根线,相比于GMII( 24 根)和RGMII( 12 根)信号线大大减少!

TX/RX在数据发送端必须同时产生时钟,而接收端的时钟是可选的,因为可以通过 CDR 恢复时钟。在 10/100Mbps 工作模式下,数据分别重复发送 100/10 次,因此时钟always是 625MHz

图6. SGMII Interface

MDIO

如上文所述,MDIO用于上层(MAC)配置底层(PHY)的参数,它包括时钟信号 MDC 和数据信号 MDIO 。如果系统中不止一个PHY,在使用同一组MDIO信号以级联方式配置PHY时,需要通过PHY芯片管脚的 Strap 来寻址不同芯片。PHY芯片的物理地址Strap管脚一般与 RXD 管脚复用。在MDIO规范中定义PHY地址为 5 bit,即同一组MDIO最多可配置 2^5 = 32 个PHY。图10表示MDIO配置的时序图。

注意,这里提到的PHY芯片Strap的物理地址仅与MDIO的配置过程寻址有关,和通常意义上的 MAC 地址没有任何关系。

参考资料

  1. Media-independent interface -Wikipedia
  2. IEEE 802.3 Ethernet Presentation
  3. Ethernet Media Access Controller (EMAC)/ Management Data Input/Output (MDIO) Module -TI
  4. DP83867E/IS/CS Robust, High Immunity, Small Form Factor 10/100/1000 Ethernet Physical Layer Transceiver -TI
  5. XGMII Update -IEEE 802
  6. XAUI/XGXS Proposal -IEEE 802
  7. Overview of 10G Ethernet Family -IEEE 802
  8. Media Independent Interface – 第22条军规

  • 5
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值