物理层的那些东西

  • 各种网线的特点;
  • 各种mii接口的特点;

他们的连接关系通常如下

1
双绞线->rj45接口->变压器->PHY->mii->MAC

就像我随便找的这张图

双绞线

类型

名称 描述 速率 传输距离
一类线 最早的电话线,只有两对线(一对收,一对发)
二类线 可以用于语音和数据传输,有三对线 4Mbps
三类线 被ANSI/TIA-568.C.2作为最低使用等级 10Mbps 100M
四类线 16Mbps
五类线 100Mbps 100M
超五类线(CAT5E) 从这里开始可以支持千兆,基本上够用了 1000Mbps 100M
六类线 新增十字骨架.因为线芯粗,水晶头会把相隔的线错开.勉强可以用超五类水晶头.其实靠谱的六类线就可以在100米内跑到万兆了. 1000Mbps 100M
超六类线(CAT6A) 好像新增一根抗拉线 1Gbps 100M
七类线 线很粗,水晶头难打 10Gbps 100M
超七类线(CAT7A) 线很粗,水晶头难打 10Gbps 100M
八类线 目前没有一个确定的标准 25G-40Gbps 30M

接线

水晶头不带卡扣那一面朝向我们时,从左到右分别是

标准 TX+ TX- RX+ 未使用 未使用 RX- 未使用 未使用
568A 白绿 绿 白橙 白蓝 白棕
568B 白橙 白绿 白蓝 绿 白棕

常用的是568B.

有4条线未使用,在百兆网络可以只连接4条,但是poe供电和千兆以上网络必须全连接.

可以注意到,rj45不需要时钟线.

PHY

IEEE802.3标准定义了三个组成PHY的主要子层

8B/10B编码和4B/5B编码

简单来说,就是因为一些物理原因,需要用10位数据来表示8位数据,会更有效率.而且能够在接收的时候从这些数据中得到时钟,而不需要额外的时钟线.

即使这么做会浪费20%的速率.

以下描述来自百度百科

8B/10B,也叫做8比特/10比特或8b10b。8b/10b方式最初由IBM公司于1983年发明并应用于ESCON(200M互连系统),由Al Widmer和Peter Franaszek在IBM的刊物“研究与开发”上描述。
8b/10b编码的特性之一是保证DC 平衡,采用8b/10b编码方式,可使得发送的“0”、“1”数量保持基本一致,连续的“1”或“0”不超过5位,即每5个连续的“1”或“0”后必须插入一位“0”或“1”,从而保证信号DC平衡,它就是说,在链路超时时不致发生DC失调。通过8b/10b编码,可以保证传输的数据串在接收端能够被正确复原,除此之外,利用一些特殊的代码( 在PCI-Express总线中为K码) ,可以帮助接收端进行还原的工作,并且可以在早期发现数据位的传输错误,抑制错误继续发生。
8b/10b编码是将一组连续的8位数据分解成两组数据,一组3位,一组5位,经过编码后分别成为一组4位的代码和一组6位的代码,从而组成一组10位的数据发送出去。相反,解码是将1组10位的输入数据经过变换得到8位数据位。数据值可以统一的表示为DX.Y或KX.Y,其中D表示为数据代码,K表示为特殊的命令代码,X表示输入的原始数据的低5位EDCBA,Y 表示输入的原始数据的高3位HGF。

4B/5B编码的出现也是类似原因.

PCS

物理编码子层(Physical Coding Sublayer)

主要作用是对数据进行编码和解码,比如负责转换上面所说的8B/10B编码.

因此,如果速率是100Mbps,那么这里实际通过的数据速率实际上是125Mbps.

他通过mii接口与mac层交互

PMA

物理介质连接子层(Physical Medium Attachment Layer)

将串行信号装换成并行信号.提供给PCS,或者反过来把从PCS来的并行信号装换成串行信号,传给PMD.

PMD

物理介质相关子层(Physical Medium Dependent Layer)

将串行信号传输到相应的物理介质上.

MII接口

MII是用于连接PHY和MAC的接口.

MDIO

所有接口除了下文所说的线以外还带MDIOMDC线.

通过这两条线MAC层可以控制PHY层的寄存器,并通过这些寄存器对物理层芯片进行控制和管理.

线 作用
MDC 时钟,和TX_CLK,RX_CLK无关系
MDIO 双向的数据线,在上升沿有效

MDIO管理接口的数据帧结构如下

内容 作用
PRE 32个连续的1 32个连续的1 前缀
ST 01 01
OP 10 01 操作码,用来表示读还是写
PHYAD 5位 5位 物理层芯片的地址,每个芯片都把自己的地址与这5个位进行比较.若匹配则响应后面的操作,否则忽略掉后面的操作.
REGAD 5位 5位 用来表示物理层芯片的32个寄存器中某个寄存器的地址
TA Z0 10 状态转换域,读操作时,第一位为高阻态,第二位由PHY置零;写操作时,由MAC输出10
DATA 16位 16位 数据域
IDLE 空闲 空闲 一半用上拉电阻使其出于高点平

速率对比

接口 速率 时钟 线
MII 10Mbps 2.5Mhz 16线
MII 100Mbps 25Mhz 16线
RMII 10Mbps 50Mhz 8线
RMII 100Mbps 50Mhz 8线
SMII 10Mbps 125Mhz 4线
SMII 100Mbps 125Mhz 4线
GMII 1000Mbps 125Mhz 24线
RGMII 10Mbps 2.5Mhz 16线
RGMII 100Mbps 25Mhz 16线
RGMII 1000Mbps 125Mhz 16线
SGMII 1000Mbps 625Mhz 至少2线

MII,所有变种的祖先

mii接口一共有16条线.

线 作用
TXD[3:0] 数据发送,共4条线
TX_CLK 接受数据参考时钟,在100Mbps下,时钟频率为25Mhz,10Mbps速率下,时钟频率为2.5Mhz
TX_EN 发送使能信号,只有在TX_EN有效期内传的数据才有效
TX_ER 发送数据错误提示信号,同步于TX_CLK,高电平有效.有效期内传输的数据无效.在10Mbps速率下不起作用
RXD[3:0] 数据接收,共4条线
RX_CLK 接收数据参考时钟,在100Mbps下,时钟频率为25Mhz,10Mbps速率下,时钟频率为2.5Mhz
RX_DV 接收使能信号,只有在RX_DV有效期内传的数据才有效
RX_ER 接收数据错误提示信号,同步于TX_CLK,高电平有效.有效期内传输的数据无效.在10Mbps速率下不起作用
CRS 载波侦测信号,不需要同步于参考时钟,只有PHY在半双工模式下有效
COL 冲突检测信号,不需要同步于参考时钟,只有PHY在半双工模式下有效

注意,这里的TX_CLK也是由PHY提供的.即使数据由MAC发送.

RMII

简化版的MII,减少到8根线.

线 作用
TXD[1:0] 数据发送,只有两条
TX_EN 发送使能信号
RXD[1:0] 数据接收,只有两条
RX_ER 接收数据错误提示信号
CLK_REF 由外部时钟提供的50Mhz时钟
CRS_DV 同时发送RX_DVCRS信号,MAC能够从中获得两个信号

这里注意,因为时钟总是50Mhz,那么两条数据线总能传100Mbps才对,为什么会有10Mbps的选项呢?

其实是在10Mbps速率时,TX/RX每隔10个周期采样一个数据,因而TX/RX数据需要在数据线上保留10个周期,相当于一个数据发送10次.

SMII及其后代

串行MII,也就是数据线只有一条,并且只需要四条线.

线 作用
TXD 发送数据
RXD 接收数据
SYNC 每10个时钟周期由PHY置为高点平,表示一组数据开始
CLK_REF 120Mhz,因为每8位数据中会插入2位控制信号,所以需要大于100Mhz

在发送数据上增加的数据是TX_ENTX_ER.

在接收数据上增加的数据是RX_DVCRS.

使用和RMII同样的方法来实现10Mbps.

SSMII

同步串行MII,收发使用独立的SYNCCLK,因此比SMII多两条线.

注意这个接口的SYNCCLK都是由PHY提供的,无论方向如何.

线 作用
TXD 发送数据
TX_CLK 发送时钟
TX_SYNC 发送同步时钟
RXD 接收数据
RX_CLK 接收时钟
RX_SYNC 接收同步时钟

SSSMII

源同步串行MII,和上一个SSMII的区别在于,发送方的SYNCCLKMAC提供.

线 作用
TXD 发送数据
TX_CLK 发送时钟
TX_SYNC 发送同步时钟
RXD 接收数据
RX_CLK 接收时钟
RX_SYNC 接收同步时钟

GMII及其后代

时钟频率提升到125Mbps,数据线变为8根,因此它能够达到千兆速度.

注意,这里的TX_CLK是由MAC提供的,这和MII不同.

同时他也兼容MII,这时候只使用4条数据线,并且时钟方向改变.

线 作用
TXD[7:0] 数据发送,共4条线
TX_CLK 接受数据参考时钟
TX_EN 发送使能信号,只有在TX_EN有效期内传的数据才有效
TX_ER 发送数据错误提示信号,同步于TX_CLK,高电平有效.有效期内传输的数据无效.
RXD[7:0] 数据接收,共4条线
RX_CLK 接收数据参考时钟
RX_DV 接收使能信号,只有在RX_DV有效期内传的数据才有效
RX_ER 接收数据错误提示信号,同步于TX_CLK,高电平有效.有效期内传输的数据无效.
CRS 载波侦测信号,不需要同步于参考时钟,只有PHY在半双工模式下有效
COL 冲突检测信号,不需要同步于参考时钟,只有PHY在半双工模式下有效

RGMII

简化的GMII,只有14条线.

线 作用
TXD[3:0] 数据发送,共4条线
TX_CLK 接受数据参考时钟
TX_EN 发送使能信号,只有在TX_EN有效期内传的数据才有效
RXD[3:0] 数据接收,共4条线
RX_CLK 接收数据参考时钟
RX_DV 接收使能信号,只有在RX_DV有效期内传的数据才有效
CRS 载波侦测信号,不需要同步于参考时钟,只有PHY在半双工模式下有效
COL 冲突检测信号,不需要同步于参考时钟,只有PHY在半双工模式下有效

时钟频率依旧是125Mbps,数据线减少为4条.

为了达到1000Mbps,它在上升沿下降沿都采样数据.

上升沿发送的数据相当于原本的TXD[3:0],下降沿发送的数据相当于原来的TXD[7:4].接收同理.

上升沿发送使能信息,下降沿发送错误信息,从而在一条线上发送使能和错误信息.

如果降低时钟频率为25Mhz和2.5Mhz,也可以实现100Mbps和10Mbps.

SGMII

串行的GMII,收发各一对差分信号线.时钟频率625Mhz,在上升沿和下降沿都采样.

CLK,但是有时候不使用,而是直接从数据中恢复出时钟.

因为每8位数据都需要插入2位数据(使能和错误),因此传输速率实际需要达到1250Mbps=625Mhz*2(两次采样).

这也就是为什么时钟频率是625Mbps.

线 作用
TXD 发送
TX_CLK 发送时钟
RXD 接收
RX_CLK 接收时钟

SGMII接口可以配置成SerDes接口,直接外接光模块.

这时候虽然没有使能信号和错误信号.但625Mhz的频率还是只能传1000Mbps的数据.

为什么这里会多用20%的频率呢?

因为这时候没有了PHY,需要直接接收8B/10B信号,传给MAC处理.

QSGMII

四个SGMII合在一起,实现一个5000Mbps的接口.

wlan 和 wifi

wlan是无线局域网,802.11是wlan的一个标准,wifi是802.11的一个实现.

各代wifi的特点

标准 年份 工作频段 理论速率
802.11 1997 2.4GHZ 2Mbps
802.11b 1999 2.4GHZ 11Mbps
802.11a 1999 5GHZ 54Mbps
802.11g 1999 2.4GHZ 54Mbps
WI-FI4 802.11n 2009 2.4GHZ and 5GHZ 600Mbps
WI-FI5 802.11ac Wave1 2013 5GHZ 3.47Gbps
WI-FI5 802.11ac Wave2 2015 5GHZ 6.9Gbps
WI-FI6 802.11ax 2018 2.4GHZ and 5GHZ 9.6Gbps

表面上看wifi5和wifi6的理论速率区别不大,但是大部分wifi5产品实际只能到达1Gbps,而wifi6设备确实能够达到理论速率.

实际上他们的带宽差距接近10倍.

注意wifi5只有5Ghz,观察openwrt的选项可以发现2.4Ghz只能设置成n或者ax.

2.4Ghz频段指的是$ [2.4,2.4835] $Ghz.

5Ghz频段指的是$ [5.15,5.35] GhzGhz和 [5.725,5.85] $Ghz.


物理层的那些东西
https://zzidun.tech/f8be8220/
作者
zzidun pavo
发布于
2022年3月1日
许可协议