首页 技术 正文
技术 2022年11月6日
0 收藏 722 点赞 948 浏览 2681 个字

写在前面

本篇是【Matlab】BASK的调制与解调仿真的下篇,考虑到阅读体验,故另开一篇分享将BFSK的调制与解调仿真。

索引

  • 写在前面
  • 一、BFSK的调制
    • 1.1 异频载波生成
    • 1.2 信号合并
    • 1.3 波形预览
    • 1.4 参数设置(参考)
  • 二、BFSK的解调
    • 2.1 模型搭建
    • 2.2 波形预览
    • 2.3 参数设置(参考)
  • 三、常见问题
  • 写在最后

一、BFSK的调制

一个FSK信号可以看成是两个不同载波的BASK信号的叠加,BFSK信号的频谱可以看成是\(f_1\)和\(f_2\)两个BASK频谱的组合。

频移键控是利用载波的频率来传递数字信号,在BFSK中,载波的频率随着二进制基带信号在\(f_1\)和\(f_2\)两个频率点间变化,频移键控是利用载波的频移变化来传递数字信息的。故其表达式为:

\[e_{BFSK}(t)=
\begin{cases}
A\cos{(\omega_1t+\phi_n)}\\
A\cos{(\omega_2t+\theta_n)}\\
\end{cases}
\]

BFSK的调制方式有两种,即模拟调频法和键控法。本篇使用键控法,通过Simulink进行仿真。键控法的原理图如下图所示:

【Matlab】BFSK的调制与解调仿真
下面我们使用Matlab/Simulink进行模型的分步实现。

1.1 异频载波生成

根据BFSK信号表达式可知,我们需要准备两个不同频率的载波。为了生成异频载波,我们将BASK调制模型中的Signal Geneator替换成Sine Wave。另外,为了体现01信号的特点,需要使曼彻斯特码的其中一个通道经过非门NOT,再通过乘法器。

【Matlab】BFSK的调制与解调仿真
上图中,通过Product 0b生成的信号代表二进制0的载波,通过Product 1b生成的信号代表二进制1的载波。Scope的波形图如下图所示:

1.2 信号合并

观察1.1中的波形图,我们很容易的得出一个结论:BFSK调制信号由0编码BFSK调制信号和1编码BFSK调制信号加和而得。因此我们让两个异频载波经过Sum即可得到完整的BFSK调制信号。

为了模型的可视性,我将0编码BFSK调制信号和1编码BFSK调制信号进行封装。

1.3 波形预览

使用Scope模块,我们可以观察到各个阶段中信号的波形。将曼彻斯特码和BFSK调制信号连接到示波器,我们可以观察到下图:

1.4 参数设置(参考)

我们可以调节各模块的参数来控制BFSK调制信号的形状,下面给出各模块的参考参数:

模块名 参数 设置值
Pulse Generator Period (secs) 1
Pulse Width (% of period) 50
Sine Wave 0b Frequency (rad/sec) 12*pi
Sine Wave 1b Frequency (rad/sec) 24*pi

注:未列出的模块参数按默认处理。


二、BFSK的调制

BFSK的解调方式有两种,即相干解调和非相干解调。本篇使用相干解调,通过Simulink进行仿真。相干解调的原理图如下图所示:

graph LR
Input[“BFSK信号输入”]
BandpassFilter0b[“带通滤波器0b”]
BandpassFilter1b[“带通滤波器1b”]
Product1[“相乘器”]
Product2[“相乘器”]
LowpassFilter1[“低通滤波器”]
LowpassFilter2[“低通滤波器”]
SamplingDecimator[“抽样判决器”]
SamplingPulse[“抽样脉冲”]
Cosine0b[“Cosine Wave 0b”]
Cosine1b[“Cosine Wave 1b”]
Output[“BFSK解调信号输出”]

Input –> BandpassFilter0b –> Product1 –> LowpassFilter1 –> SamplingDecimator –> Output
Input –> BandpassFilter1b –> Product2 –> LowpassFilter2 –> SamplingDecimator
SamplingPulse –> SamplingDecimator
Cosine0b –> Product1
Cosine1b –> Product2

下面我们使用Matlab/Simulink进行模型的分步实现。

2.1 模型搭建

在Simulink中,我们可以用Analog Filter Design来代替带通滤波器和低通滤波器,用Sine Wave输出同频解调载波,用GreaterThanOrEqual代替抽样判决器和抽样脉冲。具体模型如下:

2.2 波形预览

使用Scope模块,我们可以观察到各个阶段中信号的波形。将曼彻斯特码、BFSK调制信号和BFSK解调信号连接到示波器,我们可以观察到下图:

2.3 参数设置(参考)

下面给出各模块的参考参数:

模块名 自定义名称 参数 设置值
Analog Filter Design Bandpass Filter 0b Filter type Bandpass
Lower passband edge frequency (rad/s) 12*pi-20
Upper passband edge frequency (rad/s) 12*pi+20
Bandpass Filter 1b Filter type Bandpass
Lower passband edge frequency (rad/s) 24*pi-20
Upper passband edge frequency (rad/s) 24*pi+20
Lowpass Filter 0b Passband edge frequency (rad/s) 10*pi
Lowpass Filter 1b Passband edge frequency (rad/s) 23*pi
Sine Wave Sine Wave Frequency (rad/sec) 12*pi
Sine Wave1 Frequency (rad/sec) 24*pi
GreaterThanOrEqual GreaterThanOrEqual Relational operator <

注:未列出的模块参数按默认处理。


三、常见问题

Q:仿真过程中遇到正弦波畸变(包括幅度和形状),该怎么处理?

A:若在仿真过程中遇到正弦波畸变(包括幅度和形状),可以在Simulink工程空白处右键,选择Model Configuration Parameters,进入页面后,在选项卡Solver -> Solver details中进行如下参数设置:

参数 设置值
Max step size 1e-5
Relative tolerance 1e-5

.


写在最后

这几周实在是太忙啦,隔了一天才把这一篇写完,不过还是赶在周四前写好了Orz

希望本篇随笔和姊妹篇能够对大家有所帮助~

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,488
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,903
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,736
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,487
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:8,127
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:5,289