QPSK是英文Quadrature Phase Shift Keying的缩略语简称,意为正交相移键控,是一种数字调制方式。在数字信号的调制方式中QPSK四相移键控是目前最常用的一种卫星数字信号调制方式。
发送信号对应相位,星座图:
解调框图:
相关参数 采样速率:48KHz, 数据速率2.4KHz,载波频率:4KHz, 信号数据长度:20000点。
滤波器参数 81阶 通带截止频率2.5Khz 阻带频率3.6Khz
波形:
仿真代码:
注意:此处Num1为滤波器系数,可以用FDA tool产生后导出到workspace供程序调用。
%QPSK====================================
N=20000;
fs=48000;
fc=4000;
data=[1 0 0 0 1 1 0 1 0 1];
d1=repmat(data,1,200);
data2=zeros(1,N);
for m=0:length(d1)/2-1
if d1(2*m+1) == 0
if d1(2*m+2)==0
data2(20*m+1:20*m+20)=cos(2*pi*fc/fs*[20*m+1:20*m+20]-0.75*pi);
else
data2(20*m+1:20*m+20)=cos(2*pi*fc/fs*[20*m+1:20*m+20]+0.75*pi);
end
else
if d1(2*m+2) == 0
data2(20*m+1:20*m+20)=cos(2*pi*fc/fs*[20*m+1:20*m+20]-0.25*pi);
else
data2(20*m+1:20*m+20)=cos(2*pi*fc/fs*[20*m+1:20*m+20]+0.25*pi);%调制,每两个码元,决定一次相位
end
end
end
%========================================================
% fft1=fft(data2);
% plot(-fs/2+(0:N-1)*fs/(N),fftshift(abs(fft1)));
%=======================================
%========================================
% plot(data2);
% axis([850 1000 -1.5 1.5]);
% grid on;
%=======================================
dataQ=data2.*cos(2*pi*fc/fs*[1:length(data2)]);
dataI=data2.*sin(2*pi*fc/fs*[1:length(data2)]);%同步解调
%========================================
% fft1=fft(dataQ);
% plot(-fs/2+(0:N-1)*fs/(N),fftshift(abs(fft1)));
%========================================
% plot(dataQ);
% axis([750 1000 -1.5 1.5]);
% grid on;
%=======================================
fq=conv(dataQ,Num1);
fi=conv(dataI,Num1);%滤波,Num1为滤波器系数
%========================================
plot(fi);
axis([0 2000 -1.5 1.5]);
grid on;
%=======================================
sq=zeros(1,length(fq));
si=zeros(1,length(fi));
for k1=1:length(fq)%判决
if fq(k1)>0
sq(k1)=1;
else
sq(k1)=0;
end
if fi(k1)>0
si(k1)=0;
else
si(k1)=1;
end
end
sq1=sq(91:20:length(sq));
si1=si(91:20:length(si));%抽取,20分频抽取
stairs(sq1);
axis([0 200 -1.5 1.5]);
% grid on;
datao=zeros(1,2*length(sq1));
for k2=1:length(sq1)
datao(2*k2:2*k2+1)=[sq1(k2),si1(k2)];%串并转换
end
stairs(datao); %阶梯输出
axis([800 910 -1.5 1.5]);
grid on;