elabradio入门第二讲——BPSK数字调制与解调(插值、升余弦滤波、速率匹配、符号同步)

数字信号可以通过数字基带传输系统进行传输,而基带传输系统仅仅适用于低频信道下的数字信号传输。然而,在实际的通信系统中信道通常具有带通特性,因而需要将基带信号搬移到适合信道传输的高频载波上,使得信号与信道相匹配,这个过程就是数字频带调制。

以上是BPSK调制系统的框图,主要分为以下几个模块

1、数字信号源模块:

功能:产生码元速率(采样率)为 32 kHz 的 PN15(伪随机噪声) 数字序列。

其中伪随机噪声序列的生成常用的技术是使用线性反馈移位寄存器(LFSR)。在 LFSR 中,每个新码元是基于前面几个码元(通常是序列中的最后几个码元)通过特定的数学运算(例如异或操作)来生成的。

参数设置:码元速率:32000 Hz(输出离散序列码的速率)。数据缓存大小:1024 个(表示模块单次运行输出的数据个数)。

数据缓存:仿真系统采用按块处理数据的方式,因此信号源模块必须指定数据缓存大小。本示例中,信号源每次运行会产生 1024 个数据点供后续模块处理。

2、调制+IQ上变频模块:

参数设置:调制方式:BPSK;载波频率:256 kHz;采样率:4096 kHz。

基带信号频谱图 

调制和IQ上变频后的频谱图,信号被搬移到了256k左右的频段

插值的必要性(elabradio中的IQ上变频模块自动完成了插值运算)

这里需要注意,我们要想实现上变频,需要将IQ路的信号分别与载波频率的正余弦波相乘,而正余弦波属于是连续的模拟信号,所以我们规定较大的采样率为4096k尽可能恢复模拟信号,这时转化为了离散的基带信号序列和离散的载波信号序列相乘,但是还有一个问题,就是二者要想进行运算,要点一一对应,也就是说如果两个离散序列的采样率不一样则会导致无法计算,因此我们采用插值的方法提高离散的基带信号序列的采样率到4096k。

除此之外,如果基带信号的采样率过低,则搬移到高频段之后会导致部分信息丢失,导致信号失真。

3、升余弦滚降滤波器(Root Raised Cosine filter)模块

对于基带信号而言,之前的IQ调制和上变频只是将其搬移到了高频段,提高了信号的抗干扰能力。但是无法克服信号本身的缺陷。

因为基带信号往往是频域的矩形脉冲,在时域上表现为sa函数,众所周知矩形脉冲最好实现,形式最为简单,但是它在时域上衰减较慢,且旁瓣较大,会出现拖尾的现象,在抽样时刻附近可能会受到相邻码元拖尾的干扰形成码间串扰,而且当定时存在偏差时也会出现码间串扰,除此之外,矩形脉冲频率截止特性无线陡峭,实际应用中无法实现。

因此,我们尝试构造一种新型的滤波器,保留以上矩形脉冲的优点,也可以一定程度弥补缺点:

如上图(b)所示,我们引入了一个双指数型衰减函数对矩形脉冲进行加权,时域相乘等于频域卷积,最终得到了H(f)图像。

 

结合以上图像可知,其实升余弦滚降滤波器本质上就是通过引入滚降系数α使原来矩形脉冲的边缘变得平滑,即以扩展信号占用带宽为代价加快时域衰减,进而减少码间干扰。

 一般情况下,只需要在特定时刻的信号抽样值无失真,并不需要整个信号波形都无失真。升余弦滤波器的冲激响应特性可以确保信号在抽样时刻无失真。这意味着,尽管信号波形在抽样点之外可能失真,但在接收端的关键抽样点仍能完全恢复原始数据。

说了这么多,我们的升余弦滚降滤波器要加在IQ调制映射之后,先将基带信号进行成型滤波,再进行上变频调制。在elabradio中我们使用双路RRC插值滤波器进行基带信号的成形滤波。

 

前面也说过,要想两路离散信号序列相乘,需要保持二者的采样率相同,因此这里进行升余弦滤波的前提是要对基带信号进行插值,插值通过增加采样点,使得信号的采样频率达到满足滤波器带宽要求的标准。

 通过观察原始的基带信号(示波器1)和通过RRC之后的信号(示波器2),可以发现:

未滤波信号:旁瓣分量显著,频谱主瓣外有明显的能量泄露。滤波后信号:旁瓣分量被显著抑制,频谱主瓣更为集中,带宽变窄。

4、IQ下变频模块

作用:通过将接收到的信号与本地生成的载波(频率为 256kHz)相乘,将信号从高频载波带回零中频(基带信号)。

参数设置:载波频率:256kHz(与发送端一致,保证信号能够正确下变频至基带)。IQ下变频模块的输出速率和输入速率一致。

由于下变频过程中可能存在混叠,信号中含有大量不需要的高频分量。

首先直观展示一下混叠(aliasing):

由此可见,时域的采样引起了频域的周期复制。采样时不符合采样定理会使得时域中某些低频分量和高频分量产生混叠,在频域上的表现就是,一个周期的低频分量和另一个周期的高频分量产生了交叉。

 然后来辨析一下采样频率Nyquist 频率 以及 混叠效应(aliasing)

采样频率fs必须至少是信号中存在的信号最高频率fmax的2倍,以便信号能够被完整准确地重建。

Nyquist 频率 是采样频率的一半,表示信号在不产生混叠效应的情况下,能够准确采样的最大频率。公式为:

 混叠效应(aliasing)【频率对称性或者采样频率不够高】当信号中包含的频率超过了 Nyquist 频率时,这些高于 fN的频率成分会被“折叠”回低频范围,导致错误的频率成分出现在频谱中。这个现象被称为混叠效应。

https://blog.csdn.net/weixin_38345163/article/details/127231347

采样产生混叠之后,由于混叠的对称,产生的信号如下图所示,可以看出这个1v,2.6M,的信号会在奈奎斯特频率以内的0.4M左右产生混叠信号,所以我们就要通过抗混叠滤波器把这个2.6M的噪声衰减的足够低,也就是说我们要把超过奈奎斯特频率的信号足够的衰减。 

 

 

 从频谱图中可以明显看见,接收到的信号频谱中含有大量的高频分量。这些高频分量不仅占用带宽,还会影响后续的基带信号恢复,因此在解调前必须通过低通滤波器滤除。 

5、双路FIR低通滤波器模块:

 

参数设置:采样频率(必须与输入信号的采样率一致,避免因采样率不匹配引起的频谱失真):4096000;滤波阶数(决定滤波器的性能和过渡带宽(阶数越高,过渡带越窄,但计算复杂度越高)):51;截止频率:32kHz(滤除32kHz基带信号以外的频率成分);窗函数类型:Hamming;滤波器输出放大:1。

未经过双路FIR低通滤波器
经过双路FIR低通滤波器

 

滤波后的信号频谱清晰地显示,32kHz 以下的基带信号完整保留,而高频分量被显著抑制

6、符号同步模块:

 

参数设置:符号同步算法类型:Zero-Crossing算法(过零检测算法,不适用输入信号幅度都大于0的信号同步);符号采样点数:128(4096000(输入采样率)/32000(目标采样率)=128); 

      通过观察可以发现,解调映射后信号的采样率是4096000Hz,而本应该恢复出来的信号应该是32000Hz,因此需要对解调后的信号进行抽取。

      此外,在接收数字信号时,为了在准确的判决时刻对接收码元进行判决,以及对接收码元能量正确积分,必须得知接收码元的准确起止时刻。为此,需要获得接收码元起止时刻的信息,以此信息产生与接收码元严格同步的时钟脉冲序列。对于二进制码元而言,码元同步又称为位同步。

对于符号同步主要有两种方式:

第一种是再解调后加入实数符号同步模块:

 第二种是先复数符号同步模块再解调:

 

 

 

 

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

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

相关文章

汽车 OTA 升级:提升下载与升级速度,优化用户体验

摘要: 随着汽车智能化的飞速发展,OTA(Over - the - Air)升级已成为汽车行业的重要技术,它能为车辆持续带来功能更新与性能优化。然而,下载及升级速度较慢的问题常常影响用户体验。本文深入探讨在汽车 OTA …

【Spring+MyBatis】留言墙的实现

目录 1. 添加依赖 2. 配置数据库 2.1 创建数据库与数据表 2.2 创建与数据库对应的实体类 3. 后端代码 3.1 目录结构 3.2 MessageController类 3.3 MessageService类 3.4 MessageMapper接口 4. 前端代码 5. 单元测试 5.1 后端接口测试 5.2 使用前端页面测试 在Spri…

SQLite Select 语句详解

SQLite Select 语句详解 SQLite 是一个轻量级的数据库管理系统,以其简洁的设计和高效的性能被广泛应用于各种场景。在 SQLite 中,SELECT 语句是用于查询数据库中的数据的命令。本文将详细介绍 SQLite 的 SELECT 语句,包括其基本语法、常用功…

深度学习05 ResNet残差网络

目录 传统卷积神经网络存在的问题 如何解决 批量归一化BatchNormalization, BN 残差连接方式 ​残差结构 ResNet网络 ResNet 网络是在 2015年 由微软实验室中的何凯明等几位大神提出,斩获当年ImageNet竞赛中分类任务第一名,目标检测第一名。获得CO…

组件库地址

react: https://react-vant.3lang.dev/components/dialoghttps://react-vant.3lang.dev/components/dialog vue用v2的 Vant 2 - Mobile UI Components built on Vue

docker 进阶命令(基于Ubuntu)

数据卷 Volume: 目录映射, 目录挂载 匿名绑定: 匿名绑定的 volume 在容器删除的时候, 数据卷也会被删除, 匿名绑定是不能做到持久化的, 地址一般是 /var/lib/docker/volumes/xxxxx/_data 绑定卷时修改宿主机的目录或文件, 容器内的数据也会同步修改, 反之亦然 # 查看所有 vo…

从入门到精通:Postman 实用指南

Postman 是一款超棒的 API 开发工具,能用来测试、调试和管理 API,大大提升开发效率。下面就给大家详细讲讲它的安装、使用方法,再分享些实用技巧。 一、安装 Postman 你能在 Postman 官网(https://www.postman.com )下…

将图片base64编码后,数据转成图片

将图片数据进行base64编码后,可以在浏览器上查看图片,只需在前端加上data:image/png;base64,即可 在线工具: Base64转图片 - 加菲工具

【动态规划】详解 0-1背包问题

文章目录 1. 问题引入2. 从 dfs 到动态规划3. 动态规划过程分析4. 二维 dp 的遍历顺序5. 从二维数组到一维数组6. 一维数组的遍历次序7. 背包的遍历顺序8. 代码总结9. 总结 1. 问题引入 0-1 背包是比较经典的动态规划问题,这里以代码随想录里面的例子来介绍下。总的…

LeetCode每日精进:20.有效的括号

题目链接:20.有效的括号 题目描述: 给定一个只包括 (,),{,},[,] 的字符串 s ,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。左括号必须以…

llama.cpp部署 DeepSeek-R1 模型

一、llama.cpp 介绍 使用纯 C/C推理 Meta 的LLaMA模型(及其他模型)。主要目标llama.cpp是在各种硬件(本地和云端)上以最少的设置和最先进的性能实现 LLM 推理。纯 C/C 实现,无任何依赖项Apple 芯片是一流的——通过 A…

Web后端 - Maven管理工具

一 Maven简单介绍 Maven是apache旗下的一个开源项目,是一款用于管理和构建java项目的工具。 Maven的作用 二 Maven 安装配置 依赖配置 依赖传递 依赖范围 生命周期 注意事项:在同一套生命周期中,当运行后面的阶段时,前面的阶段都…

[LeetCode力扣hot100]-C++常用数据结构

0.Vector 1.Set-常用滑动窗口 set<char> ans;//根据类型定义&#xff0c;像vector ans.count()//检查某个元素是否在set里&#xff0c;1在0不在 ans.insert();//插入元素 ans.erase()//删除某个指定元素 2.栈 3.树 树是一种特殊的数据结构&#xff0c;力扣二叉树相…

vite+vue3开发uni-app时低版本浏览器不支持es6语法的问题排坑笔记

重要提示&#xff1a;请首先完整阅读完文章内容后再操作&#xff0c;以免不必要的时间浪费&#xff01;切记&#xff01;&#xff01;&#xff01;在使用vitevue3开发uni-app项目时&#xff0c;存在低版本浏览器不兼容es6语法的问题&#xff0c;如“?.” “??” 等。为了方便…

《计算机视觉》——角点检测和特征提取sift

角点检测 角点的定义&#xff1a; 从直观上理解&#xff0c;角点是图像中两条或多条边缘的交点&#xff0c;在图像中表现为局部区域内的灰度变化较为剧烈的点。在数学和计算机视觉中&#xff0c;角点可以被定义为在两个或多个方向上具有显著变化的点。比如在一幅建筑物的图像…

WWW 2025 | 中南、微软提出端到端双重动态推荐模型,释放LLM在序列推荐中的潜力...

©PaperWeekly 原创 作者 | 殷珺 单位 | 中南大学硕士研究生 研究方向 | 大语言模型、推荐系统 论文题目&#xff1a; Unleash LLMs Potential for Sequential Recommendation by Coordinating Dual Dynamic Index Mechanism 论文链接&#xff1a; https://openreview.net…

c# 2025/2/17 周一

16. 《表达式&#xff0c;语句详解4》 20 未完。。 表达式&#xff0c;语句详解_4_哔哩哔哩_bilibili

数据结构与算法面试专题——堆排序

完全二叉树 完全二叉树中如果每棵子树的最大值都在顶部就是大根堆 完全二叉树中如果每棵子树的最小值都在顶部就是小根堆 设计目标&#xff1a;完全二叉树的设计目标是高效地利用存储空间&#xff0c;同时便于进行层次遍历和数组存储。它的结构使得每个节点的子节点都可以通过简…

iOS开发书籍推荐 - 《高性能 iOS应用开发》(附带链接)

引言 在 iOS 开发的过程中&#xff0c;随着应用功能的增加和用户需求的提升&#xff0c;性能优化成为了不可忽视的一环。尤其是面对复杂的界面、庞大的数据处理以及不断增加的后台操作&#xff0c;如何确保应用的流畅性和响应速度&#xff0c;成为开发者的一大挑战。《高性能 …

微信小程序的制作

制作微信小程序的过程大致可以分为几个步骤&#xff1a;从环境搭建、项目创建&#xff0c;到开发、调试和发布。下面我会为你简要介绍每个步骤。 1. 准备工作 在开始开发微信小程序之前&#xff0c;你需要确保你已经完成了以下几个步骤&#xff1a; 注册微信小程序账号&…