写在前面
本篇是【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\)两个频率点间变化,频移键控是利用载波的频移变化来传递数字信息的。故其表达式为:
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调制信号的形状,下面给出各模块的参考参数:
注:未列出的模块参数按默认处理。
二、BFSK的调制
BFSK的解调方式有两种,即相干解调和非相干解调。本篇使用相干解调,通过Simulink进行仿真。相干解调的原理图如下图所示:
下面我们使用Matlab/Simulink进行模型的分步实现。
2.1 模型搭建
在Simulink中,我们可以用Analog Filter Design来代替带通滤波器和低通滤波器,用Sine Wave输出同频解调载波,用GreaterThanOrEqual代替抽样判决器和抽样脉冲。具体模型如下:
2.2 波形预览
使用Scope模块,我们可以观察到各个阶段中信号的波形。将曼彻斯特码、BFSK调制信号和BFSK解调信号连接到示波器,我们可以观察到下图:
2.3 参数设置(参考)
下面给出各模块的参考参数:
注:未列出的模块参数按默认处理。
三、常见问题
Q:仿真过程中遇到正弦波畸变(包括幅度和形状),该怎么处理?
A:若在仿真过程中遇到正弦波畸变(包括幅度和形状),可以在Simulink工程空白处右键,选择Model Configuration Parameters,进入页面后,在选项卡Solver -> Solver details中进行如下参数设置:
.
写在最后
这几周实在是太忙啦,隔了一天才把这一篇写完,不过还是赶在周四前写好了Orz
希望本篇随笔和姊妹篇能够对大家有所帮助~