文章目录
- 2.8 QPSK 调制 / 解调
- 简介
- QPSK 发射机的实现与原理
- QPSK 接收机的实现与原理
- QPSK 性能仿真
- QPSK 变体分析
本博客为系列博客,主要讲解各基带算法的原理与应用,包括:viterbi解码、Turbo编解码、Polar编解码、CORDIC算法、CRC校验、FFT/DFT、QAMtiaozhi/解调、QPSK调制/解调。其他博客链接如下:
- 探秘基带算法:从原理到5G时代的通信变革【一】引言
- 探秘基带算法:从原理到5G时代的通信变革【二】Viterbi解码
- 探秘基带算法:从原理到5G时代的通信变革【三】Turbo 编解码
- 探秘基带算法:从原理到5G时代的通信变革【四】Polar 编解码(一)
- 探秘基带算法:从原理到5G时代的通信变革【四】Polar 编解码(二)
- 探秘基带算法:从原理到5G时代的通信变革【五】CORDIC算法
- 探秘基带算法:从原理到5G时代的通信变革【六】CRC 校验
- 探秘基带算法:从原理到5G时代的通信变革【七】FFT/DFT
- 探秘基带算法:从原理到5G时代的通信变革【八】QAM 调制 / 解调
- 探秘基带算法:从原理到5G时代的通信变革【九】QPSK调制/解调
- 探秘基带算法:从原理到5G时代的通信变革【十】基带算法应用与对比
2.8 QPSK 调制 / 解调
简介
Quadrature Phase Shift Keying (QPSK) 是一种相位调制技术,广泛应用于数字通信系统中。它通过将两个信息比特组合成一个符号进行传输,从而提高频谱效率。下面我们详细解释 QPSK 的原理、公式和应用。
QPSK 的基本思想是利用四个不同的载波相位来表示四个可能的符号状态。在一个符号周期 T s y m T_{sym} Tsym 内,QPSK 信号可以表示为:
s ( t ) = A ⋅ cos [ 2 π f c t + θ n ] , 0 ≤ t ≤ T s y m , n = 1 , 2 , 3 , 4 s(t) = A \cdot \cos{[2\pi f_c t + \theta_n]}, \quad 0 \leq t \leq T_{sym}, \quad n = 1, 2, 3, 4 s(t)=A⋅cos[2πfct+θn],0≤t≤Tsym,n=1,2,3,4
其中, A A A 是信号幅度, f c f_c fc 是载波频率, θ n \theta_n θn 是信号的初始相位,由下式决定:
θ n = ( 2 n − 1 ) π 4 \theta_n = (2n - 1)\frac{\pi}{4} θn=(2n−1)4π
因此,QPSK 的四个可能初始相位分别是 π / 4 \pi/4 π/4, 3 π / 4 3\pi/4 3π/4, 5 π / 4 5\pi/4 5π/4, 和 7 π / 4 7\pi/4 7π/4 弧度。
为了进一步分析 QPSK 信号,我们可以将其分解为两个正交分量:同相分量(In-phase)和正交分量(Quadrature)。通过三角函数的和差化积公式,QPSK 信号可以重写为:
s ( t ) = A ⋅ cos θ n ⋅ cos ( 2 π f c t ) − A ⋅ sin θ n ⋅ sin ( 2 π f c t ) s(t) = A \cdot \cos\theta_n \cdot \cos(2\pi f_c t) - A \cdot \sin\theta_n \cdot \sin(2\pi f_c t) s(t)=A⋅cosθn⋅cos(2πfct)−A⋅sinθn⋅sin(2πfct)
这表明 QPSK 信号是由两个正交基函数 ϕ i ( t ) = cos ( 2 π f c t ) \phi_i(t) = \cos(2\pi f_c t) ϕi(t)=cos(2πfct) 和 ϕ q ( t ) = sin ( 2 π f c t ) \phi_q(t) = \sin(2\pi f_c t) ϕq(t)=sin(2πfct) 加权叠加而成的,权重分别为 s n , i = A ⋅ cos θ n s_{n,i} = A \cdot \cos\theta_n sn,i=A⋅cosθn 和 s n , q = − A ⋅ sin θ n s_{n,q} = -A \cdot \sin\theta_n sn,q=−A⋅sinθn。
在二维坐标系中,QPSK 的星座图可以用四个点表示,这些点对应于四个不同的符号状态。例如,假设 A = 1 A = 1 A=1,则四个符号对应的坐标为 ( cos π / 4 , − sin π / 4 ) (\cos\pi/4, -\sin\pi/4) (cosπ/4,−sinπ/4), ( cos 3 π / 4 , − sin 3 π / 4 ) (\cos3\pi/4, -\sin3\pi/4) (cos3π/4,−sin3π/4), ( cos 5 π / 4 , − sin 5 π / 4 ) (\cos5\pi/4, -\sin5\pi/4) (cos5π/4,−sin5π/4), 和 ( cos 7 π / 4 , − sin 7 π / 4 ) (\cos7\pi/4, -\sin7\pi/4) (cos7π/4,−sin7π/4)。具体计算如下:
- 对于 θ 1 = π / 4 \theta_1 = \pi/4 θ1=π/4, ( s 1 , i , s 1 , q ) = ( cos π / 4 , − sin π / 4 ) = ( 2 / 2 , − 2 / 2 ) (s_{1,i}, s_{1,q}) = (\cos\pi/4, -\sin\pi/4) = (\sqrt{2}/2, -\sqrt{2}/2) (s1,i,s1,q)=(cosπ/4,−sinπ/4)=(2/2,−2/2)。
- 对于 θ 2 = 3 π / 4 \theta_2 = 3\pi/4 θ2=3π/4, ( s 2 , i , s 2 , q ) = ( cos 3 π / 4 , − sin 3 π / 4 ) = ( − 2 / 2 , 2 / 2 ) (s_{2,i}, s_{2,q}) = (\cos3\pi/4, -\sin3\pi/4) = (-\sqrt{2}/2, \sqrt{2}/2) (s2,i,s2,q)=(cos3π/4,−sin3π/4)=(−2/2,2/2)。
类似地,可以计算其他两个符号的状态。
QPSK 的优点在于其高效的频谱利用率和较低的实现复杂度,适用于多种无线通信标准,如 Wi-Fi 和卫星通信。
QPSK 发射机的实现与原理
QPSK(Quadrature Phase Shift Keying)发射机的核心功能是将输入的二进制数据流调制成 QPSK 信号,以便在无线通信系统中传输。图1展示了 QPSK 发射机的基本结构,其实现被封装为一个 MATLAB 函数 qpsk_mod
。该函数接收三个参数:输入的二进制数据流
a
a
a、载波频率
f
c
f_c
fc 和过采样因子
O
F
OF
OF。输出包括调制后的 QPSK 信号
s
s
s、时间基
t
t
t、以及基带同相分量
I
I
I 和正交分量
Q
Q
Q。
function [s,t,I,Q] = qpsk_mod(a,fc,OF)
%Modulate an incoming binary stream using conventional QPSK
%a - input binary data stream (0's and 1's) to modulate
%fc - carrier frequency in Hertz
%OF - oversampling factor (multiples of fc) - at least 4 is better
%s - QPSK modulated signal with carrier
%t - time base for the carrier modulated signal
%I - baseband I channel waveform (no carrier)
%Q - baseband Q channel waveform (no carrier)
L = 2*OF;%samples in each symbol (QPSK has 2 bits in each symbol)
ak = 2*a-1; %NRZ encoding 0-> -1, 1->+1
I = ak(1:2:end);Q = ak(2:2:end);%even and odd bit streams
I=repmat(I,1,L).'; Q=repmat(Q,1,L).';%even/odd streams at 1/2Tb baud
I = I(:).'; Q = Q(:).'; %serialize
fs = OF*fc; %sampling frequency
t=0:1/fs:(length(I)-1)/fs; %time base
iChannel = I.*cos(2*pi*fc*t);qChannel = -Q.*sin(2*pi*fc*t);
s = iChannel + qChannel; %QPSK modulated baseband signal
在实现过程中,首先通过一个分离器将生成的信息比特分为奇数位和偶数位两部分。奇数位对应正交臂(Quadrature Arm),而偶数位对应同相臂(In-phase Arm)。这两路比特流随后以并行方式转换为 NRZ(Non-Return-to-Zero)格式。NRZ 编码的作用是将二进制数据中的 0 0 0 映射为 − 1 -1 −1,而 1 1 1 映射为 + 1 +1 +1。例如,如果输入的二进制数据流为 a = [ 1 , 0 , 1 , 1 ] a = [1, 0, 1, 1] a=[1,0,1,1],则经过 NRZ 编码后得到 a k = [ 1 , − 1 , 1 , 1 ] ak = [1, -1, 1, 1] ak=[1,−1,1,1]。接着,从 a k ak ak 中提取奇数位和偶数位,分别形成 I I I 和 Q Q Q 分量,即 I = [ 1 , 1 ] I = [1, 1] I=[1,1] 和 Q = [ − 1 , 1 ] Q = [-1, 1] Q=[−1,1]。
为了满足符号速率的要求,每个符号包含两个比特,因此符号周期 T s y m T_{sym} Tsym 是比特周期 T b T_b Tb 的两倍,即 T s y m = 2 T b T_{sym} = 2T_b Tsym=2Tb。这意味着,如果 QPSK 符号以与 BPSK 相同的速率传输,则 QPSK 的数据速率是 BPSK 的两倍。
接下来,程序对 I I I 和 Q Q Q 分量进行过采样处理。过采样因子 L = 2 ⋅ O F L = 2 \cdot OF L=2⋅OF 决定了每个符号的采样点数,从而确保信号在时间上具有足够的分辨率。例如,假设 O F = 4 OF = 4 OF=4,则每个符号会被采样 L = 8 L = 8 L=8 次。
在完成过采样后,程序生成的时间基
t
t
t 被定义为
t
=
0
:
1
/
f
s
:
(
l
e
n
g
t
h
(
I
)
−
1
)
/
f
s
t = 0:1/fs:(length(I)-1)/fs
t=0:1/fs:(length(I)−1)/fs,其中采样频率
f
s
=
O
F
⋅
f
c
f_s = OF \cdot f_c
fs=OF⋅fc。随后,基带同相分量
I
I
I 和正交分量
Q
Q
Q 分别与载波信号
cos
(
2
π
f
c
t
)
\cos(2\pi f_c t)
cos(2πfct) 和
−
sin
(
2
π
f
c
t
)
-\sin(2\pi f_c t)
−sin(2πfct) 相乘,生成同相臂和正交臂的已调信号。最终的 QPSK 调制信号通过将这两个分量相加获得:
s
(
t
)
=
I
(
t
)
⋅
cos
(
2
π
f
c
t
)
+
Q
(
t
)
⋅
(
−
sin
(
2
π
f
c
t
)
)
s(t) = I(t) \cdot \cos(2\pi f_c t) + Q(t) \cdot (-\sin(2\pi f_c t))
s(t)=I(t)⋅cos(2πfct)+Q(t)⋅(−sin(2πfct))
此外,为了确保信号的稳定性和准确性,过采样率 L = 2 f s / f c L = 2f_s / f_c L=2fs/fc 被选择为整数,使得每个符号周期内有整数个载波周期。这种设计符合奈奎斯特采样定理的要求,即采样频率 f s f_s fs 至少为载波频率 f c f_c fc 的两倍,即 f s ≥ f c f_s \geq f_c fs≥fc。通过这种方式,QPSK 发射机能够高效地生成高质量的调制信号,适用于各种无线通信场景。
QPSK 接收机的实现与原理
QPSK(Quadrature Phase Shift Keying)接收机的设计得益于其与 BPSK(Binary Phase Shift Keying)之间的特殊关系,因此其实现形式相对简单。如图3所示,QPSK 接收机的核心思想是分别对 I 通道(同相通道)和 Q 通道(正交通道)信号进行解调,其过程与 BPSK 解调方式类似。在解调完成后,I 通道的比特序列和 Q 通道的比特序列会被合并为一个单一的比特流,从而恢复出原始的二进制数据。这一过程由 MATLAB 函数 qpsk_demod
实现,该函数按照图3中的模型完成了 QPSK 解调器的功能。
具体来说,QPSK 接收机的工作流程可以分为以下几个步骤。首先,接收到的 QPSK 调制信号被分解为两个分量:同相分量(I 通道)和正交分量(Q 通道)。这两个分量分别通过与载波信号 cos ( 2 π f c t ) \cos(2\pi f_c t) cos(2πfct) 和 − sin ( 2 π f c t ) -\sin(2\pi f_c t) −sin(2πfct) 相乘完成下变频操作,即将高频调制信号转换为基带信号。随后,经过低通滤波器去除高频成分,得到解调后的 I 通道和 Q 通道信号。这些信号通常以连续时间波形的形式存在,因此需要进一步量化为离散的比特值。对于每个符号周期 T s y m T_{sym} Tsym,I 通道和 Q 通道的信号值会被映射回对应的二进制比特,例如通过判断信号值的正负来确定比特值(正对应 1 1 1,负对应 0 0 0)。最后,I 通道和 Q 通道的比特序列会被重新组合,形成最终的二进制数据流。
function [a] = qpsk_demod(r, fc, OF)
% QPSK_DEMOD - QPSK 解调器
% 输入:
% r - 接收的 QPSK 调制信号(含噪声)
% fc - 载波频率 (Hz)
% OF - 过采样因子 (每个符号的采样点数为 2*OF)
% 输出:
% a - 恢复的二进制比特流
% 参数初始化
fs = OF * fc; % 采样频率
Ts = 1 / fs; % 采样周期
Tsym = 2 * OF * Ts; % 符号周期 (每个符号包含 2*OF 个采样点)
% 时间基
t = (0:length(r)-1) / fs;
% 下变频:将接收到的信号分解为 I 和 Q 分量
iChannel = r .* cos(2 * pi * fc * t); % 同相分量
qChannel = r .* (-sin(2 * pi * fc * t)); % 正交分量
% 低通滤波:去除高频成分
lpf = designLowpassFilter(fs, fc); % 设计低通滤波器
iChannelFiltered = filter(lpf, iChannel); % 滤波同相分量
qChannelFiltered = filter(lpf, qChannel); % 滤波正交通量
% 符号采样:在每个符号周期的中心点采样
samplesPerSymbol = 2 * OF; % 每个符号的采样点数
iSamples = iChannelFiltered(samplesPerSymbol/2:samplesPerSymbol:end);
qSamples = qChannelFiltered(samplesPerSymbol/2:samplesPerSymbol:end);
% 符号判决:将采样值映射回二进制比特
iBits = double(iSamples >= 0); % 判断同相分量的符号
qBits = double(qSamples >= 0); % 判断正交通量的符号
% 将 I 和 Q 比特组合为单个比特流
a = reshape([iBits; qBits], 1, []); % 合并为单行向量
end
% 辅助函数:设计低通滤波器
function lpf = designLowpassFilter(fs, fc)
% 设计一个低通滤波器,截止频率略低于载波频率
fNyquist = fs / 2; % 奈奎斯特频率
lpf = fir1(64, fc / fNyquist); % 使用 FIR 滤波器,64 阶
end
为了更清楚地理解这一过程,我们可以结合具体的例子进行说明。假设接收到的 QPSK 信号经过解调后,I 通道的信号值序列为 [ + 0.8 , − 0.9 ] [+0.8, -0.9] [+0.8,−0.9],而 Q 通道的信号值序列为 [ − 0.7 , + 0.6 ] [-0.7, +0.6] [−0.7,+0.6]。根据 NRZ 编码规则,正信号值被映射为 1 1 1,负信号值被映射为 0 0 0。因此,I 通道的比特序列为 [ 1 , 0 ] [1, 0] [1,0],Q 通道的比特序列为 [ 0 , 1 ] [0, 1] [0,1]。将这两个序列按顺序合并后,得到最终的二进制数据流为 [ 1 , 0 , 0 , 1 ] [1, 0, 0, 1] [1,0,0,1]。这正是原始发送数据的恢复结果。
此外,QPSK 接收机的设计还考虑了实际通信系统中的噪声和失真问题。为了评估 QPSK 系统的性能,通常会通过仿真手段计算误码率(Bit Error Rate, BER)。误码率反映了系统在噪声环境下正确传输数据的能力。在仿真过程中,可以通过调整信噪比(Signal-to-Noise Ratio, SNR)来观察不同噪声水平下的性能表现。
总之,QPSK 接收机的设计充分利用了其与 BPSK 的相似性,简化了解调过程。通过对 I 通道和 Q 通道信号的独立处理以及后续的比特序列合并,接收机能够高效地恢复出原始数据。这种设计不仅在理论上具有清晰的逻辑,在实际应用中也表现出良好的性能和可靠性。
QPSK 性能仿真
在 QPSK(Quadrature Phase Shift Keying)调制解调系统的性能仿真中,整个波形模拟过程包括生成随机消息比特、使用 QPSK 调制对这些比特进行编码、添加对应给定信噪比(Signal-to-Noise Ratio, E b / N 0 E_b/N_0 Eb/N0)的 AWGN(Additive White Gaussian Noise)信道噪声,以及通过相干 QPSK 接收机对接收到的含噪信号进行解调。图4展示了调制器各个阶段的波形。这种仿真不仅验证了系统的设计正确性,还提供了误码率(Bit Error Rate, BER)性能曲线,用于评估系统在噪声环境下的表现。由于 QPSK 本质上是将两个正交调制的 BPSK(Binary Phase Shift Keying)信号组合在一起,因此其性能曲线与传统 BPSK 的性能曲线相同。这意味着,在相同的 E b / N 0 E_b/N_0 Eb/N0 下,QPSK 和 BPSK 的误码率表现一致。
QPSK 变体分析
除了标准 QPSK,还有多种 QPSK 的变体形式,其中包括 Offset-QPSK(OQPSK)、 π / 4 \pi/4 π/4-QPSK 和 π / 4 \pi/4 π/4-DQPSK。这些变体在相位变化和调制方式上有所改进,以适应不同的应用场景。
Offset-QPSK 与标准 QPSK 类似,但 I 通道和 Q 通道的正交载波信号存在时间上的交错(其中一个通道被延迟)。在 OQPSK 中,正交分量不会在同一时刻改变状态,因为状态变化仅发生在符号周期的中间(由于 Q 通道有半个符号的偏移)。这完全消除了 18 0 ∘ 180^\circ 180∘ 的相位跳变,将相位变化限制为每比特周期内的 0 ∘ 0^\circ 0∘ 或 ± 9 0 ∘ \pm90^\circ ±90∘。消除 18 0 ∘ 180^\circ 180∘ 相位跳变的特性使 OQPSK 在频谱特性和抗相位抖动能力方面优于标准 QPSK。此外,如果进一步避免相位跃迁,则可以实现类似最小频移键控(Minimum Shift Keying, MSK)等连续调制方案的性能提升。
π / 4 \pi/4 π/4-QPSK 是另一种重要的 QPSK 变体,其调制信号的星座点从两个相位相差 π / 4 \pi/4 π/4 弧度(即 4 5 ∘ 45^\circ 45∘)的 QPSK 星座中选择。通过在每个连续比特间切换这两个星座,相位变化被限制为 4 5 ∘ 45^\circ 45∘ 的奇数倍,从而消除了 9 0 ∘ 90^\circ 90∘ 和 18 0 ∘ 180^\circ 180∘ 的相位跳变。这一特性使得 π / 4 \pi/4 π/4-QPSK 比标准 QPSK 和 OQPSK 更好地保持了恒包络特性。此外, π / 4 \pi/4 π/4-QPSK 支持差分编码,因此既可以采用相干解调也可以采用非相干解调技术。非相干解调的选择简化了接收机设计,而差分编码的 π / 4 \pi/4 π/4-QPSK 通常被称为 π / 4 \pi/4 π/4-DQPSK。
为了更好地研究 QPSK 及其变体的相位过渡特性,常使用星座图(Constellation Diagram)。星座图能够直观地展示信号在二维复平面上的分布情况,并揭示不同调制方式的特性。例如,标准 QPSK 的星座点均匀分布在四个象限中,而 OQPSK 和 π / 4 \pi/4 π/4-QPSK 的星座图则反映了它们在相位变化方面的改进。
参考资料:QPSK - Quadrature Phase Shift Keying - GaussianWaves