课程设计OQPSK通信系统的matlab仿真分析

更新时间:2023-07-23 23:00:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

课程设计OQPSK通信系统的matlab仿真分析

说 明

1. 课程设计任务书由指导教师填写,并经专业学科组审定,下达到学生。

2. 学生根据指导教师下达的任务书独立完成课程设计。

3. 本任务书在课程设计完成后,与论文一起交指导教师,作为论文评阅和课程设计答辩的主要档案资料。

课程设计OQPSK通信系统的matlab仿真分析

一、课程设计的主要内容和基本要求 课程设计的主要内容和基本要求 主要内容⑴ 产生等概率且相互独立的二进制序列,画出时域和频域的波形; ⑵ 产生均值为 0,方差为 1 的加性高斯随机噪声; ⑶ 进行 OQPSK 调制,画出波形; ⑷ 进行误码率分析,并与理论值比较; ⑸ 解调 OQPSK,画出眼图。 ⑹ 画出星座图

二、课程设计图纸内容及张数 课程设计图纸内容及张数 本实验没有规定的图纸内容, 本实验没有规定的图纸内容,在实验结果中附有本次实验的结果图

课程设计OQPSK通信系统的matlab仿真分析

三、课程设计应完成的软硬件的名称、内容及主要技术指标 课程设计应完成的软硬件的名称、 应完成的软硬件的名称MATLAB 7.0

四、主要参考资料通信原理基础 (北京邮电大学出版社) 通信原理 (国防工业出版社)樊昌信 曹丽娜 编著 信号与系统——MATLAB 综合实验(高等教育出版社) MATLAB7 辅助信号处理技术与应用(电子工业出版社)飞思科技产品研发中心 编著

课程设计OQPSK通信系统的matlab仿真分析

OQPSK通信系统的matlab仿真分析

㈠ 设计目的和意义

1. 对oqpsk进行调制和解调,通过MATLAB编程,掌握MATLAB的使用,熟练掌握OQPSK的调制原理,解调原理。

2. 对OQPSK通信系统进行matlab仿真分析,分析起信噪比和差错率。为现实中通信系统的调制,解调,及信道传输进行理论指导。 ㈡ 设计原理 1. OPSK的调制

它和QPSK有着同样的相位关系,也是把输入码流分成两路,然后进行正交调制。随着数字通信技术的发展和广泛应用,人们对系统的带宽、频谱利用率和抗干扰性能要求越来高。而与普通的QPSK比较,交错正交相移键控的同相与正交两支路的数据流在时问上相互错开了半个码元周期,而不像QPSK那样I、Q两个数据流在时间上是一致的(即码元的沿是对齐的)。由于OQPSK信号中的I(同相)和Q(正交)两个数据流,每次只有其中一个可能发生极性转换,所以,每当一个新的输入比特进入调制器的I或Q信道时,其输出的OQPSK信号中只有0°、+90°三个相位跳变值,而根本不可能出现180°相位跳变。所以频带受限的OQPSK信号包络起伏比频带受限的QPSK信号要小,而经限幅放大后的频带展宽也少。

2.OQPSK的基本原理

OQPSK信号的数学公式可以表示为:

⑴OQPSK的调制方法与QPSK类似,仅在一条正交支路上引入了一个比特的延时,以使得两支路的数据不会同时发生变化,降低最大相位跳变。其中电平映射关系为:1→1,0→-1.

课程设计OQPSK通信系统的matlab仿真分析

图3:OQPSK调制原理框图

经OQPSK调制后,调制点的星相图以及状态转移图如图4所示。

⑵OQPSK解调

OQPSK信号可采用正交相干解调方式解调,其解调原理如图a所示。由图a可以看出,OQPSK与QPSK信号的解调原理基本相同,其差别仅在于对Q支路信号抽样判决后要延迟Tb/2,这是因为在调制时,Q支路信号在时间上偏移了Tb/2,所以抽样判决时刻也相应偏移了Tb/2,以保证对两支路的交错抽样。

课程设计OQPSK通信系统的matlab仿真分析

⑶眼图是信号由垂直扫描进入与同周期的水平扫描锯齿波叠加到示波器上时到得图案。

眼图能够反映信号在传输过程中受到的信道噪声影响的强度,眼图越模糊,眼睛越闭合,则说明噪声越强,反之,则说明噪声强度弱,也能说明信道性能更优良。

㈢ 设计结果及分析

⑴输入的二进制序列以及串并转换成的上下两路信号,下支路信号已延时,由产生的随机序列可以知道前十个码元为1001001101,映射电平为1-1-11-1-111-11,下面的抽样脉冲与ts=1的矩形脉冲相卷即为输入信号

⑵上下支路分别经过调制后的信号

课程设计OQPSK通信系统的matlab仿真分析

⑶调制后的信号以及加了高斯白噪声的信号

⑷调制后的信号乘以相干载波后的信号,通过低通滤波器以及经过抽样判决后的信号

(前面上下支路的信号的与判决后的信号对比,可以看出都有延时)

课程设计OQPSK通信系统的matlab仿真分析

⑸恢复成的最终信号与原始信号的对比

⑹oqpsk的星座图

课程设计OQPSK通信系统的matlab仿真分析

⑺oqpsk的眼图

⑻oqpsk系统的理论误码率

课程设计OQPSK通信系统的matlab仿真分析

⑼此次实验中实际误码率

加入不同的噪声进行循环

rt=1.8%

(四)matlab程序及其功能 ⑴主程序以及注释 clc;

A=1; % 载波幅度 fc=2; % 载波频率 Ts=1; % 码元宽度 fs=1/Ts

B1=fs; %低通滤波器的宽度

课程设计OQPSK通信系统的matlab仿真分析

N_sample=32; % 基带码元抽样点数 N=500; % 码元数

dt=Ts/fc/N_sample; % 抽样时间间隔 T=N*Ts; % 信号持续时间长度

t=0:dt:T-dt; % 时间向量

Lt=length(t); % 时间向量长度 tx1=0; % 时域波形图横坐标起点

tx2=10; 标终点

ty1=-2; 标起点

ty2=2; 标终点

fx1=-10; 起点

fx2=10; 终点

fy1=-40; fy2=25; EsN0dB = 3:0.5:10 ; EsN0 = 10.^(EsN0dB/10);

rt=zeros(1,length(EsN0dB)); M=4;

%产生二进制信源

m=randn(1,N); d=sign(m); % dd=sigexpand(d,fc*N_sample); gt=ones(1,fc*N_sample); d_NRZ=conv(dd,gt);

figure(5);

subplot(2,2,1); plot(t,dd(1:Lt));

axis([tx1,tx2,ty1,ty2]);

figure(1);

subplot(2,4,1);

plot(t,d_NRZ(1:Lt));

axis([tx1,tx2,ty1,ty2]); xlabel('时间(S)');

% 时域波形图横坐 % 时域波形图纵坐 % 时域波形图纵坐% 功率谱图横坐标% 功率谱图横坐标% 功率谱图纵坐标起点 % 功率谱图纵坐标终点 %设定EbNo范围 %初始化误码率向量 % 产生1到n的随机数 将大于0的变为1小于0的变为-1 %将序列d的周期变为Ts % 产生宽度为Ts的矩形窗 % 卷积产生基带信号

课程设计OQPSK通信系统的matlab仿真分析

ylabel('幅度');

title('基带信号时域波形图'); grid;

[f,d_NRZf]=T2F(t,d_NRZ(1:Lt));% 进行傅里叶变换 figure(1);

subplot(2,4,5);

plot(f,10*log10(abs(d_NRZf).^2/T)); axis([fx1,fx2,fy1,fy2]); xlabel('频率(Hz)');

ylabel('功率谱密度(dB/Hz)'); title('基带信号功率谱图'); grid;

figure(4);

subplot(2,2,1);

plot(t,d_NRZ(1:Lt));

axis([tx1,tx2,ty1,ty2]); xlabel('时间(S)'); ylabel('幅度');

title('基带信号时域波形图'); grid;

figure(4);

subplot(2,2,2);

plot(f,10*log10(abs(d_NRZf).^2/T)); axis([fx1,fx2,fy1,fy2]); xlabel('频率(Hz)');

ylabel('功率谱密度(dB/Hz)'); title('基带信号功率谱图'); grid;

% 串并转换 d1=[]; d2=[]; for i=1:N

if rem(i,2)==1

d1((i+1)/2)=d(i); else

d2(i/2)=d(i); end end

课程设计OQPSK通信系统的matlab仿真分析

dd1=sigexpand(d1,2*fc*N_sample); %功能同上 gt1=ones(1,2*fc*N_sample); d_NRZ1=conv(dd1,gt1);

figure(1);

subplot(2,4,2);

plot(t,d_NRZ1(1:Lt)); axis([tx1,tx2,ty1,ty2]); xlabel('时间(S)'); ylabel('幅度');

title('上支路基带信号时域波形图'); grid;

[f1,d_NRZ1f]=T2F(t,d_NRZ1(1:Lt)); figure(1);

subplot(2,4,6);

plot(f1,10*log10(abs(d_NRZ1f).^2/T)); axis([fx1,fx2,fy1,fy2]); xlabel('频率(Hz)');

ylabel('功率谱密度(dB/Hz)');

title('上支路基带信号功率谱图'); grid;

figure(3);

subplot(2,4,1);

plot(t,d_NRZ1(1:Lt)); axis([tx1,tx2,ty1,ty2]); xlabel('时间(S)'); ylabel('幅度');

title('上支路基带信号时域波形图'); grid;

dd2=sigexpand(d2,2*fc*N_sample); gt1=ones(1,2*fc*N_sample); d_NRZ2=conv(dd2,gt1); d_NRZ2DLY=[-ones(1,N_sample*fc),d_NRZ2(1:end-N_sample*fc)]; %进行延时,在前面添-1

figure(1);

subplot(2,4,3);

plot(t,d_NRZ2DLY(1:Lt)); axis([tx1,tx2,ty1,ty2]); xlabel('时间(S)');

课程设计OQPSK通信系统的matlab仿真分析

ylabel('幅度');

title('下支路基带信号时域波形图'); grid;

[f2,d_NRZ2f]=T2F(t,d_NRZ2DLY(1:Lt)); figure(1);

subplot(2,4,7);

plot(f2,10*log10(abs(d_NRZ2f).^2/T)); axis([fx1,fx2,fy1,fy2]); xlabel('频率(Hz)');

ylabel('功率谱密度(dB/Hz)');

title('下支路基带信号功率谱图'); grid;

figure(3);

subplot(2,4,5);

plot(t,d_NRZ2DLY(1:Lt)); axis([tx1,tx2,ty1,ty2]); xlabel('时间(S)'); ylabel('幅度');

title('下支路基带信号时域波形图'); grid; % 载波

h1t=A*cos(2*pi*fc*t); h2t=A*sin(2*pi*fc*t);

figure(1);

subplot(2,4,4); plot(t,h1t);

axis([tx1,tx2,ty1,ty2]); xlabel('时间(S)'); ylabel('幅度');

title('载波信号时域波形图'); grid;

[f3,h1tf]=T2F(t,h1t); figure(1);

subplot(2,4,8);

plot(f3,10*log10(abs(h1tf).^2/T));

% p=2/T *10*log10(abs(h1tf)为求功率谱的公式 axis([fx1,fx2,fy1,fy2]); xlabel('频率(Hz)');

ylabel('功率谱密度(dB/Hz)'); title('载波信号功率谱图');

课程设计OQPSK通信系统的matlab仿真分析

grid;

% 生成OQPSK信号

s_qpsk1=d_NRZ1(1:Lt).* h1t; %上下支路分别调制 s_qpsk2=d_NRZ2DLY(1:Lt).* h2t; figure(2);

subplot(2,2,1); plot(t,s_qpsk1);

axis([tx1,tx2,ty1,ty2]); xlabel('时间(S)'); ylabel('幅度');

title('上支路频带信号时域波形图'); grid;

[f4,s_qpsk1f]=T2F(t,s_qpsk1); figure(2);

subplot(2,2,3);

plot(f4,10*log10(abs(s_qpsk1f).^2/T)); axis([fx1,fx2,fy1,fy2]); xlabel('频率(Hz)');

ylabel('功率谱密度(dB/Hz)');

title('上支路频带信号功率谱图'); grid;

figure(2);

subplot(2,2,2); plot(t,s_qpsk2);

axis([tx1,tx2,ty1,ty2]); xlabel('时间(S)'); ylabel('幅度');

title('下支路频带信号时域波形图'); grid;

[f5,s_qpsk2f]=T2F(t,s_qpsk2); figure(2);

subplot(2,2,4);

plot(f5,10*log10(abs(s_qpsk2f).^2/T)); axis([fx1,fx2,fy1,fy2]); xlabel('频率(Hz)');

ylabel('功率谱密度(dB/Hz)');

title('下支路频带信号功率谱图'); grid;

课程设计OQPSK通信系统的matlab仿真分析

s_oqpsk=s_qpsk1+s_qpsk2; %两路信号相加得到调制后的信号 figure(8);

subplot(2,2,1); plot(t,s_oqpsk);

axis([tx1,tx2,ty1,ty2]); xlabel('时间(S)'); ylabel('幅度');

title('已调信号时域波形图'); grid;

[f6,s_oqpskf]=T2F(t,s_oqpsk); figure(8);

subplot(2,2,3);

plot(f6,10*log10(abs(s_oqpskf).^2/T)); axis([fx1,fx2,fy1,fy2]); xlabel('频率(Hz)');

ylabel('功率谱密度(dB/Hz)'); title('已调信号功率谱图'); grid;

% 信道加入高斯白噪声进行接收解调 % 产生高斯白噪声 m=1; p1=-10;

noise = wgn(m,Lt,p1); % 接收信号

y_qpsk = s_oqpsk + noise;

figure(8);

subplot(2,2,2); plot(t,y_qpsk);

axis([tx1,tx2,ty1,ty2]); xlabel('时间(S)'); ylabel('幅度');

title('接收信号时域波形图 '); grid;

[f7,y_qpskf]=T2F(t,y_qpsk); figure(8);

subplot(2,2,4);

plot(f7,10*log10(abs(y_qpskf).^2/T)); axis([fx1,fx2,fy1,fy2]); xlabel('频率(Hz)');

课程设计OQPSK通信系统的matlab仿真分析

ylabel('功率谱密度(dB/Hz)');

title('接收信号功率谱图 Pn=-10dB'); grid;

%[t,ny_qpsk]=bpf(f7,y_qpskf,1,8);

% 相干解调 % 通过乘法器1

r_qpsk1 = y_qpsk .* h1t;

figure(3);

subplot(2,4,2); plot(t,r_qpsk1);

axis([tx1,tx2,ty1,ty2]); xlabel('时间(S)'); ylabel('幅度');

title('上支路通过乘法器信号时域波形图'); grid;

%通过低通滤波器

[f8,r_qpsk1f]=T2F(t,r_qpsk1);

B1=1;

[t1,r_qpsk11]=lpf(f8,r_qpsk1f,B1);

figure(3);

subplot(2,4,3); plot(t1,r_qpsk11)

axis([tx1,tx2,ty1,ty2]); xlabel('时间(S)'); ylabel('幅度');

title('上支路通过低通滤波器信号时域波形图'); grid;

%抽样判决

dd11=r_qpsk11(fc*N_sample:2*fc*N_sample:end);

dd22=sign(dd11); %判决 dd222=sigexpand(dd22,2*fc*N_sample);

d_NRZ11=conv(dd222,gt1); %得到上支路信号

d_NRZ11DLY=[-ones(1,N_sample*fc),d_NRZ11(1:end-N_sample*fc)]; %路信号延时

figure(3);

上支

课程设计OQPSK通信系统的matlab仿真分析

subplot(2,4,4);

plot(t,d_NRZ11DLY(1:Lt)); axis([tx1,tx2,ty1,ty2]); xlabel('时间(S)'); ylabel('幅度');

title('上支路抽样判决后信号时域波形图'); grid;

% 通过乘法器2

r_qpsk2 = y_qpsk .* h2t; figure(3);

subplot(2,4,6); plot(t,r_qpsk2);

axis([tx1,tx2,ty1,ty2]); xlabel('时间(S)'); ylabel('幅度');

title('下支路通过乘法器信号时域波形图'); grid;

%通过低通滤波器

[f9,r_qpsk2f]=T2F(t,r_qpsk2);

[t2,r_qpsk21]=lpf(f9,r_qpsk2f,B1); figure(3);

subplot(2,4,7); plot(t2,r_qpsk21)

axis([tx1,tx2,ty1,ty2]); xlabel('时间(S)'); ylabel('幅度');

title('下支路通过低通滤波器信号时域波形图'); grid;

%抽样判决

dd33=r_qpsk21(fc*N_sample:2*fc*N_sample:end);

dd44=sign(dd33); %判决

dd444=sigexpand(dd44,2*fc*N_sample);

d_NRZ21=conv(dd444,gt1)

figure(3);

subplot(2,4,8);

plot(t,d_NRZ21(1:Lt)) axis([tx1,tx2,ty1,ty2]); xlabel('时间(S)'); ylabel('幅度');

title('下支路抽样判决后信号时域波形图');

课程设计OQPSK通信系统的matlab仿真分析

grid;

dd22DLY=d_NRZ11DLY(fc*N_sample:2*fc*N_sample:end); % 并串转换 ddd=[];

for s=1:N/2

ddd(2*s-1)=dd22DLY(s); ddd(2*s)=dd44(s); end

rddd=sigexpand(ddd,fc*N_sample); %解调信号输出

r_qpsk=conv(rddd,gt);

qr_qpsk=[r_qpsk(2*N_sample*fc+1:N*N_sample*fc),ones(1,2*N_sample*fc)] %去除延时

figure(4);

subplot(2,2,3);

plot(t,qr_qpsk(1:Lt)); axis([tx1,tx2,ty1,ty2]); xlabel('时间(S)'); ylabel('幅度');

title('解调信号时域波形图 Pn=-10dB'); grid;

[f10,qr_qpskf]=T2F(t,r_qpsk(1:Lt)); figure(4);

subplot(2,2,4);

plot(f10,10*log10(abs(qr_qpskf).^2/T)); axis([fx1,fx2,fy1,fy2]); xlabel('频率(Hz)');

ylabel('功率谱密度(dB/Hz)');

title('解调信号功率谱图 Pn=-10dB'); grid; %眼图

eyediagram(y_qpsk,32,2,8);

x=d_NRZ1(1:fc*N*N_sample)+j*d_NRZ2DLY(1:fc*N*N_sample); %星座图

scatterplot(x); axis([-4,4,-4,4]); grid;

xlabel('实部'); ylabel('虚部'); title('星座图');

d_NRZJ=d_NRZ(1:fc*N*N_sample);

课程设计OQPSK通信系统的matlab仿真分析

p=find(d_NRZJ<0); d_NRZJ(p)=0;

q=find(qr_qpsk<0); qr_qpsk(q)=0; r=find(d_NRZ>0); d_NRZJ(r)=1;

s=find(qr_qpsk>0); qr_qpsk(s)=1; figure

[num,rt] = biterr(d_NRZJ,qr_qpsk); Ps = erfc(sqrt(EsN0)*sin(pi/M)); %通过一系列计算可以得到 %Ps 2Q(

2EsN0

sin(

M

))

%由于 erfc(z) 2Q(2z) %可以进一步得到,Ps erfc(

EsN0

sin(

M

))

semilogy(EsN0dB,Ps,'rd -');

xlabel('Es/N0(dB)'); ylabel('误码率'); grid on;

title('QPSK系统的误码率'); ⑵用到的子函数

function [out]=sigexpand(d,M)

% 将输入的序列扩展成间隔为 N-1 个 0 的序列; N=length(d); out=zeros(M,N); out(1,:)=d;

out=reshape(out,1,M*N);

function[f,sf]=T2F(t,st); %计算信号的傅里叶变换

%Input is the time and the signal vectors,the length of time must greater %than 2

%Output is the frequency and the signal spectrum dt=t(2)-t(1); T=t(end); df=1/T;

N=length(st);

f=-N/2*df:df:N/2*df-df; sf=fft(st);

课程设计OQPSK通信系统的matlab仿真分析

sf=T/N*fftshift(sf);

function [t,st]=F2T(f,sf) %计算信号的反傅里叶变换 df=f(2)-f(1);

Fmx=(f(end)-f(1)+df); dt=1/Fmx;

N=length(sf); T=dt*N;

%t=-T/2:dt:T/2-dt; t=0:dt:T-dt;

sff=fftshift(sf); st=Fmx*ifft(sff); % 低通滤波器

function [t,st]=lpf(f,sf,B) % f: frequency samples

% sf: input data spectrum samples

% B: lowpass's bandwidth with a rectangle lowpass % output: % t: sample

% st: output data's time samples

df = f(2)-f(1); T = 1/df;

hf = zeros(1,length(f));

bf = [-floor(B/df):floor(B/df)]+floor(length(f)/2); %规定低通滤波器的宽度

hf(bf) = 1; %低通滤波器为理想的矩形窗,其加权值为1 yf = hf .* sf; %频域的相乘 [t,st] = F2T(f,yf); st = real(st);

备注:如果要画实际误码率曲线可以在程序最后使用循环,框架如下 m=1; jj=1; qe=[];

for pl=0:15

…… %省略部分为加噪解调部分,和前面程序相同,去除画图的程序 [num,rt] = biterr(d_NRZJ,qr_qpsk); qe(jj)=rt; jj=jj+1; end

Qe=qe(1:16);

semilogy(EsN0dB,Qe,‘b‘); %用semilogy画图必须和Qe前面的序列长

本文来源:https://www.bwwdw.com/article/eykm.html

Top