4. 无线通信中的同步技术:位同步、帧同步、载波同步,以及同步头设计

同步,说白了就是让收发双方「对齐节奏」。我早年做第一个无线项目时,以为只要把数据发出去就行,结果接收端全是乱码。后来才明白——没有同步,通信就是一场灾难。

无线通信里,同步分三个层次:载波同步、位同步、帧同步。它们像盖楼一样,一层叠一层。下面我们逐个拆开看。

4.1 载波同步:先把频率对上

接收端要解调信号,首先得知道发送端的载波频率和相位。如果频率偏了,解调出来的基带信号就会「转圈圈」——你想想看,本来发的是 0,解出来可能是 1,也可能是 0.5,完全没法判。

载波同步的常用方法有两种:

  • 导频法:发送端在数据之外,单独发一个已知频率的载波信号。接收端用锁相环(PLL)去跟踪它。优点是简单可靠,缺点是浪费功率。
  • 自同步法:从接收到的已调信号中直接提取载波。比如 BPSK 信号,经过平方变换后会产生 2 倍频分量,再用锁相环锁定。我习惯在低功耗场景用自同步法,省掉导频就是省电。
实战经验: 我在一个 433MHz 模块项目里,发射端用晶振精度 ±20ppm,接收端也是 ±20ppm。算下来最大频偏约 17kHz。如果直接用自同步法,锁相环捕获范围不够,死活锁不住。后来我在接收端先做一次粗略的频率估计(用 FFT 扫一下),再切到锁相环细调。这个「粗扫+细锁」的思路,在很多无线芯片里都能看到。

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 同步头设计实战

下面这张图展示了同步头在数据包中的位置,以及接收端如何利用它完成三级同步:

三级同步流程与同步头结构 数据包结构 载波同步序列 位同步序列 帧同步码 数据负载 ① 载波同步 ② 位同步 ③ 帧同步 关键说明: • 载波同步序列:通常为连续载波(1010...),用于接收端 PLL 锁定频率和相位。 • 位同步序列:0101 交替模式,帮助接收端恢复比特时钟。 • 帧同步码:巴克码或 m 序列,用于精确定位数据包起始位置。

实际项目中,同步头的设计往往要结合调制方式和信道环境。比如:

  • FSK 调制:载波同步可以用连续发 0 或发 1 的方式,让接收端 PLL 锁定到对应的频率上。
  • OOK 调制:载波同步序列就是连续发 1(有载波),接收端检测到能量上升就知道开始同步了。
  • QPSK / QAM:需要更复杂的载波恢复算法,比如 Costas 环。
避坑指南: 我曾经在一个 LoRa 项目里,同步头长度只设了 4 个字节。结果在强干扰环境下,误同步率高达 30%。后来把同步头加长到 8 字节,误同步率降到 0.1% 以下。同步头长度不是拍脑袋定的,要根据信道误码率和虚警概率来算。一般建议:同步头长度至少是数据包长度的 1/10 到 1/20。

4.5 同步性能指标

评价同步好坏,主要看三个指标:

指标 定义 典型要求
捕获时间 从接收信号到完成同步所需的时间 通常 < 1ms(取决于同步头长度和算法)
同步精度 同步后的残余误差(如相位误差、定时误差) 载波相位误差 < 5°,定时误差 < 0.1 个码元
失锁概率 同步后因干扰或衰落而丢失同步的概率 通常 < 10⁻⁶

这三个指标互相制约。捕获时间短,往往需要更长的同步头或更复杂的算法;同步精度高,锁相环带宽就要窄,但捕获时间会变长。设计时得根据应用场景做取舍。

我的习惯: 做低功耗产品时,我会优先保证捕获时间短,因为接收机大部分时间在休眠,醒来后要尽快同步、尽快收完数据、尽快再睡回去。同步头长 1ms 和长 5ms,功耗差距可能就是 5 倍。这时候宁可牺牲一点同步精度,也要把捕获时间压下来。

4.6 小结

同步是无线通信的基石。载波同步解决「频率对不对」,位同步解决「比特边界在哪」,帧同步解决「数据包从哪开始」。三者缺一不可。

同步头是这三者的载体。设计同步头时,要综合考虑序列的自相关性、长度、调制方式、信道环境。没有万能的同步头方案,只有最适合你项目的方案。

嗯,同步这块内容比较多,但理解了这三个层次,后面讲具体的协议(比如 ZigBee、BLE、LoRa)时,你会发现它们的同步设计思路都是相通的。