码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • [SDR] GNU Radio 系列教程(十五)—— GNU Radio GFSK 模块



    目录
    • 1 GFSK 背景知识
    • 2 GNU Radio GFSK 模块参数详解
    • 3 GNU Radio GFSK 模块简示例
    • 4 本文视频教程
    • 参考链接
    • 教程列表
        • 基础教程:
        • 综合教程:
    • 视频和博客


    1 GFSK 背景知识

    调制分类如下:[2]

    GFSK 是 FSK 的扩展,其中调制信号的频率不会在二进制数据的每个符号周期开始时立即改变。 因此,bit 0-> 1 或反之变得更加平滑。换句话说,与传统的 FSK 相比,调制信号的幅度和相位变化将相对较小。原则上,FSK 是使用独立的本地振荡器分别用于同相和正交分量来实现的,并且振荡器将在每个符号周期开始时切换以生成用于调制的载波频率。一般而言,所有独立振荡器在符号周期开始时不会处于相同的幅度和相位,因此这会导致传输信号的每个比特变化的频率突然变化。因此,调制后的 FSK 信号将非常宽,并且具有不可忽略的旁瓣。下图说明了这一点。

    图 1:给定数字信号的 FSK 调制信号

    信号被正确解码的前提是:在每个符号周期之后具有精确和准确的幅度和相位值。如果接收端收到这样的信号,将会造成信道失真、干扰、热再生等,从而降低 FSK 的性能。

    在 GFSK 调制方案中,需要在基带波形信号前引入高斯滤波器。典型的高斯滤波器是脉冲响应为高斯函数的滤波器(如下图为高斯脉冲响应)

    图 2:高斯滤波器的脉冲响应

    时阈上的高斯函数在频阈上仍是高斯函数,因此该滤波器的频率响应非常窄。当输入信号通过此类滤波器时,与不涉及滤波的 FSK 方案相比,所得到的滤波信号的频谱宽度会减小。因此,FSK 中频率的任何突然变化都会被滤除,这使得每个符号周期开始时的转换比 FSK 相对平滑(下图是 GFSK 信号的响应)

    图 3:高斯滤波信号和 GFSK 调制信号响应

    该滤波器的优点是降低边带功率,减少对相邻信道的干扰,但代价是增加码间干扰 (ISI)。因此,仔细设计具有最佳截止频率的高斯滤波器对于确保最小化 ISI 相关影响非常重要。此外,还可以使用其他稳健的信号处理和信道均衡技术来克服 ISI 的影响。

    调制信号之前的这个滤波阶段也称为脉冲整形,因为数据脉冲被滤除以产生具有急剧上升和下降时间的干净输出信号,这有助于准确确定接收信号的载波频率。GFSK 技术非常有用,广泛用于无线系统和技术,例如改进 Layer 2 protocol,、蓝牙、IEEE 802.15.4 和 Z-wave。


    2 GNU Radio GFSK 模块参数详解

    GFSK Mod 的输入是字节流 byte stream,输出是基带复杂调制信号。

    参数 意义 解释
    Samples/Symbol Samples per baud >= 2 (integer)
    Default value = 2
    这有个链接介绍的比较清楚

    Sensitivity Given to the Frequency Mod
    Default value = 1.0
    Frequency Mod
    BT Gaussian filter bandwidth * symbol time (float)
    Default value = 0.35
    这有个 matlab 关于高斯滤波器的 BT 参数对滤波效果的影响文章

    Verbose Prints the value of bits per symbol and BT
    Default value = Off
    Log Prints the following modulation data to .dat files:
    * Chunks to Symbol data is written to "nrz.dat"
    * Output of Gaussian filter is written to "gaussian_filter.dat"
    * Output of frequency modulator is written to "fmmod.dat"
    Default value = Off
    Unpack (depreciated in GNU Radio 3.8) Unpack input byte stream?

    GFSK Demod 的输入是基带复杂调制信号,输出是 a stream of bits unpacked, 1 bit per byte (the LSB)

    参数 意义 解释
    Samples/Symbol Samples per baud >= 2 (integer)
    Sensitivity Given to the Quadrature Demod
    Gain Mu Controls rate of mu adjustment
    Mu Fractional delay [0.0, 1.0]
    Omega Relative Limit Sets max variation in omega (float, typically 0.000200 (200 ppm))
    Freq Error Bit rate error as a fraction
    Verbose Print information about modulator?
    Log Print modualtion data to files? (bool)

    3 GNU Radio GFSK 模块简示例

    我们对 9 位长的比特流 000111011 进行 GFSK 调制,然后对其进行 GFSK 解调:


    运行后效果如下:

    解释:我这里采样率故意设置为 10KHz,这样在时序图中每个采样占用 0.1 MS 方便观察。从图中可以看到信号 2 和信号 3 是一致的,说明我们经过 GFSK 调制解调后数据和原来保持一致。(这里有个 delay 滑动条,用来平移原始信号,方便错开观察的,其数值的意义是延迟 n 个样本)


    4 本文视频教程




    参考链接

    [1].什么是 GFSK 调制?
    [2].Frequency-shift keying
    [3].GFSK vs FSK
    [4].Digital GFSK Carrier Synchronization-IEEE
    [5].Samples Per Symbol
    [6].FIR Gaussian Pulse-Shaping Filter Design - Matlab
    [7].数字和模拟滤波器 — 示例
    [8].Frequency Mod
    [9].GFSK Demod


    教程列表

    基础教程:

    • [1]. GNU Radio 系列教程(一) —— 什么是 GNU Radio
    • [2]. GNU Radio 系列教程(二) —— 绘制第一个信号分析流程图
    • [3]. GNU Radio 系列教程(三) —— 变量的使用
    • [4]. GNU Radio 系列教程(四) —— 比特的打包与解包
    • [5]. GNU Radio 系列教程(五) —— 流和向量
    • [6]. GNU Radio 系列教程(六) —— 基于层创建自己的块
    • [7]. GNU Radio 系列教程(七)—— 创建第一个块
    • [8]. GNU Radio 系列教程(八)—— 创建能处理向量的 Python 块
    • [9]. GNU Radio 系列教程(九)—— Python 块的消息传递
    • [10]. GNU Radio 系列教程(十)—— Python 块的 Tags
    • [11]. GNU Radio 系列教程(十一)—— 低通滤波器
    • [12]. GNU Radio 系列教程(十二)—— 窄带 FM 收发系统(基于ZMQ模拟射频发送)
    • [13]. GNU Radio 系列教程(十三)—— 用两个 HackRF 实现 FM 收发
    • [14]. GNU Radio 系列教程(十四)—— GNU Radio 低阶到高阶用法的分水岭 ZMQ 的使用详解
    • [15]. GNU Radio 系列教程(十五)—— GNU Radio GFSK 模块

    综合教程:

    • [1]. SDR 教程实战(一) —— 利用 GNU Radio + HackRF 做 FM 收音机
    • [2]. SDR 教程实战(二) —— 利用 GNU Radio + HackRF 做蓝牙定频测试工具(超低成本)
    • [3]. SDR 教程实战(三) —— 利用 GNU Radio + HackRF + WireShark 做蓝牙抓包器(超低成本)
    • [4]. SDR 教程实战(四) —— 利用 GNU Radio + HackRF 手把手深入了解蓝牙协议栈(从电磁波 -> 01数据流 -> 蓝牙数据包)
    • [5]. SDR 教程实战(五) —— 利用 GNU Radio + LimeSDR+ WireShark 做蓝牙抓包器(上上个视频使用 HackRF)

    视频和博客



    : 如果觉得不错,帮忙点个支持哈~

  • 相关阅读:
    Leetcode双指针刷题(一)
    快手创作者版App正式上线
    C++学习——如何实现C++和C的混合编程(extern “C“详解)
    基于VUE + Echarts 实现可视化数据大屏景区管理平台
    选择适合变更管理的产品开发工具的要点和建议
    MyBatis笔记——多对一映射问题解决
    MySQL如何避免全表扫描?
    小狐狸付费创作系统如何接入Midiourney接口并使用KEY教程
    vue3后台管理系统之顶部tabbar组件搭建
    YOLOv9训练损失、精度、mAP绘图功能 | 支持多结果对比,多结果绘在一个图片(消融实验、科研必备)
  • 原文地址:https://www.cnblogs.com/zjutlitao/p/17971933
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号