3. 调制与编码技术:从模拟到数字,从原始到可靠
各位同学,咱们今天聊的这块,是整个无线通信的「灵魂」所在。说白了,天线里飘的电磁波本身不会说话,它只会傻乎乎地振荡。你要让信息「骑」上去,就得靠调制。而要让信息在噪声堆里还能被完整捡回来,就得靠编码。
我当年刚入行时,总觉得这些是课本上的数学游戏。直到有一次在工厂调试一款433MHz的无线模块,死活连不上,最后发现是调制方式选错了。嗯,从那以后,我再也不敢小看这一章了。
3.1 模拟调制:老前辈的看家本领
模拟调制,就是把连续的语音、音乐信号直接「搬」到高频载波上。虽然现在物联网里纯模拟传输越来越少,但它的思想是所有数字调制的基础。
3.4.1 调幅(AM)
调幅的原理很简单:让载波的幅度跟着原始信号走。你说话声音大,载波幅度就高;声音小,幅度就低。
- 优点:实现简单,接收机成本极低。
- 缺点:抗噪声能力差,功率效率低(大部分功率浪费在载波上)。
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;
}
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的信噪比才能达到同样的误码率。
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解码器时,被那个网格图绕晕了。后来发现,其实就是「找最短路径」——跟导航软件找路一个道理。
3.3.2 Turbo码
Turbo码是卷积码的「进化版」。它用两个并行的卷积编码器,中间加一个交织器,解码时两个解码器互相交换「软信息」,迭代多次逼近最优解。
说白了,就是让两个解码器互相「商量」:你觉得这个比特是1的概率有多大?我觉得是0.8,你呢?哦你说是0.9,那好,我信你。
- 优点:性能接近香农极限(信道容量的理论上限)。
- 缺点:解码延迟大,计算复杂度高。
3G/4G移动通信里大量使用Turbo码。但在物联网的低功耗场景里,Turbo码有点「太重了」。所以NB-IoT和LTE-M里更多用卷积码或LDPC码。
3.4 知识体系总览
下面这张图,是我梳理的本章知识结构。你可以把它当作一张「地图」,随时回来对照。
好了,这一章的内容就到这里。调制和编码是物联网通信的「任督二脉」,打通了,后面看协议栈就会轻松很多。下次你在调试无线模块时,不妨先问问自己:我选的调制方式适合这个信道吗?编码冗余够不够?想清楚这两个问题,很多坑就能提前避开。