实验原理
2PSK调制是一种数字调制技术,它将数字比特流转换为连续相位的正弦波信号。在2PSK调制中,每个数字比特被映射为一个离散的相位,通常为0度或180度,这也被称为“二进制相移键控”(Binary Phase Shift Keying)。
PSK调制的原理是将数字信号的位序列映射为不同的相位,然后用载波进行调制。具体而言,PSK的调制过程如下:
1. 将数字信号转换为二进制位序列,例如 0110。
2. 将二进制位序列映射为相应的相位,例如 0 对应 0度相位,1 对应 180度相位,那么 0110 对应的相位序列为 0度、180度、180度、0度。
3. 使用高频载波信号,例如正弦波,作为基础波形。
4. 将相位序列与载波信号相乘,得到调制后的信号。
5. 将调制后的信号传输到接收端。
6. 在接收端,对接收到的信号进行解调,恢复出原始的数字信号。
1.输入信号波形
2.输入信号进行编码
3.绘制已调制信号波形
4.滤波器
5.抽样判决
6.原始代码
close all;
clear
clc;
%%
max = 11;
s = randi([0 1], max, 1); % 产生长度为 max 的随机二进制序列
% 构造二进制序列对应的信号波形 Sinput
Sinput = [];
for n = 1:length(s)
if s(n) == 0
A = zeros(1, 2000); % 码元宽度为 2000
else
A = ones(1, 2000);
end
Sinput = [Sinput A];
end
% 绘制输入信号波形图像
figure(1);
subplot(2,1,1);
plot(Sinput);
grid on
axis([0,2000*length(s),-2,2]);
title('输入信号波形');
% 生成调制信号 s(t) 和载波信号 c(t)
a1 = [];
b1 = [];
f = 1000;
t = 0:2*pi/1999:2*pi;
for n = 1:length(s)
if s(n) == 0
B = zeros(1, 2000); % 码元宽度为 2000
else
B = ones(1, 2000);
end
a1 = [a1 B]; % s(t), 码元宽度 2000
c = cos(2*pi*f*t); % 载波信号
b1 = [b1 c]; % 与 s(t) 等长的载波信号,变为矩阵形式
end
% 绘制调制信号波形图像和频谱图像
figure(2);
subplot(2,1,1)
plot(a1);
grid on;
axis([0 2000*length(s) -2 2]);
title('二进制信号序列 s(t)');
subplot(2,1,2);
plot(abs(fft(a1)));
axis([0 2000*length(s) 0 400]);
title('二进制信号序列 s(t) 频谱');
% 2PSK 调制
a2 = [];
b2 = [];
for n = 1:length(s)
if s(n) == 0
C = ones(1, 2000); % 码元宽度为 2000
d = cos(2*pi*f*t); % 载波信号
else
C = ones(1, 2000);
d = cos(2*pi*f*t+pi); % 载波信号相位反转
end
a2 = [a2 C]; % s(t), 码元宽度 2000
b2 = [b2 d]; % 与 s(t) 等长的载波信号
end
tiaoz = a2 .* b2; % e(t) 调制
% 绘制已调制信号波形图像和频谱图像
figure(3);
subplot(211);
plot(tiaoz);
grid on;
axis([0 2000*length(s) -2 2]);
title('2psk已调制信号');
figure(2);
subplot(212);
plot(abs(fft(a1)));
axis([0 2000*length(s) 0 400]);
title('编码后二进制信号序列频谱');
figure(3);
subplot(212);
plot(abs(fft(tiaoz)));
axis([0 2000*length(s) 0 400]);
title('2psk信号频谱')
fp=500;
fs=700;
rp=3;
rs=20;
fn=11025;
ws=fs/(fn/2);
wp=fp/(fn/2);%计算归一化角频率
[n,wn]=buttord(wp,ws,rp,rs);%计算阶数和截止频率
[b,a]=butter(n,wn);%计算H(z)
freqz(b,a,1000,11025);
subplot(211);
axis([0 40000 -100 3])
title('lpf频谱图');
jt=filter(b,a,tiaoz);
figure(7);
subplot(211);
plot(jt);
grid on
axis([0 2000*length(s) -2 2 ]);
title('经低通滤波器后的信号波形');
figure(7);
subplot(212);
plot(abs(fft(jt)));
axis([0 2000*length(s) 0 800]);
title('经低通滤波器后的信号频率');
for m=1:2000*length(s);
if jt(m)<0;
jt(m)=1;
else jt(m)>0;
jt(m)=0;
end
end
figure(8);
subplot(211);
plot(jt)
grid on
axis([0 2000*length(s) -2 2]);
title('经抽样判决后信号jt(t)波形')
figure(8);
subplot(212);
plot(abs(fft(jt)));
axis([0 2000*length(s) 0 800]);
title('经抽样判决后的信号频谱');
grid on;
n=500:2000:2000*length(s);
a5=[];
a5=[a5 jt(n)];
a6=[];
for n=1:length(s);
if s(n)==0;
G=zeros(1,2000);
else s(n)==1;
G=ones(1,2000);
end
a6=[a6 G];
end