4. 直接法(自同步法):平方变换法、平方环法、Costas环法

好,咱们今天聊聊直接法,也叫自同步法。说白了,就是接收端自己从收到的信号里把载波给“榨”出来,不需要发端专门给你送个导频。这在工程里太实用了——你想想看,卫星通信、深空通信,哪有那么多带宽和功率去发导频?

我刚开始做FPGA通信项目那会儿,最头疼的就是载波同步。记得有一次调试QPSK解调器,信号进来了,星座图转得跟陀螺似的,怎么都锁不住。后来才发现,问题就出在载波恢复的算法选择上。今天讲的这三种方法,就是解决这个问题的经典套路。

4.1 平方变换法

平方变换法,思路非常直接。对于BPSK信号,它的数学表达式是:

s(t) = m(t) · cos(ω₀t + θ)

其中m(t)是±1的双极性基带信号。你把它平方一下:

s²(t) = m²(t) · cos²(ω₀t + θ) 
      = 1 · [1 + cos(2ω₀t + 2θ)] / 2

看到了吗?m²(t)恒等于1,调制信息被干掉了。平方之后,我们得到了一个2ω₀的纯正弦分量。再用一个窄带滤波器把这个2ω₀分量滤出来,经过二分频,就恢复出载波了。

核心要点:平方变换法的本质是利用平方运算消除调制信息,产生二倍频的载波分量。

我在项目中用过这个方案,简单粗暴,但有个坑——二分频电路有相位模糊问题。分频出来的载波可能是0°也可能是180°,这会导致解调出来的数据极性全反。嗯,这里要注意,通常需要加一个差分编码来规避。

4.2 平方环法

平方变换法虽然简单,但开环结构抗噪性能差。平方环法就是在平方变换的基础上,把开环改成了闭环——用锁相环(PLL)来跟踪那个2ω₀分量。

结构上,平方环法包含:

  • 平方器:产生二倍频分量
  • 鉴相器(PD):比较输入信号和VCO输出信号的相位差
  • 环路滤波器(LF):滤除高频噪声,决定环路动态性能
  • 压控振荡器(VCO):产生2ω₀的本地振荡信号
  • 二分频器:将2ω₀分频得到ω₀的载波

工程经验:环路滤波器的带宽选择很关键。带宽太宽,噪声抑制差;带宽太窄,捕获时间太长。我一般先根据信噪比估算一个初始值,然后在仿真里微调。

我曾经在一个低信噪比的卫星接收项目中,用平方环法做载波恢复。刚开始环路怎么也锁不住,后来发现是环路滤波器的参数没算对。调整之后,锁定时间从原来的几百毫秒降到了几十毫秒,效果立竿见影。

4.3 Costas环法

Costas环法,我个人觉得是这三种方法里最优雅的。它不需要平方器,而是通过同相和正交两路相乘,直接恢复载波。

Costas环的结构如下:

输入信号 → 同相支路(I路):与VCO输出cos(ω₀t)相乘 → 低通滤波 → 基带信号
         → 正交支路(Q路):与VCO输出sin(ω₀t)相乘 → 低通滤波 → 基带信号
         → I路和Q路相乘 → 环路滤波器 → VCO

它的工作原理是:当VCO的相位与输入载波完全同步时,I路输出最大,Q路输出为零。两者的乘积作为误差信号,驱动VCO调整相位,直到锁定。

避坑指南:我曾经在FPGA实现Costas环时,忽略了I/Q两路的增益匹配问题。结果环路锁定后,星座图总是有固定的相位偏移。后来加了自动增益控制(AGC)才解决。记住,I/Q不平衡是Costas环的致命伤。

4.4 三种方法的对比

方法 适用调制方式 复杂度 抗噪性能 相位模糊
平方变换法 BPSK 较差(开环) 有(180°)
平方环法 BPSK 较好(闭环) 有(180°)
Costas环法 BPSK、QPSK 最好 有(BPSK 180°,QPSK 90°)

从表格可以看出,Costas环虽然复杂,但性能最好,而且可以扩展到QPSK。平方变换法最简单,但只适合对性能要求不高的场景。平方环法介于两者之间,是工程中常用的折中方案。

4.5 核心逻辑框架图

下面这张图展示了三种直接法载波同步的核心逻辑关系:

直接法(自同步法)核心逻辑框架 接收信号 s(t) 平方器 窄带滤波器 二分频器 载波输出 平方器 锁相环(PLL) 二分频器 载波输出 I/Q两路相乘 环路滤波器 VCO 载波输出 反馈控制 三种方法的关键区别 • 平方变换法:开环结构,简单但抗噪差,适合高信噪比场景 • 平方环法:闭环结构,用PLL跟踪二倍频分量,性能折中 • Costas环法:闭环结构,无需平方器,性能最优但实现复杂 • 共同问题:都存在相位模糊,需要差分编码或独特字辅助解决

4.6 工程实现中的注意事项

最后,我总结几个实际项目中容易踩的坑:

  1. 平方器的非线性失真:平方器会引入高次谐波,如果滤波器不够干净,这些谐波会干扰环路。我建议在平方器后面加一个预滤波器。
  2. 环路带宽的动态调整:捕获阶段需要宽带宽快速锁定,锁定后需要窄带宽抑制噪声。我习惯用双模式环路——先宽后窄。
  3. FPGA实现中的资源消耗:Costas环需要两个乘法器、两个低通滤波器,资源开销不小。如果芯片资源紧张,可以考虑用CORDIC算法替代乘法器。
  4. 相位模糊的消除:除了差分编码,还可以在帧头插入独特字(UW),通过检测独特字的极性来判断相位是否反转。

我的建议:如果你是第一次做载波同步,先从平方环法入手。它比平方变换法可靠,又比Costas环简单。等把环路的基本原理吃透了,再挑战Costas环。我在带新人时,都是这个路子,效果不错。

好了,直接法就讲到这里。这三种方法各有千秋,选哪种取决于你的系统指标——信噪比、捕获时间、硬件资源,都得权衡。记住,没有最好的方法,只有最合适的方案。


公众号:蓝海资料掘金营,微信deep3321