范文一:bpsk和qpsk调制解调原理及matlab程序
2.1 PSK调制方式
PSK原理介绍(以2-PSK为例)
移相键控(PSK)又称为数字相位调制,二进制移相键控记作2PSK。绝对相移是利用载波的相位(指初相)直接表示数字信号的相移方式。二进制相移键控中,通常用相位0 和π来分别表示“0”或“1”。2PSK 已调信号的时域表达式为s2psk(t)=s(t)cosωct, 2PSK移相键控中的基带信号与频移键控和幅度键控是有区别的,频移键控和幅度键控为单极性非归零矩形脉冲序列,移相键控为为双极性数字基带信号,就模拟调制法而言,与产生2ASK 信号的方法比较,只是对s(t)要求不同,因此2PSK 信号可以看作是双极性基带信号作用下的DSB 调幅信号。
在二进制数字调制中,当正弦载波的相位随二进制数字基带信号离散变化时,则产生二进制移相键控(2PSK)信号。 通常用已调信号载波的 0?和 180?分别表示二进制数字基带信号的 1 和 0。 二进制移相键控信号的时域表达式为
e(t)=[ g(t-nT)]coswt a2PSKsc,nn
其中, an与2ASK和2FSK时的不同,在2PSK调制中,an应选择双极性。
1, 发送概率为P
an=
-1, 发送概率为1-P
若g(t)是脉宽为Ts, 高度为1的矩形脉冲时,则有
cosωct, 发送概率为P
e(t)= 2PSK
-cosωct, 发送概率为1-P
由上式(6.2-28)可看出,当发送二进制符号1时,已调信号e2PSK(t)取0?相位,发送二进制符号0时,e2PSK(t)取180?相位。若用φn表示第n个符号的绝对相位,则有
0?, 发送 1 符号
φn=
180?, 发送 0 符号
由于在2PSK信号的载波恢复过程中存在着180?的相位模糊,所以2PSK信
号的相干解调存在随机的“倒π”现象,从而使得2PSK方式在实际中很少采用。为了解决2PSK信号解调过程的反向工作问题, 提出了二进制差分相位键控(2DPSK),这里不再详述。
2-PSK调制解调
二进制移相键控信号的调制原理:如图9所示。 其中图(a)是采用模拟调制的方法产生2PSK信号,图(b)是采用数字键控的方法产生2PSK信号。
解调器原理:如图10所示。 2PSK信号的解调通常都是采用相干解调, 在相干解调过程中需要用到与接收的2PSK信号同频同相的相干载波。
双极性不归零
s(t) e(t) 2PSK码型变换 乘法器
cos(wt) c
(a) 模拟调制产生2PSK信号
开关电路
0度 cos(wt) ce(t) 2PSK
180度
180度移相 s(t)
(b)数字键控的方法产生2PSK信号
图 9 2PSK信号的调制原理图
a c d e 带通 低通 抽样 相乘器 输出 (t) e滤波器 滤波器 判决器 2PSK
定时 b
脉冲 cos(wt) c
图 10 2PSK信号的解调原理图
10110100
a
b
c
d
e
图11 2PSK信号相干解调各点时间波形
就键控法来说,用数字基带信号s(t)控制开关电路,选择不同相位的载波输出,这时s(t)为单极性NRZ或双极性NRZ 脉冲序列信号均可。当基带信号为0 时候,连通开关0,产生无差别的载波,当所发出的信号为1 时,既连通开关П改变载波的相位。在移相键控中还有一种差分移相键,他和普通的移相键控区别在与,差分移相键只有在当前传输的码元和上次传输的码元产生差别时才会产生相位的变化。移相键控相对与幅度键控和移频键控有着更好的抗干扰性,也更适合于在信道中传输。
QPSK调制
QPSK信号可以看作两个载波正交2PSK信号的合成。
用调相法产生QPSK调制器框图如图12所示,QPSK的调制器可以看作是由两个BPSK调制器构成,输入的串行二进制信息序列经过串并变换,变成两路速率减半的序列,电平发生器分别产生双极性的二电平信号I(t)和Q(t),然后对cosAtω和sinAtω进行调制,相加后即可得到QPSK信号
I(t)
电平产生
Acos(wt)
载波
输出QPSK信号 二进制信息 发生器 串并转换
移相90度
Asin(wt) Q(t) 电平产生
图12 QPSK调制器框图
QPSK解调
QPSK信号的解调原理如图3-5的方框图所示。解调是从已调信号中提
取信号的过程,在某种意义上解调是调制的逆过程。由于QPSK信号可以
看作是两正交2PSK信号的叠加,故用两路正交的相干载波去解调,这样能
够很容易地分离出这两路正交的2PSK信号。相干解调后的两路并行码元a
和b经过“并/串”转换后成为串行数据输出。
相乘 低通 抽判
t cos,0a 载波
提取 定时 s(t) A(t)
并/串 提取
,/2
b -sin,t 0
相乘 低通 抽判
图3-5 QPSK信号解调原理方框图
BPSK调制解调程序
%构造载波,产生8个码元,生成已调信号%
a=randsrc(1,8,[0:1]);%产生8个随机的二进制数
l=linspace(0,2*pi,50);%利用linspace函数创建数组,2pi长度取点50个模拟一个码元 f=sin(2*l);%生成载波
t=linspace(0,10*pi,400);%定义时轴length为10pi,取点400个,代表8个码元的总取样点数 out=1:400;%规定已调信号length
b=1:400;% 规定基带信号length
w=1:400;%规定载波length
%生成PSK信号%
for i=1:8
if a(i)==0
for j=1:50
out(j+50*(i-1))=f(j); %若码元为0则将载波输出
end
else
for j=1:50
out(j+50*(i-1))=-f(j); %若码元为1则将载波反相输出
end
end
end
%输出载波和基带信号%
for i=1:8
for j=1:50
b(j+50*(i-1))=a(i); %b作为调制信号输出
w(j+50*(i-1))=f(j); %w作为载波输出
end
end
subplot(3,3,1),plot(t,b),axis([0 10*pi -0.5 1.2]), xlabel('t'),ylabel('幅度'),title('基带信号');grid on;
subplot(3,3,2),plot(t,w),axis([0 10*pi -1.2 1.2]), xlabel('t'),ylabel('幅度'),title('载波'); grid on;
subplot(3,3,3),plot(t,out),axis([0 10*pi -1.2 1.2]),xlabel('t'),ylabel('幅度'),title('PSK波形');grid on;
%已调信号加入高斯白噪声%
noise=awgn(out,80,'measured') ; %产生噪音并加入到已调信号out中,信噪比80 subplot(334);
plot(t,noise);
ylabel('幅度');title('噪音+信号'); xlabel('t');
axis([0 10*pi -1.2 1.2]); grid on; %信号通过BPF%
Fs=400; %抽样频率400HZ t=(1:400)*10*40/Fs; %时轴步进
[b,a]=ellip(4,0.1,40,[10,25]*2/Fs); %设计IIR-BPF sf=filter(b,a,noise); %信号通过该滤波器 subplot(335);
plot(t,sf); %画出信号通过该BPF的波形 xlabel('t'); ylabel('幅度');title('通过BPF后的波形');
axis([0 10*pi -1.2 1.2]);grid on; %信号经过相乘器%
f=[f f f f f f f f]; %%调整载波函数的长度,与BPF输出函数统一length s=sf.*f;%信号与载波相乘
s=(-1).*s;
subplot(336);
plot(t,s);%画出信号通过该相乘器的波形
xlabel('t'); ylabel('幅度');title('通过相乘器后波形');
axis([0 10*pi -1 1]);grid on; %信号通过LPF%
Fs=400; %抽样频率400HZ t=(1:400)*10*pi/Fs; %时轴步进
[b,a]=ellip(4,0.1,40,[10]*2/Fs); %设计IIR-LPF sf=filter(b,a,s); %信号通过该滤波器 subplot(337);
plot(t,sf); %画出信号通过该低通滤波器的波形 xlabel('t'); ylabel('幅度');title('通过LPF后的波形');
axis([0 10*pi -1 1]);grid on; %抽样判决%
b=0.26; %设置判决门限 for i=1:8
for j=1:50
if sf(j+50*(i-1))>b
sf(j+50*(i-1))=1; %若sf>判决门限,说明此时码元为1
else
sf(j+50*(i-1))=0; %若sf<判决门限,说明此时码元为0>判决门限,说明此时码元为0>
end
end
end
subplot(338);
plot(t,sf); %画出信号通过抽样判决器的波形
xlabel('t'); ylabel('幅度');
title('抽样判决后波形');
axis([3 10*pi -0.5 1.2]);
grid on;
QPK调制解调程序
(1)调制
% 调相法
clear all
close all
t=[-1:0.01:7-0.01]; tt=length(t);
x1=ones(1,800);
for i=1:tt
if (t(i)>=-1 & t(i)<=1) |="" (t(i)="">=5& t(i)<=7);>=7);>
x1(i)=1;
else x1(i)=-1;
end
end
t1=[0:0.01:8-0.01]; t2=0:0.01:7-0.01; t3=-1:0.01:7.1-0.01; t4=0:0.01:8.1-0.01;
tt1=length(t1);
x2=ones(1,800);
for i=1:tt1
if (t1(i)>=0 & t1(i)<=2) |="" (t1(i)="">=4& t1(i)<=8);>=8);>
x2(i)=1;
else x2(i)=-1;
end
end
f=0:0.1:1;
xrc=0.5+0.5*cos(pi*f);
y1=conv(x1,xrc)/5.5;
y2=conv(x2,xrc)/5.5;
n0=randn(size(t2));
f1=1;
i=x1.*cos(2*pi*f1*t);
q=x2.*sin(2*pi*f1*t1);
I=i(101:800);
Q=q(1:700);
QPSK=sqrt(1/2).*I+sqrt(1/2).*Q; QPSK_n=(sqrt(1/2).*I+sqrt(1/2).*Q)+n0;
n1=randn(size(t2));
i_rc=y1.*cos(2*pi*f1*t3); q_rc=y2.*sin(2*pi*f1*t4);
I_rc=i_rc(101:800);
Q_rc=q_rc(1:700);
QPSK_rc=(sqrt(1/2).*I_rc+sqrt(1/2).*Q_rc);
QPSK_rc_n1=QPSK_rc+n1;
figure(1)
subplot(4,1,1);plot(t3,i_rc);axis([-1 8 -1 1]);ylabel('a序列'); subplot(4,1,2);plot(t4,q_rc);axis([-1 8 -1 1]);ylabel('b序列'); subplot(4,1,3);plot(t2,QPSK_rc);axis([-1 8 -1 1]);ylabel('合成序列'); subplot(4,1,4);plot(t2,QPSK_rc_n1);axis([-1 8 -1 1]);ylabel('加入噪声'); (2)解调
% 设定 T=1, 不加噪声
clear all
close all
% 调制
bit_in = randint(1e3, 1, [0 1]); bit_I = bit_in(1:2:1e3); bit_Q = bit_in(2:2:1e3);
data_I = -2*bit_I+1;
data_Q = -2*bit_Q+1;
data_I1=repmat(data_I',20,1);
data_Q1=repmat(data_Q',20,1);
for i=1:1e4
data_I2(i)=data_I1(i);
data_Q2(i)=data_Q1(i);
end;
t=0:0.1:1e3-0.1;
f=0:0.1:1;
xrc=0.5+0.5*cos(pi*f);
data_I2_rc=conv(data_I2,xrc)/5.5; data_Q2_rc=conv(data_Q2,xrc)/5.5;
f1=1;
t1=0:0.1:1e3+0.9;
I_rc=data_I2_rc.*cos(2*pi*f1*t1); Q_rc=data_Q2_rc.*sin(2*pi*f1*t1); QPSK_rc=(sqrt(1/2).*I_rc+sqrt(1/2).*Q_rc);
% 解调
I_demo=QPSK_rc.*cos(2*pi*f1*t1); Q_demo=QPSK_rc.*sin(2*pi*f1*t1);
I_recover=conv(I_demo,xrc); Q_recover=conv(Q_demo,xrc); I=I_recover(11:10010);
Q=Q_recover(11:10010);
t2=0:0.05:1e3-0.05;
t3=0:0.1:1e3-0.1;
data_recover=[];
for i=1:20:10000
data_recover=[data_recover I(i:1:i+19) Q(i:1:i+19)];
end;
ddd = -2*bit_in+1;
ddd1=repmat(ddd',10,1);
for i=1:1e4
ddd2(i)=ddd1(i);
end
figure(1)
subplot(4,1,1);plot(t3,I);axis([0 20 -6 6]); ylabel('解调后奇位'); subplot(4,1,2);plot(t3,Q);axis([0 20 -6 6]); ylabel('解调后偶位'); subplot(4,1,3);plot(t2,data_recover);axis([0 20 -6 6]); ylabel('解调后序列'); subplot(4,1,4);plot(t,ddd2);axis([0 20 -6 6]); ylabel('原始序列');
范文二:qpsk
基于 MATLAB 的 QPSK 传输系统仿真
默认分类 2008-12-04 10:50:13 阅读 900 评论 2 字号:大 中 小 订阅
http://feng594806453.blog.163.com/blog/#m=0
一. 基本原理
PSK 是利用载波振荡相位的变化来传送数字信息。 最早出现的是二相相移键控 BPSK , BPSK 是利用载波的相位偏移直接表示数字信号, 假若规定:已调载波与未调载波同相表示 数字信号 “ 0” ,与未调载波反相表示数字信号 “ 1” ,则已调信号的表达式为 ,其中:d(t)为双 极性数字基带信号, 为载波频率。为了提高信道频带利用率,提出了多进制数字相移键控 (MPSK ) ,它用多个相位状态的正弦振荡分别代表不同的数字信息,最典型的是四相相移 键控 (QPSK ) 。 BPSK 和 QPSK 在码元转换点上都可能产生 相位突变, 使得频谱高频滚降 缓慢,带外辐射大。为了消除 相位跳变,在 QPSK 基础上提出了偏移四相相移键控 (OQPSK)。它将同相和正交两支路的码流在时间上错开了半个码元周期,信号相位只跳变 0、 。
二. 程序及结果分析
程序如下:
if nargin > 2
error('Too many input arguments');
elseif nargin==1
f=1;
end
if f〉 1;
error('Frequency must be bigger than 1');
end
%*-*-*-*-*-*
l=length(g);
r=l/2;
re=ceil(r);
val=re-r;
if val~=0;
error('Please insert a vector divisible for 2'); end
%*-*-*-*-*-*
t=0:2*pi/99:2*pi;
cp=[];sp=[];
mod=[];mod1=[];bit=[];
for n=1:2:length(g);
if g(n)==0 && g(n+1)==1;
die=sqrt(2)/2*ones(1,100);
die1=-sqrt(2)/2*ones(1,100);
se=[zeros(1,50) ones(1,50)];
elseif g(n)==0 && g(n+1)==0;
die=-sqrt(2)/2*ones(1,100);
die1=-sqrt(2)/2*ones(1,100);
se=[zeros(1,50) zeros(1,50)];
elseif g(n)==1 && g(n+1)==0;
die=-sqrt(2)/2*ones(1,100);
die1=sqrt(2)/2*ones(1,100);
se=[ones(1,50) zeros(1,50)];
elseif g(n)==1 && g(n+1)==1;
die=sqrt(2)/2*ones(1,100);
die1=sqrt(2)/2*ones(1,100);
se=[ones(1,50) ones(1,50)];
end
c=cos(f*t);
s=sin(f*t);
cp=[cp die]; %Amplitude cosino sp=[sp die1]; %Amplitude sino
mod=[mod c]; %cosino carrier (Q) mod1=[mod1 s]; %sino carrier (I) bit=[bit se];
end
bpsk=cp.*mod+sp.*mod1; subplot(2,1,1);plot(bit,'LineWidth',1.5);grid on;
title('Binary Signal')
axis([0 50*length(g) -1.5 1.5]);
subplot(2,1,2);plot(bpsk,'LineWidth',1.5);grid on;
title('QPSK modulation')
axis([0 50*length(g) -1.5 1.5]);
结果分析:运行得到理想信道和加噪信道中调制解调信号的波形如下:
图一 理想信道和加噪信道中调制解调信号的波形
图二 正交支路中的数据和调制信号
通过编程模拟 QPSK 过程 , 得到信号传输过程中的时域图 . 从图一可以知道 :在理想情形 下 , 信号的解调和调制过程中 , 信号只出现了很小的波动 , 在加噪信道中信号的波动范围虽然 变大 , 但不会影响到解调后信号的识别 . 即在 Matlab 编程模拟的过程中 ,QPSK 调制解调即使 在加有白噪声干扰时 , 也能进行有效的解码 . 根据相位调制的特点 , 我们可以从图二中看到调 制信号 (正交支路 ) 在二进制信号每发生一次电平的跃变时发生相位跳变 . 在信噪比低于 7dB 的情形下 , 理论误码率和实际误码相差很小 . 从这些图形中我们可以发现 Matlab 软件很好地 模拟出了数字通信系统的 QPSK 过程 . 即使在噪声干扰下 , 解调输出信号与输入信号的波形 也保持着基本的一致 , 对信号的恢复不会有大的影响 .
三. 模块及结果分析
图三 QPSK 传输系统
结果分析:QPSK (正交移相键控)基带调制信号的频谱图和星座图如下:
图四 QPSK (正交移相键控)基带调制信号的频谱图和星座图
仿真结果说明在相同传输条件下, QPSK 、 OQPSK 调制以比 BPSK 调制高 1倍的速率 传输信息, QPSK 误码率高于 BPSK 约 30倍, OQPSK 误码率高于 BPSK 约 1.4倍。由于是 相位调制, 频谱反映了具有不同相位特性的同一载波, 因此频谱特性一致。 正因为是相位调 制,每符号采样取 16(大于 1)可以得到更好的系统性能,此时在误码表中应该正确地选取
与之相应的接收延迟参数。星座图显示的是传输环境 SNR (信噪比)为 6dB 时的图形。 四 . 设计分析
用二进制数字基带信号控制载频的相位来实现调制称为移相键控 PSK ,即随着基带信 号 0、 1的变化,载波的相位发生 0、 π的变化。 MATLAB 中的 BPSK (二进制移相键控)模 块,完成调制解调的工作。如果载波是一对正交的函数,譬如 sin ωt 、 cos ωt ,同时对它们进 行 PSK 调制,这样的调制称为 QPSK (正交移相键控) 。
用于 QPSK 调制的基带信号应该是两个二进制码,即 2个比特,每个对应一个载波。所 以 QPSK 调制是四进制调制。 在传输相同信息的情况下, QPSK 的 1个符号比 BPSK 的时间 长 1倍(频带变窄) 。而在相同符号宽度的情况下, QPSK 传输的信息比 BPSK 多 1倍。如果 将两个载波的调制时间错开半个码元宽度, 这样的调制称为 OQPSK (偏置正交移相键控) 。 OQPSK 降低了载波包络的突变,具有更好的性能。
QPSK m 文件(通信工程论文)
默认分类 2008-12-04 11:06:50 阅读 145 评论 0 字号:大 中 小 订阅
if nargin > 2
error('Too many input arguments');
elseif nargin==1
f=1;
end
if f?μ1;
error('Frequency must be bigger than 1');
end
%*-*-*-*-*-*
l=length(g);
r=l/2;
re=ceil(r);
val=re-r;
if val~=0;
error('Please insert a vector divisible for 2'); end
%*-*-*-*-*-*
t=0:2*pi/99:2*pi;
cp=[];sp=[];
mod=[];mod1=[];bit=[];
for n=1:2:length(g);
if g(n)==0 && g(n+1)==1;
die=sqrt(2)/2*ones(1,100);
die1=-sqrt(2)/2*ones(1,100);
se=[zeros(1,50) ones(1,50)];
elseif g(n)==0 && g(n+1)==0;
die=-sqrt(2)/2*ones(1,100);
die1=-sqrt(2)/2*ones(1,100);
se=[zeros(1,50) zeros(1,50)];
elseif g(n)==1 && g(n+1)==0;
die=-sqrt(2)/2*ones(1,100);
die1=sqrt(2)/2*ones(1,100);
se=[ones(1,50) zeros(1,50)];
elseif g(n)==1 && g(n+1)==1;
die=sqrt(2)/2*ones(1,100);
die1=sqrt(2)/2*ones(1,100);
se=[ones(1,50) ones(1,50)];
end
c=cos(f*t);
s=sin(f*t);
cp=[cp die]; %Amplitude cosino
sp=[sp die1]; %Amplitude sino
mod=[mod c]; %cosino carrier (Q)
mod1=[mod1 s]; %sino carrier (I)
bit=[bit se];
end
bpsk=cp.*mod+sp.*mod1; subplot(2,1,1);plot(bit,'LineWidth',1.5);grid on; title('Binary Signal')
axis([0 50*length(g) -1.5 1.5]);
subplot(2,1,2);plot(bpsk,'LineWidth',1.5);grid on; title('QPSK modulation')
axis([0 50*length(g) -1.5 1.5]);
FSK m 文件(matlab 通信工程论文) 默认分类 2008-12-04 11:05:38 阅读 230 评论 1 字号:大 中 小 订阅
function fskd(g,f0,f1)
%FSK modulation
%Example:(f0 and f1 must be integers)
%fskd([1 0 1 1 0],1,2)
%Author: Diego Orlando Barragán Guerrero
%diegokillemall@yahoo.com
%Loja (ECUADOR)
%Long Live Heavy-Metal
%See also:
%http://www.mathworks.com/matlabcentral/fileexchange/loadFile.do?objectId=14328 &objectType=FILE
if nargin > 3
error('Too many input arguments')
elseif nargin==1
f0=1;f1=2;
elseif nargin==2
f1=2;
end
val0=ceil(f0)-f0;
val1=ceil(f1)-f1;
if val0 ~=0 || val1 ~=0;
error('Frequency must be an integer');
end
if f0<1 ||="">1><>
error('Frequency must be bigger than 1');
end
t=0:2*pi/99:2*pi;
cp=[];sp=[];
mod=[];mod1=[];bit=[];
for n=1:length(g);
if g(n)==0;
die=ones(1,100); c=sin(f0*t); se=zeros(1,100); else g(n)==1;
die=ones(1,100); c=sin(f1*t); se=ones(1,100); end
cp=[cp die];
mod=[mod c];
bit=[bit se];
end
ask=cp.*mod;
subplot(2,1,1);plot(bit,'LineWidth',1.5);grid on;
title('Binary Signal');
axis([0 100*length(g) -2.5 2.5]);
subplot(2,1,2);plot(ask,'LineWidth',1.5);grid on;
title('FSK modulation');
axis([0 100*length(g) -2.5 2.5]);
EPSK matlab 程序(matlab 通信工程论文)
默认分类 2008-12-04 11:04:45 阅读 173 评论 0 字号:大 中 小 订阅
function epsk(g,f)
%Modulation 8PSK
%Example: g is a binay vector; f is the carrier frequency.
%epsk([1 0 1 1 1 0],2)
%Author: Diego Orlando Barragán Guerrero
%diegokillemall@yahoo.com
%Loja (ECUADOR)
%Long live Heavy-Metal
%See also:
%http://www.mathworks.com/matlabcentral/fileexchange/loadFile.do? objectId=14328&objectType=FILE
if nargin > 2
error('Too many input arguments');
elseif nargin==1
f=1;
end
if f<>
error('Frequency must be bigger than 1');
end
%*-*-*-*-*-*
l=length(g);
r=l/3;
re=ceil(r);
val=re-r;
if val~=0;
error('Please insert a vector divisible for 3'); end
%*-*-*-*-*-*
t=0:2*pi/149:2*pi;
cp=[];sp=[];
mod=[];mod1=[];bit=[];
for n=1:3:length(g);
if g(n)==0 && g(n+1)==1 && g(n+2)==1
die=cos(pi/8)*ones(1,150);
die1=sin(pi/8)*ones(1,150);
se=[zeros(1,50) ones(1,50) ones(1,50)];
elseif g(n)==0 && g(n+1)==1 && g(n+2)==0
die=cos(3*pi/8)*ones(1,150);
die1=sin(3*pi/8)*ones(1,150);
se=[zeros(1,50) ones(1,50) zeros(1,50)];
elseif g(n)==0 && g(n+1)==0 && g(n+2)==0 die=cos(5*pi/8)*ones(1,150);
die1=sin(5*pi/8)*ones(1,150);
se=[zeros(1,50) zeros(1,50) zeros(1,50)];
elseif g(n)==0 && g(n+1)==0 && g(n+2)==1 die=cos(7*pi/8)*ones(1,150);
die1=sin(7*pi/8)*ones(1,150);
se=[zeros(1,50) zeros(1,50) ones(1,50)];
elseif g(n)==1 && g(n+1)==0 && g(n+2)==1 die=cos(-7*pi/8)*ones(1,150);
die1=sin(-7*pi/8)*ones(1,150);
se=[ones(1,50) zeros(1,50) ones(1,50)];
elseif g(n)==1 && g(n+1)==0 && g(n+2)==0 die=cos(-5*pi/8)*ones(1,150);
die1=sin(-5*pi/8)*ones(1,150);
se=[ones(1,50) zeros(1,50) zeros(1,50)];
elseif g(n)==1 && g(n+1)==1 && g(n+2)==0 die=cos(-3*pi/8)*ones(1,150);
die1=sin(-3*pi/8)*ones(1,150);
se=[ones(1,50) ones(1,50) zeros(1,50)];
elseif g(n)==1 && g(n+1)==1 && g(n+2)==1
die=cos(-pi/8)*ones(1,150);
die1=sin(-pi/8)*ones(1,150);
se=[ones(1,50) ones(1,50) ones(1,50)];
end
c=cos(f*t);
s=sin(f*t);
cp=[cp die]; %Amplitude cosino
sp=[sp -die1]; %Amplitude sino
mod=[mod c]; %cosino carrier (Q)
mod1=[mod1 s]; %sino carrier (I)
bit=[bit se];
end
opsk=cp.*mod+sp.*mod1; subplot(2,1,1);plot(bit,'LineWidth',1.5);grid on; title('Binary Signal')
axis([0 50*length(g) -1.5 1.5]);
subplot(2,1,2);plot(opsk,'LineWidth',1.5);grid on; title('8PSK modulation')
axis([0 50*length(g) -1.5 1.5]);
BPSK matlab 程序
默认分类 2008-12-04 11:03:57 阅读 448 评论 1 字号:大 中 小 订阅
function bpskd(g,f)
%Modulation BPSK
%Example:
%bpskd([1 0 1 1 0],2)
%Author: Diego Orlando Barragán Guerrero
%diegokillemall@yahoo.com
%Loja (ECUADOR)
%Long Live Heavy-Metal
%See also:
%http://www.mathworks.com/matlabcentral/fileexchange/loadFile.do? objectId=14328&objectType=FILE
if nargin > 2
error('Too many input arguments');
elseif nargin==1
f=1;
end
if f<>
error('Frequency must be bigger than 1');
end
t=0:2*pi/99:2*pi;
cp=[];sp=[];
mod=[];mod1=[];bit=[];
for n=1:length(g);
if g(n)==0;
die=-ones(1,100); %Modulante
se=zeros(1,100); %Se?al
else g(n)==1;
die=ones(1,100); %Modulante
se=ones(1,100); %Se?al
end
c=sin(f*t);
cp=[cp die];
mod=[mod c];
bit=[bit se];
end
bpsk=cp.*mod;
subplot(2,1,1);plot(bit,'LineWidth',1.5);grid on; title('Binary Signal');
axis([0 100*length(g) -2.5 2.5]);
subplot(2,1,2);plot(bpsk,'LineWidth',1.5);grid on; title('ASK modulation');
axis([0 100*length(g) -2.5 2.5]);
ASK matlab 程序
默认分类 2008-12-04 11:02:57 阅读 101 评论 0 字号:大 中 小 订阅
function askd(g,f)
%Modulation ASK
%Example:
%askd([1 0 1 1 0],2)
%Author: Diego Orlando Barragán Guerrero
%diegokillemall@yahoo.com
%Loja (ECUADOR)
%Long Live Heavy-Metal
%See also:
%http://www.mathworks.com/matlabcentral/fileexchange/loadFile.do?objectId=14328 &objectType=FILE
if nargin > 2
error('Too many input arguments')
elseif nargin==1
f=1;
end
if f<>
error('Frequency must be bigger than 1');
end
t=0:2*pi/99:2*pi;
cp=[];sp=[];
mod=[];mod1=[];bit=[];
for n=1:length(g);
if g(n)==0;
die=ones(1,100);
se=zeros(1,100);
else g(n)==1;
die=2*ones(1,100);
se=ones(1,100);
end
c=sin(f*t);
cp=[cp die];
mod=[mod c];
bit=[bit se];
end
ask=cp.*mod; subplot(2,1,1);plot(bit,'LineWidth',1.5);grid on; title('Binary Signal');
axis([0 100*length(g) -2.5 2.5]);
subplot(2,1,2);plot(ask,'LineWidth',1.5);grid on; title('ASK modulation');
axis([0 100*length(g) -2.5 2.5]);
范文三:qpsk
3 调制解调
3.1 移动通信对调制解调器的功能要求
移动通信对调制解调器的功能主要要求有以下几个方面 1) 频谱搬移
调制解调器在无线设备中的作用主要是将被传输的基带信号搬移到相应频道上传输, 从而让 信源信号与传输信道相匹配。 主要过程是将基带数据信号调制到某一载波上, 再通过上变频 器搬移到无线传输所期望的射频频段。
2) 具有较强的抗干扰性能
一种先进的调制技术希望调制后的信号的功率谱占用率比较小, 由于移动通信系统工作在多 径传播环境下, 并且存在多个用户的干扰以及相邻小区的干扰, 这就要求调制解调器的干扰 能力很强。
3) 具有良好的频谱利用率
提高通信系统的利用率, 即在单位频带内传送尽可能高的信息率, 这是一种先进的调制解调 器应该具有的功能。
4)抗衰落性能好
由于移动通信信道工作条件存在瑞利衰落, 所以需要的信噪比较低, 也就要求调制解调器具 有较好的抗衰落性能。 5)综合系能价格比高 在技术上容易实现、 成本低、 体积小、 具有较低的解调门限值是调制解调器的基本功能要求, 这也是比较和衡量调制解调技术先进程度的重要条件。 3.2 第三代移动通信常用的调制解调方式
第三代移动通信系统中对于不同的传输信道采用的调制解调方式也不相同,但都属于 PSK 方式,主要包括二进制相移键控(BIT/SK) 、四相相移键控(QPSK ) 、偏移四相相移键控 (OQPSK ) 、 平衡四相扩频调制 (BQM ) 、 复数四相扩频调制 (CQM ) 以及 8PSK 等 (李世鹤、 杨运年、 TD-SCDMA 第三代移动通信系统 , 人民邮电出版社, 2009:80-86) 。 PSK 调制方式 具有信号包络稳定、 抗噪声性能好、 技术实现简单、 成本低等优点, 当然, 也存在一些缺点:码元转换时会产生跃变并扩展频谱,对信道非线性对抗能力欠佳。
下面介绍几种调制方式: 1) BIT/SK扩频调制
BIT/SK调制是用二进制数字信号来控制载波的相位,是将数字信号与载波频率相乘来实现 的。 BIT/SK调制一般采用两次调制, 首先用载波 0ω进行常见的载波调制, 再用扩频码 ) (t S 进行扩频调制,原理图如图 3.1。 BIT/SK解调也分两次进行,首先对扩频解调,再进行载波 解调,其原理图如图 3.2。
2) QPSK 扩频调制
QPSK 为正交相移键控, 可看作两个正交的 BIT/SK。 QPSK 有两个支路:同相支路 (I 支路) 和正交支路 (Q 支路) 。 QPSK 调制的频谱效率是 BIT/SK的二倍, 即单位频带内传输的信息 速率比 BIT/SK提高了一倍。 QPSK 调制原理如图 3.3,其解调原理如图 3.4。
3) OQPSK (SQPSK )调制
OQPSK 是 QPSK 的改进型之一,也称为交错(或参差)四相相移键控(SQPSK ) 。这种方 式能减小信号在码元转换时刻的相位冲突变量, 从而减小信号通过带通滤波器所引起的包络 起伏。 OQPSK 这种方式是在发送端将调制器 Q 通道数据流相对于 I 通道在时间上延迟一个 码元宽度,这样对于 I 通道的任何数据跳变, Q 通道数据都将保持相对稳定。响应地在接收 端, 对解调器 I 通道解调出的数据也会延迟一个码元, 从而恢复 I 通道与 Q 通道数据之间原 来的相位关系。 OQPSK 调制器和解调器的原理图分别如图 3.5和图 3.6.
4) 4/π-QPSK 调制
4/π-QPSK 调制也是 QPSK 调制的改进型,这是一种相位跳变值只有 4/π±和 4/3π±的 四相调制,即通过控制相位的变化,使得 4/π-QPSK 调制信号相邻码元之间最大相位差为 4/3π±,小于 QPSK 的 π±,使得性能得到改善。在解调时, 4/π-QPSK 有许多优势, OQPSK 只能采用相干解调, 而 4/π-QPSK 还可以用非相干解调, 也能采用鉴频器解调, 还 能使用非线性放大,取得较高的功放效率。 4/π-QPSK 调制器的组成框图如图 3.7所示。
5) 8PSK 调制
在第三代移动通信系统中, 对于像 2Mbit/s这样比较高的信息速率, 为节省带宽, 需采用 8PSK 这样的多相位调制方式。 所谓多相相位调制, 是由于用载波的一种相位可以代表一组信息码 元, 而一组信息码元具有多种排列形式, 表征它们的载波相位也必须相应地取多种数值。 在 TD-SCDMA 系统中看, 应用 8PSK 调制方式来传输 2Mbit/s的高速率数据信号, 主要方法有 两种:
① 码变换加相位选择法产生 8PSK 信号,原理图如图 3.8
② 插入脉冲法产生 8PSK 信号,以微波环形器和开关管来实现 8PSK 调制的结构原理图如 图 3.9
3.3 QPSK
3.3.1QPSK 简介
QPSK 是英文 QuadraturePhaseShiftKeying 的缩略语简称,意为正交相移键控,是一种数字 调制方式。四相相移键控信号简称“ QPSK ”。它分为绝对相移和相对相移两种。 由于绝对相 移方式存在相位模糊问题,所以在实际中主要采用相对移相方式 QDPSK 。它具有一系列独特 的优点,目前已经广泛应用于无线通信中,成为现代通信中一种十分重要的调制解调方式。 在数字信号的调制方式中 QPSK 四相移键控是目前最常用的一种卫星数字信号调制方式 , 它
具有较高的频谱利用率、较强的抗干扰性、在电路上实现也较为简单。
3.3.2QPSK 原理
图 3.8 码变换加相位选择法产生 8PSK 信号
QPSK 数字解调包括:模数转换、抽取或插值、匹配滤波、时钟和载波恢复等。
在实际的调谐解调电路中, 采用的是非相干载波解调, 本振信号与发射端的载波信号存 在频率偏差和相位抖动,因而解调出来的模拟 I 、 Q 基带信号是带有载波误差的信号。这样 的模拟基带信号即使采用定时准确的时钟进行取样判决, 得到的数字信号也不是原来发射端 的调制信号,误差的积累将导致抽样判决后的误码率增大,因此数字 QPSK 解调电路要对载 波误差进行补偿,减少非相干载波解调带来的影响。此外, ADC 的取样时钟也不是从信号中 提取的, 当取样时钟与输入的数据不同步时, 取样将不在最佳取样时刻进行所得到的取样值 的统计信噪比就不是最高, 误码率就高, 因此, 在电路中还需要恢复出一个与输入符号率同 步的时钟, 来校正固定取样带来的样点误差, 并且准确的位定时信息可为数字解调后的信道 纠错解码提供正确的时钟。 校正办法是由定时恢复和载波恢复模块通过某种算法产生定时和 载波误差, 插值或抽取器在定时和载波误差信号的控制下, 对 A/D转换后的取样值进行抽取 或插值滤波, 得到信号在最佳取样点的值, 不同芯片采用的算法不尽相同, 例如可以采用据 辅助法 (DA)载波相位和定时相位联合估计的最大似然算法。
3.4QPSK 调制解调仿真
3.4.1调制解调流程
图 3-1给出了 TD-SCDMA 空中接口中的调制解调仿真方框图,整个仿真过程在基带进行。 采用随机序列模拟用户数据, 数据调制采用 QPSK , QPSK 映射表见表 3-1. 。 可见, 经 QPSK 调制后,数据变为复数,该复数符号再经过扩频和扰码处理。信号经扩频、扰码处理后,分 为实、虚两路数据流,分别对这两路数据流进行脉冲成型然后合并成一路复低通等效信号。 接受端将接收数据流分为虚、实两路,分别进行低通滤波,通过并 /串转换合并成一路信号, 最后将该数据流进行解扰、解扩 和 QPSK 逆映射。 TD-SCDMA 扩频后 的码片速率为 1.28MChip/s,扩频因子 Q 的范围为 1~16,调制符号的速率为 80.0千符号 /秒 ~1.28兆符号 /秒。
图 3-10 TD-SCDMA 调制解调仿真方框图
表 3-1 QPSK 映射表
3.4.2仿真结果及分析
图 3-11是用户数据调制前后的图形。设计中采用的随机序列模拟的用户数据,该仿真令信 源数据个数是 16,由图可看出经过 QPSK 调制后,数据变为复数,并且数据长度变为原来 的 1/2。
图 3-11 QPSK 调制前后的用户数据
图 3-12是经过扩频加扰后的图形,由图形可看出经过扩频加扰后用户数据长度是原来的 4倍,仿真过程中用的扩频码是经过信道化特征乘法算子的正交可变扩频因子(OVSF )码, 其扩频因子是 4, 用到的扰码是第 9号复扰码序列, 扰码长度为 16。 经过扩频加扰后, 信号 分为了实、虚两路数据流。
图 3-12 扩频加扰后的信号
图 3-13是信号 I 通道和 Q 通道分别经过脉冲成形滤波后的成形图形。仿真过程中用的是滚 降系数 22. 0=R 的根升余弦滤波器,滤波器的响应时延(冲激响应峰值与滤波器起始点的 时间延迟) 8=Delay ,根升余弦滤波器的抽样率 Fc Fs *=4,即抽样率为码片速率的 4倍。
图 3-13 经过脉冲滤波器后的信号
图 3-14是复发射信号经过加性高斯白噪声信道前后的图形对比。加入的高斯白噪声信噪比 为 15db ,通过图形对比可以明显的看出高斯白噪声对信号的干扰。
图 3-14 复发射信号经过加性高斯白噪声信道前后对比图形
图 3-15是信号通过低通滤波器后的图形,让加入高斯白噪声的信号的 I 通道 Q 通道分别经 过 接 收 端 得 低 通 滤 波 器 , 此低 通 滤 波 器 时 有 限 冲激 的 根 升 余 弦 滤 波器 , 其 抽 样 率 Fc
Fs *
=4,即抽样率为码片速率的 4倍,滤波器的滚降系数 22
. 0
=
R ,响应时延(冲激 响应峰值与滤波器起始点的时间延迟) 8
=
Delay 。
图 3-15 通过低通滤波器后的信号
图 3-16是对信号进行抽样的图形, ,抽样是从第 Fc
Fs
delay /
2*
*, 65个符号开始,每四 个符号抽取一个,前 64个符号位两个根升余弦滤波器时延。
图 3-16 抽样信号 逆映射后的图形待定
范文四:基于matlab的qpsk调制解调仿真设计和研究
天津理工大学计算机与通信工程学院
通信工程专业设计说明书
基于Matlab/Simulink
的QPSK调制解调仿真设计与研究
姓 名 韩双年
学 号 20092226
班 级 09通信3班
指导老师 白媛
日 期 2012-12-16 目录
摘
要 ..........................................................................2
第一章 前
言 ..................................................................2
1.1 专业设计任务及要
求.........................................................................................2
1.2 Matlab简
介 ..................................................................2
1.3 Matlab下的simulink简
介 .......................................................3
1.4 通信系统模
型 ...............................................................3 第二章 QPSK调
制 ................................................................4
2.1 QPSK介
绍 ...................................................................4
2.2 QPSK调制原
理 ...............................................................4
2.2.1 相乘
法......................................................................................................4
2.2.2 选择
法......................................................................................................5
2.3 QPSK调制原理框
图..........................................................................................6
2.4 QPSK调制方式的Matlab仿
真...................................................6
2.5 QPSK调制方式Matlab-simulink仿
真...........................................................................................7
2.5.1 simulink调制建
模 ........................................................7
2.5.2 simulink调制仿真结
果.............................................................................8
第三章 QPSK解
调 ...............................................................13
3.1 QPSK解调原
理 ...........................................................13
3.2 QPSK解调原理框
图.......................................................................................13
3.3 QPSK解调方式Matlab仿
真 .................................................13
3.4 QPSK解调方式的Matlab-simulink仿
真........................................14
3.4.1 QPSK解调建
模 ........................................................14
3.4.2 传输信
道................................................................................................16
3.4.3 仿真结
果..............................................................................................16
3.5 仿真结果分
析..............................................................................
.....................18
第四章 QPSK通信系统性能分
析 ...................................................19
第五章 结论 ....................................................................19
参考文
献 ........................................................................
20
-附 录 ..........................................................................
20
- 摘 要
正交相移键控(QPSK),是一种数字调制方式。QPSK技术具有抗干扰能力好、
误码率低、频谱利用效率高等一系列优点。论文主要介绍了正交相移键控(QPSK) 的概况,以及正交相移键控QPSK的调制解调概念和原理,利用Matlab中M文件和S imulink模块对QPSK的调制解调系统进行了仿真,对QPSK在高斯白噪声信道中的 性能进行了,分析了解Simulink中涉及到QPSK的各种模块的功能。
【关键词】Matlab QPSK Simulnk 仿真
第一章 前 言
1.1 专业设计任务及要求
1了解并掌握QPSK调制与解调的基本原理;
2在通信原理课程的基础上设计与分析简单的通信系统;
3学会利用MATLAB7.0编写程序进行仿真,根据实验结果能分析所设计系统
的性能。
4学习MATLAB的基本知识,熟悉MATLAB集成环境下的Simulink的仿真平台。
5利用通信原理相关知识在仿真平台中设计QPSK调制与解调仿真系统并用示
波器观察解调后的波形
6在指导老师的指导下,独立完成课程设计的全部内容,能正确的阐述和分
析设计和实验结果。
1.2 Matlab简介
MATLAB是MATrix LABoratory的缩写,是一款由美国Math
Works公司出品的商业数学软件。MATLAB
是一种用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言
和交互式环境。除了矩阵运算、绘制函数/数据图像等常用功能外,MATLAB还可以
-用来创建用户界面及与调用其它语言(包括C,C++和FORTRAN)编写的程序。尽管M
ATLAB主要用于数值计算,但是因为大量的额外的工具箱它也适合于不同领域的 应用,如控制系统设计与分析、图像处理和信号处理和通信、金融建模和分析等。 除了一个完整的Simulink包,提供了一个可视化的开发环境,通常用于系统仿真 、动态/嵌入式系统开发等。
1.3 Matlab下的simulink简介
Simulink是MATLAB最重要的组件之一,它提供一个动态系统建模、仿真和综 合分析的集成环境。在该环境中只要通过简单的鼠标操作,就可以构造出复杂的 系统。Simulink提供了一个建立模型方块图的图形用户接口,这个创建过程只需 单击和拖动鼠标操作就能完成,它提供了一种更快捷、直接明了的方式,而且用 户可以立即看到系统的仿真结果。Simulink具有适应面广、结构和流程清晰及仿 真精细、效率高、贴近实际、等优点,基于以上优点Simulink已被广泛应用于控 制理论和数字信号处理的复杂仿真和设计。同时有大量的第三方软件和硬件应
用于Simulink。
1.4 通信系统模型
通信系统就是传递信息所需要的一切技术设备和传输媒质的总和,包括信 息源、发送设备、信道、接收设备和信宿(受信者)
,它的一般模型如图1.4.1所示。
信息源发 送设备信道接 收设备受 信者
噪声源
图1.4.1 通信系统一般模型
模拟通信系统是利用模拟信号来传递消息的通信系统,其模型如图1.4.2所 示。
信息源调 制器信道解 调器受信 者
噪声源
- 图1.4.2 模拟通信系统模型
第二章 QPSK调制
2.1 QPSK介绍
Quadrature Phase Shift
Keying通过使用载波的四个各不相同的相位差来表示输入的信息,是具有四进
制的相移键控。QPSK是在M=4时的数字的调相技术,它通过约定的四种载波相位,
分别为45?,135?,225?,275?,输入数据为二进制的数字序列,因为载波相 位是四进制的,所有我们需要把二进制的数据变为四进制的,即把二进制序列中 每两个比特分成一组,四种排列组合,即00,01,10,11,双比特码元即为一组。 每两位二进制信息比特构成每一组,它们分别表示着着四个符号中的某一个符 号。
2.2 QPSK调制原理
QPSK的调制有两种产生方法相乘电路法和选择法。
2.2.1 相乘法
输入信号是二进制不归零的双极性码元,它通过“串并变换”电路变成了两路
码元。变成并行码元后,每个码元的持续时间是输入码元的两倍。用两路正交载
波去调制并行码元。
- 图2.2.1选择法
QPSK的调制中,QPSK信号可以看成是两个载波正交的2PSK信号调制器构成。 原理分析如下:基本原理和系统结构QPSK与二进制PSK一样,传输信号包含的信 息都存在于相位中。个别的载波相位取四个等间隔值之一,如л/4、3л/4、5л/ 4、7л/4。相应的,可将发射信号定义为:
2E / t cos[2 ft , (2i ,1) ], 0 t Tb
St (t) 4
0, 其他
其中,i,1,2,3,4;E是发射信号的每个符号的能量,T为符号的持续时间, 载波频率f等于nc/T,nc为固定整数。每一个可能的相位值对应于一个特定的二 位组。下面介绍QPSK信号的产生和检测。如图为典型的QPSK发射机框图。输入的 二进制数据序列首先被不归零(NRZ)电平编码转换器转换为极性形式,即负号1
E
和0分别用 b 和-
E
b 表示。该二进制波形被分接器分成两个分别由输入序列的奇数位偶数位组
成的彼此独立的二进制波形,这两个二进制波形分别用a1(t)和a2(t)表示。此时 ,在任何一信号时间间隔内a1(t),和a2(t)的幅度恰好分别等于Si1和 Si2,即由发送的二位组决定。这两个二进制波形a1(t)和a2(t)被用来调制一对
t 2/T cos 2 f t t 2/T sin 2 f t 正交载波: 1 , , , c ,, 2 , , , c ,。这样就得到一对二进制 PSK信号。 1,t,和 2,t,的正交性使这两个信号可以被独立地检测。最后,将这两 个二进制PSK信号相加,从而得期望的QPSK。
-2.2.2 选择法
输入基带信号经过串并变换后用于控制一个相位选择电路,按照当时的输 入双比特ab,决定选择哪个相位的载波输出。
图2.2.2选择法
2.3 QPSK调制原理框图
图2.3 调制原理框图
-2.4 QPSK调制方式的Matlab仿真
I
路信号是用余弦载波,由2进制数据流的奇数序列组成;Q路信号用正弦载波,由2 进制数据流的偶数序列组成。下面的a是Idata,b就是Qdata,它们分布与各自的 载波相乘分别输出 I 路信号和 Q 路信号。I
路信号加上Q路信号就是QPSK输出信号。当 I
路载波信号是0相位时为1,是180?相位时为0;当Q路载波信号是0相位时为1,是 180?相位时为0。
1
列 0
列
a
-1
-1 0 1 2 3 4 5 6 7 8
1
列 0
列
b
-1
-1 0 1 2 3 4 5 6 7 8
1
列
列 0
列
列
-1
-1 0 1 2 3 4 5 6 7 8
2.4 matlab调制仿真图
2.5 QPSK调制方式Matlab-simulink仿真
2.5.1 simulink调制建模
- 图2.5.1调制框图
(1)产生需要的信号源
在搭建QPSK调制解调系统中使用伯努力信号发生器产生随机的01比特序列
,每两比特代表就一个符号。Bernoulli Binary Generator模块利用伯努利分布的原理,相应得到参数为p的伯努利分布。伯努利
分布的均值1 - p和方差p(1 –
p)的。一个零概率参数指定p。本次实验中的p设置为0.5,即0和1等概。采样时间
可根据需要进行设置,例如测误码率时采样时间设为0.01s。
图2.5.2信号源参数设置
(2)串并变换
- 我们先通过使用buffer 这个模块来实现将信号源信号转变为两路信号。Buffer
模块可以重新分配缓冲区块的输入样本,用到了Demux,可以将一个复合输入转 化为多个单一输出,即可以输出多个采样率较低的帧信号。但会产生与缓冲区容 量相同的时延。所以,我们可以设置buffer的参数容量为2。
图2.5.3 Buffer的参数设置
(3)单极性信号转化为双极性信号
因为QPSK的调制信号要求的是双极性信号,所以用伯努利随机生成二进制Ge nerator模块产生的信号必须经过转化才能够被使用。利用加法模块和常数产生 模块将1和0的序列各自减去1/2,再利用比例运算模块乘以2,就得到了1和-1 的双极性序列。
(4)调制模块
分别将两路信号乘以相位相差,л/
2的载波,然后相加。载波由正弦信号发生器产生。正弦波模块的参数设置为可基 于时间的模式,时间设为使用仿真时间,我们设载波信号的幅度为1,载波频率可 根据需要来进行设置,两路载波同频正交,相位相差л,/
2。我们设上支路的相位为0,下支路的相位为,л/ 2。
-图2.5.4上支路载波参数
-图2.5.5下支路载波参数
-2.5.2 simulink调制仿真结果
图2.5.6信号源和转变后的双极性信号
图2.5.7上支路载波
-图2.5.8 下支路载波
图2.5.9调制信号
- 第三章 QPSK解调
3.1 QPSK解调原理
QPSK接收机由一对共输入地相关器组成。这两个相关器分别提供本地产生
地相干参考信号 1,t,和 2,t,。相关器接收信号x(t),相关器输出地x1和x2被用来 与门限值0进行比较。如果x1>0,则判决同相信道地输出为符号1;如果x1<0 ,则判决同相信道的输出为符号0。如果正交通道也是如此判决输出。最后同相信="" 道和正交信道输出这两个二进制数据序列被复加器合并,重新得到原始的二进="" 制序列。在awgn信道中,判决结果具有最小的负号差错概率。用两路具有相互正="" 交特性的载波来解调信号,可以分离这两路正交的2psk信号。相干解调后,并行="" 码元经过并/串变换后,最终得到串行的数据流。="">0>
3.2 QPSK解调原理框图
图3.2相干解调原理框图
3.3 QPSK解调方式Matlab仿真
正交支路和同相支路分别设置两个相关器(或匹配滤波器)
,得到I(t)和Q(t) ,经电平判决和并/串变换后即可恢复原始信息。
I_demo=QPSK_rc_n0.*cos(2*pi*f1*t1); % 解调(相干解调,与载波相乘)
Q_demo=QPSK_rc_n0.*sin(2*pi*f1*t1);
-I_recover=conv(I_demo,xrc); % 低通滤波
Q_recover=conv(Q_demo,xrc);
列 列 列
2
0
-2
0 10 20 30 40 50 60 70 80 90 100
I 列 列 列 列
2
0
-2
0 10 20 30 40 50 60 70 80 90 100
Q 列 列 列 列
2
0
-2
0 10 20 30 40 50 60 70 80 90 100
列 列 列 列 列
2
0
-2
0 10 20 30 40 50 60 70 80 90 100
图3.3 matlab解调仿真图
3.4 QPSK解调方式的Matlab-simulink仿真
3.4.1 QPSK解调建模
首先将从高斯信道送过来的信号分别乘以与调制时的载波同频的载波,且 相位相差为,л/
2的载波。解调可以使用相关器或者匹配滤波器进行解调,本次实验使用的是相 关器,这时信号需要通过设置的积分器。因为积分器设置为使用积分器时,需要 在时间t=T
时使得积分器复位,所以需要设置积分模块续设置在时钟下降沿时复位。并需要 设置参数为使用外部信号,此时,时钟设置为与该支路码元时间相同,即是发送 信号码元时间的两倍输入。然后积分后的信号经过采样并保持模块,即sample and hold
- 模块,此时,设置这个模块为触发上升沿,同样使用时钟设置为与该支路码元时
间相同,即是发送信号码元时间的两倍输入。此时各路传输的信号相应地会使一 个单位的时延产生。然后使用autothreshold
模块,该模块根据输入的信号数据自动设置出阀值,由此,可对输入信号做出判 定,再输出相应的二进制比特序列,并可输出阀值。最后使用N-sample switch
模块来实现并串转换,因为我们最后需要的是最原始的信号,将两路信号合二为 一,在第一路信号发出一个样本时间后,样本时间设置为发送信号码元时间,开 关会自动转换到第二路信号,此时换做第二路信号输入,一个码元时间后模块重 置,如此循环。同样的,此模块也需要两倍的发送信号码元时间输入。
图3.4.1积分器设置
图3.4.2采样和保持设置
- 图3.4.3解调模块
3.4.2 传输信道
本次实验使用的是高斯信道和理想信道。实验所需的高斯噪声我们可以由 高斯信道模块来提供,用到了Zero-Order
Hold,和子模块,即SubSystem,通过子模块建立新的封装(Mask)功能模块其中参 数设置中信噪比为Es/No ,
Es/No为信号能量比噪声功率谱密度。AWGN信道模块可以将加性高斯白噪声加到 一个实数的或复数的输入信号。现在输入信号是实数,这个模块增加了实数的高 斯噪声,产生一个实数的输出信号。此块继承它的输入信号的采样时间。模块使 用信号处理模块随机产生的噪声。初始种子可以是一个标量或矢量的长度相匹 配的输入信号通道数。种子的详细资料初次,查看随机源模块库文件参考页面中 设置的信号处理。该端口的数据类型都继承自该驱动器的信号块。注意权力的所 有值假设一个1欧姆的标称阻抗。
图3.4.3高斯信道模块
3.4.3 仿真结果
-图3.4.4信号源和转变后的双极性信号
图3.4.5经过高斯信道后的调制信号
图3.4.6上支路积分和采样后的信号
- 图3.4.7上支路判决后的信号
图3.4.8下支路积分和采样后的信号
图3.4.9下支路判决后的信号
- 图3.4.10源信号流和经过调制解调后的信号流对比
3.5 仿真结果分析
从上述图中可以看出,因为整个系统模块有引进噪声,以及电路使用了积分 、采样保持模块,还原后的信号幅度差异较大,通过判决门限后,得到原来的二 进制信号。我们从仿真结果图中看出,信道噪声功率谱密度越大,信号信噪比越 小,误码率越高,这也符合实际情况。仿真的各种条件都是理想化的,除了噪声 之外不会发生任何错误,和实际情况相比,在相同的信噪比之下,比特错误率理 应要小的多,但是仿真所得结果的误码率偏大。
第四章 QPSK通信系统性能分析
(1)从仿真结果中看出,信号信噪比越小,错误率越高,跟实际情况比较符合。 (2)由于仿真中各种条件都是理想化的,包括数据在传输过程中,除了噪声影响 以外不会发生任何错误,所以相对实际情况来说,在相同信噪比下,比特错误率 要小的多,但是仿真所得结果与事实规律并不违背。
总结:
第五章 结论
在搭建QPSK调制解调系统中首先遇到的问题就是串并转换问题,simulink 中没有可以直接解决这个问题的模块,经过网上的搜索与查阅相关资料,最终选 取buffer模块,完成可串并转换的功能,但是带人了两个单位的延迟。 之后便是示波器的显示问题,此次产生的信号采样速率设置为1秒,载波频率1HZ ,对仿真过程中的波形分析带来很多的方便。
(3)在完成的QPSK系统的simulink仿真中,由于方便起见,载波大小设为1HZ,与 实际的调制解调中所用载波相差甚远,但若将载波设置变大,会对实验仿真和分 析带来极大的不便。
- 参考文献
[1]
苗长云,沈保锁.现代通信原理及应用(第2版)[M](北京:电子工业出版社,2009.
[2] 樊昌信,曹丽娜(通信原理(第6版)[M](国防工业出版社,2009.1(
[3]
刘国华,李二喜.基于FPGA的QPSK调制器的设计与实现[J](电子设计工程,2011(9
).
[4]
高博,杨燕,胡建军.基于Matlab的QPSK系统设计仿真[J].科学技术与工程,2010(
5)
[5]
谢斌,蔡虔,钟文涛.基于MATLAB/SIMULINK的QPSK通信系统仿真[J].科技广场,200
6(1).
附 录
(1)QPSK调制M文件程序
clear all
close all
% x1是类似[1 1 -1 -1 -1 -1 1 1]的分布,作用是控制相位的180?反转。
%由于仿真中载波的频率是f=1Hz,所以1s的间隔内有一个完整周期的正弦 波。
t=[-1:0.01:7-0.01]; % t共800个数据,- 1~7s
t1=[0:0.01:8-0.01]; %t1也是800个数据点 ,0 ~8s
tt=length(t); % tt=800
x1=ones(1,800);
-for i=1:tt
if (t(i)>=-1 & t(i)<=1) |="" (t(i)="">=5& t(i)<=7);>=7);>
x1(i)=1;
else x1(i)=-1;
end
end
t2 = 0:0.01:7-0.01; %t2是700个数据点,是QPSK_rc绘图的下标
t3 = -1:0.01:7.1-0.01; %t3有810个数据点,是i_rc的时间变量
t4 = 0:0.01:8.1-0.01; %t4有810个数据点,是q_rc的时间变量
tt1=length(t1);
x2=ones(1,800); %x2是类似于[1 1 -1 -1 1 1 1
1]的分布,作用是控制相位的180?反转
for i=1:tt1
if (t1(i)>=0 & t1(i)<=2) |="" (t1(i)="">=4& t1(i)<=8);>=8);>
x2(i)=1;
else x2(i)=-1;
end
end
f=0:0.1:1;
xrc=0.5+0.5*cos(pi*f); %xrc是一个低通特性的传输函数
y1=conv(x1,xrc)/5.5; %y1和x1
实际上没什么区别,仅仅是上升沿、下降沿有点过渡带
y2=conv(x2,xrc)/5.5; % y2和x2
实际上没什么区别,仅仅是上升沿、下降沿有点过渡带
n0=randn(size(t2));
f1=1;
i=x1.*cos(2*pi*f1*t); % x1就是I data
q=x2.*sin(2*pi*f1*t1); %x2就是Q data
I=i(101:800);
Q=q(1:700);
QPSK=sqrt(1/2).*I+sqrt(1/2).*Q; QPSK_n=(sqrt(1/2).*I+sqrt(1/2).*Q)+n0; n1=randn(size(t2));
i_rc=y1.*cos(2*pi*f1*t3); % y1就是I
data,i_rc可能是贴近实际的波形,i则是理想波形
- q_rc=y2.*sin(2*pi*f1*t4); %y2就是Q
data,q_rc可能是贴近实际的波形,q则是理想波形
I_rc=i_rc(101:800);
Q_rc=q_rc(1:700);
QPSK_rc=(sqrt(1/2).*I_rc+sqrt(1/2).*Q_rc);
QPSK_rc_n1=QPSK_rc+n1;
figure(1)
subplot(3,1,1);plot(t3,i_rc);axis([-1 8 -1 1]);ylabel('a序列');
subplot(3,1,2);plot(t4,q_rc);axis([-1 8 -1 1]);ylabel('b序列');
subplot(3,1,3);plot(t2,QPSK_rc);axis([-1 8 -1 1]);ylabel('合成序列');
(2)QPSK解调M文件程序
clear all
close all
bit_in = randint(1e3, 1, [0 1]);
bit_I = bit_in(1:2:1e3); %bit_I为”奇数序列”,奇数序列是同相分量,以cos为载波
bit_Q = bit_in(2:2:1e3); %bit_Q是bit_in的所有偶数下标组成的”偶数序列”,以sin为载波
data_I = -2*bit_I+1; % 将bit_I中的1变成-1,0变成1; 注意data_I是500点
data_Q = -2*bit_Q+1; %将bit_Q中的1变成-1,0变成1
data_I1=repmat(data_I',20,1);
%将500行的列向量data_I的共轭转置data_I’复制为20*500的矩阵,20行数据是相
同的。
data_Q1=repmat(data_Q',20,1);
for i=1:1e4 %data_I2是将data_I1这个20*500的矩阵拉长为1*10000的行向量
data_I2(i)=data_I1(i);
data_Q2(i)=data_Q1(i);
end;
f=0:0.1:1;
xrc=0.5+0.5*cos(pi*f);
data_I2_rc=conv(data_I2,xrc)/5.5; % data_I2_rc就是Idata data_Q2_rc=conv(data_Q2,xrc)/5.5; % data_Q2_rc就是Qdata
f1=1;
t1=0:0.1:1e3+0.9; % 10010个数据,长度和data_I2_rc以及data_Q2_rc相同
n0=rand(size(t1)); %n0是1*10010的均匀分布的噪声
-I_rc=data_I2_rc.*cos(2*pi*f1*t1);
Q_rc=data_Q2_rc.*sin(2*pi*f1*t1); QPSK_rc=(sqrt(1/2).*I_rc+sqrt(1/2).*Q_rc); QPSK_rc_n0=QPSK_rc+n0;
I_demo=QPSK_rc_n0.*cos(2*pi*f1*t1); % 解调(相干解调,与载波相乘)
Q_demo=QPSK_rc_n0.*sin(2*pi*f1*t1); I_recover=conv(I_demo,xrc); % 低通滤波
Q_recover=conv(Q_demo,xrc);
I=I_recover(11:10010);
Q=Q_recover(11:10010);
t2=0:0.05:1e3-0.05; %t2有20000个点
t3=0:0.1:1e3-0.1; %t3有10000个点
data_recover=[]; % 抽样判决
for i=1:20:10000 %data_recover是待判决的20000点
data_recover=[data_recover I(i:1:i+19) Q(i:1:i+19)];
end;
bit_recover=[];
for i=1:20:20000
if sum(data_recover(i:i+19))>0
%20点为同一个值,20点数据叠加后与阈值0比较
data_recover_a(i:i+19)=1; %data_recover_a是并/串转换后的20000点
bit_recover=[bit_recover 1]; %bit_recover是1000点数据
else
data_recover_a(i:i+19)=-1;
bit_recover=[bit_recover -1];
end
end
error=0;
dd = -2*bit_in+1; % 将bit_in中的1变成-1,0变成1
ddd=[dd']; %ddd是1表示0,-1表示1的原始序列,1000个点
ddd1=repmat(ddd,20,1); %ddd1是20*1000的矩阵
for i=1:2e4
ddd2(i)=ddd1(i); %将ddd1拉直为1*20000的行向量ddd2
end
for i=1:1e3
if bit_recover(i)~=ddd(i)
- error=error+1;
end
end
p=error/1000;
figure(1)
subplot(4,1,1);plot(t2,ddd2);axis([0 100 -2 2]);title('原序列'); subplot(4,1,2);plot(t1,I_demo);axis([0 100 -2 2]);title('I 支路解调');
subplot(4,1,3);plot(t1,Q_demo);axis([0 100 -2 2]);title('Q 支路解调');
subplot(4,1,4);plot(t2,data_recover_a);axis([0 100 -2 2]);title('解调后序列');
结束
-?.o---o?..o
Aqwsedbg
-word
-
范文五:qpsk原理
QPSK 的基本原理
四相相移键控信号简称 “QPSK” 。 它分为绝对相移和相对相移两种。 由于绝对相移方式存在相位模糊问 题,所以在实际中主要采用相对移相方式 QDPSK 。它具有一系列独特的优点,目前已经广泛应用于无线 通信中,成为现代通信中一种十分重要的调制解调方式。
QPSK 是英文 Quadrature Phase Shift Keying的缩略语简称,意为正交相移键控,是一种数字调 制方式。 在数字信号的调制方式中 QPSK 四相移键控是目前最常用的一种卫星数字信号调制方式 , 它具有较 高的频谱利用率、较强的抗干扰性、在电路上实现也较为简单。其星座图如下所示 (采用格雷码编码 ) 。
QPSK 数字解调
QPSK 数字解调包括:模数转换、抽取或插值、匹配滤波、时钟和载波恢复等。在实际的调谐解调电 路中, 采用的是非相干载波解调, 本振信号与发 射端的载波信号存在频率偏差和相位抖动, 因而解调出来 的模拟 I 、 Q 基带信号是带有载波误差的信号。这样的模拟基带信号即使采用定时准确的时钟进行取样判 决,得到的数字信号也不是原来发射端的调制信号,误差的积累将导致抽样判决后的误码率增大,因此数 字 QPSK 解调电路要对载波误差进行补偿,减少非相干载 波解调带来的影响。此外, ADC 的取样时钟也 不是从信号中提取的,当取样时钟与输入的数据不同步时,取样将不在最佳取样时刻进行所得到的取样值 的统计信噪 比就不是最高,误码率就高,因此,在电路中还需要恢复出一个与输入符号率同步的时钟,来 校正固定取样带来的样点误差,并且准确的位定时信息可为数字解调后 的信道纠错解码提供正确的时钟。 校正办法是由定时恢复和载波恢复模块通过某种算法产生定时和载波误差,插值或抽取器在定时和载波误 差信号的控制下,对 A/D转换后的取样值进行抽取或插值滤波,得到信号在最佳取样点的值,不同芯片 采用的算法不尽相同,例如可以采用据辅助法 (DA)载波相位和定时相位联合 估计的最大似然算法。
特性分析
四相相移调制是利用载波的四种不同相位差来表征输入的数字信息,是四进制移相键控。 QPSK 是在 M=4时的调相技术,它规定了四种载波相 位,分别为 45°, 135°, 225°, 275°,调制器输入的数据是 二进制数字序列, 为了能和四进制的载波相位配合起来, 则需要把二进制数据变换为四进 制数据, 这就是 说需要把二进制数字序列中每两个比特分成一组,共有四种组合,即 00, 01, 10, 11,其中每一组称为 双比特码元。 每一个双比特码元是由 两位二进制信息比特组成, 它们分别代表四进制四个符号中的一个符 号。 QPSK 中每次调制可传输 2个信息比特,这些信息比特是通过载波的四种相位来传递的。 解调器根 据星座图及接收到的载波信号的相位来判断发送端发送的信息比特。
数字调制用 “ 星座图 ” 来描述,星座图中定义了一种调制技术的两个基本 参数:(1)信号分布;(2) 与调制数字比特之间的映射关系。 星座图中规定了星座点与传输比特间的对应关系, 这种关系称为 “ 映射 ” , 一种调制技术的特性可 由信号分布和映射完全定义,即可由星座图来完全定义。
首先将输入的串行二进制信息序列经串-并变换,变成 m=log2M个并行数据流,每一路 的数据率 是 R/m, R 是串行输入码的数据率。 I/Q信号发生器将每一个 m 比特的字节转换成一对 (pn , qn ) 数字, 分成两路速率减半的序列, 电平发生器分 别产生双极性二电平信号 I(t)和 Q(t), 然后对 coswct 和 sinwct 进行调制,相加后即得到 QPSK 信号。
QPSK 是一种频谱利用 率高、抗干扰性强的数调制方式 , 它被广泛应用于各种通信系统中 . 适合卫星 广播。例如,数字卫星电视 DVB2S 标准中,信道噪声门限低至 4. 5 dB,传输码率达到 45M b?s ,采用 QPSK 调制方式,同时保证了信号传输的效率和误码性能。
QPSK 的 MATLAB 程序
(1) QPSK调制
function ModSig = QpskMod(SrcBit,PhaseOffset)
SrcBitLen = length(SrcBit);
if (mod(SrcBitLen,2) ~= 0)
error('The Bit length must be the 2N!');
end
Symbole = reshape(SrcBit,2,SrcBitLen/2);
ScatterPoint = exp (1i*(2*pi*(0:3)/4 + PhaseOffset));
ScatterPointGray = [ScatterPoint(1),ScatterPoint(2),ScatterPoint(4),ScatterPoint(3)];
SymboleValue = Symbole(1,:)*2 + Symbole(2,:);
ModSig = ScatterPointGray(SymboleValue+1);
end
(2) QPSK解调
function DemodSig = QpskDemod(ModSig,PhaseOffset)
ScatterPoint = exp(1i*(2*pi*(0:3)/4 + PhaseOffset));
% ScatterPointGray = [ScatterPoint(1),ScatterPoint(2),ScatterPoint(4),ScatterPoint(3)];
ModSigDistance = zeros(4,length(ModSig));
for k = 1:4
ModSigDistance(k,:) = abs(ModSig - ScatterPoint(k));
end
[~, MinIdx]= min(ModSigDistance);
DemodSig = zeros(1,2*length(ModSig));
for k = 1 : length(ModSig)
switch MinIdx(k)
case 1
DemodSig(2*k-1:2*k) = [0 0];
case 2
DemodSig(2*k-1:2*k) = [0 1];
case 3
DemodSig(2*k-1:2*k) = [1 1];
case 4
DemodSig(2*k-1:2*k) = [1 0];
end
end
end
QPSK 波形
待续。。。
QPSK 的 Simulink 系统仿真 待续。。。
QPSK 误码率曲线
待续。。。
转载请注明出处范文大全网 » bpsk和qpsk调制解调原
=2)>=1)>=2)>=1)>