2. 物理层基础:信号与介质、编码与调制、物理层接口标准、常见物理层协议

物理层,说白了就是协议栈的最底层。它不关心你传的是TCP报文还是UDP数据,它只负责把0和1变成能在线缆或空气中传播的物理信号。我刚开始做嵌入式通信时,总觉得这层太“硬”,不如上层协议灵活。后来被一个现场问题折腾了三天——嗯,从那以后我再也不敢小看物理层了。

2.1 信号与传输介质

信号分两种:模拟信号和数字信号。模拟信号连续变化,像老式电话线上的话音;数字信号只有高低电平,像GPIO口输出的方波。我们做协议栈的,打交道最多的是数字信号,但传输过程中它会被干扰、衰减,变成“模拟样”。

核心概念:物理层的任务就是把数字比特流转换成适合信道传输的信号,并在接收端还原回来。这个过程叫“比特传输”。

2.1.1 常见传输介质

我列个表,把常用的介质和特点说清楚。你在项目中选型时,直接对照这个表就行。

介质类型 典型速率 最大距离 抗干扰能力 典型应用
双绞线(Cat5e/6) 100 Mbps – 10 Gbps 100 m 中等(需屏蔽) 以太网、电话线
同轴电缆 10 Mbps – 1 Gbps 500 m 较强 有线电视、早期以太网
光纤(单模) 10 Gbps – 400 Gbps 40 km+ 极强(不受电磁干扰) 骨干网、数据中心
光纤(多模) 1 Gbps – 100 Gbps 550 m 强 局域网、机房互联
无线(2.4/5 GHz) 54 Mbps – 9.6 Gbps 几十米(视环境) 弱(易受干扰) Wi-Fi、蓝牙

我的经验:选介质时别只看速率。我曾经在一个工厂项目里用了普通双绞线,结果电机一启动,通信就断。后来换成屏蔽双绞线(STP),问题立刻解决。工业环境,屏蔽和接地比速率更重要。

2.2 编码与调制

编码和调制,这两个词经常被混用。我简单区分一下:编码是把数字数据变成数字信号(比如曼彻斯特编码),调制是把数字数据变成模拟信号(比如QAM)。

2.2.1 常用编码方式

你想想看,如果直接传0和1的电压,接收端怎么知道什么时候开始、什么时候结束?所以需要编码来提供时钟同步和信号边界。

  • NRZ(不归零编码):1高电平,0低电平。简单,但连续相同比特时容易失步。我早期做串口时用过,后来发现长数据包经常出错。
  • 曼彻斯特编码:每个比特中间有跳变,1是下降沿,0是上升沿。自带时钟,但带宽翻倍。以太网10BASE-T就用它。
  • 4B/5B编码:每4位数据映射成5位码字,保证不会出现连续3个0。100BASE-TX以太网在用。
  • 8B/10B编码:每8位映射成10位,直流平衡好。PCIe、SATA、千兆以太网都用它。

避坑指南:我曾经在一个FPGA项目里自己实现了NRZ编码,结果接收端锁相环老是失锁。后来换成曼彻斯特编码,问题立刻消失。记住:时钟恢复是物理层设计的头号难题,别为了省带宽牺牲可靠性。

2.2.2 调制技术

当信号要通过无线或光纤传输时,我们需要把数字比特“骑”在载波上。这就是调制。

调制方式 原理 速率/带宽效率 抗噪声能力 典型应用
ASK(幅移键控) 改变载波幅度 低 弱 光纤(早期)、RFID
FSK(频移键控) 改变载波频率 中 较强 蓝牙、电话线调制解调器
PSK(相移键控) 改变载波相位 中高 强 Wi-Fi(BPSK/QPSK)、卫星通信
QAM(正交幅度调制) 同时改变幅度和相位 高(如256-QAM每符号8比特) 弱(需要高信噪比) 4G/5G、Wi-Fi 6、有线电视

关键理解:调制阶数越高,每符号携带的比特越多,但抗噪声能力越差。256-QAM需要信噪比约30 dB才能正常工作,而BPSK只要10 dB。这就是为什么信号不好时,Wi-Fi会自动降速——它从高阶QAM降到了BPSK。

2.3 物理层接口标准

物理层接口标准定义了连接器形状、引脚定义、电气特性(电压、电流、时序)。我见过不少工程师,协议栈调通了,但接口电平不匹配,烧了芯片。所以这部分必须重视。

2.3.1 常见接口标准对比

接口标准 信号类型 电压范围 最大速率 典型用途
RS-232 单端 ±3V ~ ±15V 115.2 kbps 串口调试、老式Modem
RS-485 差分 ±1.5V ~ ±6V 10 Mbps 工业总线、Modbus
LVDS 差分 ±350 mV 3.125 Gbps 液晶屏接口、高速背板
MII(介质独立接口) 数字并行 3.3V / 2.5V 100 Mbps 以太网MAC到PHY
RGMII(简化千兆MII) 数字并行 2.5V / 1.8V 1 Gbps 千兆以太网MAC到PHY

我的习惯:做板级设计时,我会在原理图上把接口标准的电压范围标出来。特别是RS-232和LVDS,一个±15V,一个±350mV,接反了直接冒烟。我吃过一次亏,后来再也不敢马虎。

2.4 常见物理层协议——以太网物理层

以太网物理层是咱们最常打交道的。从10BASE-T到25GBASE-T,物理层标准一直在演进,但核心结构没变。

2.4.1 以太网物理层结构

一个完整的以太网PHY芯片内部包含:

  • PCS(物理编码子层):负责编码(如8B/10B、64B/66B)
  • PMA(物理介质附加子层):负责串行化/解串行化(SerDes)
  • PMD(物理介质相关子层):负责信号发送/接收,与具体介质打交道
  • MDI(介质相关接口):就是RJ45连接器或光纤接口

下面这张图把以太网物理层的分层结构画清楚了。你调试PHY芯片时,按这个层次逐级排查问题。

以太网物理层分层结构 MAC 层(介质访问控制) MII / RMII / RGMII 接口 PCS(物理编码子层) 编码/解码 · 8B/10B · 64B/66B PMA(物理介质附加子层) SerDes · 时钟恢复 · 均衡 PMD(物理介质相关子层) 信号发送/接收 · 线路驱动 MDI(介质相关接口) 传输介质(双绞线 / 光纤 / 背板) 调试PHY芯片时,从MDI往MAC方向逐级排查:信号幅度 → 时钟恢复 → 编码错误 → 接口时序

2.4.2 常见以太网物理层标准

标准 速率 编码方式 介质 最大距离
10BASE-T 10 Mbps 曼彻斯特编码 Cat3+ 双绞线 100 m
100BASE-TX 100 Mbps 4B/5B + MLT-3 Cat5 双绞线 100 m
1000BASE-T 1 Gbps 4D-PAM5 Cat5e 双绞线 100 m
10GBASE-T 10 Gbps DSQ128 + LDPC Cat6a/Cat7 双绞线 100 m
1000BASE-SX 1 Gbps 8B/10B 多模光纤 550 m
10GBASE-SR 10 Gbps 64B/66B 多模光纤 300 m

避坑指南:我曾经在一个项目里用了Cat5e线缆跑1000BASE-T,结果丢包率高达5%。查了半天,发现是线缆质量不达标——Cat5e虽然标称支持千兆,但实际需要四对线全部正常工作。很多便宜的Cat5e线缆只有两对线是好的。后来我换用Cat6,问题解决。所以,千兆以上以太网,线缆质量是最大的坑。

2.5 物理层调试实战要点

最后,我分享几个物理层调试的实战经验。这些不是书本上能学到的,都是踩坑踩出来的。

  1. 先看眼图:用示波器看PHY芯片输出端的眼图。眼睛睁得越大,信号质量越好。如果眼图闭合,先查电源纹波和PCB走线阻抗。
  2. 检查时钟抖动:物理层对时钟抖动非常敏感。我曾经遇到一个案例,PHY芯片偶尔断连,最后发现是晶振的相位噪声超标。换了个低抖动晶振,问题消失。
  3. 确认MDI/MDIX:现在的PHY芯片大多支持自动翻转,但老设备不行。如果直连不通,试试交叉线。我习惯在调试时先强制设置MDI模式,排除自动协商的问题。
  4. 看寄存器:PHY芯片内部有大量状态寄存器。比如链路状态寄存器(0x01)、协商能力寄存器(0x04)、错误计数器(0x10)。调试时先读这些寄存器,比瞎猜快得多。

总结一句话:物理层是协议栈的基石。信号质量不好,上层协议再优化也没用。我见过太多团队在上层调TCP参数,结果问题出在网线接触不良。所以,做协议栈的工程师,一定要懂物理层。