Matlab使用Simulink仿真实现AM和BPSK信号的解调

news2024/11/26 14:35:48

前言

本篇实现了基于AM和BPSK调制的通信系统,采用Bernoulli Binary Generator生成随机二元序列,码元速率为0.5秒/个。AM调制使用Sine Wave模块生成载波,频率40Hz,相位π/2。BPSK调制通过Switch模块切换相位0和π的载波。信号传输通过AWGN信道添加高斯白噪声。AM解调采用包络检波,使用低通滤波器提取调制信号包络;BPSK解调通过相干解调,信号与载波相乘并滤波去除高频分量。通过Error Rate Calculation模块分析解调信号误码率,验证系统性能。

调制原理

包络检波

包络检波是一种常见的幅度调制(AM)信号解调技术。其基本原理是通过检测信号的包络来恢复原始调制信息。具体步骤如下:

  1. 接收信号:接收的AM信号可以表示为 eq?s%28t%29%20%3D%20%5BA+m%28t%29%5Dcos%28%5Comega%20_%7Bc%7D%20t%29,其中 A 是载波幅度, m(t) 是调制信号,eq?%5Comega%20_%7Bc%7D是载波频率。
  2. 整流:对接收的AM信号进行整流,通常使用二极管进行半波整流或全波整流,将信号的负半周期翻转为正半周期。
  3. 滤波:使用低通滤波器去除载波频率成分,保留调制信号的包络。低通滤波器的截止频率应设置在比载波频率低得多的范围内,只允许通过调制信号的频率成分。
  4. 输出:滤波后的信号即为原始的调制信号 m(t),完成解调过程。

相干解调

相干解调,也称同步解调,是一种用于相位调制(PM)和频率调制(FM)信号的解调技术。其原理是使用与发送端载波同频率、同相位的本地载波进行混频,从而提取调制信号。具体步骤如下:

  1. 接收信号:接收的调制信号可以表示为eq?s%28t%29%20%3D%20%5BA+m%28t%29%5Dcos%28%5Comega%20_%7Bc%7D%20t+%5Cphi%20%28t%29%29其中 A 是载波幅度, m(t) 是调制信号, eq?%5Comega%20_%7Bc%7D是载波频率, ϕ(t) 是相位变化。
  2. 本地载波:产生与发送端载波同频率、同相位的本地载波eq?cos%28%5Comega%20_%7Bc%7D%20t%29
  3. 混频:将接收信号与本地载波相乘,得到eq?s%28t%29cos%28%5Comega%20_%7Bc%7D%20t%29%20%3D%20%5BA+m%28t%29%5Dcos%28%5Comega%20_%7Bc%7D%20t+%5Cphi%20%28t%29%29cos%28%5Comega%20_%7Bc%7D%20t%29。利用三角函数乘积公式展开并简化:eq?s%28t%29cos%28%5Comega%20_%7Bc%7D%20t%29%20%3D%20%5Cfrac%7B1%7D%7B2%7D%5BA+m%28t%29%5D%5Bcos%282%5Comega%20_%7Bc%7D%20t+%5Cphi%20%28t%29%29+cos%28%5Cphi%20%28t%29%29%5D其中包含一个直流分量和一个高频分量。
  4. 滤波:使用低通滤波器去除高频分量,只保留直流分量和低频分量,得到eq?%5Cfrac%7BA+m%28t%29%7D%7B2%7Dcos%28%5Cphi%20%28t%29%29
  5. 恢复信号:如果载波相位完全匹配(即 ϕ(t)=0),则输出为eq?%5Cfrac%7BA+m%28t%29%7D%7B2%7D,经过放大和偏移调整即可恢复原始调制信号 m(t)。

仿真要求

使用Bernoulli Binary Generator模块生成一个随机的二元序列(0/1序列)。假设码元速率为0.5秒/个,意味着每0.5秒产生一个0或1。对随机二元序列(0/1 序列)进行 AM 和 BPSK 调制,载波为sin波形;

7dc1627eb0da42c3a7c80450b7f50821.png

利用高斯白噪声对信道进行模拟,传输调制后的AM和BPSK调制载波;对经过高斯白噪声的调制信号进行解调:AM 调制信号通过包络检 波方案进行解调;BPSK 调制信号通过相干解调方案进行解调;

载波频率为码元速率的 20 倍(即载波周期(时间)是码元周期(时间) 的 1/20)。即载波频率设置为40。

AM调制

载波生成使用 Sine Wave 模块,载波频率设置为40,相位设置为 pi / 2。采样时间均设置为1/1000。

e090d531dcaa474594f8cdc4b13f66df.png

时域信号波形,从上到下二元信号,载波信号,调制信号。 

684752dcaadf40f6a7b5adece30c0272.png

频域波形:

34e0136817bb4ce39757d8ef668dfec1.png

BPSK调制

可利用 Transport Delay 模块对载波(Sin)进行延迟,确保在二元序列为 0 时,相位变成了 pi,但这里我直接使用sine wave产生移相后的波形,也就是第一个相位为0第二个为pi。

这里使用了开关电路,可利用 Switch 模块实现开关电路(即根据 0/1 信源,输出不同相位的调制信号)

22ce9237ebfc44a1ba7b487a367eff72.png

时域信号波形,从上到下二元信号,原始载波信号,移相载波,调制信号。 

48040edd25834ebf914d7053c65adbb0.png

频域波形:

37217499f519449cbd21699399f86c20.png

另外一种实现方法,使用MATLAB Function模块

ec6f7a223b364925a4d48ca37135b22c.png

函数如下所示

function out = BPSK(bit, no_shift, shift)
if bit == 1
    out = no_shift;
else
    out = shift;
end

实现效果也是一样的 

6dda2b2616624b35b6a13f92d7f792db.png

封装成子系统 

接下来,我们要将AM调制过程和BPSK调制过程进行封装,先删去不需要的部分,选择后创建子系统。

AM调制子系统

40aebc9b636d46f0a404873ec9f6bc22.png

BPSK调制子系统 

87c99e62fc624527abe3744d32511a44.png

在这里我们除了将调制信号作为输出之外,还要将原始的二元信号输出作为我们误码率的判断,BPSK因为要使用相干解调,所以还要把载波输出。

信号传输

这里直接将调制信号通过高斯白噪声信道,可以用 AWGN channel 这个模块,用SNR模式

0f65f115b41b406ebb9d56ee1cccc3fb.png

AM和BPSK解调 

AM解调----包络检波

根据包络检波的原理,解调时仅需要对信号进行上/下包络的提取,然后对信号进行低通滤波获得有用消息信号,取绝对值模块,你可利用 abs 模块对调制 AM 波形进行取绝对值,提取上包络; 或者,直接使用 Saturation 模块输出上/下包络的波形,上下限就设置为inf和0就可以了。

滤波器模块,你可利用 Analog Filter Design 设计 besself 低通滤波器,选择低通滤波器。

96acd92a2c1e431ba00be1714b4d40ff.png

BPSK解调----相干解调

相干解调时仅需要将信号与调制过程中的载波信号相乘,然后滤除高频分量即可。滤波器模块可以用上面一样的。

抽样判决

通过对信号的解调,观察信号可以发现解调信号波形与消息信号类似,但却不是标准的二元信号,需对信号进行抽样,设定阈值,判断输出标准的二元信号,可通过 switch 模块的功能实现抽样判决。

AM解调信号如下所示:

1d0ae81bedc743208f57419ad3bdbd78.png

可以看到阈值大概是在3.5左右,所以am的抽样判决可以这样设置:

38cfb229d98e43c5a48a47cdde093b5c.png

同理

bpsk的解调信号如下所示:

8d75bd8015d14ed28dba5e0774a1df05.png

阈值在0,我们可以这样设计:

bfea5072d68e486588ead77b9d3a7e65.png

错误率分析 

对解调信号和消息信号进行对比,分析两种调制方式的误码率。可直接 通过 Error Rate Calculation 模块将消息信号和解调进行进行码元周期的抽样对比,输出错误率;

在这里我们对 Receiver delay 和 communication delay 参数均不作改变,仅将输出类型变为端口输出(Output data 设置为 Port),然后用文本显示器(Display 模块),用于显示 Error Rate Calculation 模块的输出。

参考设计

b09256c5d61847a3a9a4722d79c89813.png

这里的原始二元信号与我们的解调信号有部分对不上,误码率很高大约在50%以上,后面经过时延之后就都能达到1%的误码率了。你可以通过记录信号,用数据查看器去看看二者直接的时间差距。

279900ce9545477b9f07053dc6decf90.png

 

 

 

 

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

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

相关文章

红利之外的A股底仓选择:A50

内容提要 华泰证券指出,当前指数层面下行风险不大,市场再入震荡期下,可关注三条配置线索:1)A50为代表的产业巨头;2)以家电/食饮/物流/出版为代表的稳健消费龙头,3)消费电…

使用 Iceberg、Tabular 和 MinIO 构建现代数据架构

现代数据环境需要一种新型的基础架构,即无缝集成结构化和非结构化数据、轻松扩展并支持高效的 AI/ML 工作负载的基础架构。这就是现代数据湖的用武之地,它为您的所有数据需求提供了一个中心枢纽。然而,构建和管理有效的数据湖可能很复杂。 这…

【离散化 二维差分】850. 矩形面积 II

本文涉及知识点 离散化 二维差分 LeetCode850. 矩形面积 II 给你一个轴对齐的二维数组 rectangles 。 对于 rectangle[i] [x1, y1, x2, y2],其中(x1,y1)是矩形 i 左下角的坐标, (xi1, yi1) 是该矩形 左下角 的坐标…

物联网协议基础知识

协议允许节点以结构化的方式在它们之间进行交互。由于物联网设备的需求和用例在过去几年中迅速发展,协议也随之发展。总而言之,主要有两类协议:网络协议和数据协议。此分类来自广泛应用于 IT 通信网络的 OSI(开放系统互连&#xf…

深入探讨JavaScript的执行机制

预编译 首先下面这段代码的执行是一个怎样的结果呢? showName(); console.log(MyName);var MyName 小陈同学function showName() {console.log(函数showName被执行); }在这段代码中我们声明了一个变量MyName和一个函数showName,调用函数,打…

TWM论文阅读笔记

这是ICLR2023的一篇world model论文,用transformer来做世界模型的sequence prediction。文章贡献是transformer-based world model(不同于以往的如transdreamer的world model,本文的transformer-based world model在inference 的时候可以丢掉…

手机usb共享网络电脑没反应的方法

适用于win10电脑,安卓手机上可以 开启usb网络共享选择,如果选择后一直跳,让重复选择usb选项的话,就开启 开发者模式,进到 开发者模式 里设置 默认usb 共享网络 选项 ,就不会一直跳让你选。 1.先用数据线 连…

一款.NET开源、功能强大、跨平台的绘图库 - OxyPlot

前言 今天大姚给大家分享一款.NET开源(MIT License)、免费、跨平台、功能强大的绘图库,支持多平台使用(包括:WPF、UWP、WinForm、Silverlight、Xamarin.iOS、Xamarin.Android、Xamarin.Forms 和 Xamarin.Mac等&#x…

Disk /dev/sda: 107.4 GB, 107374182400 bytes, 209715200 sectors

Disk /dev/sda: 107.4 GB, 107374182400 bytes, 209715200 sectors 块设备名称为: /dev/sda 设备的大小为:107.4 GB 107374182400 bytes : 107374182400/1024/1024/1024100G (1)块设备名称为:/dev/sd…

DS18B20温度传感器完整使用介绍(配合51单片机)

DS18B20是一款由Maxim Integrated(原Dallas Semiconductor)生产的数字温度传感器,以其高精度、低功耗、灵活的接口方式和易于使用的特性,在各种温度监测应用中被广泛采用。 以下是DS18B20的详细介绍: 基本特性 数字输…

【CSS in Depth2精译】1.1 层叠

CSS 本质上就是声明规则,并让这些特定的规则在各种情况下生效。一个类添加到某个元素上,则应用这个类包含的这一些样式;元素 X 是元素 Y 的一个子节点,则应用另一些样式。浏览器于是根据这些规则,判定所有样式生效的具…

数据结构-十大排序算法集合(四万字精讲集合)

前言 1,数据结构排序篇章是一个大的工程,这里是一个总结篇章,配备动图和过程详解,从难到易逐步解析。 2,这里我们详细分析几个具备教学意义和实际使用意义的排序: 冒泡排序,选择排序&#xff0c…

解决安全规模问题:MinIO 企业对象存储密钥管理服务器

在强大可靠的存储解决方案领域,MinIO 作为持久层脱颖而出,为组织提供安全、持久和可扩展的存储选项。MinIO 通常负责处理关键任务数据,在确保高可用性方面发挥着至关重要的作用,有时甚至在全球范围内。存储数据的性质,…

vue音乐播放条

先看效果 再看代码 <template><div class"footer-player z-30 flex items-center p-2"><div v-if"isShow" class"h-12 w-60 overflow-hidden"><div :style"activeStyle" class"open-detail-control-wrap&…

《现代通信原理与技术》数字调制与解调(MSK调制)实验报告

摘 要&#xff1a; 本实验旨在研究数字调制中的最小频移键控&#xff08;MSK&#xff09;调制技术&#xff0c;并使用MATLAB软件对其进行模拟和实现。首先&#xff0c;我们介绍了MSK调制的原理和特点&#xff0c;以及其在数字通信系统中的应用。然后&#xff0c;我们使用MATLAB…

分布式光纤测温DTS使用的单模光纤与多模光纤有何区别?

分布式光纤测温DTS中使用的单模光纤和多模光纤之间存在着本质区别。单模光纤是一种在光纤通信中应用广泛的光纤类型&#xff0c;几乎所有的光纤入户和主干线通信都采用单模光纤。从通信的角度来看&#xff0c;单模光纤就好比一条单行道的高速铁路&#xff0c;而多模光纤则类似于…

微型操作系统内核源码详解系列五(2):cm3下栈的初始化

系列一&#xff1a;微型操作系统内核源码详解系列一&#xff1a;rtos内核源码概论篇&#xff08;以freertos为例&#xff09;-CSDN博客 系列二&#xff1a;微型操作系统内核源码详解系列二&#xff1a;数据结构和对象篇&#xff08;以freertos为例&#xff09;-CSDN博客 系列…

Flutter 实现软鼠标

文章目录 前言一、如何实现&#xff1f;1、记录鼠标偏移2、MouseRegion获取偏移3、Transform移动图标 二、完整代码三、使用示例总结 前言 flutter在嵌入式系统中运行时&#xff0c;有可能遇到drm鼠标无法使用的情况&#xff0c;但鼠标事件却可以正常接收&#xff0c;此时如果…

一季度直播6000场,同比增长60%,遥望科技透露重要信息

6月17日&#xff0c;经由深圳证券交易所许可&#xff0c;遥望科技&#xff08;股票代码&#xff1a;002291&#xff09;正式对《年报问询函》进行公开回复&#xff0c;就经营的多个维度做出解释和回应。 在回复中&#xff0c;遥望科技预测2024年毛利率为14.4%&#xff0c;相比…

MybatisPlus:高效便捷的Java持久层框架

一、MybatisPlus简介 MybatisPlus&#xff08;简称MP&#xff09;是一个流行的Java持久层框架&#xff0c;在 MyBatis 的基础上只做增强不做改变&#xff0c;为简化开发、提高效率而生&#xff0c;旨在简化数据库操作和提高开发效率。MybatisPlus为开发者提供了一套方便的API和…