本篇是【Matlab】BASK的调制与解调仿真的下篇,考虑到阅读体验,故另开一篇分享将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/Simulink进行模型的分步实现。
根据BFSK信号表达式可知,我们需要准备两个不同频率的载波。为了生成异频载波,我们将BASK调制模型中的Signal Geneator替换成Sine Wave。另外,为了体现01信号的特点,需要使曼彻斯特码的其中一个通道经过非门NOT,再通过乘法器。
上图中,通过Product 0b生成的信号代表二进制0的载波,通过Product 1b生成的信号代表二进制1的载波。Scope的波形图如下图所示:
观察1.1中的波形图,我们很容易的得出一个结论:BFSK调制信号由0编码BFSK调制信号和1编码BFSK调制信号加和而得。因此我们让两个异频载波经过Sum即可得到完整的BFSK调制信号。
为了模型的可视性,我将0编码BFSK调制信号和1编码BFSK调制信号进行封装。
使用Scope模块,我们可以观察到各个阶段中信号的波形。将曼彻斯特码和BFSK调制信号连接到示波器,我们可以观察到下图:
我们可以调节各模块的参数来控制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进行模型的分步实现。
在Simulink中,我们可以用Analog Filter Design来代替带通滤波器和低通滤波器,用Sine Wave输出同频解调载波,用GreaterThanOrEqual代替抽样判决器和抽样脉冲。具体模型如下:
使用Scope模块,我们可以观察到各个阶段中信号的波形。将曼彻斯特码、BFSK调制信号和BFSK解调信号连接到示波器,我们可以观察到下图:
下面给出各模块的参考参数:
模块名
自定义名称
参数
设置值
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
希望本篇随笔和姊妹篇能够对大家有所帮助~
手机扫一扫
移动阅读更方便
你可能感兴趣的文章