直接序列扩频通信Word格式.docx

上传人:b****6 文档编号:17316999 上传时间:2022-12-01 格式:DOCX 页数:14 大小:72.04KB
下载 相关 举报
直接序列扩频通信Word格式.docx_第1页
第1页 / 共14页
直接序列扩频通信Word格式.docx_第2页
第2页 / 共14页
直接序列扩频通信Word格式.docx_第3页
第3页 / 共14页
直接序列扩频通信Word格式.docx_第4页
第4页 / 共14页
直接序列扩频通信Word格式.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

直接序列扩频通信Word格式.docx

《直接序列扩频通信Word格式.docx》由会员分享,可在线阅读,更多相关《直接序列扩频通信Word格式.docx(14页珍藏版)》请在冰豆网上搜索。

直接序列扩频通信Word格式.docx

7.总结

对于本仿真而言,已基本完成了设计任务书的设计和研究目的,通过用MATLAB对DS-CDMA系统的仿真调试、结果分析,让我组熟悉了DS-CDMA的工作原理,加深了对扩频通信的认识,并深刻的了解PN码在不同信道的衰落情况。

通过仿真结果中波形的直观方式,更让我们了解到了系统衰减的规律。

但是在本设计中也存在着缺陷与不足

1、在本设计中过程中可能由于程序过于复杂,信息本身所占用的带宽偏大,用来传输信息的带宽相对不够大,造成结果并不明显,信息衰减严重。

2、在设计中只考虑到加性高斯信道所带来的干扰,在实际通信信道却是复杂多变,存在着各种各样的情况,所以最后的接收信号是在很简单的干扰下得出。

要想应用于实际中,必须加入各种噪声来考虑,以实现真实系统的设计。

3、实验中,我们选择加大传输带宽,来弥补其他干扰带来的影响,可能会造成消耗过大,浪费带宽的结果,实际应用中是不实用的。

只能作为仿真,进行研究。

即使如此,在本次设计的整个过程中,以上的结果已经令我们受益匪浅。

通信系统的性能分析和仿真,随着通信技术、信息技术和计算机技术的发展以及网络系统的大量应用,显得越来越重要。

参考文献

[1]学勇,编著.通信系统建模与仿真(电子工业)

[2]邓薇,编著.MATALB函数速查手册(人民邮电)

[3]【美】WilliamC.Y.Lee,著.移动通信工程理论和应用(第二版)(人民邮电)

[4]王华奎,艳萍等编著.移动通信原理与技术(清华大学)

程序

%1.函数mseq用于产生m序列:

function[mout]=mseq(n,taps,inidata,num)

%****************************************************************

%说明:

函数mseq用于产生num个阶数为n的m序列

%n:

m序列的阶数n

%taps:

反馈寄存器的连接位置

%inidata:

寄存器的初始值序列

%num:

输出的m序列的个数

%mout:

输出的m序列,如果num>

1,则每一行为一个m序列

ifnargin<

4%输入参数判断

num=1;

end

mout=zeros(num,2^n-1);

%寄存器输出值的初始化,全0

fpos=zeros(n,1);

%反馈寄存器连接位置的初始化

fpos(taps)=1;

%反馈寄存器连接位置

forii=1:

2^n-1

mout(1,ii)=inidata(n);

%寄存器的输出值

temp=mod(inidata*fpos,2);

%计算反馈数据

inidata(2:

n)=inidata(1:

n-1);

%寄存器移位一次

inidata

(1)=temp;

%更新第1个寄存器的值

ifnum>

1%如果要输出多个m序列,生成其他m序列

forii=2:

num

mout(ii,:

)=shift(mout(ii-1,:

),1);

%shift函数完成序列的循环移位,上一个序列向右循环移位

end

%2.函数goldseq用于产生gold序列

function[gout]=goldseq(m1,m2,num)

%m1:

m序列1

%m2:

m序列2

生成的Gold序列个数

%gout:

生成的Gold序列输出

3%如果没有指定生成的Gold序列个数,默认为1

gout=zeros(num,length(m1));

num%根据Gold序列生成方法生成Gold序列

gout(ii,:

)=xor(m1,m2);

m2=shift(m2,1);

%函数shift用于完成循环移位

function[outregi]=shift(inregi,shiftr)

%inregi:

输入序列

%shiftr:

循环右移的位数

%outregi:

输出序列

v=length(inregi);

%输入序列的长度

outregi=inregi;

%输出序列初始化为输入序列

shiftr=rem(shiftr,v);

%求余,使移位的值在[0,v]之间

ifshiftr>

0

outregi(:

1:

shiftr)=inregi(:

v-shiftr+1:

v);

%循环移位把最后shiftr位移到前shiftr位

1+shiftr:

v)=inregi(:

v-shiftr);

%完成剩余的移位

elseifshiftr<

v+shiftr)=inregi(:

1-shiftr:

v+shiftr+1:

-shiftr);

%3.直接序列扩频主程序代码

function[ber]=dscdma(user,seq)

%user:

同时进行扩频通信的用户数

%seq:

扩频码1:

M-序列2:

Gold序列3:

正交Gold序列

%ber:

该用户数下的误码率

%****************************初始化部分*****************************

sr=256000.0;

%符号速率

nSymbol=10000;

%每种信噪比下发送的符号数

M=4;

%4-QAM调制

br=sr*log2(M);

%比特速率

graycode=[0132];

%Gray编码规则

EbNo=0:

2:

10;

%Eb/No变化围

%**************************脉冲成形滤波器参数**************************

delay=10;

%升余弦滤波器时延

Fs=8;

%滤波器过采样数

rolloff=0.5;

%升余弦滤波器滚降因子

rrcfilter=rcosine(1,Fs,'

fir/sqrt'

rolloff,delay);

%设计根升余弦滤波器

%**********************扩频码产生参数**********************

%直接序列扩频主程序代码

%user=user1;

%用户数

stage=3;

%m序列的阶数

ptap1=[13];

%m序列1的寄存器连接方式

ptap2=[23];

%m序列2的寄存器连接方式

regi1=[111];

%m序列1的寄存器初始值

regi2=[111];

%m序列2的寄存器初始值

%********************扩频码的生成*********************

switchseq

case1%M-序列

code=mseq(stage,ptap1,regi1,user);

case2%Gold序列

m1=mseq(stage,ptap1,regi1);

m2=mseq(stage,ptap2,regi2);

code=goldseq(m1,m2,user);

case3%正交Gold序列

code=[goldseq(m1,m2,user),zeros(user,1)];

code=code*2-1;

clen=length(code);

%**************************衰落信道参数**************************

ts=1/Fs/sr/clen;

%信道采样时间间隔

t=(0:

nSymbol*Fs*clen-1+2*delay*Fs)*ts;

%每种信噪比下的符号传输时间

fd=160;

%多普勒频移[Hz]

h=rayleigh(fd,t);

%****************************仿真开始****************************

forindx=1:

length(EbNo)

indx

%******************************发射端********************************

data=randsrc(user,nSymbol,[0:

3]);

%产生各个用户的发射数据

data1=graycode(data+1);

%Gray编码

data1=qammod(data1,M);

%4-QAM调制

[out]=spread(data1,code);

%扩频

out1=rcosflt(out.'

sr,Fs*sr,'

filter'

rrcfilter);

%通过脉冲成形滤波器

spow=sum(abs((out1)).^2)/nSymbol;

%计算每个用户信号功率

ifuser>

1%用户数大于1时,所有用户数据相加

out1=sum(out1.'

);

else

out1=out1.'

;

%*****************************通过瑞利衰落信道******************************

%out1=h.*out1;

%********************************接收端*********************************

sigma=sqrt(0.5*spow*sr/br*10^(-EbNo(indx)/10));

%根据信噪比计算高斯白噪声方差

y=[];

forii=1:

user

y(ii,:

)=out1+sigma(ii).*(randn(1,length(out1))+j*randn(1,length(out1)));

%加入高斯白噪声(AWGN)

%y(ii,:

)=y(ii,:

)./h;

%假设理想信道估计

y=rcosflt(y.'

Fs/filter'

%通过脉冲成形滤波器进行滤波

y=downsample(y,Fs);

%降采样

user

y1(:

ii)=y(2*delay+1:

end-2*delay,ii);

yd=despread(y1.'

code);

%数据解扩

demodata=qamdemod(yd,M);

%4-QAM解调

demodata=graycode(demodata+1);

%Gray编码逆映射

[err,ber(indx)]=biterr(data,demodata,log2(M));

%统计误比特率

End

%扩频函数

function[out]=spread(data,code)

函数spread用于将输入数据序列和扩频序列扩频

%data:

输入数据序列

%code:

扩频码序列

%out:

扩频后的输出数据序列

switchnargin

case{0,1}%如果输入参数个数不对,提示错误

error('

缺少输入参数'

[hn,vn]=size(data);

[hc,vc]=size(code);

ifhn>

hc%如果扩频码数小于输入的待扩频的数据序列,提示错误

缺少扩频码序列'

out=zeros(hn,vn*vc);

%初始化输出序列

hn

out(ii,:

)=reshape(code(ii,:

).'

*data(ii,:

),1,vn*vc);

%将扩频后的数据排成行矢量的形式

%信号解扩

functionout=despread(data,code)

函数despread用于将输入数据序列和扩频序列解扩

解扩使用的扩频码序列

解扩后的输出数据序列

switchnargin%如果输入参数个数不对,提示错误

case{0,1}

out=zeros(hc,vn/vc);

%初始化输出序列

hc

xx=reshape(data(ii,:

),vc,vn/vc);

)=code(ii,:

)*xx/vc;

%函数rayleigh用于产生瑞利衰落信道

function[h]=rayleigh(fd,t)

%该程序利用改进的jakes模型来产生单径的平坦型瑞利衰落信道

%YahongR.ZhengandChengshanXiao"

ImprovedModelsfor

%theGenerationofMultipleUncorrelatedRayleighFadingWaveforms"

%IEEECommuletters,Vol.6,NO.6,JUNE2002

%输入变量说明:

%fd:

信道的最大多普勒频移单位Hz

%t:

信号的抽样时间序列,抽样间隔单位s

%h为输出的瑞利信道函数,是一个时间函数复序列

%假设的入射波数目

N=40;

wm=2*pi*fd;

%每象限的入射波数目即振荡器数目

N0=N/4;

%信道函数的实部

Tc=zeros(1,length(t));

%信道函数的虚部

Ts=zeros(1,length(t));

%归一化功率系数

P_nor=sqrt(1/N0);

%区别个条路径的均匀分布随机相位

theta=2*pi*rand(1,1)-pi;

N0

%第i条入射波的入射角

alfa(ii)=(2*pi*ii-pi+theta)/N;

%对每个子载波而言在(-pi,pi)之间均匀分布的随机相位

fi_tc=2*pi*rand(1,1)-pi;

fi_ts=2*pi*rand(1,1)-pi;

%计算冲激响应函数

Tc=Tc+cos(cos(alfa(ii))*wm*t+fi_tc);

Ts=Ts+cos(sin(alfa(ii))*wm*t+fi_ts);

end;

%乘归一化功率系数得到传输函数

h=P_nor*(Tc+j*Ts);

%4.主程序

%m-序列DS-CDMA在AWGN信道下的性能仿真

clearall

user=[147];

seq=1;

forindex=1:

length(user)

ber(index,:

)=dscdma(user(index),seq);

semilogy(EbNo,ber(1,:

),'

-kx'

EbNo,ber(2,:

-ko'

EbNo,ber(3,:

-k*'

legend('

user=1'

'

user=4'

user=7'

title('

m序列DS-CDMA在AWGN信道下的性能'

xlabel('

信噪比EbNo(dB)'

ylabel('

误比特率(BER)'

%5、正交Gold序列在AWGN信道下的性能

%正交Gold序列DS-CDMA在AWGN信道下的性能仿真

user=[111];

seq=3;

ber(indx,:

)=dscdma(user(indx),seq);

正交Gold序列DS-CDMA在Reyleigh信道下的性能'

学校     电子科技大学

学院     通信与信息学院

班级     通信专业十一班

     候号前 2010013110001

龚睦  2010013110003

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 外语学习 > 英语考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1