4. 无线通信中的同步技术:位同步、帧同步、载波同步,以及同步头设计
同步,说白了就是让收发双方「对齐节奏」。我早年做第一个无线项目时,以为只要把数据发出去就行,结果接收端全是乱码。后来才明白——没有同步,通信就是一场灾难。
无线通信里,同步分三个层次:载波同步、位同步、帧同步。它们像盖楼一样,一层叠一层。下面我们逐个拆开看。
4.1 载波同步:先把频率对上
接收端要解调信号,首先得知道发送端的载波频率和相位。如果频率偏了,解调出来的基带信号就会「转圈圈」——你想想看,本来发的是 0,解出来可能是 1,也可能是 0.5,完全没法判。
载波同步的常用方法有两种:
- 导频法:发送端在数据之外,单独发一个已知频率的载波信号。接收端用锁相环(PLL)去跟踪它。优点是简单可靠,缺点是浪费功率。
- 自同步法:从接收到的已调信号中直接提取载波。比如 BPSK 信号,经过平方变换后会产生 2 倍频分量,再用锁相环锁定。我习惯在低功耗场景用自同步法,省掉导频就是省电。
4.2 位同步:找到每个比特的边界
载波同步之后,信号已经解调成基带波形了。但波形是连续的,怎么知道一个比特从哪里开始、到哪里结束?这就是位同步要解决的问题。
位同步也叫码元同步或时钟同步。它的目标是:在最佳采样时刻对基带信号进行判决。
常用的位同步方法:
- 自同步法:从数据流中提取时钟信息。比如 NRZ 编码,如果数据中有 0101 交替,信号就有丰富的时钟分量。但连续发 0 或连续发 1 时,时钟信息就丢了。所以很多协议会加扰码或使用曼彻斯特编码。
- 插入导频法:在数据中插入专门的位同步信号。比如在每几个字节后插入一个特定的同步码。
我做过一个项目,用曼彻斯特编码做位同步。曼彻斯特编码每个比特中间都有跳变,时钟信息非常丰富。但代价是带宽翻倍——原来 1MHz 带宽能传 1Mbps,曼彻斯特只能传 500kbps。嗯,这就是 trade-off。
4.3 帧同步:找到数据包的起点
位同步让我们知道每个比特的边界,但一堆比特摆在那里,怎么知道哪几个比特属于同一个数据包?这就是帧同步的任务。
帧同步的核心是同步头(Sync Header / Preamble)。发送端在数据包开头发一段已知的特定序列,接收端在比特流里搜索这个序列,一旦匹配上,就找到了帧的起点。
同步头的设计要求:
- 自相关性好:同步头与自身移位后的序列相关性要低,避免误同步。
- 互相关性差:同步头与数据部分的相关性要低,防止数据冒充同步头。
- 长度适中:太短容易误检,太长浪费带宽。
- 巴克码(Barker Code):如 11 位巴克码
11100010010,自相关旁瓣为 1,非常优秀。IEEE 802.11b 的同步头就用它。 - m 序列:伪随机序列,自相关性极好,长度可灵活选择。
- 互补序列(Golay 序列):一对序列,自相关之和为冲激函数。我曾在 OFDM 系统里用 Golay 序列做帧同步,抗多径效果很好。
4.4 同步头设计实战
下面这张图展示了同步头在数据包中的位置,以及接收端如何利用它完成三级同步:
实际项目中,同步头的设计往往要结合调制方式和信道环境。比如:
- FSK 调制:载波同步可以用连续发 0 或发 1 的方式,让接收端 PLL 锁定到对应的频率上。
- OOK 调制:载波同步序列就是连续发 1(有载波),接收端检测到能量上升就知道开始同步了。
- QPSK / QAM:需要更复杂的载波恢复算法,比如 Costas 环。
4.5 同步性能指标
评价同步好坏,主要看三个指标:
| 指标 | 定义 | 典型要求 |
|---|---|---|
| 捕获时间 | 从接收信号到完成同步所需的时间 | 通常 < 1ms(取决于同步头长度和算法) |
| 同步精度 | 同步后的残余误差(如相位误差、定时误差) | 载波相位误差 < 5°,定时误差 < 0.1 个码元 |
| 失锁概率 | 同步后因干扰或衰落而丢失同步的概率 | 通常 < 10⁻⁶ |
这三个指标互相制约。捕获时间短,往往需要更长的同步头或更复杂的算法;同步精度高,锁相环带宽就要窄,但捕获时间会变长。设计时得根据应用场景做取舍。
4.6 小结
同步是无线通信的基石。载波同步解决「频率对不对」,位同步解决「比特边界在哪」,帧同步解决「数据包从哪开始」。三者缺一不可。
同步头是这三者的载体。设计同步头时,要综合考虑序列的自相关性、长度、调制方式、信道环境。没有万能的同步头方案,只有最适合你项目的方案。
嗯,同步这块内容比较多,但理解了这三个层次,后面讲具体的协议(比如 ZigBee、BLE、LoRa)时,你会发现它们的同步设计思路都是相通的。