FSK过零检测技术

  • 前言
  • 原理
    • FSK信号制式描述
    • 算法描述
  • 仿真分析

前言

最近调试了一个FSK解调的项目,期间换了两种算法,其中基于过零检测技术的FSK软件解调方法最后是最好用的一种,特意分享出来给大家!
先附上对应github源码连接:fsk过零检测github源码地址(经过工程验证)

原理

FSK信号制式描述

根据《中国来电显示标准》,在两次振铃之间产生数据传送。FSK制式信号是连续相位移频键控,由两种不同的频率表示逻辑0和逻辑1。
FSK数据要求:
逻辑1: 1200Hz±1%
逻辑0: 2200Hz±1%
传输速率: 1200bit/s±1%
在基于特定平台的路由交换系统中,其交换机的发送速率为8KHz,接收速率也为8KHz。

如图所示,为单数据消息帧格式,在现在的交换机系统中,其由固定的300个0/1交替组成的信道占用信号,180个连续1组成的标志信号,10个bit组成的消息字组成,消息字中间存在7个连续的1组成的标志位。

算法描述

过零检测法是一种常用且简便的解调方法,2FSK信号的过零点数随载频的变化而不同,因此检测出过零点个数就可以得到载频的差异,从而进一步得到调制信号的信息,过零检测法的原理如下:

如图所示,为过零检测法解调原理。其目的是将FSK调制的采样信号转换为ASK调制的信号。FSK信号经过限幅、微分、整流后形成与频率变化相对应的脉冲序列,由此再形成 相同宽度的矩形脉冲,矩形脉冲的低频分量与数字信号相对应,由滤波器滤出低频分量, 然后经抽样判决,即可得到原始的数字调制信号。
过零检测法本质是一种模拟解调的方法,这里用数字信号处理的方式对其进行了软件实现。

仿真分析

这里采用了一段真实接收的信号作为仿真验证。

如图所示,一段1.2KHz的FSK调制信号由8KHz的AD进行采样,大约9000个采样点。前1000个点是响铃,后边一长段是一段信号的有用数据。
在进行数字信号处理前,对其进行3倍插值。一段8KHz采样的1.2KHz频率的信号,每20个采样点有3个完整bit,单个bit有6~7个采样点。为了使其方便后续处理,对采样点进行3倍插值,插值后的数据每20个采样点代表1个完整的bit。
采样数据3倍插值后,对其放大限幅,这里实际进来的是满量程的short型数据,所谓的放大限幅是将其转换为了能够代表变化快慢的方波,所以这里对其修改为,大于0的为幅值100,小于0的为幅值-100。

微分部分,在数字信号处理中用差分表示,用后一个采样bit减去前一个采样bit即可。

随后对其进行整流,这里直接对其取绝对值。

然后对其进行相同脉宽的脉宽调制,这里每有一个幅值为200的点,将其宽度扩展为3个点处理。

对输入的原始采样数据进行一系列处理后,将其调制为了如图所示的脉冲数随频率变化的脉宽信号。将频率不同的脉宽信号过低通滤波器,滤除其高频分量。

能得到这张图就已经解调成功了。
从图中可以看到,不同频率的信号明显被调制为了不同幅度的信号,变化快的2.2KHz信号幅值高,变化慢的1.2KHz信号幅值低。图9为一段数据的全部输出,前边交替变化的是300个0、1,中间一段低幅值信号是180个1,后边的则是0开始1结尾的消息字和穿插在其中的标志位。
将FSK经过如上方法转换为了ASK信号,将其找到一个合适的门限值,即可将0和1准确判断出来。

如图所示,将86作为此次数据的门限值,超过门限的做0处理,低于门限的做1处理。从图中可以看出,0和1bit基本是每20个采样点一个的。实际C代码编写中,将300个信道占用信号0、1对门限进行训练。
训练方法为,初始化门限值为80,300个信道占用信号有总计6000个采样点,利用其中5000个采样点,每200个为一组,分为25组。因为200个点是10个bit的0、1值,并且0和1的数量是相等的,将其200个点进行累加,理论值是100,利用这些数据对门限进行调节,最终使门限值收敛与接近最优的门限值。

如图所示,门限值逐步收敛于一个定值。

如图所示,按照门限值,大于门限值为1,小于门限值为0。每20个bit进行一次判决,大于10的为0,小于10的为1。即可解调出正确bit。

FSK过零检测技术软件实现相关推荐

  1. matlab smulink笔记03——过零检测

    ★过零检测 变步长解算方法动态地评估计算下一个采样时刻所使用的步长,当前后两个采 样点的状态值变化大时,则缩小采样步长,当前后两个采样点的值变化小时则增大步 这种做法使得解算器在计算不连续临近区域时使 ...

  2. SIMULINK过零检测作用

    变步长解算方法会动态地评估下一个采样时刻计算所使用的步长,当前后两个采样点的值变化大时,则缩小采样步长:反之,当前后两个采样点的值变化小时则增大步长.这种做法使得解算器在计算不连续临近区域时使用较小的 ...

  3. 系统在此应用程序中检测到基于堆栈的缓冲区_Linux 中的零拷贝技术

    转载:Linux 中的零拷贝技术,第 1 部分 引言 传统的 Linux 操作系统的标准 I/O 接口是基于数据拷贝操作的,即 I/O 操作会导致数据在操作系统内核地址空间的缓冲区和应用程序地址空间定 ...

  4. 软件漏洞及检测技术概述

    首席安全官Plus是一个围绕"大数据.云计算和人工智能"高技术领域,发布相关网络安全前沿技术和产业趋势的平台,努力打造"有特色.高水平.国际化"的网络安全思想高 ...

  5. Android 加固与监测,基于Android平台的恶意软件检测和软件加固技术研究

    摘要: 随着智能手机技术的发展,人们越来越多地把工作和生活的计算平台从传统的PC平台转移到移动平台.智能手机储存了大量的用户隐私,例如通信记录,位置信息等,因而成为攻击者的攻击目标.作为主流移动平台之 ...

  6. 传感器与测试技术搜题软件,【必备】自考《02202传感器与检测技术》历年真题及答案【23份】【更新至2021年4月题】...

    年份如下[有且仅有]: 2004年10月自考<传感器与检测技术>真题及答案[赠软件版] 2005年10月自考<传感器与检测技术>真题及答案[赠软件版] 2006年10月自考&l ...

  7. 北航孙钰:昆虫目标检测技术

    2020-05-07 12:36:00 不到现场,照样看最干货的学术报告! 嗨,大家好.这里是学术报告专栏,读芯术小编不定期挑选并亲自跑会,为大家奉献科技领域最优秀的学术报告,为同学们记录报告干货,并 ...

  8. 智能车浅谈——抗干扰技术软件篇

    文章目录 软件抗干扰技术 数字信号的抗干扰措施 数字输入信号软件抗干扰措施 数字输出信号软件抗干扰措施 数字滤波 算术平均值滤波 中值滤波 滑动平均滤波 归一化 差比和 CPU及程序的抗干扰措施 复位 ...

  9. 浅谈屏幕拍摄泄密跟踪的检测技术

    前言关注屏幕拍照安全检测技术介绍数字盲水印屏幕矢量水印摄像头检测屏摄检测缓解办法参考资料 前言 近日有新闻<创始人翻墙偷拍竞争对手 中电电机涨停开盘>,几个安全微信群里聊到现在的水印技术, ...

最新文章

  1. ueditor编辑器java使用_ueditor编辑器的用法图文教程
  2. “埋点”到底要不要?
  3. java 通用方法_java – 类型的通用方法
  4. python判断对象是否实例化_Python判断对象是否相等及eq函数的讲解
  5. TIOBE 6月编程语言排行榜:Python势不可挡
  6. 对不起,你以前学的 ElasticSearch 都是垃圾!
  7. Hyperledger Fabric服务器配置及修改Docker容器卷宗存储根目录/位置
  8. 力扣题目——102. 二叉树的层序遍历
  9. 3806. 最小化字符串-AcWing题库
  10. Java程序员必看的 14 本 Java 书籍!
  11. 如何快速分解CAD图纸中多个合并的CAD图形?
  12. Python3爬取美女妹子图片
  13. 手机卫星定位系统_为什么手机支持北斗导航,却不知道如何开启?
  14. 5款优秀的免费加密软件
  15. 如何提高软件测试能力的19条建议,希望对你有用
  16. 【kubernetes/k8s源码分析】CNI calico ipam源码分析
  17. F1DC2706蓝牙模块的射频特性及功耗测试
  18. MAC苹果电脑关闭系统完整性保护SIP(System Integrity Protection)
  19. level1和level2行情的区别
  20. 【JavaSE】网络编程(606~630)

热门文章

  1. Android中Fragment的分屏显示处理横竖屏显示
  2. Window10系统下触摸板失灵了 该咋处理
  3. android 获取默认字体,Android默认字体
  4. Java实现批量修改文件名
  5. neo4j CQL使用
  6. 编码至高法则-高内聚低耦合
  7. VM下Centos7虚拟机无法进入图形界面并提示Started Virtualization daemon...ices..shutdown
  8. [产品分析] Palm Pre,iPhone,Gphone全面大比拼
  9. 【信息安全】数据安全与信息安全
  10. 数据库分页【Limt与Limt..OFFSET 】