FSK解调,位定时恢复


10

我目前正在实施声学FSK调制和解调。我不是信号处理专家,因此非常感谢您提供有关位定时恢复的帮助。目前我实现使用两个匹配滤波器用于每个音调的解调器(具有的相位差对于非相干检测)。基本上,每个滤波器的输出都是振幅不同的峰值。我有两个问题:90

  • 如何执行位定时恢复?
  • 对于包同步前同步码(线性调频,巴克码,黄金码等),您有什么建议?

我用Google搜索了Gardner算法,但不确定它是否适用以及如何适用。考虑一下,我目前正在使用声卡使用2个频率为800 bps的比特率。

Answers:


8

我目前正在实施声学FSK调制和解调。我不是信号处理人员...

既然您说您有匹配的滤波器,并且提到了非相干检测,那么我认为您已经是一个数字通信人员,成为DSP人员的步骤非常小:)

完善的同步器SDR方法

因此,执行此操作的经典方法是将两个滤波器的输出(幅度)平方(平方),将低通滤波器的结果取到2F最大符号,然后在滤波期间/之后进行抽取(如果可能),因此我们不会每秒浪费操作。

我给自己做了一个快速的实值带通信号FSK解调(我想如果再做一次,我将用一个组合的频率转换和一个低通滤波器替换两个带通滤波器,给我提供复杂的基带,或者扔了一个多相滤波器组在GNU Radio伴随下(在此流程图文件中)在GNU Radio中解决了这个问题,但无论如何):

FSK修订版

关键是我们可能希望符号定时在分频和阈值块之间同步。之后我们可以做–经典的“微控制器和数字硬件设计”方法实际上是Muller&Mueller时钟接收器,并且在那也可以使用–但我们不要浪费斜坡信息。

因此,我将在此处添加一个多相时钟同步;我必须承认,我不能比同名哈里斯的汤姆汤姆在同名的GNU Radio块的文档做得更好:

使用多相滤波器组的定时同步器。

该模块通过使滤波信号的导数最小化来执行PAM信号的时序同步,从而使SNR最大化并使ISI最小化。

这种方法通过建立两个滤波器组来起作用。一个滤波器组包含信号的脉冲整形匹配滤波器(例如根升余弦滤波器),其中滤波器组的每个分支都包含滤波器的不同相位。第二个滤波器组包含第一个滤波器组中滤波器的导数。考虑到时域,第一个滤波器组包含具有正弦形状的滤波器。我们希望将要采样的输出信号对准正弦形状的峰值。正弦的衍生物包含在所述的最大点零正弦0 = 1 辛克)。此外,零点周围的区域是相对线性的。我们利用这一事实来生成错误信号。辛克0=1个辛克0=0

如果信号出的派生滤波器被个过滤器,和匹配滤波器的输出为X [ Ñ ],我们计算误差为:d一世[ñ]一世X一世[ñ]

Ë[ñ]={X一世[ñ]}{d一世[ñ]}+{X一世[ñ]}{d一世[ñ]}2.0 。

该方程式将实部和虚部的误差取平均值。我们乘以信号本身有两个原因。首先,符号可能是正向还是负向,但是我们希望误差项始终告诉我们朝着相同的方向前进,具体取决于零点位于哪一侧。的符号会调整误差项以执行此操作。其次,x i [ n ]的大小取决于符号的幅度来缩放误差项,因此较大的信号为我们提供了更强的误差项,因为我们对该符号的值更有信心。使用x i [ n ]的大小X一世[ñ]X一世[ñ]X一世[ñ]对于低信噪比的信号而言,它不仅适用于符号,而且尤其适用。

Ë[ñ]dķddddķddķdαdβdαdβ获得24

意识到这是音频

因此,适当地将此块参数化(并可能减少bpf_decimlpf_decim为同步器提供更大的扩展空间来移相),您可以建立一个非常稳定的符号定时恢复,这对于您的应用程序来说完全是过大的😁

由于您正在使用声卡的两端进行采样,并且由于我假设您不必处理多普勒,因此符号率与载波频率具有固定的关系(例如,发送方具有较高的载波,且周期内有8个声卡样本,而一个符号总是要说128个样本,因此有固定的比率),您可以使用一个捷径:

dArctandŤ[ñ]

关于数据包同步

好吧,由于您有一个工作的解调器,当没有信号出现时,解调器可能会运行得太不同步,只需使用已知的固定数据序列来查找您的数据包。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.