QPSK原理

基础

QPSK(Quadrature Phase Shift Keying)正交相移键控,是一种已相位不同来区分数据的调制方式。

其调制和解调的基本结构如下图所示。
在这里插入图片描述

在这里插入图片描述

推导

Modulation

1、A点:首先信号01经过电平产生,分别生成-1+1的信号。
2、B点:±1信号和coswtsinwt相乘会出现四种结果,如下:

code信号图像
+1sin(wt)在这里插入图片描述
-1-sin(wt)在这里插入图片描述
+1cos(wt)在这里插入图片描述
1-cos(wt)在这里插入图片描述

3、C点

  • 重要的三角公式:cos⁡(a±b)=cosacosb∓sinasinb

  • ±sinwt±coswt相加一共有四种组合,并且结果如下:

在这里插入图片描述

Demodulation

1、D点:在解调端收到的信号是QPSK经过AWGN(高斯白噪信道)后的信号。
2、E点:信号分别与cos和sin的本地载波相乘,会发生如下的变化:在这里插入图片描述

  • 观察上式,经过相乘一共存在3个分量:一个常量一个高频分量一个噪声.
  • 噪声先不予讨论,这部分一般会在信号处理前进行滤波去除,另一方面QPSK系统可以允许一定程度的噪声,不会对解调造成影响

3、F点:高频分量是不需要的成分,在之后的lowpass滤波器中进行了滤除
4、G点:常量是我们需要的分量,我们依靠常量的正负来判断接收的数据。

常量正负抽样判决结果
+1/2+1
-1/2-1

5、H点:两路信号进行组合,得到发射信号。

Matlab 仿真

之后补上。

  • 36
    点赞
  • 205
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
QPSK调制解调原理QPSK(Quadrature Phase Shift Keying)调制是一种常用的数字调制方式,它将两个相邻的比特组成一组,每组比特分别映射到正交的两个载波上,实现数据的传输。QPSK调制可以理解为是BPSK调制与QAM调制的结合,它的调制方式如下图所示: ![QPSK调制原理图](https://img-blog.csdn.net/20170719165128318?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveGlhbmd6aG9uZzE5OTM=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/q/70) QPSK调制的基本原理就是将两个相邻的比特组合在一起,然后将它们分别映射到正交的I轴(In-phase)和Q轴(Quadrature)上形成一个复数,接着将这个复数乘以载波信号,最后将两个载波信号相加得到最终的调制信号。 QPSK解调的基本原理是将接收到的信号经过两个正交的本地载波信号混频后得到两路基带信号,再将这两路信号进行采样和判决解调得到原始比特流。 MATLAB实现: QPSK调制: ```matlab clc; clear; close all; %参数设置 fs = 1000000; %采样率 fc = 100000; %载波频率 N = 1000; %数据长度 M = 2; %调制阶数 fsymbol = 10000; %符号速率 Tsymbol = 1/fsymbol; %符号周期 Tsample = 1/fs; %采样周期 Am = sqrt(2)-1; %调制系数 m = randi([0 M-1], 1, N); %随机生成0~M-1的整数 %QPSK调制 for i=1:N if m(i) == 0 m_i(i) = 1/Am; m_q(i) = 1/Am; elseif m(i) == 1 m_i(i) = -1/Am; m_q(i) = 1/Am; elseif m(i) == 2 m_i(i) = -1/Am; m_q(i) = -1/Am; elseif m(i) == 3 m_i(i) = 1/Am; m_q(i) = -1/Am; end end t = Tsample:Tsample:N*Tsymbol; %时间序列 carrier_i = cos(2*pi*fc*t); %正交载波信号i carrier_q = sin(2*pi*fc*t); %正交载波信号q s_qpsk = m_i.*carrier_i + m_q.*carrier_q; %QPSK调制信号 figure; subplot(2,1,1) plot(t(1:100), m(1:100), '-o'); axis([0 0.02 -0.5 3.5]); xlabel('Time(s)'); ylabel('Amplitude'); title('QPSK Modulation - Input Bit Sequence'); subplot(2,1,2) plot(t(1:100), s_qpsk(1:100), '-'); xlabel('Time(s)'); ylabel('Amplitude'); title('QPSK Modulation - Output Waveform'); ``` QPSK解调: ```matlab clc; clear; close all; %参数设置 fs = 1000000; %采样率 fc = 100000; %载波频率 N = 1000; %数据长度 M = 2; %调制阶数 fsymbol = 10000; %符号速率 Tsymbol = 1/fsymbol; %符号周期 Tsample = 1/fs; %采样周期 Am = sqrt(2)-1; %调制系数 m = randi([0 M-1], 1, N); %随机生成0~M-1的整数 %QPSK调制 for i=1:N if m(i) == 0 m_i(i) = 1/Am; m_q(i) = 1/Am; elseif m(i) == 1 m_i(i) = -1/Am; m_q(i) = 1/Am; elseif m(i) == 2 m_i(i) = -1/Am; m_q(i) = -1/Am; elseif m(i) == 3 m_i(i) = 1/Am; m_q(i) = -1/Am; end end t = Tsample:Tsample:N*Tsymbol; %时间序列 carrier_i = cos(2*pi*fc*t); %正交载波信号i carrier_q = sin(2*pi*fc*t); %正交载波信号q s_qpsk = m_i.*carrier_i + m_q.*carrier_q; %QPSK调制信号 %QPSK解调 s_i = s_qpsk.*carrier_i; %与正交载波信号i相乘 s_q = s_qpsk.*carrier_q; %与正交载波信号q相乘 s_i_int = resample(s_i, fsymbol, fs); %抽取i分量 s_q_int = resample(s_q, fsymbol, fs); %抽取q分量 s_i_int = s_i_int(Tsymbol/Tsample:Tsymbol/Tsample:end); %抽取符号周期的采样点 s_q_int = s_q_int(Tsymbol/Tsample:Tsymbol/Tsample:end); m_demod = zeros(1, N); for i=1:N if s_i_int(i)>0 && s_q_int(i)>0 m_demod(i) = 0; elseif s_i_int(i)<0 && s_q_int(i)>0 m_demod(i) = 1; elseif s_i_int(i)<0 && s_q_int(i)<0 m_demod(i) = 2; elseif s_i_int(i)>0 && s_q_int(i)<0 m_demod(i) = 3; end end %误码率计算 BER = sum(m~=m_demod)/N; %误码率 figure; subplot(2,1,1) plot(t(1:100), s_qpsk(1:100), '-'); xlabel('Time(s)'); ylabel('Amplitude'); title('QPSK Demodulation - Input Waveform'); subplot(2,1,2) plot(t(1:100), m_demod(1:100), '-o'); axis([0 0.02 -0.5 3.5]); xlabel('Time(s)'); ylabel('Amplitude'); title(['QPSK Demodulation - Output Bit Sequence, BER = ', num2str(BER)]); ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值