RAKE接收机相关
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
RAKE 接收机可以有效降低误码率,克服多径效应,是一种有效的多径分集方式,通过仿真可知,采用三种合并方式都能提高其性能,其中,最大比值合并方式最有效。
移动通信系统中,移动台处于城市建筑群之中或处于地形复杂的区域,信号的传播过程中,受地面或水面反射和大气折射的影响,会产生多个经过不同路径到达接收机的信号,通过矢量叠加后合成时变信号,这种现象称作多径效应。对于移动通信来说,恶劣的信道特性是不可回避的问题,陆地无线移动信道中信号强度的骤然降低(衰落)是经常发生的,衰落深度可达30 d B。
要在这样的传播条件下保持可以接受的传输质量,就必须采用各种技术措施来抵消衰落的不利影响。对模拟移动通信系统来说,多径效应引起接收信号的幅度发生变化;对于数字移动通信系统来说,多径效应引起脉冲信号的时延扩展,时延扩展将引起码间串扰(ISI),严重影响数字信号的传输质量
在移动通信中多径衰落以瑞利(Rayleigh)衰落为主,他是移动台在移动中受到不同路径来的同一信号源的折射或反射等信号所产生,他的变化是随机的,因此只能用统计或概率
的观点来定量描述。
RAKE 接收机基本原理
一般的分集技术把多径信号作为干扰来处理,而RAKE 接收机变害为利,利用多径现象来增强信号,CDMA移动通信系统中,信道带宽远远大于信道的相关带宽,不同于传统的调制技术需要用均衡法来消除相邻符号间的码间干扰,CDMA 扩频码在选择时就要求它有很好的自相关特性,这样,在无线信道传输中出现的时延扩展,可以被看作只是被传信号的再次传送,如果这些多径信号相互间的延时超过了一个码片周期,那么它们就可看作是互不相关的。RAKE 接收机包含多个相关器,每个相关器接收多路信号中的一路,各相关接收机与被接收信号的一个延迟形式相关,通过多个相关检测器,检测多径信号中最强的N 个支路信号,然后对每个相关器的输出进行加权求和,以提供优于单路相关器的信号检测,然后在此基础上进行解调和判决。简化的RAKE接收机框图如图1所示
采用三种合并方式
采用最大比值合并时,需要计算出每径的加权系
数。首先计算出每一路径的信号功率,然后把每一路径
的功率与所有路径功率的比值作为该路径的加权系数,
得到最大比值合并器的输出信号包络;采用等增益合并
时,只需将解扩后的各径信号相加即可;采用选择式合
并时,直接通过循环检测,比较解扩后的信号的大小,得
到信噪比最高的那一个支路作为合并器输出。
RAKE 接收机的工作原理是:当传播时延超过一个码片周期时,多径信号实际上可以被看作是互不相关的。RAKE 接收机包含多个相关器,每个相关器接收多路信号中的一路(意思好像和原来的有些区别,不知是否正确),通过多个相关检测器接收多径信号中的各种信号,分别检测多径信号中最强的L 个支路信号(感觉意思表述的不是太明确),然后对每个相关器的输出进行加权(求和),以提供优于单路相关器的信号检测,然后在此基础上进行解调和判决。
一个
采用MATLAB 仿真软件完成仿真设计,扩频调制采用Gold 码,周期为31,信道设置为瑞利多径衰落信道,调制方法采用BPSK 调制,噪声采用加性高斯白噪声,合并方法为最大比值合并。
在仿真中用MATLAB 中的ravlrnd 函数来生成所需的瑞利衰落变量,并将其作为乘性因子乘到BPSK 信号上。
仿真中以RAKE 接收机中信道估计单元对时延和相位的估计准确为前提,主要考虑加性高斯噪声和瑞利衰落对RAKE 接收机性能的影响
clear all;
Numusers = 1;
Nc = 16; %扩频因子
ISI_Length = 1;%每径延时为ISI_Length/2
EbN0db = [0:1:30];%信噪比,单位db
Tlen = 8000; %数据长度%误比特率的初始值
Bit_Error_Number1 = 0;
Bit_Error_Number2 = 0;
Bit_Error_Number3 = 0; %每径功率因子
power_unitary_factor1 = sqrt( 6/9 );
power_unitary_factor2 = sqrt( 2/9 );
power_unitary_factor3 = sqrt( 1/9 ); s_initial = randsrc( 1, Tlen ); %数据源%产生walsh矩阵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 i = 1:Numusers
x0 = s_initial( i,: ).'*wal16( 8,: );
x1 = x0.';
s_spread( i,: ) = ( 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 );
ray2( 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 ); %将Eb/N0的db值转化成十进制数值
sigma = sqrt( 32/(2*en) );
%接收到的信号demp
demp = power_unitary_factor1*ray1+...
power_unitary_factor2*ray2+...
power_unitary_factor3*ray3+...
( rand( 1,2*Tlen*Nc )+randn( 1,2*Tlen*Nc )*i )*sigma;
dt = reshape( demp,32,Tlen )';
%将walsh码重复为两次
wal16_d(1:2:31) = wal16(8,1:16);
wal16_d(2:2:32) = wal16(8,1:16);
%解扩后rdata1为第一径输出
rdata1 = dt*wal16_d(1,:).';
%将walsh码延迟半个码片
wal16_delay1(1,2:32) = wal16_d(1,1:31);
%解扩后rdata2为第二径输出
rdata2 = dt*wal16_delay1(1,:).';
%将walsh码延迟一个码片
wal16_delay2(1,3:32) = wal16_d(1,1:30);
wal16_delay2(1,1:2) = wal16_d(1,31:32);
%解扩后rdata3为第三径输出
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+rdata2+rdata3))/3;
%选择式合并
u = [u1,u2,u3];
maxu = max(u);
if(maxu==u1)
rd_m3 = real(rdata1);
else
if(maxu==u2)