资源描述
(完整word)基于MATLAB的π
基于MATLAB的QPSK的仿真实现
(刘海亮 通信1201 1230440103)
摘 要
在以前的数字蜂窝系统中,往往采用FSK、ASK、PSK等调制方式。随着数字蜂窝系统的发展,对调制和数字蜂窝系统的技术要求越来越高, 许多优秀的调制技术应运而生,其中π/4QPSK技术是无线通信中比较突出的一种二进制调制方法
本文概述了π/4QPSK的调制解调原理及其所实现的功能。并通过MATLAB编程对系统在相同条件下,对比了加噪声和没有噪声的情况进行了比较,并画出了它的眼图,及已调制信号的时域波形和频谱.并通过眼图分析其性能。
关键字:π/4QPSK;调制解调原理;MATLAB编程;眼图
1引言
无线通信在现代社会中起着举足轻重的作用。从日常生活到航空航天,从工商业运作到军事领域,无线通信得到了越来越广泛的应用.现代数字调制技术的发展,使得传输速率和频谱的利用率进一步得到提高,功率更加节省。在相同的码元速率下,多进制系统的信息传输速率显然比二进制系统高,但信息速率的提高是以牺牲功率为代价的.显然增大码元宽度,就会增加码元的能量,同时也减少了由于信道特性引起的码间串扰等.恒包络调制适用于限带非线性信道中,能有效地防止非线性引起的幅频效应,节省功率,提高频谱的利用率。多进制调制和恒包络调制这两种技术结合在一起能取得更好的调制效果。
为了使基带信号更好的利用信道进行传输,必须使代表的原始信号经过调制,而调制技术的好坏影响频谱资源的利用和通信性能的好坏。π/4QPSK在QPSK的基础上,克服了180°相位突变,信号轨迹不经过原点,有了更好的功率效率。
2 π/4QPSK调制解调原理
2。1 π/4QPSK调制原理
π/4QPSK也是在QPSK的基础上发展起来的。不同的是这里把信号的相位平面分成π/4的八种相位,八种相位相间的又分成两个相位组。如图1所示。图中带‘*’的相位为一组,带‘。’的相位为另一组。规定 π/4QPSK信号相位每隔Ts=2Tb秒必须从一个组跳变到另一个组.如果当前码元的信号相位等于‘*’组4个相位的一个,那么,下一个码元的信号相位只能变成‘。’组中4个相位的一个,反之也一样。这说明,图1中,符号不同的相位分别构成一个QPSK相量图,只是两者在相位上错开π/4。图1可以看出,在相邻码元之间,信号相位共有4种,即,不会出现π.
图1 π/4QPSK信号的矢量图
π/4QPSK信号的表示式可以写成
(式1)
式中是当前码元信号相位与前一码元信号之差。所谓差分相位编码,就是利用相位差来携带所需传输的信息。对于π/4QPSK信号来讲,对当前码元数据取值,的取值范围为,四种取值,其编码规则为:AB=00对应π/4的相位,AB=10对应3π/4的相位,AB=11对应—3π/4的相位,AB=01对应—π/4的相位。
显然令信号的初始相位为0,则当前码元的相位可能有0,π,,和π/2这八种初始相位.如图1所示。我们令
则有
(式2)
(式3)
上式说明,和完全取决于前一码元的相位及前后码元的相位差,且和的取值只有0,,五种。因此π/4QPSK的信号包络不是恒定的。
为了获取已调π/4QPSK信号,只要获取输入的当前码元数据所对应得和取值,再将其分别与相互正交载波信号相乘,并进行加法运算即可,其组成框图如图2所示
图2 π/4QPSK调制的原理框图
图中的成形滤波器的目的,一是为了抑制已调信号的带外功率辐射,二是去除接受端的码元串扰。
2.2 π/4QPSK的解调原理
π/4QPSK的常用解调方式也有相干解调和非相干解调两种方式。非相干解调主要分为鉴频检测和中频差分解调两种。在这里,我们采用的是中频差分解调。图3为中频差分解调框图.
图3 中频差分解调框图
从图中可以看出,这种电路不需要另外的振荡器产生本地正交载波;经过延时的信号与两个支路的信号和分别相乘,即
(式4)
经虑波和取样,可得
(式5)
根据π/4QPSK信号基带信号的编码规则,只有四种取值。编码规则为:AB=00对应的相位,AB=10对应的相位,AB=11对应 -3π/4的相位,AB=01对应的相位.当为时,当为时,;当为时,当为时,。因此,可以对的符号进行判决,进而直接判决输出发射端的原始数据.判决规则为:时判为0,否则判为1;时判为0,否则判为1。
3 π/4 QPSK信号的调制解调建模
根据前面的原理分析可知,产生调制信号并不难,直接按照框图来就是,但是解调在延式那块不能用直接延时来处理,必须采用Hilbert变换滤波器来实现.因为直接延时的前提是获取准确的载波频率,显然,这种处理的方法随着载波频率的估计误差,以及移动环境下的载波频率的偏移会带来较大误差.Hilbert滤波器是一个准确的相位延时系统,Hilbert滤波器是以个全通的滤波器,会产生90度的相移,其频响为:
(式6)
MATLAB中提供了现成的Hilbert滤波器设计函数firm()。
4 MATALAB仿真π/4 QPSK信号的调制解调(差分解调)过程
1) 仿真QPSK信号的产生方法;
2) 仿真差分解调π/4QPSK信号的过程;
3) 符号速率Rb=1Mbps;
4) 基带成形滤波器滚降系数α=0。8;
5) 采样速率为=8Rb;
绘制π/4 QPSK信号已调信号的频谱及时域波形,绘制解调后的同相反向支路眼图
4.1 π/4 QPSK调制过程的程序清单
ps=1*10^6; %码速率为1MHz
a=0。8; %成形滤波器系数
B=(1+a)*ps; %中频信号处理带宽
Fs=8*10^6; %采样速率
fc=2*10^6; %载波频率
N=2000; %仿真数据的长度
t=0:1/Fs:(N*Fs/ps-1)/Fs; %产生长度为N,频率为fs的时间序列
s=randint(N,1,4); %产生随机四进制数据作为原始数据
%将绝对码变换为相对码%
xk=ones(1,N);
yk=ones(1,N);
for i=2:N
if s(i)==0
xk(i)=xk(i—1)*cos(pi/4)—yk(i—1)*sin(pi/4);
yk(i)=yk(i—1)*cos(pi/4)+xk(i-1)*sin(pi/4);
elseif s(i)==1
xk(i)=xk(i—1)*cos(-pi/4)-yk(i-1)*sin(—pi/4);
yk(i)=yk(i-1)*cos(-pi/4)+xk(i—1)*sin(—pi/4);
elseif s(i)==2
xk(i)=xk(i—1)*cos(3*pi/4)-yk(i—1)*sin(3*pi/4);
yk(i)=yk(i-1)*cos(3*pi/4)+xk(i-1)*sin(3*pi/4);
elseif s(i)==3
xk(i)=xk(i-1)*cos(—3*pi/4)-yk(i—1)*sin(—3*pi/4);
yk(i)=yk(i—1)*cos(-3*pi/4)+xk(i—1)*sin(—3*pi/4);
end
end
%对相对码数据以Fs频率采样%
Ads_i=upsample(xk,Fs/ps);
Ads_q=upsample(yk,Fs/ps);
%加噪声
%SNR=20;
%Ads_i=awgn(Ads_i,SNR);
%Ads_q=awgn(Ads_q,SNR);
%设计平方根升余弦滤波器%
n_T=[—2 2];
rate=Fs/ps;
T=1;
Shape_b = rcosfir(a,n_T,rate,T,’sqrt’);
%对采样后的数据进行升余弦滤波%
rcos_Ads_i=filter(Shape_b,1,Ads_i);
rcos_Ads_q=filter(Shape_b,1,Ads_q);
%产生同相正交两路载频信号
f0_i=cos(2*pi*fc*t);
f0_q=sin(2*pi*fc*t);
%产生PI/4_QPSK已调信号
piqpsk=rcos_Ads_i.*f0_i—rcos_Ads_q。*f0_q;
4.2 Hilbert滤波器的设计程序清单
%设计Hilbert滤波器及相同阶数的普通带通滤波器
fpm=[0 0.25 1 3 3。75 4]*10^6*2/Fs; %firpm函数的频段向量
magpm=[0 0 1 1 0 0]; %firpm函数的幅值向量
n=30; %滤波器阶数
h_bpf=firpm(n,fpm,magpm,'hilbert’) ; %Hilbert带通滤波器
bpf=firpm(n,fpm,magpm); %普通带通滤波器
3) QPSK的解调过程程序清单
%完成对PI/4_QPSK信号的Hilbert滤波及普通滤波
piqpsk_i=filter(bpf,1,piqpsk);
piqpsk_q=filter(h_bpf,1,piqpsk);
%对普通带通滤波后的数据进行一个符号周期延时处理
piqpsk_di=[zeros(1,Fs/ps),piqpsk_i(1:length(piqpsk_i)—Fs/ps)];
%实现差分解调
demod_mult_i=piqpsk_i.*piqpsk_di;
demod_mult_q=piqpsk_q.*piqpsk_di;
%对乘法运算后的同相正交支路滤波
demod_i=filter(Shape_b,1,demod_mult_i);
demod_q=filter(Shape_b,1,demod_mult_q);
5结果分析
图4 QPSK信号的频谱及时域波形图
图5 同相支路眼图
图6 正交支路眼图
图7 加噪音之后的正交支路眼图
图8 加噪音之后的正交支路眼图
图9 Hilbert滤波器
由同相支路和正交支路眼图在加噪音和没加噪音的情况下对比可知,没加噪音的眼图眼孔张得很大,眼图端正,表示码间串扰小,扫描到的波形重叠在一块,波形良好,说明具有良好的解调性能。反之,加了噪音的眼图,眼孔很小,眼线杂乱无章,说明此波形已失真。
6 结束语
随着通信事业的发展,通信系统的设计也会越来越复杂,通过计算机的仿真,可以大大地降低通信过程实验成本。本文设计出一个QPSK仿真模型,以衡量QPSK在理想信道,高斯白噪声信道的性能,通过仿真,可以更好地了解QPSK系统的工作原理,而且为硬件的研制提供一定的参考作用。这次的通信专业方向设计让我把通信原理的一些内容又重新复习了一遍。当然在这过程中我也遇到了一些问题,比如刚开始我运行程序的时候总是只有一个图出来,后来,经过查找相关资料,才得已实现.这次设计让我学会了很多,也认识到了自己还有很多方面的欠缺。
7 参考文献
【1】 通信原理(第六版)作者:樊昌信 曹丽娜,国防工业出版社
【2】 数字调制解调技术的MATLAB与FPGA实现 作者:杜勇,电子工业出版社
附 录
完整程序清单:
ps=1*10^6; %码速率为1MHz
a=0。8; %成形滤波器系数
B=(1+a)*ps; %中频信号处理带宽
Fs=8*10^6; %采样速率
fc=2*10^6; %载波频率
N=2000; %仿真数据的长度
t=0:1/Fs:(N*Fs/ps-1)/Fs;%产生长度为N,频率为fs的时间序列
s=randint(N,1,4); %产生随机四进制数据作为原始数据
%%%%%%%%%将绝对码变换为相对码%%%%%%%%%%
xk=ones(1,N);
yk=ones(1,N);
for i=2:N
if s(i)==0
xk(i)=xk(i—1)*cos(pi/4)—yk(i—1)*sin(pi/4);
yk(i)=yk(i-1)*cos(pi/4)+xk(i-1)*sin(pi/4);
elseif s(i)==1
xk(i)=xk(i—1)*cos(—pi/4)—yk(i—1)*sin(—pi/4);
yk(i)=yk(i-1)*cos(—pi/4)+xk(i—1)*sin(—pi/4);
elseif s(i)==2
xk(i)=xk(i-1)*cos(3*pi/4)—yk(i-1)*sin(3*pi/4);
yk(i)=yk(i—1)*cos(3*pi/4)+xk(i-1)*sin(3*pi/4);
elseif s(i)==3
xk(i)=xk(i—1)*cos(—3*pi/4)-yk(i—1)*sin(-3*pi/4);
yk(i)=yk(i—1)*cos(-3*pi/4)+xk(i—1)*sin(-3*pi/4);
end
end
%对相对码数据以Fs频率采样%%%%%%%
Ads_i=upsample(xk,Fs/ps);
Ads_q=upsample(yk,Fs/ps);
%加噪声
SNR=20;
Ads_i=awgn(Ads_i,SNR);
Ads_q=awgn(Ads_q,SNR);
%设计平方根升余弦滤波器%
n_T=[-2 2];
rate=Fs/ps;
T=1;
Shape_b = rcosfir(a,n_T,rate,T,'sqrt');
%对采样后的数据进行升余弦滤波;
rcos_Ads_i=filter(Shape_b,1,Ads_i);
rcos_Ads_q=filter(Shape_b,1,Ads_q);
%产生同相正交两路载频信号%
f0_i=cos(2*pi*fc*t);
f0_q=sin(2*pi*fc*t);
%产生PI/4_QPSK已调信号
piqpsk=rcos_Ads_i。*f0_i—rcos_Ads_q。*f0_q;
%设计Hilbert滤波器及相同阶数的普通带通滤波器
fpm=[0 0。25 1 3 3。75 4]*10^6*2/Fs; %firpm函数的频段向量
magpm=[0 0 1 1 0 0]; %firpm函数的幅值向量
n=30; %滤波器阶数
h_bpf=firpm(n,fpm,magpm,’hilbert’) ;%Hilbert带通滤波器
bpf=firpm(n,fpm,magpm); %普通带通滤波器
%绘制Hilbert滤波器及普通带通滤波器频率响应
freqz(h_bpf);
freqz(bpf);
%完成对PI/4_QPSK信号的Hilbert滤波及普通滤波
piqpsk_i=filter(bpf,1,piqpsk);
piqpsk_q=filter(h_bpf,1,piqpsk);
%对普通带通滤波后的数据进行一个符号周期延时处理
piqpsk_di=[zeros(1,Fs/ps),piqpsk_i(1:length(piqpsk_i)—Fs/ps)];
%实现差分解调
demod_mult_i=piqpsk_i.*piqpsk_di;
demod_mult_q=piqpsk_q.*piqpsk_di;
%对乘法运算后的同相正交支路滤波
demod_i=filter(Shape_b,1,demod_mult_i);
demod_q=filter(Shape_b,1,demod_mult_q);
%绘制解调后的同相正交支路眼图
eyediagram(demod_i,4*Fs/ps)
eyediagram(demod_q,4*Fs/ps)
%绘制_QPSK信号频谱、pi4_QPSK信号时域波形
figure(1)
m_piqpsk=20*log10(abs(fft(piqpsk,1024)));m_piqpsk=m_piqpsk-max(m_piqpsk);
%设置幅频响应的横坐标单位为MHz
x_f=[0:(Fs/length(m_piqpsk)):Fs/2];x_f=x_f/10^6;
%只显示正频率部分的幅频响应
mpiqpsk=m_piqpsk(1:length(x_f));
%设置时域波表的横坐标单位为us
Len=100;%设置时域波形显示的点数
x_t=1:Len;%产生长度为Len的时间序列
x_t=x_t/Fs*10^6;
%显示所需的频谱及时域波形
subplot(211); plot(x_f,mpiqpsk);
legend('PI/4 QPSK信号频谱');
xlabel(’频率(MHz)’);ylabel(’幅度(dB)');grid on;
subplot(212);plot(x_t,piqpsk(101:Len+100));
legend('PI/4 QPSK时域信号波形');
xlabel('时间(us)’);ylabel('幅度(V)’);grid on;
展开阅读全文