实验8 多用户CDMA直接序列扩频系统仿真

  • 格式:doc
  • 大小:63.00 KB
  • 文档页数:5

课程实验报告
课程3G移动通信实验
实验名称多用户CDMA直接序列系统扩频仿真学院通信工程
专业通信工程
班级13083414
学号13081403
学生姓名
一、实验内容
【实验目的】
⏹加深对CDMA扩频系统的理解;
⏹能够使用Matlab语言完成简化的CDMA直接序列扩频系统仿真和分析;【实验内容】
⏹使用Matlab语言完成扩频系统仿真;
⏹分析误比特率;
【实验设备】
⏹一台PC 机
【实验步骤】
生成4个用户的信息码,分别用各自的扩频码进行扩频,然后按照图3的原理进行发送、接收,统计误比特率。

其中噪声为高斯白噪声awgn,信噪比可以取2dB。

【实验报告】
按照要求完成实验报告。

实验报告中要求画出实验步骤中的波形图,并对实验结果进行总结。

【实验原理】
直接序列扩频系统采用高码速率的直接序列(Direct Sequence,DS),伪随机码在发端进行扩频,在收端用相同的码序列去进行解扩,然后将展宽的扩频信号还原成原始信息。

直接序列扩频系统的发射机和接收机框图如图1所示。

二、仿真程序及说明
ex_f.m:
function m = ex_f(mt,pn)
%ex_f 用pn序列扩频mt
% 返回mt与pn大小乘积的序列
m=reshape((mt'*pn)',1,[]);
end
de_f.m:
function d = de_f( s,pn )
%de_f decode the exfrequncy modulate
% s->the seq need decode, length of s must be intergally larger than length of pn d_l=s.*ex_f(ones(1,length(s)/length(pn)),pn);
d=sum(reshape(d_l,length(pn),[]))/length(pn);
end
multiuser.m:
H2=[1 1;1 -1];
NH2=H2*(-1);
H4=[H2 H2;H2 NH2];
NH4=H4*(-1);
H8=[H4 H4;H4 NH4];
NH8=H8*(-1);
H16=[H8 H8;H8 NH8];
NH16=H16*(-1);
H32=[H16 H16;H16 NH16];
NH32=H32*(-1);
H64=[H32 H32;H32 NH32]; %产生walsh64扩频码%
p1=H64(5,:);
p2=H64(10,:);
p3=H64(15,:);
p4=H64(20,:);
m1t=mod(fix(randn(1,16)),2)*2-1; %产生4个用户的随机序列%
m2t=mod(fix(randn(1,16)),2)*2-1;
m3t=mod(fix(randn(1,16)),2)*2-1;
m4t=mod(fix(randn(1,16)),2)*2-1;
s1=ex_f(m1t,p1); %对四个用户进行扩频%
s2=ex_f(m2t,p2);
s3=ex_f(m3t,p3);
s4=ex_f(m4t,p4);
s=s1+s2+s3+s4; %合并并通过AWGN信道%
s=awgn(s,0.01);
d1=de_f(s,p1); %解扩频%
d2=de_f(s,p2);
d3=de_f(s,p3);
d4=de_f(s,p4);
d1=d1./abs(d1); %判决%
d2=d2./abs(d2);
d3=d3./abs(d3);
d4=d4./abs(d4);
err1=sum(abs(m1t-d1)/2); %统计误码%
err2=sum(abs(m2t-d2)/2);
err3=sum(abs(m3t-d3)/2);
err4=sum(abs(m4t-d4)/2);
subplot(4,2,1)
stairs(m1t);
title('用户1消息序列')
axis([1 16 -1.5 1.5]);
subplot(4,2,3)
stairs(m2t);
title('用户2消息序列')
axis([1 16 -1.5 1.5]);
subplot(4,2,5)
stairs(m3t);
title('用户3消息序列')
axis([1 16 -1.5 1.5]);
subplot(4,2,7)
stairs(m4t);
title('用户4消息序列')
axis([1 16 -1.5 1.5]);
subplot(4,2,2)
stairs(d1);
title(['用户1接收序列' '(' '误码:' num2str(err1) '误码率:' num2str(err1/16) ')']) axis([1 16 -1.5 1.5]);
subplot(4,2,4)
stairs(d2);
title(['用户2接收序列' '(' '误码:' num2str(err2) '误码率:' num2str(err2/16) ')']) axis([1 16 -1.5 1.5]);
subplot(4,2,6)
stairs(d3);
title(['用户3接收序列' '(' '误码:' num2str(err3) '误码率:' num2str(err3/16) ')']) axis([1 16 -1.5 1.5]);
subplot(4,2,8)
stairs(d4);
title(['用户4接收序列' '(' '误码:' num2str(err4) '误码率:' num2str(err4/16) ')']) axis([1 16 -1.5 1.5]);
总结
扩频通信是用pn码去扩展每一个信号周期。