【Matlab】BASK的调制与解调仿真

索引

  • 一、BASK的调制
    • 1.1 曼彻斯特码
    • 1.2 增益控制
    • 1.3 常量求和
    • 1.4 与载波相乘
    • 1.5 波形预览
    • 1.6 参数设置(参考)
  • 二、BASK的解调
    • 2.1 滤波
    • 2.2 信号比较
    • 2.3 波形预览
    • 2.4 参数设置(参考)
  • 三、常见问题

一、BASK的调制

根据BASK调制的原理,信号处理的步骤如下:

graph LR ManchesterCode["曼彻斯特码"] gainControl["增益控制<br />(调制深度处理)"] Sum["与常量1求和"] Times["与载波相乘"] BASK["BASK信号"] ManchesterCode --> gainControl --> Sum --> Times --> BASK
下面我们使用Matlab/Simulink进行模型的分步实现。

1.1 曼彻斯特码

曼彻斯特码可以通过NRZ码和时钟信号进行异或获取。假设\(Manchester(t)\)为曼彻斯特码,NRZ(t)为NRZ码,Clock(t)为时钟信号,则有:

\[Manchester(t)=NRZ(t)\otimes Clock(t) \]

在Simulink中,我们可以使用Bernoulli Binary Geneator来随机生成二进制流,即NRZ码。类似地,我们可以使用Pulse Generator来生成时钟脉冲信号。
上述的两个模块,以及接下来将要使用到的模块,都可以在Library Browser中找到。

因此,我们可以建立一个生成曼彻斯特码的模型:

注:Scope为示波器。

1.2 增益控制

为了实现幅度变化,我们需要使用Gain对曼彻斯特码进行增益控制。在进行增益控制前,我们需要将二进制数字信号转换成浮点型(双精度浮点型),以便更好的处理增益值。下面给出一种实现增益控制的解决方案:

1.3 常量求和

增益控制后,为了处理信号发生器产生的信号,避免后续过程持续出现0信号,需要对受增益控制的信号进行加1处理。我们可以使用Constant来生成常量。

1.4 与载波相乘

求和后,使用Product与载波进行乘法运算,即可得到BASK信号。我们可以使用Signal Geneator来生成载波。

1.5 波形预览

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

上图中,图例XOR表示的为曼彻斯特码的波形图,图例Product表示的是BASK调制信号的波形图。需要注意的是,由于Bernoulli Binary Geneator产生的是随机信号,每次仿真所产生的波形图也是随机的。

1.6 参数设置(参考)

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

模块名 参数 设置值
Pulse Generator Period (secs) 1
Pulse Width (% of period) 50
Gain Gain 0.5
Signal Generator Frequency 50*pi

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


二、BASK的解调

根据BASK解调的原理,信号处理的步骤如下:

graph LR BASK["BASK信号"] Times["与载波相乘"] LowPassFilter["低通滤波器"] Comparator["比较器"] DemodulatedSignal["解调信号"] BASK --> Times --> LowPassFilter --> Comparator --> DemodulatedSignal
下面我们使用Matlab/Simulink进行模型的分步实现。

2.1 滤波

为了将高频信号与低频信号分开,我们需要使用Analog Filter Design对BASK信号进行滤波处理。在滤波前,为了保证信号值恒为正数,需要与载波相乘。上一章的调制电路被封装成BASK Generator模块,用于生成BASK信号。

特别地,低通滤波器的截止频率需低于两倍的载波频率。

2.2 信号比较

BASK通过低通滤波器后,产生的波形可大致描述解调信号的形状。

上图中,图例XOR表示的为曼彻斯特码的波形图,图例Analog Filter Design表示的是滤波后的信号的波形图。由于们需要更加稳定的数字信号,所以可以使用比较器将波形抽离成数字信号。
以上就是BASK信号解调的模拟电路。

2.3 波形预览

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

上图中,图例XOR表示的为曼彻斯特码的波形图,图例GreaterThanOrEqual表示的是BASK解调信号的波形图。

2.4 参数设置(参考)

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

模块名 参数 设置值
Signal Generator Frequency 50*pi
Constant Constant value 0.6
Analog Filter Design Passband edge frequency (rad/s) 45*pi

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


三、常见问题

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

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

Q:BASK解调框图中比较器的常量比较值选取的理由是什么?
A:在BASK信号与载波相乘并通过低通滤波器后,会产生一种在形状上与曼彻斯特码相似的信号。该信号如2-2中波形图所示。为了得到稳定的01数字信号,我们需要将滤波后的信号进行放大。这时,我们可以取滤波信号最大值和最小值的平均值作为比较量。当信号值大于平均值,输出1;当信号值小于平均值,输出0. 这种方法可以产生稳定的01数字信号,并且不会额外增加解调信号的延迟。

posted @ 2021-05-17 18:14  是阿夢呀  阅读(514)  评论(2编辑  收藏  举报