0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何使用I/Q信号设计稳健的FSK解码器

科技观察员 来源:allaboutcircuits 作者:罗伯特·凯姆 2022-05-07 16:18 次阅读

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

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

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

但是,当我们考虑短期相位变化时,情况会变得更糟,因为这些变化会导致接收信号的相位在一个数据包的空间内偏离参考信号的相位。因此,数据包最初可能具有相位对齐,但恶化的相位关系会产生误码,导致整个数据包被丢弃。

结合正交解调

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

pYYBAGJ2K1yAUa_hAABQPkUz9kU111.jpg

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

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

Scilab 中的 I/Q FSK 解码

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

零频率 = 10e3;
一个频率 = 30e3;
采样频率 = 300e3;
Samples_per_Symbol = 采样频率/零频率;
n = 0:(Samples_per_Symbol-1);

生成 I/Q 信号

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

Symbol_Zero_I = cos(2*%pi*n / (SamplingFrequency/ZeroFrequency));
Symbol_One_I = cos(2*%pi*n / (SamplingFrequency/OneFrequency));
Symbol_Zero_Q = sin(2*%pi*n / (SamplingFrequency/ZeroFrequency));
Symbol_One_Q = sin(2*%pi*n / (SamplingFrequency/OneFrequency));

子图(2,2,1)
情节(n,Symbol_Zero_I)
子图(2,2,2)
情节(n,Symbol_One_I)
子图(2,2,3)
情节(n,Symbol_Zero_Q)
子图(2,2,4)
情节(n,Symbol_One_Q)

f = gcf();
对于 k=1:4
  > f.children(k).font_size = 3;
  > f.children(k).children.children.thickness = 3;
  > 结束

poYBAGJ2K16AGzAjAAB5-2WnkUQ588.JPG

(最后的 for 循环会更改每个子图的刻度线标签的大小和每条线的粗细。您可以通过图形窗口中内置的图形界面执行相同的操作;使用 GUI 更直观,但变为一段时间后很累。)

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

Symbol_Zero_I_45deg = cos(%pi/4 + 2*%pi*n / (SamplingFrequency/ZeroFrequency));
Symbol_One_I_45deg = cos(%pi/4 + 2*%pi*n / (SamplingFrequency/OneFrequency));
Symbol_Zero_Q_45deg = sin(%pi/4 + 2*%pi*n / (SamplingFrequency/ZeroFrequency));
Symbol_One_Q_45deg = sin(%pi/4 + 2*%pi*n / (SamplingFrequency/OneFrequency));
Symbol_Zero_I_90deg = cos(%pi/2 + 2*%pi*n / (SamplingFrequency/ZeroFrequency));
Symbol_One_I_90deg = cos(%pi/2 + 2*%pi*n / (SamplingFrequency/OneFrequency));
Symbol_Zero_Q_90deg = sin(%pi/2 + 2*%pi*n / (SamplingFrequency/ZeroFrequency));
Symbol_One_Q_90deg = sin(%pi/2 + 2*%pi*n / (SamplingFrequency/OneFrequency));

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

Baseband_I_aligned = [Symbol_Zero_I Symbol_One_I Symbol_Zero_I Symbol_One_I];
Baseband_Q_aligned = [Symbol_Zero_Q Symbol_One_Q Symbol_Zero_Q Symbol_One_Q];
Baseband_I_45deg = [Symbol_Zero_I_45deg Symbol_One_I_45deg Symbol_Zero_I_45deg Symbol_One_I_45deg];
Baseband_Q_45deg = [Symbol_Zero_Q_45deg Symbol_One_Q_45deg Symbol_Zero_Q_45deg Symbol_One_Q_45deg];
Baseband_I_90deg = [Symbol_Zero_I_90deg Symbol_One_I_90deg Symbol_Zero_I_90deg Symbol_One_I_90deg];
Baseband_Q_90deg = [Symbol_Zero_Q_90deg Symbol_One_Q_90deg Symbol_Zero_Q_90deg Symbol_One_Q_90deg];

子图(3,2,1)
情节(Baseband_I_aligned)
子图(3,2,2)
情节(Baseband_Q_aligned)
子图(3,2,3)
绘图(Baseband_I_45deg)
子图(3,2,4)
绘图(Baseband_Q_45deg)
子图(3,2,5)
情节(基带_I_90度)
子图(3,2,6)
绘图(Baseband_Q_90deg)

f = gcf();
对于 k=1:6
  > f.children(k).font_size = 3;

> 结束
pYYBAGJ2K1-AICDNAAD7kGbtYRg859.JPG

I/Q 乘法

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

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

DecodeZero_I_aligned = Baseband_I_aligned .* [Symbol_Zero_I Symbol_Zero_I Symbol_Zero_I Symbol_Zero_I];
DecodeZero_Q_aligned = Baseband_Q_aligned .* [Symbol_Zero_I Symbol_Zero_I Symbol_Zero_I Symbol_Zero_I];
DecodeOne_I_aligned = Baseband_I_aligned .* [Symbol_One_I Symbol_One_I Symbol_One_I Symbol_One_I];
DecodeOne_Q_aligned = Baseband_Q_aligned .* [Symbol_One_I Symbol_One_I Symbol_One_I Symbol_One_I];

DecodeZero_I_45deg = Baseband_I_45deg .* [Symbol_Zero_I Symbol_Zero_I Symbol_Zero_I Symbol_Zero_I];
DecodeZero_Q_45deg = Baseband_Q_45deg .* [Symbol_Zero_I Symbol_Zero_I Symbol_Zero_I Symbol_Zero_I];
DecodeOne_I_45deg = Baseband_I_45deg .* [Symbol_One_I Symbol_One_I Symbol_One_I Symbol_One_I];
DecodeOne_Q_45deg = Baseband_Q_45deg .* [Symbol_One_I Symbol_One_I Symbol_One_I Symbol_One_I];

DecodeZero_I_90deg = Baseband_I_90deg .* [Symbol_Zero_I Symbol_Zero_I Symbol_Zero_I Symbol_Zero_I];
DecodeZero_Q_90deg = Baseband_Q_90deg .* [Symbol_Zero_I Symbol_Zero_I Symbol_Zero_I Symbol_Zero_I];
DecodeOne_I_90deg = Baseband_I_90deg .* [Symbol_One_I Symbol_One_I Symbol_One_I Symbol_One_I];
DecodeOne_Q_90deg = Baseband_Q_90deg .* [Symbol_One_I Symbol_One_I Symbol_One_I Symbol_One_I];

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

子图(2,2,1)
情节(DecodeZero_I_aligned)
子图(2,2,2)
情节(DecodeZero_Q_aligned)
子图(2,2,3)
情节(DecodeOne_I_aligned)
子图(2,2,4)
情节(DecodeOne_Q_aligned)

poYBAGJ2K2CARPZJAACx1M0c7wc524.JPG

子图(2,2,1)

情节(DecodeZero_I_45deg)

子图(2,2,2)

情节(DecodeZero_Q_45deg)

子图(2,2,3)

情节(DecodeOne_I_45deg)

子图(2,2,4)

情节(DecodeOne_Q_45deg)

poYBAGJ2K2GAIKSKAAClpmRqdNI555.JPG

子图(2,2,1)

情节(DecodeZero_I_90deg)

子图(2,2,2)

情节(DecodeZero_Q_90deg)

子图(2,2,3)

情节(DecodeOne_I_90deg)

子图(2,2,4)

情节(DecodeOne_Q_90deg)

pYYBAGJ2K2KANJwvAAC0gDgZY0Q349.JPG

结论

如果您仔细思考最后一组图,我想您将开始了解 I/Q 处理在 FSK 解码上下文中的好处。由于输入信号的相位与参考符号的相位失去对齐,因此作为接收频率与参考频率之间相似性的指标,乘法波形的 DC 偏移变得不可靠。然而,90°相移基带信号的存在弥补了这种影响,因为当一个基带信号的相位差接近±90°(最坏情况)时,另一个基带信号的相位接近0°或 180°(最佳情况)。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 解码器
    +关注

    关注

    9

    文章

    1130

    浏览量

    40675
  • FSK
    FSK
    +关注

    关注

    14

    文章

    114

    浏览量

    58340
  • 信号设计
    +关注

    关注

    0

    文章

    5

    浏览量

    5883
收藏 人收藏

    评论

    相关推荐

    ESS的ES9311Q 音响、功放、解码器

    \音响系统ES9026PRO 解码器ES9028Q2M 手机,手持播放解码器ES9028PRO 音响、功放、解码器ES9038
    发表于 11-27 13:49

    怎么理解真正的编码解码器

      在进入关于编码解码器的现实之前,让我们对复用进行简要的思考。通常我们会在需要将一些输入信号一次一个地加载到一个单独负载的应用程序中。选择输入信号中的一个输入
    发表于 09-01 17:48

    来电解码器及其在客户关系管理中的应用

    介绍了一种基于单片机AT89C2051和FSK解码芯片HT9032C实现的来电解码器,说明了设计的原理和解码器的结构。该解码器可应用于客户关
    发表于 08-03 11:09 20次下载

    CML推出DTMF编解码器/FSK调制解调复合IC

        CML Microcircuits日前推出一款多标准DTMF编解码器/FSK调制解调IC CMX865,可用于各种采用移动电话的遥感勘测系统。该器件
    发表于 03-13 13:01 835次阅读

    常用DTMF/FSK解码器集成电路

    常用DTMF/FSK解码器集成电路
    发表于 06-30 19:19 3286次阅读

    什么是音频编解码器

    什么是音频编解码器? 编解码器(编码/解码器)转换成模拟信号的数字码流,另一个相同的编解码器
    发表于 05-03 23:48 4045次阅读

    立体声电视解码器

    立体声电视解码器Ⅰ   Q1是音频
    发表于 10-08 11:39 1006次阅读
    立体声电视<b class='flag-5'>解码器</b>Ⅰ

    dmx512解码器怎么接线?dmx512解码器接线图

    dmx512解码器,是一款数码影音解码器。这款DMX512解码器,把DMX512/1990标准数码控制信号转换成PWM控制信号,使不具备
    发表于 12-06 17:02 8.9w次阅读
    dmx512<b class='flag-5'>解码器</b>怎么接线?dmx512<b class='flag-5'>解码器</b>接线图

    高清解码器的作用

    高清解码器(xunwei)的主要作用在于接收前端高清编码图像或网络摄像头信号解码,然后通过自身的各种视频输出接口,如HDMI、DVI、SDI、VGA、BNC输出显示到显示设备上。编码
    的头像 发表于 12-10 15:47 1.3w次阅读
    高清<b class='flag-5'>解码器</b>的作用

    G.711附录I,带PLC的语音编解码器-下载产品代码

    G.711附录I,带PLC的语音编解码器-下载产品代码
    发表于 03-23 13:43 7次下载
    G.711附录<b class='flag-5'>I</b>,带PLC的语音编<b class='flag-5'>解码器</b>-下载产品代码

    ADP5585:键盘解码器I/O扩展数据表

    ADP5585:键盘解码器I/O扩展数据表
    发表于 05-27 14:41 2次下载
    ADP5585:键盘<b class='flag-5'>解码器</b>和<b class='flag-5'>I</b>/O扩展数据表

    ADP5589:键盘解码器I/O扩展数据表

    ADP5589:键盘解码器I/O扩展数据表
    发表于 05-27 20:18 0次下载
    ADP5589:键盘<b class='flag-5'>解码器</b>和<b class='flag-5'>I</b>/O扩展数据表

    1-of-4 解码器/解复用器-HEF4555B_Q100

    1-of-4 解码器/解复用器-HEF4555B_Q100
    发表于 02-09 21:56 0次下载
    1-of-4 <b class='flag-5'>解码器</b>/解复用器-HEF4555B_<b class='flag-5'>Q</b>100

    光栅解码器损坏的表现有哪些

    光栅解码器是一种用于将光信号转换为电信号的设备,广泛应用于光学存储、光学测量、光学通信等领域。当光栅解码器损坏时,可能会出现多种异常表现。以下是一些可能的表现,以及相应的分析:
    的头像 发表于 09-23 17:57 364次阅读

    遥控解码器怎么使用

    遥控解码器是一种用于解码和复制遥控信号的设备,它可以帮助用户在遥控丢失或损坏的情况下,重新
    的头像 发表于 09-30 14:23 546次阅读