谢丫丫

如何使用I / Q信号设计一个强大的FSK解码器?

0
阅读(126) 评论(0)

结合正交调制的改进算法可以实现不受相位未对准影响的FSK解码。

可以通过检查通过将接收信号乘以参考信号而产生的波形的DC偏移来识别FSK符号的频率。这是一种简单有效的技术,可以在理想化的数学环境中完美运行,但我们在前一篇文章中看到它对相位不对准不稳健。

当使用非相干接收器架构时,无法在发射器和接收器之间建立固定的相位关系。这意味着数据包开头的阶段将是不可预测的。仅这一点不会损害我们的解码器算法,因为我们可以使用训练序列来识别解调的基带信号的相位,然后相应地修改参考信号。(但是,我对这种方法没有经验,我不知道它在现实生活中会有多么有效。)

然而,当我们考虑短期相位变化时情况变得更糟,因为这些可能导致接收信号的相位在一个分组的空间内偏离参考信号的相位。因此,分组最初可以具有相位对准,但是恶化的相位关系将产生导致整个分组被丢弃的比特错误。

在继续阅读本文的其余部分之前,请花点时间仔细阅读我们的资源,这些资源可能会为您提供更多背景信息:

 

结合正交解调

我在上一篇文章的末尾指出了这个问题的解决方案。我们可以使用正交解调来产生I和Q基带信号,这些信号允许FSK解码算法对相位不对准不敏感。

 

 

这是对系统的一个非常有益的修改,但它意味着我们需要解调电路中的附加组件(生成I / Q信号而不是单个基带信号ICfans)和数字信号处理器中的额外时钟周期(因为数学必须是在两个信号而不是一个信号上执行。

第一个问题是相当小的问题:正交解调现在非常普遍,我认为在大多数情况下,它可以在不显着增加成本,复杂性或PCB尺寸的情况下采用。第二个问题的严重性取决于系统的特征。如果您拥有功能强大的处理器和低数据速率,那么在合并其他数学运算时可能完全没有问题。但是如果您选择了低成本,低功耗的处理器并且您正在尝试最大化数据速率,那么所有新的计算都可能使解码算法无法在下一个数据包到达之前完成处理一个数据包。

 

Scilab中的I / Q FSK解码

让我们从建立二进制0频率,二进制1频率和每个符号的样本数开始,然后我们将根据每个符号的样本数创建索引变量(n)。

 

image.png


生成I / Q信号

现在我们可以为两个频率生成I和Q符号。按照惯例,I(同相)信号是余弦波形,Q(正交)信号是正弦波形。

 

image.png


 

(最后的for循环改变了每个子图的刻度标记的大小和每行的粗细。你可以通过图窗口内置的图形界面做同样的事情;使用GUI更直观但变得一段时间后很烦人。)

我们的目标是探索相位错位的I / Q解决方案,因此我们需要符号的相移版本。如前一篇文章所示,接收信号和参考信号之间的最坏情况相位差为90°,因此我们将生成相位为45°的符号(即完美对齐和最差对齐之间的中间)和90° 。

 

image.png

 

现在让我们为二进制序列0101创建三组I和Q基带信号。


image.png

 

[object Object]

 

I / Q乘法

我们现在可以将相位对齐和相移的I / Q基带信号乘以参考符号。尽量不要被长长的计算列表分散注意力; 我们所做的就是首先将I和Q波形乘以等长的二进制0符号数组,然后乘以等长的二进制1符号数组。但是,我们必须这样做三次,因为我们想要比较相位对齐版本,相位= 45°版本和相位= 90°版本的结果。这并不反映将由数字信号处理器执行的实现 - 在实际应用中将只有一个I / Q基带信号。

注意,这里我使用I符号作为参考符号,但我也可以使用Q符号。实际上,我可以使用具有任何相位值的参考符号:通过将I / Q技术结合到此解码算法中,我们使得该过程对接收符号和参考符号之间的任何类型的相位差异不敏感。


image.png


下图显示了乘法产生的波形。

 

image.png


 

image.png


 

image.png


 

结论

如果您考虑最后一组图,作为半导体工程师的我认为您将开始了解FSK解码环境中I / Q处理的好处。当输入信号的相位失去与参考符号的相位对准时,乘法波形的DC偏移变得不可靠,作为接收频率和参考频率之间的相似性的指示。然而,90°相移基带信号的存在补偿了这种影响,因为当一个基带信号的相位差接近±90°(最坏情况)时,另一个基带信号的相位接近0°或180°(最佳情况)。