【电路笔记 通信】2PSK(双相移键控)编码并通过MATLAB代码解释

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)] (樊昌信,曹丽娜编著)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值