【Matlab】BFSK的调制与解调仿真
阅读原文时间:2021年05月20日阅读:1

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

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

一个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/Simulink进行模型的分步实现。

1.1 异频载波生成

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


上图中,通过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的解调方式有两种,即相干解调和非相干解调。本篇使用相干解调,通过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

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

手机扫一扫

移动阅读更方便

阿里云服务器
腾讯云服务器
七牛云服务器

你可能感兴趣的文章