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芯片时,按这个层次逐级排查问题。
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 物理层调试实战要点
最后,我分享几个物理层调试的实战经验。这些不是书本上能学到的,都是踩坑踩出来的。
- 先看眼图:用示波器看PHY芯片输出端的眼图。眼睛睁得越大,信号质量越好。如果眼图闭合,先查电源纹波和PCB走线阻抗。
- 检查时钟抖动:物理层对时钟抖动非常敏感。我曾经遇到一个案例,PHY芯片偶尔断连,最后发现是晶振的相位噪声超标。换了个低抖动晶振,问题消失。
- 确认MDI/MDIX:现在的PHY芯片大多支持自动翻转,但老设备不行。如果直连不通,试试交叉线。我习惯在调试时先强制设置MDI模式,排除自动协商的问题。
- 看寄存器:PHY芯片内部有大量状态寄存器。比如链路状态寄存器(0x01)、协商能力寄存器(0x04)、错误计数器(0x10)。调试时先读这些寄存器,比瞎猜快得多。
总结一句话:物理层是协议栈的基石。信号质量不好,上层协议再优化也没用。我见过太多团队在上层调TCP参数,结果问题出在网线接触不良。所以,做协议栈的工程师,一定要懂物理层。