matlab算法仿真编程基于MATLAB的码分多址复用技术的仿真Word格式.docx
《matlab算法仿真编程基于MATLAB的码分多址复用技术的仿真Word格式.docx》由会员分享,可在线阅读,更多相关《matlab算法仿真编程基于MATLAB的码分多址复用技术的仿真Word格式.docx(12页珍藏版)》请在冰豆网上搜索。
这种特性叫做正交性.这些序列叫做Walsh码可以从一个二进制Walsh矩阵导出。
当多个终端发送多个片码时,信号就会在空中叠加。
例如芯片序列是(-1,-1,-1,-1)和(+1,-1,+1,-1),叠加后变成(0,-2,0,-2)。
接受方只要计算发送信号到空中的终端目点值。
例如(-1,-1,-1,-1).(0,-2,0,-2)=+1。
TDMA和FDMA终端理论上可以过滤其他时隙或者频率通道的任意强信号。
这在CDMA无法实现,它只能部分过滤干扰信号。
如果任一或者全部噪声信号强于有用信号,则有用信号就被淹没了。
这样在CDMA系统中就要求每个终端有一个近似合适的信号功率。
在CDMA蜂窝网络中,基站使用一个快速闭环功率控制方案来紧密控制每一个移动终端的传输功率。
向前纠错(FEC)编码在任何一种CDMA方案中都是必须的,它用于减小信噪比的需求,从而使得信道最大限度的可靠。
CDMA较TDMA和FDMA的优势在于CDMA可用码字数量理论上是无限的。
这就使得CDMA承载大容量负载是对每一个随机会话中产生一个相对小的流量,从而避免为个别通讯频繁的建立和拆除有限的时隙或者频率通道。
CDMA发射端只是在有数据发出时占用信道,完成后就释放掉。
2.2CDMA系统的基本结构
下图是CDMA系统的基本原理图:
图2-2CDMA系统的基本原理
信号经信源编码后成为数字信号,经过纠错编码、卷积编码和交织等相关处理后送入调制器中,利用PN码发生器产生的高速PN码将数字信号变成码片,使得信号的传输带宽远大于信号本身的带宽以实现扩频通信,同时,为了使信号的传输与信道特性相匹配,必须用载波发生器产生的载波去调制扩频信号。
使其频率变为适合信道传愉的射频频段,将数字信号调制成模拟信号后通过放大器发射出去。
在接收端,利用下变频器将射频信号还原成中频信号,采用与发射端相同的信号处理技术再将信号还原成原始信号,从而达到数据通信传输的目的。
针对本课题所要求的CDMA发送端的设计,主要从以下几个方面去研究,数据处理模块、差分编码模块、PN码序列产生模块、扩频模块。
其中数据处理模块主要是用来完成数据的串/并变换;
差分编码模块主要用于对数据先进行差分编码;
PN码序列产生模块是扩频通信模块中比较重要的模块,其具体的作用和功能我们将在具体实践中做具体研究和讨论;
扩频模块是发射端的核心模块,主要用于完成数据的扩频。
图2-3就是CDMA系统模块化以后的基本结构,其中虚线框内的部分就是CDMA数字基带发送部分,本课题我们主要就是完成下图中上半部分,此外,在此基础上将对接收部分做简单的介绍。
图中发送端和接收端的Walsh码发生器和PN码发生器其实是同一个模块,它们的区别仅仅是延迟不同。
图2-3CDMA系统模块化结构图
由上图可知,这个系统一共有两个模块组成——调制模块和解调模块。
其中调制模块是信号发生器产生4路输入信号,经WALSH调制、PN扩频、基带求和与并/串变换成为1路信号,完成调制。
而解调模块主要是将收到的1路信号首先进行串并转换,在取得同步的基础上进行PN解扩和WALSH解调从而恢复出4路信息。
该系统框图就是我们所要实现的系统的基本结构,具体实现方法、步骤、以及原理分析及优化我将针对每个模块,在后面给予具体研究。
附录
一、SIMULINK仿真模型
二、MATLAB模型
clc,clear
%%
%我们使用四个用户的CDMA系统
coefficients=[10100];
%5级左移m序列码发生器的反馈系数
mseq=mseries(coefficients);
%生成31×
31的m序列码矩阵
walsh=[1111;
1-11-1;
11-1-1;
1-1-11];
%4阶WALSH矩阵
pn=mseq(1:
31);
%PN码
%四个用户发出的信号,可以随便设定
user0=[1,-1,-1,-1,-1,-1,1,1,1,-1,-1,1,1,-1,1,-1,1,-1,-1,-1,-1,-1,1,1,1,-1,-1,1,1,-1,1,-1];
%用户1,可以是随机信号
user1=[-1,-1,-1,-1,-1,1,1,-1,1,-1,-1,1,1,1,1,-1,1,-1,-1,1,1,-1,1,1,1,-1,1,1,1,-1,1,-1];
%用户2,可以是随机信号
user2=[1,-1,-1,-1,1,-1,1,1,1,-1,-1,1,1,-1,1,1,1,-1,1,-1,-1,-1,1,1,1,1,-1,1,1,1,-1,-1];
%用户3,可以是随机信号
user3=[-1,-1,1,-1,-1,1,1,-1,1,-1,-1,1,1,1,1,-1,1,-1,-1,1,-1,1,1,-1,1,-1,-1,1,1,-1,1,1];
%用户4,可以是随机信号
%=======================================================
fort=1:
length(user0)
user=[user0(t),user1(t),user2(t),user3(t)];
%四个用户分别发送1,-1,1,1
fori=1:
4%四用户信号和WALSH矩阵相乘
forj=1:
4
walsh_user(j,i)=user(i)*walsh(i,j);
end
end
4%变成串行信号
walsh_user2(4*i-3)=walsh_user(i,1);
walsh_user2(4*i-2)=walsh_user(i,2);
walsh_user2(4*i-1)=walsh_user(i,3);
walsh_user2(4*i-0)=walsh_user(i,4);
31
16
walsh_user3(i,j)=walsh_user2(j);
pn_walsh_user(i,j)=walsh_user3(i,j)*pn(i);
%并----串
pn_walsh_user_c(i*j)=pn_walsh_user(i,j);
%以上是信号调制过程
%==========================================================================
%一下是信号解调过程
%串----并
pn_walsh_user_rec(i,j)=pn_walsh_user_c(i*j);
%pn解扩
walsh_user_rec(i,j)=pn_walsh_user_rec(i,j)*pn(i);
walsh_user_rec2(j)=walsh_user_rec(i,j);
%walsh解扩
user_rec2(1,1)=walsh_user_rec2
(1);
user_rec2(1,2)=walsh_user_rec2
(2);
user_rec2(1,3)=walsh_user_rec2(3);
user_rec2(1,4)=walsh_user_rec2(4);
user_rec2(2,1)=walsh_user_rec2(5);
user_rec2(2,2)=walsh_user_rec2(6);
user_rec2(2,3)=walsh_user_rec2(7);
user_rec2(2,4)=walsh_user_rec2(8);
user_rec2(3,1)=walsh_user_rec2(9);
user_rec2(3,2)=walsh_user_rec2(10);
user_rec2(3,3)=walsh_user_rec2(11);
user_rec2(3,4)=walsh_user_rec2(12);
user_rec2(4,1)=walsh_user_rec2(13);
user_rec2(4,2)=walsh_user_rec2(14);
user_rec2(4,3)=walsh_user_rec2(15);
user_rec2(4,4)=walsh_user_rec2(16);
fori=1:
rec(i,j)=user_rec2(i,j)*walsh(i,j);
%===============接收信号=============================
rec_signal=user_rec2(1,1:
4);
%========画信号===========================
ift==1
figure;
subplot(511)
stairs(1:
4,user,'
r'
);
%用户信号
axis([1,4,-2,2]);
title('
用户发送的信号'
)
subplot(512)%随机码
31,pn);
axis([1,31,-2,2]);
随机码'
subplot(513)%调制WALSH
16,walsh_user2,'
axis([1,16,-2,2]);
调制WALSH'
subplot(514)%发送
496,pn_walsh_user_c);
axis([1,496,-2,2]);
发送信号'
subplot(515)%数据接收
4,rec_signal,'
数据接收信号'
holdon;
figure;
subplot(411);
stairs(1:
32,user0);
axis([1,32,-2,2]);
title('
user0数据接收信号'
subplot(412);
32,user1);
user1数据接收信号'
subplot(413);
32,user2);
user2数据接收信号'
subplot(414);
32,user3);
user3数据接收信号'
%=========以上是加上噪声的误码率测试=======================
prompt={'
请输入用户个数:
'
'
请输入用户发送信息个数:
请输入用户码功率'
请输入噪声功率'
请输入要测试的用户ID号'
};
name=['
码分多址复用技术测试'
];
line=1;
defaultanswer={'
4'
100'
1234'
'
10'
1'
glabel=inputdlg(prompt,name,line,defaultanswer);
%对话框
num1=str2num(char(glabel(1,1)));
%对话框
num2=str2num(char(glabel(2,1)));
num3=str2num(char(glabel(3,1)));
num4=str2num(char(glabel(4,1)));
k=str2num(char(glabel(5,1)));
UserNumber=num1;
%用户数
inflength=num2;
%用户信息序列长度
a=num3;
%用户信息功率
Pn=num4;
%噪声功率
sigma=1;
%噪声标准差
%===========================================================
N=31;
%伪随即序列的阶数
R=(ones(UserNumber)+(N-1)*eye(UserNumber))/N;
%相关系数矩阵
b=2*randint(UserNumber,inflength)-1;
%用户信息矩阵(随机+1,-1矩阵)
mseq=mseq(1:
UserNumber,1:
N);
%=============以上生成随即序列========================
%===================生成噪声==========================
n1=Pn*normrnd(0,1,1,inflength*N);
n=zeros(UserNumber,inflength);
forj=1:
inflength
ntemp=n1(1,((j-1)*N+1):
j*N);
n(:
j)=(mseq*ntemp'
)/N;
%*******************************************
A=diag(a);
y=R*A*b+n;
%传统单用户检测
ydec=inv(R)*y;
%线性解相关多用户检测
ymmse=inv(R+sigma^2*inv(A))*y;
%最小均方误差多用户检测
UserNumber
ylen(i)=length(find(sign(real(y(i,:
)))-b(i,:
)));
ydeclen(i)=length(find(sign(real(ydec(i,:
ymmselen(i)=length(find(sign(real(ymmse(i,:
BER_y(i)=ylen(i)/inflength;
BER_ydec(i)=ydeclen(i)/inflength;
BER_ymmse(i)=ymmselen(i)/inflength;
snr=20*log10(a
(1)/Pn);
disp('
信噪比为'
disp(snr);
误码个数为'
disp(ylen(k));
disp(ydeclen(k));
disp(ymmselen(k));
误码率为'
disp(BER_y(k));
disp(BER_ydec(k));
disp(BER_ymmse(k));
参考文献
[1]黄永安,马路,刘慧敏.MATLAB7.0/Simulink6.0建模仿真开发与高级工程应用[M].北京:
清华大学出版社,2005
[2]樊昌兴,曹丽娜.通信原理[M].北京:
国防工业出版社,2007
[3]王建平,张宝剑,王军涛.通信原理[M].北京:
人民邮电出版社,2007
[4]王立宁,乐光新,詹菲.MATLAB与通信仿真[M].北京:
人民邮电出版社,2000
[5]王正林.精通MATLABGUI设计[M].北京:
电子工业出版社,2008
[6]邓华.MATLAB通信仿真及应用实例详解[M].北京:
人民邮电出版社,2003
[7]张葛祥,李娜.MATLAB仿真技术与应用[M].北京:
清华大学出版社.2003
[8]徐明远.MATLAB仿真在通信与电子工程中的应用.西安:
西安电子科技大学出版社,2004
[9]达新宇.通信原理实验与课程设计.北京:
北京邮电大学出版社,2004
[10]施阳.MATLAB语言精要及动态仿真工具-SIMULINK[M].西安:
西北工业大学出版社,1997.
[11]樊昌信,曹丽娜.通信原理[M].北京:
国防工业出版社,2008
[12]张志涌.精通MATLAB6.5版[M].北京:
北京航空航天大学出版社,2003
[13]刘敏,魏玲.MATLAB通信仿真与应用.北京:
国防工业出版社,2005
[14]薛定宇,陈阳泉,基于MATLAB/Simulink的系统仿真技术与应用,北京:
清华大学出版社,2004.
[15]杨大成等.CDMA2000技术.北京邮电大学出版社.2000
[16]康桂霞等.CDMA20001x无线网络技术.人民邮电出版社.2007
[17]高伟东等.CDMA20001X无线网络规划优化及无线资源管理.人民邮电出版社.2007
[18]曹卫华等.最优化技术方法及MATLAB的实现.化学工业出版社.2005
[19]刘树棠
.数字信号处理(MATLAB版).西安交通大学出版社.2008
致谢
在课题开发设计和论文撰写期间,得到了导师的悉心指导,渊博的学识、敏锐的思维、一丝不苟的作风使我受益匪浅。
从她身上,我学到了严谨、踏实的工作作风,学会了在科研工作中分析问题、解决问题的能力。
同时要特别感谢,在我整个设计过程中给予了我全面的指导,并帮助我解决了许多碰到的实际问题,让我学会了许多设计电路的好方法和经验。
还要感谢实验室的同学,他们在研究工作中,帮助我解决了很多疑难问题。
在此感谢在课题完成过程中给过我关心和帮助的所有老师和同学。