基于FPGA的FM信号解调

news2024/11/24 16:36:05

这是本人第一次写博客,写的不好请多多担待。
本次实验是将一个已知的FM信号通过FPGA进行解调,解调出波形并进行FFT得到调制频率fm,并且每一步都通过MATLAB进行波形的验证。

开发工具

	VIVADO 2019.2
	MATLAB

FM解调

已知FM信号的载波频率fc为22MHZ,调制信号频率fm为8KHZ,采样率为50MHZ,在MATLAB中采样20000个点,位宽为10。FM具体的解调原理我就不说了。。。我用的方法也是正交解调,先将FM信号利用DDS IP核混频得到I路与Q路信号下变频到基带,然后通过低通滤波器进行滤波,之后再进行差分鉴频,最后进行FFT得到调制频率fm。差分鉴频的算法如下图:
在这里插入图片描述

输入模块

将FM信号导入VIVADO ROM  IP核,首先使用MATLAB绘制出FM信号的波形,并生成coe文件,导入VIVADO的ROM IP核,
位宽为10,深度为20000。VIVADO的ROM IP核具体怎么配置我就不说了。。这样的贴子很多,不懂的可以
先去看看如何配置。MATLAB与VIVADO的图如下:

在这里插入图片描述
在这里插入图片描述

变频模块

利用DDS生成sin和cos信号,与模块一输出的FM信号进行混频。在VIVADO中配置两个DDS IP核,一个用于生成与载波频率相同的正弦信号,一个用于生成与载波频率相同的余弦信号,再配置两个乘法器IP核进行混频。DDS IP核与乘法器IP核如何配置这类的帖子很多,自己去查一查。。。混频后结果如下图,可见MATLAB与VIVADO中的波形一致。
在这里插入图片描述
在这里插入图片描述

滤波模块

利用MATLAB的filterDesigner工具箱生成fir等波纹低通滤波器,我设置的阶数为128,通带频率为0.5M-2.5M。将其生成coe文件导入VIVADO的FIR IP核中,将变频后信号中的高频信号滤除。得到基带信号。
在这里插入图片描述
在这里插入图片描述

差分鉴频模块

也是最重要最核心的一个模块,利用开头介绍的算法对FM信号进行解调,并将解调波形输出。
I(n-1), Q(n-1)就是将I路信号与Q路信号延迟一个时钟周期。
经过乘法器IP核输出后的信号位宽很大,要对其进行截短,再通过除法器IP核得到解调波形。除法器IP核如何配置还是自己去看一看这方面的帖子。。。
解调出来的波形是个正弦波。如下图,MATLAB也对其进行了验证。
在这里插入图片描述
在这里插入图片描述

FFT模块

配置FFT IP核对解调信号进行FFT运算,得到解调信号频谱。FFT IP核配置稍微麻烦一点,不过这类的帖子很多自己去查一查,我也不是特别清楚,也是边查边摸索。。。FFT之后结果如下图:
在这里插入图片描述
在这里插入图片描述
在第二张图片里可以看到VIVADO仿真的频谱图与MATLAB一致。峰值对应的地址为3,通过计算得到fm=9155。与MATLAB结果也一致。
fm计算公式为峰值对应地址*fs/N
其中fs为采样频率
N为FFT点数。

MATLAB与VIVADO FFT之后得到的调制频率fm约等于9155khz,而不是8khz。有人可能会疑惑是不是哪里出错了,我刚开始也一直认为是哪里出错了,从头检查了几遍也没有发现错误,也在网上搜索。。。
上图在解调波形中取了16384个点做FFT,FFT结果不是8khz的原因应该是fs/16384不是整数倍,或取这16384个点不是周期的整数倍,导致出现了频谱泄露。应该是这样的。。。。我也是小白一个,具体什么原因我可能说不上来。后来我再MATLAB中取了12500个点进行FFT,就能得到8k的频率,这证明我的结果是没错的。
在这里插入图片描述
这样就在FPGA中完成了对FM信号的解调,并通过MATLAB验证了每一步的波形,以确保无误。
这是我第一次写博客,大概就写这么多吧。。。有错误的地方欢迎大家进行指正,也请大家多多担待。
感谢大家的观看,谢谢!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于LVQ神经网络的乳腺肿癌诊断

1.案例背景 1.1 LVQ 神经网络概述 学习向量量化(Learning Vector Quantization,LVQ)神经网络是一种用于训练竞争层的有监督学习(supervisedlearning)方法的输人前向神经网络,其算法是从Kohonen竞争算法演化而来的。LVQ神经网络在模式识别和优化领域有着广泛的应用。 1…

【Sklearn】基于逻辑回归算法的数据分类预测(Excel可直接替换数据))

【Sklearn】基于逻辑回归算法的数据分类预测(Excel可直接替换数据) 1.模型原理2.模型参数3.文件结构4.Excel数据5.下载地址6.完整代码7.运行结果 1.模型原理 逻辑回归是一种用于二分类问题的统计学习方法,尽管名字中含有“回归”&#xff0c…

Redis 缓存过期及删除

一、Redis缓存过期策略 物理内存达到上限后,像磁盘空间申请虚拟内存(硬盘与内存的swap),甚至崩溃。 内存与硬盘交换 (swap) 虚拟内存,频繁I0 性能急剧下降,会造成redis内存急剧下降; 一般设置物理内存的3/4,在redis…

Java算法_ 二叉树的中序遍历(LeetCode_Hot100)

题目描述:给定一个二叉树的根节点 ,返回 它的 中序 遍历 。root 获得更多?算法思路:代码文档,算法解析的私得。 运行效果 完整代码 import java.util.ArrayList; import java.util.List;/*** 2 * Author: LJJ* 3 * Date: 2023/8/…

PyTorch深度学习实践---笔记

PyTorch深度学习实践---笔记 2.线性模型(Linear Model)2.exercise 3. 梯度下降算法(Gradient Descent)3.1梯度下降(Gradient Descent)3.2 随机梯度下降(Stochastic Gradient Descent&#xff09…

编译OpenCV问题解决:已经编译OpenCV成功之后无法运行测试代码

报错问题如下&#xff1a; 严重性 代码 说明 项目 文件 行 禁止显示状态 错误 LNK2001 无法解析的外部符号 "void __cdecl cv::imshow(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,class c…

【腾讯云 Cloud Studio 实战训练营】在线 IDE 编写 canvas 转换黑白风格头像

关于 Cloud Studio Cloud Studio 是基于浏览器的集成式开发环境(IDE)&#xff0c;为开发者提供了一个永不间断的云端工作站。用户在使用Cloud Studio 时无需安装&#xff0c;随时随地打开浏览器就能在线编程。 Cloud Studio 作为在线IDE&#xff0c;包含代码高亮、自动补全、Gi…

GIt Squash 多个提交压缩提交

假设你有一个名为 feature 的分支&#xff0c;它包含三个提交&#xff08;A, B, C&#xff09;&#xff0c;并且你想将这三个提交压缩成一个。下面是如何做到这一点的。 首先&#xff0c;找出你要开始压缩的那个最早提交的哈希值。在这个例子中&#xff0c;我们假设 A 是最早的…

RK3588平台开发系列讲解(AI 篇)RKNPU 推理软件框架

文章目录 一、推理软件框架二、RKNN 模型三、学习步骤整理沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇章主要讲解什么是RKNPU。 一、推理软件框架 RKNPU 硬件层 RKNPU 驱动层 RKNPU 的驱动层是连接上层应用和 RKNPU 硬件的桥梁。驱动层的主要作用是将应用程序…

Health Kit基于数据提供专业方案,改善用户睡眠质量

什么是CBT-I? 中国社科院等机构今年发布的《中国睡眠研究报告2023》内容显示&#xff0c;2022年&#xff0c;受访者的每晚平均睡眠时长为7.40小时&#xff0c;近半数受访者的每晚平均睡眠时长不足8小时(47.55%)&#xff0c;16.79%的受访者的每晚平均睡眠时长不足7小时。这些数…

shell脚本和解释器

shell脚本和解释器 #!是shell脚本文件的标识&#xff0c;/bin/bash代表要使用的解析器&#xff0c;#是注释符号 test.sh #!/bin/bashls whoami #下面这条命令会执行失败&#xff0c;但不会影响其他命令的执行 cat /etc/shadow ps对于上面的脚本文件&#xff0c;后缀是.sh或者…

Leaflet入门,Leaflet如何自定义版权信息,以vue2-leaflet修改自定义版权为例

前言 本章讲解使用Leaflet的vue2-leaflet或者vue-leaflet插件来实现自定义版权信息的功能。 # 实现效果演示 见图片右下角版权信息 vue如何使用Leaflet vue2如何使用:《Leaflet入门,如何使用vue2-leaflet实现vue2双向绑定式的使用Leaflet地图,以及初始化后拿到leaflet对象…

三、Dubbo 注册中心

三、Dubbo 注册中心 3.1 注册中心概述 主要作用 动态加入&#xff1a;服务提供者通过注册中心动态地把自己暴露给其他消费者动态发现&#xff1a;消费者动态地感知新的配置、路由规则和新的服务提供者动态调整&#xff1a;注册中心支持参数的动态调整&#xff0c;新参数自动更…

[HDLBits] Exams/m2014 q4d

Implement the following circuit: module top_module (input clk,input in, output out);always(posedge clk) beginout<out^in;end endmodule直接写out^in就行

LangChain手记 Chains

整理并翻译自DeepLearning.AILangChain的官方课程&#xff1a;Chains&#xff08;源代码可见&#xff09; Chains 直译链&#xff0c;表达的意思更像是对话链&#xff0c;对话链的背后是思维链 LLM Chain&#xff08;LLM链&#xff09; 首先介绍了一个最简单的例子&#xff0c…

解决xss转义导致转码的问题

一、xss简介 人们经常将跨站脚本攻击&#xff08;Cross Site Scripting&#xff09;缩写为CSS&#xff0c;但这会与层叠样式表&#xff08;Cascading Style Sheets&#xff0c;CSS&#xff09;的缩写混淆。因此&#xff0c;有人将跨站脚本攻击缩写为XSS。跨站脚本攻击&#xff…

【量化课程】02_3.投资学基础概念

文章目录 1. 投资和投资学的关系1.1 什么是投资&#xff1f;1.2 什么是投资学&#xff1f; 2. 投资学的主要内容2.1 金融市场与投资环境2.1.1 金融资产2.1.2 债券市场的意义2.1.3 金融市场与经济2.1.4 投资过程2.1.5 竞争性的市场2.1.6 市场参与者2.1.7 主要的市场债券市场外汇…

KCC@广州开源读书会广州开源建设讨论会

亲爱的开源读书会朋友们&#xff0c; 在下个周末我们将举办一场令人激动的线下读书会&#xff0c;探讨两本引人入胜的新书《只是为了好玩》和《开源之迷》。作为一个致力于推广开源精神和技术创新的社区&#xff0c;这次我们还邀请了圈内大咖前来参与&#xff0c;会给大家提供一…

概念解析 | 隐式神经表示:揭开神经网络黑盒的奥秘

注1:本文系“概念解析”系列之一,致力于简洁清晰地解释、辨析复杂而专业的概念。本次辨析的概念是:隐式神经表示(Implicit Neural Representations) 隐式神经表示:揭开神经网络黑盒的奥秘 近年来,神经网络在各种任务上取得了惊人的进步,但其内部表示方式依然难以解读,被称为“…

交互消息式IMessage扩展开发记录

IMessage扩展简介 iOS10新加入的基于iMessage的应用扩展&#xff0c;可以丰富发送消息的内容。&#xff08;分享表情、图片、文字、视频、动态消息&#xff1b;一起完成任务或游戏。&#xff09; 简单的将发送的数据内型分为三种&#xff1a; 1.贴纸Stickers&#xff1b; 2.交…