基于MATLAB的m序列仿真

更新时间:2023-09-01 10:45:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

基于MATLAB的m序列仿真

专业课程设计报告

题 目: 基于Matlab的m序列仿真分析

姓 名:

通 信 工 程

专 业: 班级学号: 同 组 人 :

指导教师:

南昌航空大学信息工程学院

20 14 年 6 月 25 日

基于MATLAB的m序列仿真

专业 课程设计任务书

20 13-20 14学年 第 2 学期 第 16 周- 19 周

注:1、此表一组一表二份,课程设计小组组长一份;任课教师授课时自带一份备查。

2、课程设计结束后与“课程设计小结”、“学生成绩单”一并交院教务存档。

基于MATLAB的m序列仿真

摘要

m序列是最长线性移位寄存器序列,m序列最早应用于扩频通信,有着优良的自相关特性以及很强的抗干扰能力和很好的通信隐蔽性。

本文首先介绍了扩频通信中m序列的基本性质,然后再介绍m序列产生的原理以及自相关、互相关特性。通过软件Matlab来仿真分析产生的m序列及其自相关和互相关函数图形。最后通过软件仿真来验证理论分析的正确性。

关键字:移位寄存器,m序列,Matlab仿真分析

基于MATLAB的m序列仿真

Abstract

M sequence is the longest linear shift register sequences,it applied in spread-spectrum communication firstly,it has good autocorrelation pr- operties ,strong anti-interference ability and good communication conce- alment.

The paper introduces the basic performance of m sequence firtly,Then introduces its generating principle,autocorrelation and cross-correlation properties. Through the Matlab to annlyze m sequence’s production ,the figure of its autocorrelation and cross-correlation properties. At last, the results show the correctness of the method.

Keywords: shift register,m sequence,Matlab simulation and analysis

基于MATLAB的m序列仿真

目 录

第一章 设计要求和引言 ............................................ 1

1.1 设计内容及要求 ............................................................................................. 1

1.1.1 设计内容 .............................................................................................. 1 1.1.2设计要求 .............................................................................................. 1 1.2 系统设计流程图 ............................................................................................ 1 第二章 m序列的产生及性质......................................... 2

2.1 m序列产生原理及结构 ................................................................................. 2 2.2 m序列的基本性质 ......................................................................................... 5 第三章 系统软件设计 .............................................. 9

3.1 系统结构功能设计 ......................................................................................... 9 3.2 GUI界面设计 ................................................................................................. 9 第四章 系统调试结果分析 ......................................... 11

4.1 调试过程 ....................................................................................................... 11

4.1.1 调试步骤 ............................................................................................ 11 4.1.2 调试过程分析 .................................................................................... 11 4.2 调试故障分析 ............................................................................................... 14 第五章 实验总结与结论 ........................................... 15 参考文献 ......................................................... 16 附录 ............................................................. 17

基于MATLAB的m序列仿真

第一章 设计要求和引言

1.1 设计内容及要求

1.1.1 设计内容

在MATLAB环境下制作一个GUI,利用Matlab语言生成m序列并对m序列相关特性进行仿真。 1.1.2设计要求

1)根据多项式生产m序列; 2)分析m序列的相关性;

3)利用Matlab GUI显示仿真结果。

1.2 系统设计流程图

基于MATLAB的m序列仿真

第二章 m序列的产生及性质

2.1 m序列产生原理及结构

伪随机序列有很多种,其中最基本最常用的一种是最长线性反馈移位寄存器序列,也称作m序列,通常由反馈移位寄存器产生。

m序列是最长线性移位寄存器序列的简称。它是由多级移位寄存器或其他延迟元件通过线性反馈产生的最长的码序列。由于m序列容易产生、规律性强、有许多优良的性能,在扩频通信中最早获得广泛的应用。

由m级寄存器构成的线性移位寄存器如图2.1所示,通常把m称为这个移位寄存器的长度。每个寄存器的反馈支路都乘以Ci。当Ci=0时,表示该支路断开;当Ci=1时,表示该支路接通。显然,长度为m的移位寄存器有2n种状态,除了全零序列,能够输出的最长序列长度为N=2n-1。此序列便称为最长移位寄存器序列,简称m序列。

m序列每移位一次,就出现一种状态,在移位若干次后,一定能重复出现前某一状态,其后的过程便周而复始了。反馈线位置不同将出现不同周期的不同序列,我们希望找到线性反馈的位置,能使移存器产生的序列最长,即达到周期P=2n-1。按图中线路连接关系,可以写为:

an c1an 1 c2an 2 ... cn 1a1 cna0 cian i

i 1n

该式称为递推方程。

图2.1 m序列发生器的结构

为了获得一个m序列,反馈抽头是不能任意的。在研究长度为m的序列生成及其性质时,常用一个n阶多项式f(x)描述它的反馈结构,即:

f(x) c0 c1x c2x ... cnx cixi

2

n

i 0n

式中,c0=1,cm=1。

基于MATLAB的m序列仿真

这一方程称为特征多项式。式中xi仅指明其系数ci的值(1或0),x本身的取值并无实际意义,也不需要去计算x的值。例如,若特征方程为f(x)=1+x+x4则它仅表示x0,x1和x4的系数c0=c1=c4=1,其余为零。经严格证明:若反馈移位寄存器的特征多项式为本原多项式,则移位寄存器能产生m序列。

特征多项式与输出序列的周期有密切关系.当F(x)满足下列三个条件时,就一定能产生m序列:

(1) F(x)是不可约的,即不能再分解多项式; (2) F(x)可整除xp 1,这里p=2n-1 (3) F(x)不能整除xq 1,这里q<p。

m序列发生器中,并不是任何抽头组合都能产生m序列。

一个线性反馈移动寄存器能否产生m序列,决定于它的反馈系数ci(i=0,1,2, ,n),表2-1中列出了部分m序列的反馈系数ci,按照下表中的系数来构造移位寄存器,就能产生相应的m序列。

表2-1 部分m序列的反馈系数表

基于MATLAB的m序列仿真

根据表2-1中的八进制的反馈系数,可以确定m序列发生器的结构。以7级m序列反馈系数Ci=(211)8为例,首先将八进制的系数转化为二进制的系数即Ci=(010001001)2,由此我们可以得到各级反馈系数分别为:C0=1、C1=0、C2=0、C3=0、C4=1、C5=0、C6=0、C7=1,由此就很容易地构造出相应的m序列发生器。根据反馈系数,其他级数的m序列的构造原理与上述方法相同。

需要说明的是,表2-1中列出的是部分m序列的反馈系数,将表中的反馈系数进行比特反转,即进行镜像,即可得到相应的m序列。例如,取C4=(23)8 =(10011)2 ,进行比特反转之后为(10011)2=(31)8,所以4级的m序列共有2个。其他级数m序列的反馈系数也具有相同的特性。理论分析指出,n级移位寄存器可以

产生的m序列个数由下式决定:

Ns (2n 1)/n

其中, (x)为欧拉函数,其值小于等于x,并与x互质的正整数的个数(包括1在内)。例如对于4级移位寄存器,则小于24 1 15并与15互质的数为1、2、4、7、8、11、13、14,共8个,所以 (15) 8,Ns 8/4 2,所以4级移位寄存器最多能产生的m序列数为2。

总之,移位寄存器的反馈系数决定是否产生m序列,起始状态决定序列的起始点,不同的反馈系数产生不同的码序列。

在Matlab的GUI环境中,程序代码如下: r=5;N=2^r-1; %移位寄存器的长度和序列的长度 s1(1:5)=[1 0 0 0 0]; %initial value 1 s2(1:5)=[1 0 0 0 1]; %initial value 1 f1=[1 0 0 1 0 1]; %特征多项式f=x^5+x^2+1;

f2=[1 1 1 1 0 1 ]; %特征多项式f=x^5+x^4+x^3+x^2+1; for n=r+1:N %进行循环

s1(n)=mod(sum(s1(n-r:n-1).*f1(1:r)),2);%通过模2加产生m1序列 end

stem(s1); %绘制生成m序列的图形 title('生成m序列')

基于MATLAB的m序列仿真

2.2 m序列的基本性质

(1)平衡特性

在m序列中一个周期N=2n-1内“1”的数目比“0”的数目多 l位。此特性保证了做平衡调制时,扩展频谱具有较高的载波抑制度。 (2)游程特性

在表2-2中列出长为15位的游程分布。

表2-2 111101011001000游程分布

一般说来,m序列中长为k(1 k n -2)的游程数占游程总数的l/2k。仅有一个包含n-1个“0”的游程,也只有一个包含n个“1”的游程 (3)线性叠加性

m序列和其移位后的序列逐位模二相加,所得的序列还是m序列,只是相移不同而已。例如1110100与向右移三位后的序列1001110逐位模二相加后的序列为0111010,相当于原序列向右移一位后的序列,仍是m序列。

(4)m序列发生器中移位寄存器的各种状态,除全0状态外,其他状态只在m序列中出现一次。 如7位m序列中顺序出现的状态为111,110,101,010,100,00l和011,然后再回到初始状态111。 (5)m序列自相关特性

m序列的自相关函数由下式计算(当 ≠0时):

R(τ) =

基于MATLAB的m序列仿真

即A表示相同的位数,D表示不同的位数(注意当m序列用±1表示,则A对应“和序列”的1,D对应“和序列”的-1)。令p =A + D = 2n -1 ,则m序列的自相关系数为:

1 τ=0

R τ = 1

τ≠0当 =0时,m序列的自相关函数R(τ)出现峰值1;当 偏离0时,相关函数曲线很快下降;当1≤ ≤N-1时,相关函数值为 1/N;当 =N时,又出现峰值,如此周而复始。当m序列周期很大时,其自相关函数与白噪声类似。相关检测就是利用这一特性,在“有”或“无”信号相关函数值的基础上来识别信号,检测或同步自相关函数值为1的码序列。m序列的自相关函数曲线如图2.2所示:

图2.2 m序列的自相关函数特性

结合公式和图2.2可知,当序列的周期很大时,m序列的自相关函数波形变得十分尖锐而接近冲击函数,而这正是高斯白噪声的自相关函数。

在Matlab的GUI环境中,程序代码如下: r=5;N=2^r-1; %移位寄存器的长度和序列的长度 s1(1:5)=[1 0 0 0 0]; %initial value 1 s2(1:5)=[1 0 0 0 1]; %initial value 1 f1=[1 0 0 1 0 1]; %特征多项式f=x^5+x^2+1;

f2=[1 1 1 1 0 1 ]; %特征多项式f=x^5+x^4+x^3+x^2+1; for n=r+1:N %进行循环

s1(n)=mod(sum(s1(n-r:n-1).*f1(1:r)),2);%通过模2加产生m1序列 end

s1=2*s1-1;%变为双极性m序列

基于MATLAB的m序列仿真

for j=0:N-1

s3(j+1)=sum(s1.*[s1(1+j:M),s1(1:j)])/M;%互相关函数分析 end

plot(j,rho);

axis([-30 30 -0.5 1.5]); %设定j的位置范围为(-30,30),rho的位置范围为(- 0.5,1.5) title('m序列的自相关函数') (6) m序列的互相关性

其指的是相同周期N = 2n -1 的两个不同序列一致性的程度。其互相关值越接近0,说明两m序列的差别越大,其互相关性越弱。当m序列做CDMA系统的地址码时,必须选择互相关值很小的m序列组,以避免用户之间相互干扰(即多址干扰MAI)。

对于两个周期N=2n -1的m序列S1和S2,其互相关函数描述如下:

设m序列S1与其后移 位的序列S2逐位模2加所得的序列为S1+ S2+ ,“0”的位数为A(S1和S2相同的位数),“1”的位数为D(S1和S2不同的位数),则互相关函数可由下式计算:

R(τ) =

在Matlab的GUI环境中,程序代码如下: r=5;N=2^r-1; %移位寄存器的长度和序列的长度 s1(1:5)=[1 0 0 0 0]; %initial value 1 s2(1:5)=[1 0 0 0 1]; %initial value 1 f1=[1 0 0 1 0 1]; %特征多项式f=x^5+x^2+1;

f2=[1 1 1 1 0 1 ]; %特征多项式f=x^5+x^4+x^3+x^2+1; for n=r+1:N %进行循环

s1(n)=mod(sum(s1(n-r:n-1).*f1(1:r)),2);%通过模2加产生m1序列 end

for n=r+1:N %进行循环

s2(n)=mod(sum(s2(n-r:n-1).*f2(1:r)),2);% 通过模2加产生m2序列 end

s1=2*s1-1;%变为双极性m序列

基于MATLAB的m序列仿真

s2=2*s2-1;%变为双极性m序列 for j=0:N-1

s3(j+1)=sum(s1.*[s2(1+j:M),s2(1:j)])/M;%互相关函数分析 end

plot(j,rho);

axis([-30 30 -0.5 0.5]); %设定j的位置范围为(-30,30),rho的位置范围为 (-0.5,0.5) title('m序列的互相关函数')

基于MATLAB的m序列仿真

第三章 系统软件设计

3.1 系统结构功能设计

本系统实现的功能是通过MATLAB环境下制作一个GUI来生成m序列及m序列的自相关函数和m序列的互相关函数。

系统模块设计说明:系统通过GUI界面设计生成m序列及m序列的自相关函数和m序列的互相关函数。在软件程序中,先设定m序列的移位寄存器的长度,从而得到m序列的周期长度,然后再设定两个移位寄存器序列,通过查表得到相应的两个特征多项式,通过Matlab语言相应的产生m序列以及自相关函数和互相关函数,组成完整的m序列系统,编写m文件,代码如附录。

3.2 GUI界面设计

如图3.1所示,界面一共有一个下拉菜单popumenu1,两个静态文本框static text,一个axes1。

图3.1 m序列仿真GUI界面图

基于MATLAB的m序列仿真

它们的功能描述如表3-1所示:

表3-1 GUI界面功能描述

基于MATLAB的m序列仿真

第四章 系统调试结果分析

4.1 调试过程

4.1.1 调试步骤

第一步:打开matlab,运行m文件或者fig文件后,系统会打开“基于MATLAB环境下的GUI的m序列仿真演示系统”。

第二步:在Popupmenu1下拉菜单中选择生成mx序列,m序列的自相关函数和m序列的互相关函数的任一选项,即可在axes1中得到相应的要显示的图形。

第三步:观察得到的图形,并与理论分析相比较,验证理论与仿真结果是否一致。

4.1.2 调试过程分析

整个m序列仿真过程并不是一帆风顺,刚开始由于对GUI环境的不熟悉,出现了很多错误。比如,由于不会使用GUI软件,导致一开始仿真结果不能在GUI界面中显示,最后在老师和同学的指导和热心帮助下,完成了整个仿真过程。后来仿真完成后,由于对理论知识理解的还不是特别的深刻,所以不能判断仿真结果是否正确,最后经过查阅资料和书籍,验证了仿真结果的正确性。

下面按照整个m序列仿真过程,选择其中一些具有重要对比意义的步骤分析系统性能及调试结果。 一、打开GUI系统界面。

运行m文件或fig文件后,可看到如图4.1所示界面。

基于MATLAB的m序列仿真

图4.1 GUI环境下系统运行界面

二、观察m序列生成图形

在下拉菜单中选择生成m序列,则得到如图4.2所示的图形界面。

图4.2 生成m序列图形

由输入程序知,输入的移位寄存器长度为5,所以可知得到的m序列的周期为25,与图4.2对比,结果一致。输入的第一个移位寄存器序列为[1 0 0 0 0]

基于MATLAB的m序列仿真

由理论分析知,特征多项式f1=[1 0 0 1 0 1],通过公式s1(n)=mod(sum(s1(n-r:n-1).*f1(1:r)),2)得到m序列,经过理论分析得到与图形相一致的结果,即生成的m序列为1000010101110110001111100110100。 三、观察m序列的自相关函数图形

在下拉菜单中选择m序列的自相关函数,则得到如图4.3示的图形界面。

图4.3 m序列的自相关函数图形

由理论分析知,m序列的自相关函数的自相关系数为:

1 τ=0

R(τ)= 1

τ≠0当N=31时,则自相关系数在τ=0时,R(τ)=1,τ≠0时,R(τ)= 1/31,经与图4.3对比后,发现理论与仿真结果一致。 四、观察m序列的互相关函数图形

在下拉菜单中选择m序列的互相关函数,则得到如图4.4的图形界面。

基于MATLAB的m序列仿真

图4.4 m序列的互相关函数图形

由理论分析知,m序列的自相关函数的互相关系数为:

R(τ) =

经过理论分析,与仿真结果对比后,发现与仿真结果一致。

4.2 调试故障分析

m序列产生原理是通由最长线性反馈移位寄存器序列得到,在系统调试时,一开始,发现不能运行,经过检查分析后,发现程序中输入的显示图形代码错误,经过修改后,可以得到正确的图形,但是输出的图形不能在GUI环境下生成。经过老师的指导和同学的帮助后,可以在GUI环境下运行仿真。但是在绘制三个函数的图形中,不能正确显示仿真结果。经过检查程序代码后,发现输入的特征多项式不符合移位寄存器的长度值与抽头的位置关系,经过修改后,得到了正确的仿真结果图形。在最后的改进中,发现许多程序代码都是重复的,因此想到了使用多选的选择菜单,利用switch语句来精简程序代码。经过改进后,在能同样实现相同的功能情况下,程序代码简单了许多,符合程序编码的规则。

最后经过检查,发现仿真结果与理论分析一致,完成了仿真调试过程。

本文来源:https://www.bwwdw.com/article/mewi.html

Top