rake接收机实验报告

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验报告

--Rake接收机及其特性实验

班级:XXXXXXXX

学号:XXXXXXXX

姓名:XXXXXXXX

Rake接收机仿真

一、实验目的

(1)了解rake接收机的原理

(2)分析比较3中不同合并算法的性能

二、实验内容

(1)编写MATLAB程序,实现Rake接收机

(2)修改信噪比,观察3种合并算法的误码率

三、实验原理

本仿真采用在CDMA系统中广泛使用的Rake接收技术,且为时间分集。因为当传播时延超过一个码片周期时,多径信号实际上课看成是互不相关的。Rake接收机采用一组相关接收机,分布于每条路径上,各个接收机与同一期望信号的多径分量之一相关,根据各个相关输出的相关强度加权后合成一个输出。根据加权系数的选择原则,有3种合并算法:选择式合并、等增益合并和最大比合并。

选择式合并是检测接收到的多径信号,挑选其中信噪比最大的一径作为输出;等增益合并是将接收的多径信号按照相等的增益系数,同相相加后作为输出;最大比合并时按照适当的增益系数,同相相加后作为输出。在不同的噪声环境中,三种合并算法的效果不同。

Rake接收机的相关器的原理图如下图所示

假设采用M个相关器去接收M个多径信号分支,其中a1,a2,……,aM是每一条分支的乘性系数,它们的取值是根据所采用组合方式(例如最大比合并、等增益合并等)而可调的。不妨令相关器1与最强的多径支路m1同步,并且多径支路m2比多径支路m1延迟时间t1到达接收端。相关器2与多径支路m2同步,它与m2具有很好的相关性,但与m1的相关性则很差。以此类推,第M个相关器与m1时延tM-1的多径分量mM相关性很强,但与m1、m2、……mM-1等多径分量相关性则很差。因此如果一条多径分支受到衰落的影响,则由于各条支路的独立性,还会有其他没有受到衰落的信号分支,此时给衰落的信号分支设定一个很小的加权系数,就可以将该路的干扰抑制。Rake接收机的原理图如下图所示:

本实验使用MATLAB平台编写程序来实验。假设信源输出用16位Walsh码扩频,进入接收机的有三径支路;假设每条径之间延时半个码片,为了进行仿真,对Walsh码进行扩展,每个码字重复一次,则长度为32位,如[1 1 0]扩展为[1 1 1 1 0 0]. 四、程序

clear all;

Numusers=1;

Nc=16;

ISI_Length=1;

EbN0db=[0:1:30];

Tlen=8000;

Bit_Error_Number1=0;

Bit_Error_Number2=0;

Bit_Error_Number3=0;

power_unitary_factor1=sqrt(6/9);

power_unitary_factor1=sqrt(2/9);

power_unitary_factor1=sqrt(1/9);

s_initial=randsrc(1,Tlen);

wal2=[1 1;1 -1];

wal4=[wal2 wal2;wal2 wal2*(-1)];

wal8=[wal4 wal4;wal4 wal4*(-1)];

wal16=[wal8 wal8;wal8 wal8*(-1)];

s_spread=zeros(Numusers,Tlen*Nc);

ray1=zeros(Numusers,2*Tlen*Nc);

ray2=zeros(Numusers,2*Tlen*Nc);

ray3=zeros(Numusers,2*Tlen*Nc);

for j=1:Numusers

x0=s_initial(j,:).'*wal16(8,:);

x1=x0.';

s_spread(j,:)=(x1(:)).';

end

ray1(1:2:2*Tlen*Nc-1)=s_spread(1:Tlen*Nc);

ray1(2:2:2*Tlen*Nc)=ray1(1:2:2*Tlen*Nc-1);

ray2(ISI_Length+1:2*Tlen*Nc)=ray1(1:2*Tlen*Nc-ISI_Length);

ray3(2*ISI_Length+1:2*Tlen*Nc)=ray1(1:2*Tlen*Nc-2*ISI_Length);

for nEN=1:length(EbN0db)

en=10^(EbN0db(nEN)/10);

sigma=sqrt(32/(2*en));

demp=power_unitary_factor1*ray1+power_unitary_factor1*ray2+power_unitary_fa ctor1*ray3+(randn(1,2*Tlen*Nc)+randn(1,2*Tlen*Nc)*i)*sigma;

dt=reshape(demp,32,Tlen)';

wal16_d(1:2:31)=wal16(8,1:16);

wal16_d(2:2:32)=wal16(8,1:16);

rdata1=dt*wal16_d(1,:).';

wal16_delay1(1,2:32)=wal16_d(1,1:31);

rdata2=dt*wal16_delay1(1,:).';

wal16_delay2(1,3:32)=wal16_d(1,1:30);

rdata3=dt*wal16_delay2(1,:).';

p1=rdata1'*rdata1;

p2=rdata2'*rdata2;

p3=rdata3'*rdata3;

p=p1+p2+p3;

u1=p1/p;

u2=p2/p;

u3=p3/p;

rd_m1=real(rdata1*u1+rdata2*u2+rdata3*u3);

rd_m2=(real(rdata1+rdata1+rdata1))/3;

u=[u1,u2,u3];

maxu=max(u);

if(maxu==u1)

rd_m3=real(rdata1);

else

if(maxu==u2)

rd_m3=real(rdata2);

else rd_m3=real(rdata3);

end

end

r_Data1=sign(rd_m1)';

相关文档
最新文档