2PSK信号的基本形式
- 在2PSK调制中,信号的相位只有两种可能,分别对应二进制的“0”和“1”。假设2PSK信号的形式为:
s ( t ) = A cos ( 2 π f c t + ϕ ) s(t) = A \cos(2\pi f_c t + \phi) s(t)=Acos(2πfct+ϕ)
- A A A:信号幅度。
- f c f_c fc:载波频率。
-
ϕ
\phi
ϕ:相位,取决于输入数据,通常为:
- ϕ = 0 \phi = 0 ϕ=0,表示二进制“1”;
- ϕ = π \phi = \pi ϕ=π,表示二进制“0”。
在接收端,接收到的信号可能受到噪声的干扰,因此接收信号为:
r ( t ) = A cos ( 2 π f c t + ϕ ) + n ( t ) r(t) = A \cos(2\pi f_c t + \phi) + n(t) r(t)=Acos(2πfct+ϕ)+n(t)
其中, n ( t ) n(t) n(t)表示加性高斯噪声。
相干解调的步骤
(1) 载波同步
在相干解调中,需要一个与发送端载波频率和相位完全同步的本地载波信号,记为:
c ( t ) = cos ( 2 π f c t ) c(t) = \cos(2\pi f_c t) c(t)=cos(2πfct)
该载波通常由接收机的载波同步电路提取。
(2) 同步混频
接收到的信号 r ( t ) r(t) r(t)与本地载波信号 c ( t ) c(t) c(t)相乘。混频后的信号为:
r ′ ( t ) = r ( t ) ⋅ c ( t ) = [ A cos ( 2 π f c t + ϕ ) + n ( t ) ] ⋅ cos ( 2 π f c t ) r'(t) = r(t) \cdot c(t) = [A \cos(2\pi f_c t + \phi) + n(t)] \cdot \cos(2\pi f_c t) r′(t)=r(t)⋅c(t)=[Acos(2πfct+ϕ)+n(t)]⋅cos(2πfct)
通过三角函数公式,展开得到:
r ′ ( t ) = A 2 [ cos ( ϕ ) + cos ( 4 π f c t + ϕ ) ] + n ( t ) ⋅ cos ( 2 π f c t ) r'(t) = \frac{A}{2} \left[\cos(\phi) + \cos(4\pi f_c t + \phi)\right] + n(t) \cdot \cos(2\pi f_c t) r′(t)=2A[cos(ϕ)+cos(4πfct+ϕ)]+n(t)⋅cos(2πfct)
其中:
- cos ( ϕ ) \cos(\phi) cos(ϕ):基带分量(低频分量)。
- cos ( 4 π f c t + ϕ ) \cos(4\pi f_c t + \phi) cos(4πfct+ϕ):高频分量,频率是原载波的两倍。
(3) 低通滤波
通过低通滤波器,滤除高频分量 ( cos ( 4 π f c t + ϕ ) (\cos(4\pi f_c t + \phi) (cos(4πfct+ϕ) 和噪声中的高频分量),只保留基带分量:
r ′ ′ ( t ) = A 2 cos ( ϕ ) + n b ( t ) r''(t) = \frac{A}{2} \cos(\phi) + n_b(t) r′′(t)=2Acos(ϕ)+nb(t)
其中, n b ( t ) n_b(t) nb(t)是低通滤波后的噪声。
(4) 判决(判断“0”或“1”)
根据2PSK信号的相位特性,判决规则如下:
- 如果 cos ( ϕ ) > 0 \cos(\phi) > 0 cos(ϕ)>0,则判决为二进制“1”(对应 ϕ = 0 \phi = 0 ϕ=0)。
- 如果 cos ( ϕ ) < 0 \cos(\phi) < 0 cos(ϕ)<0,则判决为二进制“0”(对应 ϕ = π \phi = \pi ϕ=π)。
为了提高抗噪声性能,接收机通常会进行积分判决或采样判决,在符号周期内对信号进行累加以增强信号的可靠性。
代码
调制
% 数字通信原理 -基于Matlab仿真计算 曾峰 P83 zf0579@sina.com
% 定义时间向量
t = 0:0.001:0.999; % 时间范围为 0 到 0.999 秒,步长为 0.001 秒
% 输入比特流
a = randint(1, 20, 2); % 生成一个随机的二进制比特流,长度为 20
m = a(1:2:20)*2 + a(2:2:20); % 将二进制比特两两组合,映射为符号(00->0, 01->1, 10->2, 11->3)
m = m(ceil(10 * t + 0.01)); % 将符号序列映射到时间向量,使每个符号持续一定时间
% QPSK调制
s = cos(2 * pi * 100 * t + m * pi / 2); % 使用载波频率 100 Hz 和相位 m*pi/2 进行调制。当M等于2,这时PSK通常被称为二进制相移键控(BPSK),当M等于4,这时PSK通常被称为四进制相移键控(QPSK)
% 计算功率谱密度
f = 1000 * (0:256) / 512; % 定义频率向量,范围从 0 到 1000 Hz
S = fft(s, 512); % 对信号 s 进行 512 点快速傅里叶变换 (FFT)
Pss = S .* conj(S) / 512; % 计算功率谱密度 (PSD),即频域幅度的平方归一化
% 绘图
% 绘制输入比特流
subplot(3, 1, 1);
plot(t, a(ceil((100 * t + 0.1) / 5))); % 显示输入比特流的时间分布
axis([0 1 min(a)-0.2 max(a)+0.2]); % 设置轴范围
title('输入比特流'); % 添加标题
xlabel('时间 (秒)'); % x轴标签
ylabel('比特'); % y轴标签
% 绘制QPSK调制后的信号
subplot(3, 1, 2);
plot(t, s); % 绘制调制信号
title('QPSK调制信号'); % 添加标题
xlabel('时间 (秒)'); % x轴标签
ylabel('幅度'); % y轴标签
% 绘制功率谱密度
subplot(3, 1, 3);
plot(f, Pss(1:257)); % 绘制功率谱密度
title('功率谱密度'); % 添加标题
xlabel('频率 (Hz)'); % x轴标签
ylabel('功率/频率'); % y轴标签
解调
% 数字通信原理 -基于Matlab仿真计算 曾峰 P110 zf0579@sina.com
% 添加AWGN噪声到已调信号
r = awgn(s, 0); % 向信号 s 中加入零dB信噪比的加性高斯白噪声 (AWGN)
% 定义时间窗口(每个符号的采样时间)
T = 0:1/1e3:0.099; % 时间向量,范围为 0 到 0.099 秒,对应每个符号的采样时间
% 定义相关器信号
Icorrelator = cos(2*pi*100*T); % 同相分量的相关器
Qcorrelator = -sin(2*pi*100*T); % 正交分量的相关器
% 对接收到的信号进行符号分离和相关操作
for n = 0:9
% 提取第 n 个符号对应的时间片段
result(n+1, :) = [
trapz(T, r(n*100+1:n*100+100) .* Icorrelator), ... % 同相相关器输出
trapz(T, r(n*100+1:n*100+100) .* Qcorrelator) ... % 正交相关器输出
];
end
% 定义4种QPSK参考信号的投影结果
s0 = [
trapz(T, cos(2*pi*100*T) .* Icorrelator), ... % 参考信号 0 (0°)
trapz(T, cos(2*pi*100*T) .* Qcorrelator)
];
s1 = [
trapz(T, cos(2*pi*100*T + pi/2) .* Icorrelator), ... % 参考信号 1 (90°)
trapz(T, cos(2*pi*100*T + pi/2) .* Qcorrelator)
];
s2 = [
trapz(T, cos(2*pi*100*T + pi) .* Icorrelator), ... % 参考信号 2 (180°)
trapz(T, cos(2*pi*100*T + pi) .* Qcorrelator)
];
s3 = [
trapz(T, cos(2*pi*100*T + 3*pi/2) .* Icorrelator), ... % 参考信号 3 (270°)
trapz(T, cos(2*pi*100*T + 3*pi/2) .* Qcorrelator)
];
% 对接收信号每个符号进行判决
for n = 0:9
% 计算接收信号与4个参考信号的欧几里得距离
[C, I(n+1)] = min([
norm(result(n+1, :) - s0), ...
norm(result(n+1, :) - s1), ...
norm(result(n+1, :) - s2), ...
norm(result(n+1, :) - s3)
]);
% I(n+1) 存储最小距离对应的参考信号编号 (1到4)
end
% 将判决结果映射回比特序列
input = a; % 原始输入比特流
output(1:2:20) = floor((I-1)/2); % 高位比特
output(2:2:20) = mod(I-1, 2); % 低位比特
% 绘制输入和输出比特流
subplot(2, 1, 1);
plot(t, input(ceil((100*t + 0.1) / 5))); % 原始输入比特流
title('输入比特流');
xlabel('时间 (秒)');
ylabel('比特');
axis([0 1 -0.2 1.2]);
subplot(2, 1, 2);
plot(t, output(ceil((100*t + 0.1) / 5))); % 解调后的输出比特流
title('输出比特流');
xlabel('时间 (秒)');
ylabel('比特');
axis([0 1 -0.2 1.2]);
- 以上代码选择欧几里得距离而非与参考信号相乘码(相关性)作为判决依据,这两种方法本质上都在计算信号的匹配程度。
CG
- 通信原理(第7版) [Principles of Communications (The Seventh Edition)] (樊昌信,曹丽娜编著)