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

我想对载波恢复在理论上是如何工作的任何解释,并且也会喜欢伪代码或代码示例。

评论

通常我们不提供代码示例-尤其是对于像BPSK解调器这样复杂的事情。

正如JimClay所指出的,您不太可能让某人有足够的时间来提供用于实现解调器的完整源代码。但是,如果您了解概念,创建实现的机制应该很容易。通常,软件接收机将具有与相应的硬件技术(例如,基于前馈非线性的同步器或基于反馈PLL的方法)类似的结构。您是否有计划要定位的特定拓扑?

感谢您的评论@JimClay和JasonR –我并不是要问工作源代码。我已经更新了更具体的问题:我只是在寻找不以理解模拟电路和电路图为前提的任何解释。

#1 楼

要解调BPSK最简单的相移键控信号,必须恢复载波频率,相位和符号定时。

突发信号
某些信号是突发性的并提供称为前同步码或中间同步码的已知数据序列(取决于它出现在突发的开始还是中间)。解调器可以使用匹配的滤波器,“寻找”已知的数据序列,并使用它来确定突发的频率,相位和符号时序。他们为每个突发执行此操作,而不必担心“漂移”(随着小误差的累积,在解调器和接收信号之间逐渐建立的距离),因为突发通常足够短,以至于漂移不会问题。

连续信号
然后有连续信号。与突发信号相比,它们在许多方面都很难恢复,因为通常您没有已知的数据序列来帮助锁定信号,并且即使锁定信号后也确实要担心漂移。我将在较高层次上描述通常用于恢复连续信号的主要步骤。

载波恢复

通常,您知道要查找的信号将处于哪个频率,或者至少知道它可能处于哪个频率集。但是,即使掌握了这些知识,您通常也必须能够校正频率偏移,因为没有两个发射机以相同的频率进行发送。总是有一些错误。然后,通常的方法是混合您认为信号将达到的频率,然后校正残留频率误差。这可以通过Costas Loop或通过获取基带信号数据的四次幂并寻找频率尖峰来完成。载波偏移量* 4处应该有一个频率尖峰(例如,如果将数据进行FFT转换为4的幂,并且看到8300 Hz处的频率尖峰,则意味着载波偏移为8300/4 = 2075 Hz)。这是对频率偏移进行初始锁定的非常有效的方法。如果您偶尔进行重新调整,也可以使用它来补偿漂移。还有另一种补偿漂移的方法,我将在稍后进行介绍。是真实的,y轴是假的),它的外观应类似于以下内容:


线。这些是BPSK星座点。中间的点是星座点之间的过渡。一旦获得符号计时,这些将清除。线倾斜的原因是由于载波相位。这可以通过将所有具有负实数值的点乘以$ e ^ {j * \ pi} $



来镜像信号来测量然后取这些点的角度的平均值。计算完该角度后,通过将点乘以$ e ^ {j *-\ omega} $,将所有已去除载波偏移的点减去该角度。您也可以通过动态更新相位偏移来补偿载波偏移漂移。数据经过相位校正后,它应该看起来像这样-



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

符号定时

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

与载波一样,您将必须正确调整相位(时序),然后补偿漂移。解决这两个问题的常用方法是寻找零交叉点。除非噪声非常严重,否则它应仅在符号从-1到1或从1到-1过渡的过程中越过零点。即使噪声确实导致这种情况发生在符号中间,也不会经常发生。或“眼图”。它有两个符号周期宽,并且有许多符号相互“堆叠”。我不知道您是否熟悉示波器,但是您可以让示波器显示这样的图片。无论如何,两个“ X”是符号转换。 X的高线到低线是当符号从1到-1转变时,X的低线到高线是当符号从-1到1转变时。粉色线是采样数据以查看符号是1还是-1的最佳位置。

可以使用相同的技术来处理符号定时漂移。取到之前的零交叉点和之后的零交叉点的距离的移动平均值。如果两个平均值大致相同,则一切都很好。如果一个大于另一个,则需要转移获取样本的位置。

在正确的位置对符号进行采样后,数据点应该看起来像经典的BPSK星座图点。



我希望这会有所帮助。

评论


$ \ begingroup $
为了使这篇精彩的文章变得更好,也许您可​​以在符号计时之前添加一个时钟恢复部分?
$ \ endgroup $
– LWZ
13年4月3日在6:34

$ \ begingroup $
我想我可能知道您的想法,但我不确定。您有什么特别的想法?
$ \ endgroup $
–吉姆·克莱(Jim Clay)
13年4月3日,13:26

$ \ begingroup $
非常感谢!我没有想到要寻找零交叉点,或以这种方式在x / y上绘制实数/虚数。我只是盯着相位图,想知道如何同步所有内容。再次感谢!
$ \ endgroup $
–基思
2013年4月3日14:02

$ \ begingroup $
@JimClay,在“符号时序”部分的开头,您提到“通常应该知道要解调的信号的符号周期。”这通常是由时钟恢复单元实现的,因为通常您不会随数据一起发送时钟。对于BPSK信号,这很容易,您可以在其中平方信号,从而删除数据。然后,您查看功率谱,应该有一个称为时钟音调的峰值频率,它给了您符号周期。
$ \ endgroup $
– LWZ
13年4月3日在15:16

$ \ begingroup $
添加了有关符号频率的段落。
$ \ endgroup $
–吉姆·克莱(Jim Clay)
13年4月3日在16:33