如何在软件中进行载波相位恢复?

信息处理 数字通信 解调 阶段 bpsk qpsk
2021-12-27 06:25:11

在软件中恢复 BPSK 信号相位的选项有哪些?我能在网上找到的唯一资源是电路图——似乎没有人愿意向不熟悉模拟电路的人解释这一点。

我想要任何关于运营商恢复在理论上如何工作的解释,并且也喜欢伪代码或代码示例。

1个回答

要解调相移键控信号(其中 BPSK 是最简单的),您必须恢复载波频率、相位和符号时序。

突发信号 一些信号是突发的,并提供称为前同步码或中间同步码的已知数据序列(取决于它是出现在突发的开始还是中间)。解调器可以使用匹配滤波器“查找”已知数据序列,并使用它来计算突发的频率、相位和符号时序。他们对每个突发都这样做,并且不需要担心“漂移”(随着小错误累积,解调器和接收信号之间逐渐建立的距离),因为突发通常足够短,以至于漂移不是问题。

连续信号 然后是连续信号。它们在许多方面比突发信号更难恢复,因为您通常没有已知的数据序列来帮助锁定信号,而且即使在锁定信号后您也必须担心漂移。我将尝试从高层次上描述通常用于恢复连续信号的主要步骤。

运营商恢复

通常你知道你正在寻找的信号将处于什么频率,或者至少知道它可能处于什么频率集。但是,即使有了这些知识,您通常也必须能够校正频率偏移,因为没有两个发射器以相同的频率发射。总是有一些错误。因此,通常的方法是混合您认为信号将处于的频率,然后校正残余频率误差。这可以通过Costas Loop来完成,或者通过获取基带信号数据的四次方并寻找频率尖峰。在载波偏移 * 4 处应该有一个频率尖峰(例如,如果您对数据进行 FFT 到 4 次方并看到 8300 Hz 的频率尖峰,这意味着载波偏移为 8300/4 = 2075 Hz)。这是获得频率偏移初始锁定的一种非常有效的方法。如果您偶尔重做,您也可以使用它来补偿漂移。还有另一种补偿漂移的方法,我稍后会谈到。

载体相

此时,如果您在复平面上绘制复数数据(x 轴是实数,y 轴是虚数),它应该类似于以下内容 -

旋转BPSK

如果仔细观察,您会看到模糊线末端的两个密集区域。这些是 BPSK 星座点。中间的点是星座点之间的过渡。一旦我们得到符号时间,这些就会清除。线成角度的原因是因为载波相位。这可以通过将所有具有负实值的点乘以镜像信号来测量ejπ

旋转和镜像 BPSK

然后取点角度的平均值。计算完之后,从所有已移除载波偏移的点中减去该角度,方法是将这些点乘以ejω. 您还可以通过动态更新相位偏移来补偿载波偏移漂移。一旦数据经过相位校正,它应该看起来像这样 -

嘈杂的 BPSK

数据经过相位校正后,您可以删除数据的虚部,因为它不会添加任何信息。

符号时序

您通常应该先验地知道您尝试解调的信号的符号周期。但是,如果您确实需要确定符号周期/频率,则可以采用与检测载波偏移类似的方式进行。您可以对数据进行平方,这将导致两倍于符号频率的频率尖峰。

与载波一样,您必须正确设置相位(时序),然后补偿漂移。这两个问题的常用方法是寻找零交叉点。除非噪声非常糟糕,否则它应该只在从 -1 到 1 或从 1 到 -1 的符号转换中间穿过零点。即使噪音确实导致这种情况发生在符号中间,它也不会经常发生。

眼图

上图通常称为“眼图”或“眼图”。它有两个符号周期宽,并且有许多符号“堆叠”在另一个之上。不知道你是否熟悉示波器,但是你可以得到一个示波器来显示这样的图片。无论如何,两个“X”是符号转换。X 中的高线到低线是符号从 1 过渡到 -1 时,X 中的低线到高线是符号从 -1 过渡到 1 时。粉线是,是对数据进行采样以查看符号是 1 还是 -1 的最佳位置。

这种相同的技术可用于处理符号时序漂移。取前一个过零和下一个过零的距离的移动平均值。如果两个平均值大致相同,则一切正常。如果一个比另一个大,那么您需要转移您抓取样品的位置。

一旦您在正确的点对符号进行了采样,您的数据点应该会得到看起来像经典 BPSK 星座点的东西。

嘈杂的 BPSK 星座

我希望这有帮助。