BPSK调制与解调

实验2BPSK调制与解调

一、实验目的

本实验将帮助学员理解BPSK调制与解调的基本概念,了解BPSK调制与解调过程中的主要功能单元,观察调制解调过程中的信号波形,并验证相关数字通信理论。通过本次实验,学员将达成如下实验目的:

(1)通过时域和频域观察,了解BPSK调制与解调的基本特征;

(2)理解BPSK通信系统的最佳接收机结构;

(3)仿真BPSK通信系统的误码性能,并和理论结果进行对比;

(4)了解噪声和干扰对数字通信系统的影响;

实验原理

2.1 BPSK调制原理

BPSK是二进制相移键控的简称,利用两种相位来传输二元符号。它最常用的两种相位是0与Π,在n时隙上,其信号可以表示为:

图1  BPSK信号表示公式

即传输码元 1时采用与载波同相的正弦波,而传输码元 0 时采用与载波反相的正弦波。这种通过载波的不同相位来直接表示二进制数字信号的调制方式,又称为二进制绝对相移方式。其调制原理图如下所示:

图2  BPSK调制原理图_乘积法

通过相乘的方式,体现出相位之间的变化,把基带信号调制为BPSK信号。

2.2 BPSK解调原理

得到BPSK信号以后,通过AWGN信道传递信号,再对接收到的信号进行解调和抽样,就可以完成原始信号的还原了。在这个过程中,信道中可能对信号施加的噪声、解调时选用的滤波器以及抽样的判决电平等等因素都可能会对结果产生较大影响,整个传输的示意图如下所示:

图3  BPSK调制解调流程图

三、实验内容

在本实验中,我们将探究在不同信噪比之下,BPSK信号通过加性高斯白噪声模拟的信道后的实际误码率,并和理论误码率测量公式计算的结果进行对比,分析影响误码率的因素。实验流程图如下:

图4  MATLAB流程图

3.1 BPSK调制

  • 信号选取

信号的来源有很多,可以是一段随机的01序列,也可以是一张图片或者一段音频。在这里需要满足下述两个条件:

  1. 可以记录下原始的信号;
  2. 样本的数量足够且充分随机;

为便于研究,我们使用随机的01序列作为信号来源:

  • BPSK映射

基于随机信号产生双极性NRZ:根据之前产生的01序列,可以通过乘2减1或者判决是否小于‘1’,把‘0’变为‘-1’,把‘1’变为‘+1’。

  • 上采样

在相邻采样点之间插入(每个符号的采样点数sps-1)个0,实现上采样,使得信号更加平滑,减小误码率,提高系统性能。

图5  上采样的结果图

这里查看了6个符号的结果。

  • 脉冲成形

为了更加贴近实际,我们在这里使用了平方根升余弦脉冲,作为脉冲成形滤波器,将数字信号与脉冲成形滤波器进行卷积,得到输出信号。

  • 载波调制

将映射得到的序列与频率为fc的载波相乘,调制得到BPSK信号。

图6  载波调制后的时域波形

可以看到与矩形脉冲不同的是,信号调制后的幅度有明显的的不同;在不同信号之间,相位差也较为明显。

图7  载波调制后的频域波形

图8  载波调制后的眼图

不难看出此时眼图是“清晰”的,说明信号质量是较好的。

3.2 BPSK解调

  • 相干解调

BPSK只可以通过相干解调的方式来恢复信号,用接收到的信号与载波相乘,将不同信号分隔开。

图9  解调后的时域波形

图10  解调后的频域波形

在频域图中可以看到比较明显的尖锐部分,说明高频被隔离出来了。

  • LPF

滤除高频噪声。

图11  LPF后的时域波形

图12  解调后的频域波形

经过LPF滤波后,频域和时域图明显变得“顺滑”接近传输的图像了。

  • 匹配滤波器

为恢复原始的波形,使用匹配滤波器对低通滤波后的信号进行处理

  • 下采样

下采样则是在接收端对接收到的信号进行抽取,减小采样率,降低计算量,同时使得信号更加稳定,减少噪声影响。

  • 判决

对处理的信号判决恢复电平。

图13  完成调制与解调后的序列对比图

图14  完成调制与解调后的序列对比图(放大)

图中绝大部分是“红色”,说明信号传输以后基本实现了正确的识别,但同时在图中还是存在部分“黑色”凸显,说明实际上由于噪声等原因还是产生了误码。

  • 理论和实际误码率的对比

图15  不同信噪比下的误码率对比

可以看到两个曲线基本是重合的,证明理论模型对实际传输的误码分析是正确的。

问题与建议

问题:在你设计传输的基带方案中,通过理论分析和实验说明所采用的发射和接收脉冲级联响应是否满足Nyquist第一准则?

答:在我设计的方案中,我选择了平方根升余弦脉冲作为级联响应。

  • 理论分析:

首先我们需要获取平方根升余弦滤波器的滚降系数α,通过α计算出滤波器对应的带宽,并与我们设置的带宽对比即可。在本实验中,我们的α设置为0.5,Rs设置为1e6,fs设置为16e6,根据公式

,得到滤波器对应的带宽为0.75MHz,而当前的带宽大小为8MHz,所以理论上可以认为所采用的发射和接收脉冲级联响应满足Nyquist第一准则。

  • 实验说明:

我们可以通过绘制眼图来观察采样后的信号,并判断是否满足Nyquist第一准则。如果眼图打开足够宽,没有重叠或者其他失真,那么就说明该脉冲响应满足Nyquist第一准则。

图16  发射端和接收端眼图的误码率对比

此外,通过计算误码率并与理论误码率进行比较,也可以初步判断是否采用了正确的脉冲响应。

附录:MATLAB代码

clc;
clear all;
close all;

%%%%%%%%%%%%%%%%%%%%%  程序主体 %%%%%%%%%%%%%%%%%%%%%
Rb = 1e6;                           % 比特速率 = 1MHz
M = 2;                              % 进制数
Rs = Rb * log2(M);                  % 符号速率,对于M=2而言,Rs = Rb
Fc = 2e6;                           % 载波频率
Fs = 16e6;                          % 采样频率【满足Niquest采样定理】
sps = Fs / Rs;                      % 每个符号的采样点数
t_simu = 1e-3;                      % 仿真持续时间 = 1ms

Symbols = Rb * t_simu;              % 总符号数
N = Symbols * sps;                  % 总比特数

n = 0 : N - 1;                      % 采样点数的下标
t = n / Fs;                         % 采样时刻
%%%%%%%%%%%%%%%%%%%%%  发射机 %%%%%%%%%%%%%%%%%%%%%
%%%%%% 产生基带信号
data = randi([0 1], 1, Symbols);        % 生成0/1比特序列
x = 1 - 2 * data;                       % 进行符号映射,将0/1序列映射到

%%%%%% 定义脉冲成型滤波器
roll_off = 0.5;
num_of_symbols = 6;
fir_rcos_trans = rcosdesign(roll_off, num_of_symbols, sps, 'sqrt'); % 根升余弦滤波器
N_fir = length(fir_rcos_trans); % 根升余弦滤波器的长度

%%%%%% 对信号进行上采样
data_upsample = upsample(x, sps); % upsample(x, n)在向量x的相邻2个点之间插入(n-1)个0实现上采样

%%%%%% 将上采样的信号送入脉冲成形滤波器进行成型滤波
data_bx = conv(data_upsample, fir_rcos_trans);
% 考虑滤波器的延时:
% conv   :首尾均去掉 (N - 1) / 2
% filter :去掉前 (N - 1) / 2
% filtfilt :没有延时
data_bx = data_bx((N_fir- 1) / 2 + 1: end  - (N_fir- 1) / 2); % 考虑了成型滤波器的时延


%%%%%% BPSK调制
carrier = cos(2 * pi * Fc * t); % 定义载波
data_bpsk = data_bx .* carrier;

%%%%% 绘图
% figure(1);
% plot(t, data_bpsk);
% title('信号的时域波形');
%
% figure(2);
% pwelch(data_bpsk);
% title('信号频谱');
%
% eyediagram(data_bpsk, sps);
% title('眼图');

%%%%%%%%%%%%%%%%%%%%%  信道(加噪声) %%%%%%%%%%%%%%%%%%%%%
%%%%% 设置信噪比
EbN0 = -6 : 8; % 数字通信系统的性能指标,是归一化的SNR:EbN0 = S / N * (W / Rb)
EsN0 = EbN0 + 10 * log10(M);
snr = EbN0 - 10 * log10(0.5 * Fs / Rb);

%%%%% 将BPSK信号通过AWGN信道
for i = 1 : length(snr)
    data_bpsk_addnoise = awgn(data_bpsk, snr(i), 'measured');
    %%%%%%%%%%%%%%%%%%%%%  接收机 %%%%%%%%%%%%%%%%%%%%%
    %%%%% 相干解调
    y_demod = data_bpsk_addnoise .* carrier;
    
    %%%%% 绘图
    %     figure(4);
    %     plot(t, y_demod);
    %     title('相干解调后信号的时域波形');
    %
    %     figure(5);
    %     pwelch(y_demod);
    %     title('相干解调后信号频谱');
    
    %%%%% LPF
    fir_lp = fir1(128, 0.2); % LPF的阶数为128,截止频率为0.2 * (Fs/2)
    N_LPF = length(fir_lp);
    
    y_demod_lpf = filter(fir_lp, 1, y_demod);
    % 考虑了LPF的时延
    y_demod_lpf = y_demod_lpf((N_LPF - 1) / 2 + 1:end);
    
    %%%%% 匹配滤波器
    fir_rcos_rec = fir_rcos_trans;
    N_fir_rec = length(fir_rcos_rec); % MF的阶数
    
    y_demod_lpf_MF = conv(y_demod_lpf, fir_rcos_rec);
    % 考虑了匹配滤波器的时延
    y_demod_lpf_MF = y_demod_lpf_MF((N_fir_rec- 1) / 2 + 1: end  - (N_fir_rec- 1) / 2);
    
    %%%%% 抽取
    y_end = y_demod_lpf_MF(1 : sps : end);
    
    %%%%% 判决
    for k = 1 : length(y_end)
        if y_end(k) >= 0
            y_end(k) = 1;
        else
            y_end(k) = -1;
        end
    end
    
    %%%%% 绘图
    %     figure(6);
    %     stem(y_end,'-k*');hold on;
    %     stem(x,'-ro'); hold on;grid on;
    %     legend('最后输出序列','基带序列');
    %
    %     eyediagram(data_bpsk, sps);
    %     title('发射端眼图');
    %
    %     eyediagram(y_demod_lpf_MF, sps);
    %     title('接收端眼图');
    
    %%%%%%%%%%%%%%%%%%%%%  信宿 %%%%%%%%%%%%%%%%%%%%%
    %%%%% 误码率性能比较
    error=0;
    for j = 1:length(y_end)
        if ( y_end(j) ~= x(j))
            error=error+1;
        end
    end
    bit_error_ratio(i) = error / length(y_end);
end



%%%%% 理论误码率
ber = berawgn(EbN0,'psk',2,'nondiff');

%%%%%%%%%%%%%%%%%%%%%  仿真结果 %%%%%%%%%%%%%%%%%%%%%
semilogy(EbN0, bit_error_ratio,'-*', EbN0, ber, '-+');
xlabel('EbNo');
ylabel('BER');
title('不同信噪比下的误码率仿真曲线');
legend('实验曲线','理论曲线');
grid on




参考文献

这是个人的学习记录,分享给正在学习通信原理的同学,这里有几篇参考文章,感谢博客主给我带来的帮助。


1.BPSK系统的调制和解调 - ee_101的文章 - 知乎 https://zhuanlan.zhihu.com/p/581277432

2.数字频带传输---BPSK - 俗世的囚徒遇见的文章 - 知乎 https://zhuanlan.zhihu.com/p/402121295

3.http://t.csdnimg.cn/JCPeC

  • 27
    点赞
  • 69
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
BPSK是一种基本的数字调制解调技术,其全称为二进制相移键控调制(Binary Phase-Shift Keying modulation)。在Simulink软件中,我们可以使用BPSK模块进行该调制解调过程的仿真。 BPSK调制解调是通过改变信号的相位来传输数字信号。在调制过程中,通过将数字信号映射为二进制数据,然后将每个二进制位与载波波形相乘,得到调制后的信号。在解调过程中,接收到的调制信号经过乘以相位参考波形后,进行滤波处理,然后与相位参考波形相乘,最后通过判决电路将其恢复为数字信号。 在Simulink中,我们可以打开BPSK调制解调模块,该模块分为调制器和解调器两个部分。调制器接收二进制输入信号,并根据输入信号中的1或0来调制载波。解调器通过接收调制后的信号,对其进行解调,还原出原始的数字信号。 在使用该模块进行仿真时,我们可以输入二进制数据作为调制器的输入信号,将其连接到BPSK模块的输入端口。通过设置载波频率、相位和能量参数来定义调制器的特性。然后,将BPSK模块的输出端口连接到解调器的输入端口。解调器通过对接收到的信号进行解调,得到原始的数字信号。 使用Simulink进行BPSK调制解调的仿真可以帮助我们理解和验证该技术的工作原理。可以通过调整输入信号和载波的参数来观察调制解调过程中信号的变化,并通过解调器输出的结果来验证是否成功恢复出原始数字信号。 总而言之,通过Simulink中的BPSK调制解调模块进行仿真,我们可以模拟该技术在数字通信系统中的工作过程,帮助我们更好地理解和分析BPSK调制解调的原理和性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值