前言
本篇实现了基于AM和BPSK调制的通信系统,采用Bernoulli Binary Generator生成随机二元序列,码元速率为0.5秒/个。AM调制使用Sine Wave模块生成载波,频率40Hz,相位π/2。BPSK调制通过Switch模块切换相位0和π的载波。信号传输通过AWGN信道添加高斯白噪声。AM解调采用包络检波,使用低通滤波器提取调制信号包络;BPSK解调通过相干解调,信号与载波相乘并滤波去除高频分量。通过Error Rate Calculation模块分析解调信号误码率,验证系统性能。
调制原理
包络检波
包络检波是一种常见的幅度调制(AM)信号解调技术。其基本原理是通过检测信号的包络来恢复原始调制信息。具体步骤如下:
- 接收信号:接收的AM信号可以表示为 ,其中 A 是载波幅度, m(t) 是调制信号,是载波频率。
- 整流:对接收的AM信号进行整流,通常使用二极管进行半波整流或全波整流,将信号的负半周期翻转为正半周期。
- 滤波:使用低通滤波器去除载波频率成分,保留调制信号的包络。低通滤波器的截止频率应设置在比载波频率低得多的范围内,只允许通过调制信号的频率成分。
- 输出:滤波后的信号即为原始的调制信号 m(t),完成解调过程。
相干解调
相干解调,也称同步解调,是一种用于相位调制(PM)和频率调制(FM)信号的解调技术。其原理是使用与发送端载波同频率、同相位的本地载波进行混频,从而提取调制信号。具体步骤如下:
- 接收信号:接收的调制信号可以表示为其中 A 是载波幅度, m(t) 是调制信号, 是载波频率, ϕ(t) 是相位变化。
- 本地载波:产生与发送端载波同频率、同相位的本地载波。
- 混频:将接收信号与本地载波相乘,得到。利用三角函数乘积公式展开并简化:其中包含一个直流分量和一个高频分量。
- 滤波:使用低通滤波器去除高频分量,只保留直流分量和低频分量,得到
- 恢复信号:如果载波相位完全匹配(即 ϕ(t)=0),则输出为,经过放大和偏移调整即可恢复原始调制信号 m(t)。
仿真要求
使用Bernoulli Binary Generator模块生成一个随机的二元序列(0/1序列)。假设码元速率为0.5秒/个,意味着每0.5秒产生一个0或1。对随机二元序列(0/1 序列)进行 AM 和 BPSK 调制,载波为sin波形;
利用高斯白噪声对信道进行模拟,传输调制后的AM和BPSK调制载波;对经过高斯白噪声的调制信号进行解调:AM 调制信号通过包络检 波方案进行解调;BPSK 调制信号通过相干解调方案进行解调;
载波频率为码元速率的 20 倍(即载波周期(时间)是码元周期(时间) 的 1/20)。即载波频率设置为40。
AM调制
载波生成使用 Sine Wave 模块,载波频率设置为40,相位设置为 pi / 2。采样时间均设置为1/1000。
时域信号波形,从上到下二元信号,载波信号,调制信号。
频域波形:
BPSK调制
可利用 Transport Delay 模块对载波(Sin)进行延迟,确保在二元序列为 0 时,相位变成了 pi,但这里我直接使用sine wave产生移相后的波形,也就是第一个相位为0第二个为pi。
这里使用了开关电路,可利用 Switch 模块实现开关电路(即根据 0/1 信源,输出不同相位的调制信号)
时域信号波形,从上到下二元信号,原始载波信号,移相载波,调制信号。
频域波形:
另外一种实现方法,使用MATLAB Function模块
函数如下所示
function out = BPSK(bit, no_shift, shift)
if bit == 1out = no_shift;
elseout = shift;
end
实现效果也是一样的
封装成子系统
接下来,我们要将AM调制过程和BPSK调制过程进行封装,先删去不需要的部分,选择后创建子系统。
AM调制子系统
BPSK调制子系统
在这里我们除了将调制信号作为输出之外,还要将原始的二元信号输出作为我们误码率的判断,BPSK因为要使用相干解调,所以还要把载波输出。
信号传输
这里直接将调制信号通过高斯白噪声信道,可以用 AWGN channel 这个模块,用SNR模式
AM和BPSK解调
AM解调----包络检波
根据包络检波的原理,解调时仅需要对信号进行上/下包络的提取,然后对信号进行低通滤波获得有用消息信号,取绝对值模块,你可利用 abs 模块对调制 AM 波形进行取绝对值,提取上包络; 或者,直接使用 Saturation 模块输出上/下包络的波形,上下限就设置为inf和0就可以了。
滤波器模块,你可利用 Analog Filter Design 设计 besself 低通滤波器,选择低通滤波器。
BPSK解调----相干解调
相干解调时仅需要将信号与调制过程中的载波信号相乘,然后滤除高频分量即可。滤波器模块可以用上面一样的。
抽样判决
通过对信号的解调,观察信号可以发现解调信号波形与消息信号类似,但却不是标准的二元信号,需对信号进行抽样,设定阈值,判断输出标准的二元信号,可通过 switch 模块的功能实现抽样判决。
AM解调信号如下所示:
可以看到阈值大概是在3.5左右,所以am的抽样判决可以这样设置:
同理
bpsk的解调信号如下所示:
阈值在0,我们可以这样设计:
错误率分析
对解调信号和消息信号进行对比,分析两种调制方式的误码率。可直接 通过 Error Rate Calculation 模块将消息信号和解调进行进行码元周期的抽样对比,输出错误率;
在这里我们对 Receiver delay 和 communication delay 参数均不作改变,仅将输出类型变为端口输出(Output data 设置为 Port),然后用文本显示器(Display 模块),用于显示 Error Rate Calculation 模块的输出。
参考设计
这里的原始二元信号与我们的解调信号有部分对不上,误码率很高大约在50%以上,后面经过时延之后就都能达到1%的误码率了。你可以通过记录信号,用数据查看器去看看二者直接的时间差距。