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

前言

本篇实现了基于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 == 1out = no_shift;
elseout = 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.mzph.cn/news/852781.shtml

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

相关文章

【java计算机专业毕设】房屋租赁系统代码源码MySQL springboot vue html maven送文档ppt

1项目功能 【java计算机专业毕设】房屋租赁系统javaweb MySQL springboot vue html maven 送报告 2项目介绍 系统功能: 房屋租赁系统包括管理员和用户和房东三种角色。 该系统包含多个功能模块,分别为管理员、用户和房东提供服务。管理员功能包括个人中…

20.2 JSON-JSON解码、映射数据类型、处理JSON响应

1. JSON解码 JSON解码,即将JSON格式在字符串转换为Go语言数据类型的变量。 函数Unmarshal接受一个JSON字节切片和一个指定目标格式的接口。而这个借口即与JSON字符串中的结果相匹配的结构体类型的变量。 定义结构体类型 type Person struct { ... }创建结构体变量…

聚鼎科技:现在的装饰画做起来难吗

在当代,装饰画作为一种体现个人品味和审美情趣的方式,已经广泛应用于各种室内空间。不少人会产生这样的疑问:在现代化技术和材料的支持下,制作一幅装饰画是变得容易了,还是依旧充满挑战? 现代科技的确为装饰画的制作带…

微信小程序查分易如何使用?

期末马上到了,老师们又开始为发放成绩而头疼了,堆积如山的试卷,密密麻麻的分数,还有那些不断响起的家长电话,真是让人心烦。别担心,今天就让我来介绍一个让老师“偷懒”神器——查分易微信小程序 第一步&am…

ROS中Twist消息类型

Twist消息类型在Robot Operating System (ROS)中是一个常见的数据结构,主要用于描述物体的线性速度和角速度。这种消息类型在ROS的geometry_msgs包中定义,常用于机器人运动控制,尤其是当需要向机器人发布速度指令时。 Twist消息由两个Vector…

6月14日 Qtday2

#include "widget.h" #include "ui_widget.h" #include <QTimer> using namespace std; Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget), lab1(new QLabel(this)) //初始化一个标签显示登录状态 {//设置华清远见的标签图…

再谈 dijkstra 算法和最短路径问题

前置文章&#xff1a; dijkstra 算法为什么高效 有向图的负权值边与建模 求单源最短路径的新方法 前天晚上实现了一个基于 dijkstra 算法的求单源最短路径的新算法&#xff0c;整理了一篇文章。我非常不愿意把一些直观的问题太过于技术化&#xff0c;但多年的职业经历偏偏让一…

C#——静态成员和非静态成员详情

静态成员和非静态成员 调用: 静态属性(static) : 类名.属性名调用 非静态属性(没static) : 1.先创建对象 2.对象.属性 特点: 静态方法里面只能访问静态成员 非经态方法中可以访问所有的属性 static数据成员在类的内部声明&#xff0c;但只能在类的外部定义&#xff0c;…

【软件安装9】OpenCV多版本安装Ubuntu18.04

文章目录 一、查看已安装的Opencv版本二、安装新版本三、多版本OpenCV切换 OpenCV 官网 在此 一、查看已安装的Opencv版本 查看已安装opencv的版本 pkg-config opencv --modversion官网下载对应的版本&#xff0c;并解压 opencv3.4.3 二、安装新版本 进入前置准备里下载…

24年法考报名照片千万别乱拍,否则卡审

法考报名照片每年都有很多被卡审&#x1f62d; 常见的问题是 ①照片比例不对&#xff0c;无法上传&#xff0c;人像比例要求非常严格 ②照片像素错误&#xff0c;不能直接拿大图压缩图片&#xff0c;需要做出413*626像素的法考证件照 ③照片文件偏大&#xff0c;照片要求40-100…

单触控单输出触摸开关芯片PT2052A

1.产品概述 PT2052封装和丝印 PT2052A 是一款单通道触摸检测芯片。该芯片内建稳压电路&#xff0c;提供稳定电压给触摸感应电路使用&#xff0c;同时内部集成高效完善的触摸检测算法&#xff0c;使得芯片具有稳定的触摸检测效果。该芯片专为取代传统按键而设计&#xff0c;具有…

【精品方案】离散型制造行业智能工厂标准解决方案(49页 PPT)

引言&#xff1a;随着科技的不断进步和制造业的转型升级&#xff0c;离散型制造行业正面临着从传统制造向智能制造转型的迫切需求。离散型制造行业涉及的产品种类繁多&#xff0c;生产流程复杂&#xff0c;对生产效率、产品质量和成本控制有着极高的要求。因此&#xff0c;开发…

SQL中的UPDATE语句:别让你的数据“离家出走”

sql的update操作正式环境用的很少&#xff0c;但是在测试环境还是用的挺多的。 想象一下&#xff0c;你正在管理一个学校的数据库&#xff0c;其中有一个students表&#xff0c;记录着每个学生的信息。有一天&#xff0c;你接到通知说某个学生的年龄或成绩需要更新。这时&…

【Java并发编程之美 | 第一篇】并发编程线程基础

文章目录 1.并发编程线程基础1.1什么是线程和进程&#xff1f;1.2线程创建与运行1.2.1继承Thread类1.2.2实现Runnable接口1.2.3实现Callable接口&#xff08;与线程池搭配使用&#xff09;1.2.4小结 1.3线程常用方法1.3.1线程等待与通知1.3.2线程睡眠1.3.3让出CPU执行权1.3.4线…

漫步者开放式耳机值得买吗?漫步者、西圣、小米硬核测评pk性能!

说起开放式蓝牙耳机&#xff0c;相信大部分朋友都不会陌生。与传统的封闭式耳机相比&#xff0c;开放式蓝牙耳机不仅提升了佩戴舒适度&#xff0c;还对耳朵有良好的保护效果。特别适合喜欢户外运动和长途旅行的用户。然而&#xff0c;由于市场上产品众多&#xff0c;选择一款高…

用Python向Word文档添加页眉和页脚

用Python向Word文档添加页眉和页脚 添加页眉和页脚效果代码 添加页眉和页脚 在本文中&#xff0c;我们将用python向文档中添加页眉和页脚。 效果 添加前的文档&#xff1a; 添加页眉和页脚后&#xff1a; 代码 from docx import Documentdef add_header_footer(doc_path…

UE4_后期_ben_模糊和锐化滤镜

学习笔记&#xff0c;不喜勿喷&#xff0c;侵权立删&#xff0c;祝愿生活越来越好&#xff01; 本篇教程主要介绍后期处理的简单模糊和锐化滤镜效果&#xff0c;学习之前首先要回顾下上节课介绍的屏幕扭曲效果&#xff1a; 这是全屏效果&#xff0c;然后又介绍了几种蒙版&#…

MySQL与PostgreSQL关键对比四(关联查询性能)

引言&#xff1a;MySQL单表的数据规模一般建议在百万级别&#xff0c;而PostgreSQL的单表级别一般可以到亿级&#xff0c;如果是MPP版本就会更多。从基础数据建议上&#xff0c;不难看出&#xff0c;MySQL在Join的情况下也就是主要查询的情况下性能和PostgreSQL相差还是很大的。…

Vue35-生命周期小结

一、8个&#xff0c;4对生命周期函数 第一对&#xff1a;数据监测、数据代理&#xff0c;创建之前和创建之后。 注意&#xff1a;不是vm的创建&#xff01;&#xff01;&#xff01; 第二队&#xff1a;beforeMount和mounted 第三队&#xff1a;beforeUpdate和update 第四队…

vue-element-admin后台集成方案

官网&#xff1a;介绍 | vue-element-adminA magical vue adminhttps://panjiachen.github.io/vue-element-admin-site/zh/guide 1.git环境安装配置及简单操作 1.1git环境安装配置 git软件官网&#xff1a;Git - Downloads (git-scm.com)https://git-scm.com/downloads 下载…