3. 调制与编码技术:从模拟到数字,从原始到可靠

各位同学,咱们今天聊的这块,是整个无线通信的「灵魂」所在。说白了,天线里飘的电磁波本身不会说话,它只会傻乎乎地振荡。你要让信息「骑」上去,就得靠调制。而要让信息在噪声堆里还能被完整捡回来,就得靠编码。

我当年刚入行时,总觉得这些是课本上的数学游戏。直到有一次在工厂调试一款433MHz的无线模块,死活连不上,最后发现是调制方式选错了。嗯,从那以后,我再也不敢小看这一章了。

3.1 模拟调制:老前辈的看家本领

模拟调制,就是把连续的语音、音乐信号直接「搬」到高频载波上。虽然现在物联网里纯模拟传输越来越少,但它的思想是所有数字调制的基础。

3.4.1 调幅(AM)

调幅的原理很简单:让载波的幅度跟着原始信号走。你说话声音大,载波幅度就高;声音小,幅度就低。

  • 优点:实现简单,接收机成本极低。
  • 缺点:抗噪声能力差,功率效率低(大部分功率浪费在载波上)。
我的经验: 在早期的航空通信里,AM还在用。为什么?因为多架飞机同时发信号时,AM会叠加出可辨识的混音,而FM只会锁住最强的那个。这叫「捕获效应」,选调制方式时一定要想清楚场景。

3.4.2 调频(FM)

调频让载波的频率随信号变化,幅度保持不变。这招很聪明——因为大多数噪声是幅度干扰,FM接收机可以靠限幅器把噪声削掉。

  • 优点:抗噪声能力强,音质好。
  • 缺点:占用带宽大(大约是AM的10倍以上)。

你想想看,为什么FM广播的音质比AM好那么多?就是这个道理。但代价是频谱资源吃得多,物联网这种窄带场景很少用纯FM。

3.2 数字调制:把0和1变成波形

物联网里跑的都是数字信号。数字调制,本质上就是用载波的某个参数(幅度、频率、相位)来表示0和1。我个人习惯把数字调制分成两类:一类是「简单粗暴」的,一类是「精打细算」的。

3.2.1 ASK(幅移键控)

ASK就是数字版的AM。载波有幅度代表1,没幅度代表0。简单吧?

// 伪代码示意:ASK调制
if (bit == 1) {
    output = A * cos(2 * PI * fc * t);
} else {
    output = 0;
}
避坑指南: 我曾经在一个低成本门禁项目里用ASK,结果在电机启动时,模块直接断连。因为ASK太容易被幅度噪声干扰了。后来我换成了FSK,问题解决。记住:ASK只适合信噪比极高的场景。

3.2.2 FSK(频移键控)

FSK用两个不同的频率代表0和1。比如f1=433.0MHz代表0,f2=433.1MHz代表1。

  • 优点:抗幅度干扰能力强,实现简单。
  • 缺点:频谱效率低(两个频率占两倍带宽)。

LoRa技术里用的就是FSK的变种——GFSK(高斯频移键控)。它在频率跳变前加了个高斯滤波器,让频谱更集中,减少对邻道的干扰。

3.2.3 PSK(相移键控)

PSK通过改变载波的相位来传递信息。最简单的BPSK:0°相位代表0,180°相位代表1。

为什么会用相位?因为相位不容易被幅度噪声破坏。同样的信噪比下,BPSK的误码率比ASK低得多。

调制方式 每符号比特数 抗噪声能力 典型应用
BPSK 1 强 卫星通信、RFID
QPSK 2 中 Wi-Fi 4、数字电视
8-PSK 3 弱 部分老旧卫星系统

3.2.4 QAM(正交幅度调制)

QAM是「精打细算」的典型。它同时改变载波的幅度和相位,一个符号就能携带多个比特。比如16-QAM,一个符号代表4个比特。

我建议你记住这个规律:QAM的阶数越高,频谱效率越高,但对信噪比的要求也越苛刻。64-QAM需要比16-QAM高出约8dB的信噪比才能达到同样的误码率。

核心要点: 选择调制方式就是在「速率」和「可靠性」之间做权衡。LoRa用扩频调制换来了超远距离,但速率极低;Wi-Fi 6用1024-QAM换来了高速率,但覆盖范围有限。

3.3 信道编码:给数据穿上防弹衣

调制是把信息变成波形,编码则是给信息加上冗余,让接收端能发现甚至纠正错误。说白了,就是故意多发几个「校验位」,让数据在噪声里也能存活下来。

3.3.1 卷积码

卷积码不像分组码那样把数据切成独立块,而是让编码器的输出不仅依赖当前输入,还依赖之前若干时刻的输入。它有个「记忆」。

// 一个简单的(2,1,3)卷积码编码器示意
// 约束长度K=3,码率1/2
// 生成多项式:g1 = 111 (octal 7), g2 = 101 (octal 5)

void conv_encoder(int input_bit, int *state) {
    int g1 = (input_bit ^ state[0] ^ state[1]);  // 多项式111
    int g2 = (input_bit ^ state[1]);              // 多项式101
    // 输出两个编码比特
    output[0] = g1;
    output[1] = g2;
    // 更新状态
    state[1] = state[0];
    state[0] = input_bit;
}

解码时常用Viterbi算法。我记得第一次手写Viterbi解码器时,被那个网格图绕晕了。后来发现,其实就是「找最短路径」——跟导航软件找路一个道理。

我的习惯: 在物联网项目里,如果信道条件比较稳定(比如室内),我会选约束长度K=7的卷积码,码率1/2。这是经典配置,性能够用,解码复杂度也不高。

3.3.2 Turbo码

Turbo码是卷积码的「进化版」。它用两个并行的卷积编码器,中间加一个交织器,解码时两个解码器互相交换「软信息」,迭代多次逼近最优解。

说白了,就是让两个解码器互相「商量」:你觉得这个比特是1的概率有多大?我觉得是0.8,你呢?哦你说是0.9,那好,我信你。

  • 优点:性能接近香农极限(信道容量的理论上限)。
  • 缺点:解码延迟大,计算复杂度高。

3G/4G移动通信里大量使用Turbo码。但在物联网的低功耗场景里,Turbo码有点「太重了」。所以NB-IoT和LTE-M里更多用卷积码或LDPC码。

3.4 知识体系总览

下面这张图,是我梳理的本章知识结构。你可以把它当作一张「地图」,随时回来对照。

调制与编码技术知识体系 调制与编码 模拟调制 数字调制 信道编码 AM FM ASK FSK PSK QAM 卷积码 Turbo码 📌 关键选择逻辑 • 低速率、远距离、低功耗 → 选FSK或扩频调制(如LoRa) • 高速率、短距离、高信噪比 → 选QAM(如Wi-Fi) • 信道噪声大、需要纠错 → 加卷积码或Turbo码 • 解码延迟敏感 → 优先卷积码,避免Turbo码

好了,这一章的内容就到这里。调制和编码是物联网通信的「任督二脉」,打通了,后面看协议栈就会轻松很多。下次你在调试无线模块时,不妨先问问自己:我选的调制方式适合这个信道吗?编码冗余够不够?想清楚这两个问题,很多坑就能提前避开。