基于相干解调法和基于相位比较法的2DPSK数字通信系统 MATLAB Simulink仿真

2023-11-05

1 课程设计目的

通过课程设计,巩固已经学过的通信原理课程中有关数字调制系统的知识,加深对相关知识的理解和应用,学会应用Matlab Simulink工具对通信系统进行仿真和调试。设计与实现的过程中充分利用图书馆和网络资源,提高发现问题和自主解决问题的能力。

2 课程设计内容及基本原理

2.1 课程设计内容

设计一个2PSK数字通信系统或一个2DPSK数字通信系统,具体要求如下:
要求:
(1)掌握调制方式的基本工作原理::调制方法, 解调方法
(2)通信系统的设计:仿真框图 , 功能模块选取,参数设置(如码速率、仿真时间、系统抽样频率、载波频率、滤波器的截止频率等)
(3) Matlab仿真:显示系统不同部分的信号波形:基带信号波形、已调信号波形、加噪信号波形、以及解调后信号波形,2DPSK还需显示码变换前后的波形

要求系统中加入高斯白噪声,分析噪声对信号的影响,基带信号和已调信号的功率谱密度分析,用眼图观察码间串扰,误码率分析。
注:(1)本系统要求必须使用Simulink仿真实现,且不允许直接使用Simulink的调制和解调模块。

2.2 系统基本原理

2.2.1 码变换器
本模块的功能是将绝对码变换成相对码, 相对码利用相邻码元载波相位的相对值表示基带信号的‘0’和‘1’,从而可以消除PSK的相位模糊的问题。

eg: 绝对码:0110 1000 1111 其相对码为:0100 1111 0101
2.2.2 调制

以下框图可以实现上述公式,当相对码为‘0’时,通过码元控制接通上面的开关;当相对码为‘1’时,通过码元控制接通下面的开关。
从实际电路来说,该开关可使用一个电子开关芯片来实现。
码变换在前述2.1节已经说明,此处不再赘述。

2.2.3 解调
2.2.3.1 相干解调法
2DPSK信号先经过带通滤波器,滤掉调制信号频带以外的在信道中混入的噪声,再和本地载波相乘,去除调制信号中的载波成分,再经过低通滤波器去除高频成分,得到包含基带信号的低频信号,将该信号再送入抽样判决器里进行抽样判决得到基带信号的相对码,再经过逆码变换,就得到了基带信号。

2.2.3.2 相位比较法
2DPSK信号先经过带通滤波器,滤掉调制信号频带以外的在信道中混入的噪声,此后该信号分为两路,一路延时一个码元的时间后与另一路的信号相乘,再经过低通滤波器去除高频成分,得到包含基带信号的低频信号,将该信号送入抽样判决器中进行抽样判决,抽样判决器的输出即为原基带信号。


2.2.4 逆码变换器
相对码利用相邻码元载波相位的相对值表示基带信号的‘0’和‘1’,所以可以根据相对码元的微分整流+脉冲展宽来恢复出绝对码,而下面的框图就实现了这样的功能。

3 仿真设计过程

3.1 仿真系统框图

因各模块的框图已在原理中体现,此处只体现系统的总体框图。
3.1.1 基于相干解调法的2DPSK数字通信系统框图

3.1.2 基于相位比较法的2DPSK数字通信系统框图

可以观察到,基于相位比较法的2DPSK数字通信系统逆码变换器,解调后输出的直接是绝对码元。

3.2 SimuLink仿真图


详细仿真图见:https://download.csdn.net/download/weixin_44410704/19702499

3.2.1 基于相干解调法的2DPSK数字通信系统
本系统中比较特别的地方在于:
(1)解调模块中,信号通过低通滤波器后将信号乘以了2,原因在于信源经过前面的调制与解调之后,会衰减到原信源的0.5,此处乘以2后起到恢复信源幅度的作用,从而提高抽样判决的准确性。

(2)在抽样判决之前添加了一个Sample time为0.5的零阶保持器,其作用在于给每个码元进行两次判决,提高准确性;在抽样判决之后添加了一个Sample time为1的零阶保持器,原因是经抽样判决之后,码元数目增加了一倍,此处要得到信源的码元个数,要加上一个Sample time为1的零阶保持器。整体的目的在于提高误码率。

(3)在误码率分析之前添加了两个转换器,原因在于Simulink提供的误码率分析模块输入参数必须是double类型,但我们的码元输出是boolean类型,为了实现类型匹配添加了Conventer转换器。


3.2.2 基于相位比较法的2DPSK数字通信系统
本系统与基于相干解调法的2DPSK数字通信系统存在很多的相似之处,前述基于相干解调法的2DPSK数字通信系统的特别之处,此处不再赘述。
本系统的特别之处在于,延迟单元是通过延时1000个采样点来实现延时一个码元的;在解调模块中,信号通过低通滤波器后将信号乘以了-2,原因在于信号在通过前面的相乘器后码元会反转,并且码元的幅度变为原来的0.5,因此为提高判决准确性乘以了-2。

3.3 系统参数设定

3.3.1 信源
信源的码元速率设置为10Baud/s即Sample time设置为0.1,‘0’和‘1’码元出现的概率分别为0.5即Probability of zero设置为0.5,如下图:

3.3.2 调制
载波的频率设置为100hz即Frequency设置为1002pi rad/sec,采样时间设置为0.0001即每个周期采样100个点,如下图:

3.3.3 信道
信道使用的高斯白噪声信道,可以根据需要修改SNR的值从而改变信噪比,如下图:

3.3.4 解调
3.3.4.1 带通滤波器
带通滤波器选择的巴特沃斯滤波器。
通带为:90hz110hz,原因是基带信号码元传输速率为10Baud/s,载波信号的频率为100hz,所以调制后其功率谱密度90hz110hz之间包含了全部的信息;从而更多得滤除通带外噪声的影响。
采样频率设置为与前述载波的采样频率一致,即10000。

3.3.4.2 低通滤波器
低通滤波器的通带截止频率设置为了10hz,阻带截止频率设置为了15hz。因为经相乘器以后,得到高频部分和低频部分,而低频部分包含了所有的基带信号信息,而低频部分的频率为10hz。

3.3.4.3 抽样判决
将判决电平设置为0.05,经实验发现该判决电平的效果很好,如下图:

3.3.5 频谱分析
在频谱分析仪之前添加了一个零阶保持器,其Sample time设置为0.0001,与载波的采样频率一致;此处必须一致,否则频谱出错。
3.3.6 眼图
眼图前面接了一个零阶保持器,其Sample time设置为0.001,表示每个码元采样100个点。
眼图的参数设置为Samples per symbol = 100,表示每个码元采样100个点;Samples per trace = 2,表示追踪2个码元。如下图:

3.4 仿真的结果及分析

3.4.1 基于相干解调法的2DPSK数字通信系统
考虑到码元过多会导致波形不清晰,前4个波形图(3.4.1)中对应的接收端收到十个码元;后面的频谱图及眼图的接收端收到很多码元(具体的看3.4.1的第(8)点的相关图);信噪比为1。
(1)绝对码和相对码

(2)已调信号波形和加噪信号波形

(3)解调过程产生的波形

(4)解调后的相对码和绝对码与信源绝对码的对比

可以观察到由解调后的绝对码相比于信源来说延迟了4个码元。
(5)基带信号频谱图

(6)已调信号频谱图

由频谱图可以看出,2DPSK的频谱存在两个峰,其中一个峰在100hz处,另一个峰在-100hz处,其带宽为2fs。
(7)眼图
信噪比10dB

信噪比1dB

信噪比0dB

信噪比-10dB

信噪比-15dB

信噪比-20dB

(哈哈哈,感觉好像一只熊猫眼)
在眼图中,上下阴影区的垂直高度表示接收信号振幅失真范围,噪声越大,失真越严重,垂直高度越高。可以对比六张图发现,随着信噪比的降低,眼睛睁得更小了,上下两边的厚度逐渐增加。 (8)误码率 信噪比10dB ![](https://img-blog.csdnimg.cn/20210617193403195.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDQxMDcwNA==,size_16,color_FFFFFF,t_70#pic_center)

信噪比1dB

信噪比0dB

信噪比-10dB

信噪比-15dB

信噪比-20dB(此验证只起到对比的作用)

可以看到,当信噪比大于-10dB时,误码率为0;而信噪比为-15dB时,误码率明显增大,信噪比为-20dB时,误码率继续增大。可见,随着信噪比的减小,误码率逐渐增加。
3.4.2 基于相位比较法的2DPSK数字通信系统
由于绝对码和相对码、已调信号波形和加噪信号波形、基带信号频谱图、已调信号频谱图、眼图与基于相干解调法的2DPSK数字通信系统是一样的,因此关于基于相位比较法的2DPSK数字通信系统的相关部分不再赘述。此处仅讨论解码、解调后的相对码和绝对码与信源绝对码的对比、以及误码率分析。
(1)解码

对比信源绝对码元可以观察到,经过低通滤波器后,各个码元反转了,因此须在低通滤波器后添加一个反转码元的模块(已在仿真图中给出)。
(2)解调后的相对码和绝对码与信源绝对码的对比

可以观察到接收码元相对于信源来说延迟了四个码元,信源的第一个码元丢失,也就是说Computation延迟了一个码元。原因在于解调过程的第一个码元无前一码元进行相位比较。
(3)误码率分析
本分析只考虑信噪比为10dB和-10dB时的误码率分析,因为当信噪比大于0dB时误码率都为0,无法进行比较。
信噪比10dB

信噪比-10dB

对比基于相干解调法的2DPSK数字通信系统的误码分析,可见基于相位比较法的2DPSK数字通信系统性能差一些。同样的信噪比-10dB,同样的调制电路;相干解调误码率为0,而相位比较法误码率为0.1左右,性能差太多了。
四、课程设计小结
4.1 课程设计中遇到的问题
(1)在逆码变换器设计时
在该模块设计过程当中,我首先根据已学知识知道需要一个微分整流和一个脉冲展宽,但是不知道在Simulink中不知道使用什么样的逻辑,百思不得其解。
最后在网上查找才得出现在的方案,实践可知,该方案可用。
(2)在频谱分析时
不知道采样频率要怎么设置,后来设置为和载波的采样频率一致,最后频谱分析才正确。
(3)在误码率分析时
因误码率分析模块的输入参数要求double,而解调后输出的参数是boolean,当时测试一直报错说类型不匹配。
最后想出使用一个转换器将boolean类型转变为double类型,问题解决。
4.2 实验结果
根据各个波形图、频谱图、眼图和误码分析,得出实验结果正确。
但是误码率总是为0,又由于设备条件不足,无法实现更多码元的仿真,我更改了信噪比以体现系统的效果。同时我还比较了相干解调和相位比较法的性能,发现相干解调比相位比较法的性能好很多。
从实际计算知道,误码率一般小于10^(-5)数量级,因此根据本仿真的结果,本仿真符合题目要求。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于相干解调法和基于相位比较法的2DPSK数字通信系统 MATLAB Simulink仿真 的相关文章

  • 查找数组中元素之间的平均差异的有效方法

    希望标题不会让人困惑 通过例子来展示很简单 我有一个像这样的行向量 1 5 6 我想找到每个元素之间的平均差异 此示例中的差异为 4 和 1 因此平均值为 2 5 这是一个小例子 我的行向量可能非常大 我是 MatLab 新手 那么有没有一
  • 使用 java 执行 Matlab 函数

    我正在编写一个应用程序 它使用 matlab 进行图像处理 然后使用 Java 接口显示结果 由于某些原因 我必须同时使用 Java 和 Matlab 如何在java中使用matlab函数 如何创建和访问界面 MATLAB控制 http m
  • 如何获取活动对象 MATLAB GUI 的句柄

    我正在尝试使用 MATLAB GUI 创建日历 我有两个Edit Text对象 edittext1 and edittext2 我想做这个 我把光标放在edittext1然后在日历中选择日期 它会进入文本字段edittext1 同样对于ed
  • 估算缺失数据,同时强制相关系数保持不变

    考虑以下 excel 数据集 m r 2 0 3 3 0 8 4 0 1 3 2 1 5 2 2 3 1 9 2 5 1 2 3 0 2 0 2 6 我的目标是使用以下条件填充缺失值 将上述两列之间的成对相关性表示为 R 大约 0 68 将
  • 如何从绘图处理程序中绘图?

    我有绘图的处理程序或图形的处理程序 例子 h plot 1 0 2 10 xx get h xx DisplayName Annotation 1x1 handle Color 0 0 1 LineStyle LineWidth 0 500
  • 频域和空间域的汉明滤波器

    我想通过在 MATLAB 中应用汉明滤波器来消除一维信号中的吉布斯伪影 我所拥有的是k1这是频域中的信号 我可以通过应用 DFT 来获取时域信号k1 s1 ifft ifftshift k1 该信号具有吉布斯伪影 现在 我想通过 A 乘以汉
  • 从 imread 返回的 ndims

    我正在从文件夹中选取图像 尺寸为128 128 为此 我使用以下代码行 FileName PathName uigetfile jpg Select the Cover Image file fullfile PathName FileNa
  • MATLAB - GUI 和 OPC 服务器

    我想在 MATLAB 中设计一个图形用户界面 可以使用 MATLAB 的过程控制对象链接和嵌入 OPC 工具箱连续读取数据 我怎样才能实现这个 我已经设计了图形用户界面 但我无法将数据读入图形用户界面 就这样做 type opctoolMA
  • 动态调整自定义刻度数

    Taking SO 的一个例子 https stackoverflow com a 7139485 97160 我想根据当前视图调整轴刻度 这是默认行为 除非设置自定义的刻度数 下图展示了由此产生的行为 左侧是默认行为 右侧是带有自定义刻度
  • 如何为已编译的 MATLAB 创建安装程序并要求用户接受我们的许可条款?

    我正在 MATLAB 中编写程序分发给 Windows 用户 我使用 MATLAB 编译器和 MATLAB r2014a 版本来创建程序 我可以使用 MATLAB 应用程序编译器创建 Windows 安装程序 并且它的工作效果可以接受 但是
  • Matlab 一个图上有多个图例 2014b

    我想在一个地块上有多个传说 该解决方案在 2014b 版本之前完美运行 我试图弄清楚如何使用手柄优雅地制作它 但到目前为止还没有成功 欢迎任何想法 2013b 的示例 x 1 50 y1 sin x 2 y2 cos x 2 f figur
  • 从 MATLAB 调用 Java?

    我想要Matlab程序调用java文件 最好有一个例子 需要考虑三种情况 Java 内置库 也就是说 任何描述的here http docs oracle com javase 6 docs api 这些项目可以直接调用 例如 map ja
  • 在 MATLAB 中模拟 C++ 模板

    我试图找出创建 C 模板或 Java 通用对象的替代方案的最佳方法 出于多种不同的原因 我过去曾多次想这样做 但现在我想做的是为几个相关的类创建 saveobj 和 loadobj 函数 我的想法是 我想要一组通用的例程来创建默认结构 然后
  • 我如何编写一个名为 dedbi 的 MATLAB 函数,它将输入 xtx 作为字符串并返回另一个字符串 xtxx 作为输出。

    dedbi 反转单词 即 a 将被 z 替换 b 将被 y 替换 c 将被 x 替换 依此类推 dedbi 将对大写字母执行相同的操作 即将字符串 A 替换为 Z 将 B 替换为 Y 将 C 替换为 X 依此类推 如果我给函数这个字符串 a
  • 如何在Matlab中打印带有千位分隔符的整数?

    我想使用逗号作为千位分隔符将数字转换为字符串 就像是 x 120501231 21 str sprintf 0 0f x 但随着效果 str 120 501 231 21 如果内置fprintf sprintf做不到 我想可以使用正则表达式
  • MATLAB 编译器与 MATLAB 编码器

    两者有什么区别 据我了解 MATLAB Compiler将MATLAB代码包装成 exe文件 这样就可以在不安装MATLAB的情况下使用它 并且只需要MCR 除此之外 MATLAB Builder NE 还可以用于生成与 Net 框架一起使
  • 在matlab中,如何读取python pickle文件?

    在 python 中 我生成了一个 p 数据文件 pickle dump allData open myallData p wb 现在我想在Matlab中读取myallData p 我的Matlab安装在Windows 8下 其中没有Pyt
  • 获取向量幂的有效方法

    我编写了一个代码 在数值上使用勒让德多项式直至某个高 n 阶 例如 case 8 p 6435 x 8 12012 x 6 6930 x 4 1260 x 2 35 128 return case 9 如果向量x太长这会变得很慢 我发现说之
  • matlab中更快的插值方法

    我正在使用 interp1 来插值一些数据 temp 4 30 4 rand 365 10 depth 1 10 dz 0 5 define new depth interval bthD min depth dz max depth ne
  • 如何在 MATLAB 编译的应用程序中运行外部 .m 代码? [复制]

    这个问题在这里已经有答案了 我有一个 MATLAB 项目 我使用 MCC 对其进行编译以获得单个可执行文件 然后我想知道外部程序员是否可以在 exe 中执行他的一些 m 文件 而无需重新编译整个项目 重点是提供一个应用程序 其他开发人员可以

随机推荐

  • Springboot-aop(一)

    引入依赖
  • EfficientNet与EfficientDet论文解读

    这两项工作均来自Google Brain的大佬 EfficientDet可以看做EfficientNet的工作拓展 目前EfficientNet的代码已经开源 EfficientDet已经被复现 这两项工作的纸面效果看起来特别优秀 与其他工
  • Python3中PyMongo使用举例

    MongoDB是一个基于分布式文件存储的开源数据库 由C 语言编写 与平台无关 旨在为WEB应用提供可扩展的高性能数据存储解决方案 MongoDB是一个介于关系数据库和非关系数据库之间的产品 是非关系数据库中功能最丰富 最像关系数据库的 它
  • Bart模型应用实例及解析(二)————基于泰坦尼克号数据集的分类模型

    Bart模型应用实例及解析 二 基于泰坦尼克号数据集的分类模型 前言 一 数据集 1 数据集的获取 2 数据集变量名及意义 3 数据集处理 二 完整代码 三 代码运行结果及解析 1 数据描述性分析 2 建立Bart模型以及分析 3 各模型效
  • __HAL_TIM_SET_CAPTUREPOLARITY的巨坑

    本人在写输入捕获实验的时候使用HAL库中的函数 HAL TIM SET CAPTUREPOLARITY试图切换捕获极性 keil一直报错error expected error expected expression 原以为 HAL TIM
  • 51单片机---流水灯独立按键之控制速度

    文章目录 前言 一 问题 二 代码 前言 对于某些实验室的初级考核内容 以下是代码实例 一 问题 流水灯独立按键之控制速度 用按键控制led的流水灯的流速 要求 LED从左开始 然后左右来回流水 定义三个独立按键 按下按键 改变流速 要求实
  • go 面向对象的处理方式

    go语言特性 Golang语言没有C JAVA一样有面向对象 封装 继承 多态 相关的概念 但是面向对象只是一种编程思想 go借助于struct interface这两个go的数据类型可以实现面向对象的处理 struct是一种包含了数据成员
  • 决议要素_2020年每个网站测试人员的新年决议

    决议要素 您能够根据2019年的决议进行工作吗 我在这里听起来可能很可笑 但是作为Web开发人员 我在2019年的决心是在业余时间跳入Web测试 为什么 因此 我可以从测试人员的角度了解发布周期 我想穿他们的鞋子 从他们的眼神中看到SDLC
  • iframe视频加载完成前添加等待效果

    如图 在响应结果回来之前 保持转圈效果 代码 v loading 2 判断是否响应成功
  • intelliJ IDEA 编写邮箱注册功能报错 AddressException

    之前在myeclipse里面成功过一次 今天用intellij IDEA 来做新的项目 需要实现邮箱注册功能 写好后发现一直报AddressException的错误 网上查资料大多数说没有引入mail jar包 但查看库里有包 弄了一下午一
  • 网络安全初学者工具安装:Kali,Windows xp虚拟机,pikachu靶场,burpsuite安装配置,phpstudy安装(学习笔记)

    摘要 在互联网发展的时代背景下 网络安全成为了越来越不可忽视的重要领域 为此 各国都采取了维护网络安全的举措 对于网络安全人才的需求不断增大 我国作为世界上最多使用计算机人口的国家 对于网络安全人才更是供不应求 近年来 我国开始大力扶持网络
  • 组合预测模型

    组合预测模型 EMD GRU GRU时间序列预测对比 Matlab程序 目录 组合预测模型 EMD GRU GRU时间序列预测对比 Matlab程序 预测结果 基本介绍 程序设计 参考资料 预测结果
  • React+umi+ts+Ant Design前端框架搭建详解

    Ant Design是一个由Alibaba开发的优秀的UI库 它提供了很多易于使用和定制的高质量组件和样式 但是 React和Ant Design都不是完整的应用程序框架 因此需要其他工具和库来帮助我们构建前端应用 这些工具和库包括 Rea
  • jdk1.8的Future特性简介及使用场景

    文章目录 Future简介 什么是Future Future的使用场景 Future接口内部的常用方法 Future的常见用法 一 基础用法 重写Callable接口的call方法 放到异步线程的 submit方法中执行 代码实例 二 进阶
  • UEFI 之 Capsule Update (固件更新)

    概要 什么是UEFI Capsule Update呢 Capsule 顾名思义 是 胶囊 的意思 所以UEFI Capsule Update可以理解为胶囊式固件更新 UEFI规范定义了Firmware Management Protocol
  • 【华为OD机试真题 JS】靠谱的车

    标题 靠谱的车 时间限制 1秒 内存限制 262144K 语言限制 不限 程序员小明打了一辆出租车去上班 出于职业敏感 他注意到这辆出租车的计费表有点问题 总是偏大 出租车司机解释说他不喜欢数字4 所以改装了计费表 任何数字位置遇到数字4就
  • [Scala]001-初识

    Scala 发音 sk l 取自于 Scalable 可伸缩 可扩展的 Language简写 01 基本概念 1 多范式 多种编程方法 目前有四种程序设计方法 面向过程 面向对象 函数式 泛型 编程范式 programming paradi
  • latexit使用教程

    必备条件 下载MacTex mpkg zip并安装 写好test bib文件和test tex文件
  • Flutter一天一控件之ListTile(列表的实现)

    ListTile简介 Flutter中的ListTile控件是一种常用的列表项控件 它可以用于显示列表中的每一个项 通常包含标题 副标题 图标等内容 ListTile控件的外观和行为类似于Android中的ListView中的列表项 一个简
  • 基于相干解调法和基于相位比较法的2DPSK数字通信系统 MATLAB Simulink仿真

    1 课程设计目的 通过课程设计 巩固已经学过的通信原理课程中有关数字调制系统的知识 加深对相关知识的理解和应用 学会应用Matlab Simulink工具对通信系统进行仿真和调试 设计与实现的过程中充分利用图书馆和网络资源 提高发现问题和自