M序列产生及其特性仿真实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
M序列产生及其特性仿真实验报告
一、三种扩频码序列简介
1.1 m序列
它是由多级移位寄存器或其他延迟元件通过线性反馈产生的最长的码序列。
m序列的特性
1、最长周期序列:N=2n-1
2、功率平衡性:‘1’的个数比‘0’的个数多1
3、‘0’、‘1’随机分布:近似高斯噪声
4、相移不变性:任意循环移位仍是m序列,仅初相不同
5、离散自相关函数:‘0’->+1,‘1’->-1
1.2 Gold序列
Gold序列是两个等长m序列模二加的复合序列
两个m序列应是“优选对”
特点:
1、包括两个优选对m序列,一个Gold序列族中共有2n+1个Gold
序列
2、Gold序列族中任一个序列的自相关旁瓣及任意两个序列的互相关峰值均不超过两个m序列优选对的互相关峰值
1.3OVSF序列
又叫正交可变扩频因子,系统根据扩频因子的大小给用户分配资源,数值越大,提供的带宽越小,是一个实现码分多址(CDMA)信号传输的代码,它由Walsh函数生成,OVSF码互相关为零,相互完全正交。
OVSF序列的特点
1、序列之间完全正交
2、极适合用于同步码分多址系统
3、序列长度可变,不影响正交性,是可变速率码分系统的首选多址扩频码
4、自相关性很差,需与伪随机扰码组合使用
二、三种扩频码序列产生仿真
一、M序列的产生代码:
X1=1;X2=0;X3=1;X4=0; %移位寄存器输入Xi初T态(0101), Yi为移位寄存器各级输出
m=60; %置M序列总长度
for i=1:m %1#
Y4=X4; Y3=X3; Y2=X2; Y1=X1;
X4=Y3; X3=Y2; X2=Y1;
X1=xor(Y3,Y4); %异或运算
if Y4==0
U(i)=-1;
else
U(i)=Y4;
end
end
M=U
%绘图
i1=i
k=1:1:i1;
plot(k,U,k,U,'rx')
xlabel('k')
ylabel('M序列')
title('移位寄存器产生的M序列')
用阶梯图产生表示:
X1=1;X2=0;X3=1;X4=0; %移位寄存器输入Xi初T态(0101),Yi为移位寄存器各级输出m=60; %置M序列总长度
for i=1:m %1#
Y4=X4; Y3=X3; Y2=X2; Y1=X1;
X4=Y3; X3=Y2; X2=Y1;
X1=xor(Y3,Y4); %异或运算
if Y4==0
U(i)=-1;
else
U(i)=Y4;
end
end
M=U
%绘图
stairs(M);
二、GOLD序列的产生:
M序列A的生成:
X1=1;X2=0;X3=1;X4=0; %移位寄存器输入Xi初T态(1010), Yi为移位寄存器各级输出
m=60; %置M序列总长度
for i=1:m %1#
Y4=X4; Y3=X3; Y2=X2; Y1=X1;
X4=Y3; X3=Y2; X2=Y1;
X1=xor(Y3,Y4); %异或运算
if Y4==0
A(i)=0;
else
A(i)=Y4;
end
end
M=A
%绘图
i1=i
k=1:1:i1;
plot(k,A,k,A,'rx')
xlabel('k')
ylabel('M序列')
title('移位寄存器产生的M序列')
M序列B的生成:
X1=0;X2=1;X3=0;X4=1; %移位寄存器输入Xi初T态(0101), Yi为移位寄存器各级输出
m=60; %置M序列总长度
for i=1:m %1#
Y4=X4; Y3=X3; Y2=X2; Y1=X1;
X4=Y3; X3=Y2; X2=Y1;
X1=xor(Y3,Y4); %异或运算
if Y4==0
B(i)=0;
else
B(i)=Y4;
end
end
N=B
%绘图
i1=i
k=1:1:i1;
plot(k,B,k,B,'rx')
xlabel('k')
ylabel('M序列')
title('移位寄存器产生的M序列') 生成gold序列:
c=xor(A,B);
stairs(c);
三、OVSF序列的产生:
%Function [OVSF_Codes]=OVSF_Generator(Spread_Fator,Code_Number)
%Code_Number=-1 表示生成所有扩频因子=Spread_Factor的ovsf码Code_Number=-1;
Spread_Fator=8;
OVSF_Codes=1;
if Spread_Fator==1
return;
end
for i=1:1:log2(Spread_Fator)
Temp=OVSF_Codes;
for j=1:1:size(OVSF_Codes,1)
if j==1
OVSF_Codes=[Temp(j,:),Temp(j,:) Temp(j,:),(-1)*Temp(j,:)];
else
OVSF_Codes=[OVSF_Codes Temp(j,:),Temp(j,:) Temp(j,:),(-1)*Temp(j,:)];
end
end
end
%if Code_Number>-1
% OVSF_Codes=OVSF_Codes((Code_Number+1),:);
%end
figure(3)
[b4,t4]=stairs([1:length(OVSF_Codes)],OVSF_Codes); plot(b4,t4);
axis([0 130 -1.1 1.1]);title('OVSF序列')