微相E316实现FM电台监听

        前面介绍了基于Matlab、矢量信号器或微相E316、HackRF One实现AM和FM调制解调,今天分享的内容是用微相E316、上位机和Matlab实现FM电台信号监听。注意本文仅用于科研和学习,私自搭建电台属于违法行为。

1.概述

微相E316、上位机和Matlab实现FM电台信号监听测试框图如1所示:

图1 微相E316实现FM信号监听框图       

         通过上位机设置要采集的FM电台的频率、采样率和采集长度,完成FM电台信号的采集,然后将采集的FM调制IQ数据导入Matlab后,通过Matlab软件完成FM信号解调和播放。微相E316的网口和USB口连接计算机,如图2所示:

图2 微相E316和计算机接线图

微相E316的天线接收口连接天线,如图3所示。

图3 微相E316和天线接线图

2.微相E316软件框架

       FPGA_PL端软件框架如图4所示,FPGA_PL端接收部分完成将AD9361采集的射频数据进行混频、下变频和AGC,并将AGC后的IQ数据通过datamover模块传到PS端,FPGA_PS端将接收到的IQ数据传给上位机,上位机完成数据接收和存数据文件。

图4 FPGA_PL端软件框图

3.上位机采集FM电台信号

步骤一:打开基于Matlab的上位机软件“sdr_soft.exe”,如图5所示;

图5 上位机软件

步骤二:打开“超短波电台”,如图6所示;

图6 超短波电台上位机

步骤三:设置IP地址,微相E316 IP地址:192.168.0.103,调试计算机IP地址192.168.0.33,连接成功提示如图7所示;

图7 上位机连接微相E316成功提示

步骤四:设置采集FM电台频率88.4MHz,收到提示参数下发成功,如图8所示;

图8 上位机设置采集FM信号频率

步骤五:设置采样率0.064MHz和采集长度1024000,收到提示参数下发成功,如图9所示;

图9 上位机设置采样率和采集长度

步骤六:选中“存文件”选项,然后点击“信号采集”,如图10所示;

图10 上位机设置存文件和采集开始

步骤七:等待采集完成,如图11所示;

图11 采集完成

4.Matlab解调FM信号

首先,将上一节采集的FM调制IQ数据x和采样率fs导入Matlab。根据如下FM解调公式,得到我们需要的源基带信号。

具体matlab解调代码如下:

%%%%%%%%%%%%%FM解调%%%%%%%%%%%%%%%%%%%%%%
adc_i = real(x);
adc_q = imag(x);
subplot(2,1,1);
plot(adc_i); title('FMµ÷ÖÆÐźÅ');
fm = 64000;
%重新检测数据长度
c_len = length(adc_i);
cr = zeros(1,c_len);
cj = zeros(1,c_len);
for i = 2: c_len %必须从2开始,因为有I-1 cr(i) = adc_i(i)*adc_i(i) +adc_q(i)*adc_q(i);cj(i)  = adc_i(i-1) * adc_q(i) -  adc_i(i)* adc_q(i-1);%I(n-1)*Q(n) -I(n)*Q(n-1)
end
angle = zeros(1,c_len);
for i = 1:c_lenif cr(i) == 0angle(i) = 0;else angle(i) = (cj(i)/cr(i))*2 ^16; %FPGA 中没有小数,要进行量化end
endd_len = length(angle);
sum = 0;
cnt = 0;
demout = zeros(1,fix(d_len*(fm/fs)));
d_cnt = 1;
for i= 1:d_lensum = sum + angle(i);if cnt == fs/fm demout(d_cnt) =  sum /cnt;d_cnt = d_cnt + 1;cnt = 0;sum= 0;endcnt = cnt + 1;
end
demout = 1*demout/max(abs(demout));
subplot(2,1,2);
plot(demout);title('FM解调后的信号');
sound(demout,fm);

FM信号和解调信号时域波形如图12所示。

图12 FM调制信号和解调信号

5.采样率0.32MHz采集FM电台信号

      上位机修改采样率为0.32MHz,其他参数不变,采集完成提示如图13所示,在Matlab里完成FM信号解调,FM调制信号和解调信号时域波形如图14所示。

图13 上位机采集完成

图14 FM调制信号和解调信号

6.采样率0.64MHz采集FM电台信号

        上位机修改采样率为0.64MHz,其他参数不变,采集完成提示如图15所示,在Matlab里完成FM信号解调,FM调制信号和解调信号时域波形如图16所示。

图15 上位机采集完成

图16 FM调制信号和解调信号

        第4-6节,比较将上位机设置不同采样率采集的IQ数据导入Matlab后解调并播放,我们发现采样率64KHz时,由于带宽小,解调后的信号收听效果比较差,有明显杂音,而采样率320KHz和640KHz时,解调后的信号听起来比较清晰。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/21960.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【总结】GraphRAG与传统RAG的深度对比及主流项目分析

GraphRAG和传统RAG的区别 GraphRAG和传统RAG都是为了增强大语言模型(LLMs)在特定领域的能力而发展出的技术,但它们在多个方面存在明显区别。 1. 知识组织方式 传统RAG:通常将大规模文本语料库分割成文本块,再利用嵌入…

SessionBox同一浏览器登录多账号独立IP教程

对于多账号运营的跨境营销人员来说,SessionBox提供了同一浏览器登录多账号的解决方案,但是很多人不仅需要多账号登录,对于登录Facebook、Instagram等账号来说,如何SessionBox与代理配合使用以确保真正的帐户分离更为重要&#xff…

图论 之 迪斯科特拉算法求解最短路径

文章目录 题目743.网络延迟时间3341.到达最后一个房间的最少时间I 求解最短路径的问题,分为使用BFS和使用迪斯科特拉算法,这两种算法求解的范围是有区别的 BFS适合求解,边的权值都是1的图中的最短路径的问题 图论 之 BFS迪斯科特拉算法适合求…

Docker+Dify部署DeepSeek-r1本地知识库

安装配置Docker Desktop 软件下载 Docker Desktop版本:4.38.0.181591 Docker Desktop下载地址:Docker: Accelerated Container Application Development 或者从这里下载:DockerDesktop-4.38.0.181591资源-CSDN文库 点击图下所示位置,下载windows-AMD64版本软件 启用Hy…

ubuntu ffmpeg 安装踩坑

ffmpeg 安装踩坑 安装命令: sudo apt update sudo apt install ffmpeg如果以上命令没有报错,那么恭喜你很幸运,可以关闭这篇文章了! 如果跟我一样,遇到如下报错,可以接着往下看: 报错信息: …

如何通过Windows环境远程控制MusicGPT在线生成高质量AI音乐

文章目录 前言1. 本地部署2. 使用方法介绍3. 内网穿透工具下载安装4. 配置公网地址5. 配置固定公网地址 前言 在这个快节奏的时代,音乐不仅是心灵的慰藉,更是创意的源泉。试想一下,在忙碌的工作间隙或悠闲的周末午后,只需轻敲几行…

大数据组件(四)快速入门实时数据湖存储系统Apache Paimon(3)

Paimon的下载及安装,并且了解了主键表的引擎以及changelog-producer的含义参考: 大数据组件(四)快速入门实时数据湖存储系统Apache Paimon(1) 利用Paimon表做lookup join,集成mysql cdc等参考: 大数据组件(四)快速入门实时数据…

Spring面试题2

1、compareable和compactor区别 定义与包位置:Comparable是一个接口,位于java.lang包,需要类去实现接口;而Compactor是一个外部比较器,位于java.util包 用法:Comparable只需要实现int compareTo(T o) 方法,比较当前对…

react(9)-redux

使用CRA快速创建react项目 npx create-react-app react-redux 安装配套工具 npm i reduxjs/toolkit react-redux 启动项目 在创建项目时候会出现一个问题 You are running create-react-app 5.0.0, which is behind the latest release (5.0.1). We no longer support…

HTTP SSE 实现

参考: SSE协议 SSE技术详解:使用 HTTP 做服务端数据推送应用的技术 一句概扩 SSE可理解为:服务端和客户端建立连接之后双方均保持连接,但仅支持服务端向客户端推送数据。推送完毕之后关闭连接,无状态行。 下面是基于…

STL —— 洛谷字符串(string库)入门题(蓝桥杯题目训练)(二)

目录 一、B2121 最长最短单词 - 洛谷 算法代码: 代码分析 变量定义 输入处理 单词长度计算 更新最长和最短单词的长度 输出最长单词 输出最短单词 评测记录:​编辑 二、B2122 单词翻转 - 洛谷 算法代码: 代码分析 引入头文件和定…

74. 搜索二维矩阵(LeetCode 热题 100)

题目来源; 74. 搜索二维矩阵 - 力扣(LeetCode) 题目内容: 给你一个满足下述两条属性的 m x n 整数矩阵: 每行中的整数从左到右按非严格递增顺序排列。 每行的第一个整数大于前一行的最后一个整数。 给你一个整数 target &am…

JUC并发—9.并发安全集合四

大纲 1.并发安全的数组列表CopyOnWriteArrayList 2.并发安全的链表队列ConcurrentLinkedQueue 3.并发编程中的阻塞队列概述 4.JUC的各种阻塞队列介绍 5.LinkedBlockingQueue的具体实现原理 6.基于两个队列实现的集群同步机制 4.JUC的各种阻塞队列介绍 (1)基于数组的阻塞…

SQL Server导出和导入可选的数据库表和数据,以sql脚本形式

一、导出 1. 打开SQL Server Management Studio,在需要导出表的数据库上单击右键 → 任务 → 生成脚本 2. 在生成脚本的窗口中单击进入下一步 3. 如果只需要导出部分表,则选择第二项**“选择具体的数据库对象(Select specific database objects)”**&am…

DDoCT:形态保持的双域联合优化用于快速稀疏视角低剂量CT成像|文献速递-医学影像人工智能进展

Title 题目 DDoCT: Morphology preserved dual-domain joint optimization for fast sparse-view low-dose CT imaging DDoCT:形态保持的双域联合优化用于快速稀疏视角低剂量CT成像 01 文献速递介绍 计算机断层扫描(CT)是当今广泛应用的…

【Linux】多线程 -> 线程同步与基于BlockingQueue的生产者消费者模型

线程同步 条件变量 当一个线程互斥地访问某个变量时,它可能发现在其它线程改变状态之前,它什么也做不了。 例如:一个线程访问队列时,发现队列为空,它只能等待,直到其它线程将一个节点添加到队列中。这…

WPF的页面设计和实用功能实现

目录 一、TextBlock和TextBox 1. 在TextBlock中实时显示当前时间 二、ListView 1.ListView显示数据 三、ComboBox 1. ComboBox和CheckBox组合实现下拉框多选 四、Button 1. 设计Button按钮的边框为圆角,并对指针悬停时的颜色进行设置 一、TextBlock和TextBox…

Ubuntu24.04LTS的下载安装超细图文教程(VMware虚拟机及正常安装)

😸个人主页👉:神兽汤姆猫 📖系列专栏:开发语言环境配置 、 Java学习 、Java面试 、Markdown等 学习上的每一次进步,均来自于平时的努力与坚持。 💕如果此篇文章对您有帮助的话,请点…

buu-get_started_3dsctf_2016-好久不见39

栈溢出外平栈 1外平栈与内平栈的区别 外平栈: 栈帧的局部变量和返回地址之间没有额外的对齐或填充。返回地址直接位于局部变量的上方(即栈顶方向)。在计算偏移时,不需要额外加 4(因为返回地址紧邻局部变量&#xff09…

QML Component 与 Loader 结合动态加载组件

在实际项目中,有时候我们写好一个组件,但不是立即加载出来,而是触发某些条件后才动态的加载显示出来,当处理完某些操作后,再次将其关闭掉; 这样的需求,可以使用 Component 包裹着组件&#xff…