您的当前位置:首页正文

第三代移动通信的信道化码和扰码产生

2022-07-02 来源:个人技术集锦


综合性设计性实验报告

专 业:

学 号:

姓 名:

实验所属课程:第三代移动通信及其演进技术

实验室(中心): 软件与通信实验中心

指 导 教 师 :

2

教师评阅意见: 签名: 年 月 日 实验成绩:

一、题目

第三代移动通信的信道化码和扰码产生

二、仿真要求

要求一:建立M文件分别产生m序列、gold序列及OVSF序列。 要求二:要求仿真不同序列的自相关和互相关特性。

三、仿真方案详细设计

本次实验为分别产生m序列、gold序列及OVSF序列,通过仿真得到各自序列的自相关和互相关特性。

m序列是最长线性移位寄存器序列的简称,是一种伪随机序列,是由n级移位寄存器所能产生的周期最长的序列。m序列是目前广泛应用的一种伪随机序列,其在通信领域有着广泛的应用,如扩频通信,卫星通信的码分多址,数字数据中的加密、加扰、同步、误码率测量等领域。此序列具有优良的自相关函数、易于产生和复制,因此在扩频码中应用广泛。

c0=1+++c1c2cn-1cn=1

an-1an-2a1a0输出ak 在上图中,Ci表示反馈线的两种可能连接方式,Ci=1表示连线接通,第n-i

级输出加入反馈中;Ci=0表示连线断开,第n-i级输出未参加反馈。

Gold序列:

Gold序列是在m序列基础上提出并分析的一种特性较好的伪随机序列,它是由两个码长相等、码时钟速率相同的m序列优选对通过模2相加而构成的,是一种伪随机序列,它具有良好的自相关和互相关特性,可以用作地址码的数量远大于m序列,而且容易实现,结构简单,在工程中得到广泛的应用。

产生Gold序列的移位寄存器结构有两种形式。一种是乘积型,将m序列优选对的两个特征多项式的乘积多项式作为新的特征多项式,根据此2n次的特征多项式构成新的线性移位寄存器。另一种是模2和型,直接求两个m序列优选对输出序列的模2和序列。

OVSF码:

正交可变速率扩频增益码OVSF与Walsh序列码很相似,不同长度的码字很容易产生。由简单的电路就可以生成各种长度的码字。OVSF码主要用于正交 扩频。业务信道的速率不同,使用的OVSF码的长度也不同。

通过观察OVSF码的码树结构可以看出由长度为1的一个码字可以构造出长度为2的两个码字,进而构造出长度为2n的2n个码字。码字的长度是由扩频因子SF表征的,每一个码字用字母C加上两个下标表示,下标1表示码长,下标2表示相同码长系列中第几个码字。OVSF码的互相关函数为零,同步时相互间完全正交,多径时延会影响码字的正交性。

四、仿真结果及结论

实验仿真结果如下图:

m序列自相关性

10-1m序列互相关性10-102位移量4602位移量46OVSF序列自相关性gold序列自相关性10-1OVSF序列互相关性gold序列互相关性10-102位移量4602位移量4621010-101位移量2301位移量23从上述仿真图可以看出,m序列的自相关函数是周期函数,并且自相关函数很好,但不同序列间的互相关特性很差;Gold序列的自相关函数值的旁瓣与互相关函数值一样取三值,只是出现的位置不同,它的自相关特性与m序列相比较差,但互相关特性比m序列好;OVSF序列之间完全正交,可得到互相关函数为零,但其自相关特性很差。

五、总结与体会

此次仿真实验为产生m序列、Gold序列以及OVSF码序列,并且通过仿真显示它们各自的自相关特性和互相关特性,并对三种码序列的自相关以及互相关特性做比较,通过仿真可以很直观的看出来。

通过运用MATLAB软件进行仿真,我对实验进行了验证,同时也是对老师上课讲的内容的一个回顾。在实验仿真过程中,不仅对知识有了更深入的认识,也对MATLAB软件运用的更加熟练。

六、主要仿真代码

主函数: clear all; clc;

stage=3; %寄存器的个数 ptap1=[1 3]; ptap2=[2 3]; regi1=[1 1 1]; regi2=[1 1 1];

SF=4; %扩频因子SF %m序列

m_code_1=mseq(stage,ptap1,regi1); %m序列m_code_1 m_code_2=mseq(stage,ptap2,regi2); %m序列m_code_2 m_code1=2*m_code_1-1; %将m序列m_code_1变成双极性 m_code2=2*m_code_2-1; %将m序列m_code_2变成双极性 rho1=autocorr(m_code1); %m序列的自相关性 R1=crosscorr(m_code1,m_code2); %m序列的互相关性 x1=0:length(rho1)-1; subplot(3,2,1); plot(x1,rho1); xlabel('位移量');

ylabel('m序列自相关性'); subplot(3,2,2); plot(x1,R1); xlabel('位移量');

ylabel('m序列互相关性'); %gold序列

gold_code_1 = goldseq(m_code_1,m_code_2,2);

gold_code=2*gold_code_1-1; %将Gold序列变成双极性

rho2=autocorr(gold_code(1,:));

R2=crosscorr(gold_code(1,:),gold_code(2,:)); %gold_code矩阵的两行 x2=0:length(rho2)-1; subplot(3,2,3); plot(x2,rho2); xlabel('位移量');

ylabel('gold序列自相关性'); subplot(3,2,4); plot(x2,R2); xlabel('位移量');

ylabel('gold序列互相关性'); %OVSF序列

OVSF_code=OVSF(SF); rho3=autocorr(OVSF_code(1,:));

R3=crosscorr(OVSF_code(1,:),OVSF_code(2,:)); x3=0:length(rho3)-1; subplot(3,2,5); plot(x3,rho3); xlabel('位移量');

ylabel('OVSF序列自相关性'); subplot(3,2,6); plot(x3,R3); xlabel('位移量');

ylabel('OVSF序列互相关性');

自相关性函数:

function [out] = autocorr(indata) ln = length(indata); out = zeros(1,ln);

%自相关性 for ii=0:ln-1

out(ii+1) = sum(indata.*shift(indata,ii))/ln; end

互相关性函数:

function [out]=crosscorr(inidata1,inidata2)%互相关性 In=length(inidata1); out=zeros(1,In); for i=0:In-1

out(i+1)=sum(inidata1.*shift(inidata2,i))/In; end

m序列产生的函数:

function [mout]=mseq(stg,taps,inidata) mout=zeros(1,2^stg-1); fpos=zeros(stg,1);

fpos(taps)=1; %抽头系数 for ii=1:2^stg-1

mout(1,ii)=inidata(stg); %输出 num=mod(inidata*fpos,2); %模2加计算反馈值 inidata(2:stg)=inidata(1:stg-1); %移位寄存器向右移一位 inidata(1)=num; %移位寄存器的第一位=反馈值 end

Gold序列产生的函数:

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

if nargin < 3 %如果输入变量小于3个,默认有1个m序列 n = 1; end

gout = zeros(n,length(m1)); for ii=1:n

gout(ii,:) = xor(m1,m2); %2个m序列模2加 m2= shift(m2,1); end

OVSF码产生的函数: function y=OVSF(SF)

%生成SF*SF的矩阵,每一行都是一个OVSF序列

y=zeros(SF,SF); if SF==1 y=1; else

y=[OVSF(SF/2) OVSF(SF/2);OVSF(SF/2) -OVSF(SF/2)]; end

循环移位函数:

function [outregi]=shift(inregi,shiftr) %把一个向量循环移位 [h,v]=size(inregi); outregi=inregi; shiftr=rem(shiftr,v);

if shiftr>0 %右移 outregi(:,1:shiftr)=inregi(:,v-shiftr+1:v); outregi(:,1+shiftr:v)=inregi(:,1:v-shiftr);

else %左移 outregi(:,1:v+shiftr)=inregi(:,1-shiftr:v); outregi(:,v+shiftr+1:v)=inregi(:,1:-shiftr); end

因篇幅问题不能全部显示,请点此查看更多更全内容