本篇文章简要介绍了移动通信中的m序列,并通过Matlab进行了简单的仿真实验。
m序列的介绍:二进制m序列是一种重要的伪随机序列,有优良的自相关特性,有时称为伪噪声(PN)序列。“伪”的意思是说这种码是周期性的序列,易于产生和复制,但其随机性接近于噪声或随机序列。m序列在扩展频谱及码分多址技术中有着广泛的应用,并且在m序列基础上还能构成其它的码序列。
m序列的含义:m序列是最长线性移位寄存器序列的简称。顾名思义,m序列是由多级移位寄存器或其延迟元件通过线性反馈产生的最长的码序列。在二进制移位寄存器中,若n为移位寄存器的级数,n级移位寄存器共有2n个状态,除去全0状态外还剩下2n-1中状态,因此它能产生的最大长度的码序列为2n-1位,也就是说,一个n级线性反馈移位寄存器产生的最长周期等于 2n-1 。
m序列的产生:如下图1所示是由n级移位寄存器构成的码序列发生器。寄存器的状态决定于时钟控制下输入的信息(“0”或“1”),例如第i级移位寄存器状态决定于前一时钟脉冲后的第i-1级移位寄存器的状态。
图1:n级循环序列发生器的模型
图中C0,C1,…,Cn均为反馈线,其中C0=C1=1,表示反馈连接。因为m序列是由循环序列发生器产生的,因此C0和Cn肯定为1,即参与反馈。而反馈系数C1,C2,…,Cn-1,若为1,参与反馈;若为0,则表示断开反馈线,即开路,无反馈连线。
一个线性反馈移动寄存器能否产生m序列,决定于它的反馈系数Ci (i=1,2,…,n),下表中列出了部分m序列的反馈系数 ,按照如下表一中的系数来构造移位寄存器,就能产生相应的m序列。
表1:部分m序列反馈系数表
根据表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序列的构造原理与上述方法相同。
m序列的性质的分析
m序列具有以下性质:
m序列的随机性:在m序列中,码元为“1”的数目和码元为“0”的数目只相差1个。比如m序列1010011,其中码元为“1”的有4个,为“0”的有三个,即“1”和“0”相差一个。
m序列的游程分布:m序列中取值相同的那些相继的元素合称为一个“游程”。游程中元素的个数称为游程长度。n级的m序列中,总共有2^(n-1)个游程,其中长度为1的游程占总游程数的1/2,长度为2的游程占总游程数的1/4,长度为k的游程占总游程数的2^k。且长度为k的游程中,连0与连1的游程数各占一半。
m序列的自相关函数:自相关函数只用于表征一个信号与延迟后自身信号的相似性。采用二进制的码序列,长度(周期为)P的码序列x的自相关函数为
,由该公式可知,在二进制序列情况下,只需要比较原序列与移位后序列对应位的码元即可,自相关函数为,A为对应位码元相同数目,D为对应位码元不同的数目,自相关系数为
,对于m序列,其码长为P=2^n-1,在这里P也等于码序列中码元数,即“0”和“1”的综合。m序列的自相关系数为
m序列的互相关函数:两个码序列的互相关函数是两个不同码序列一致程度(相似度)的度量,它也是位移量的函数。研究表明,两个长度周期相同,由不同反馈系数产生的m序列,其互相关函数(或互相关系数)与自相关函数相比,没有尖锐的二值特性,是多值的。在二进制情况下,假设码序列的周期为P的两个m序列,其互相关函数为
Matlab仿真主要流程:
(1)设计产生两个阶数n>5的m序列(反馈系数自选)
根据实验要求,我设计了两个阶数为6的m序列,6级寄存器的初始状态定义为数组an=[1 1 1 0 1 1],两个移位寄存器的反馈系数分别为(103)8和(147)8,转化为二进制数分别为(1000011)2和(1100111)2,(此处括号后的数字为进制数),在matlab程序中我们用数组cn和cn2存放反馈系数,通过length函数算出寄存器的级数,定义变量L根据初始状态算出寄存器的级数,由m(1)=an(len)和n(1)=an(len)存放两个序列第一个输出码元,如图2所示。
图2:实验代码图
因为第一个码元上面已经产生,所以用for循环产生另外的L-1个,for循环内语句即为寄存器与反馈的模2和,将每次循环得到的输出结果放到数组中对应位置处,代码如图3所示。
图3:实验代码图
接着画出两个m序列,给出的坐标范围横轴0到35,纵轴-0.5到2,代码如图4所示。
图4:实验代码图
运行程序之后得到如下的两个m序列的运行结果图,如图5、6所示
图5:实验运行结果图 图6:实验运行结果图
在此,我们对第一个m序列进行分析,由上述条件知道该m序列阶数为6,初始状态为an=[1 1 1 0 1 1],反馈系数为(103)8,转换成二进制数为(1000011)2,据此,我们给出部分码序产生过程,如下表2所示,
表2
CP\D | D1 | D2 | D3 | D4 | D5 | D6(输出) | D5\D6的模2加 |
0 | 1 | 1 | 1 | 0 | 1 | 1 | 0 |
1 | 0 | 1 | 1 | 1 | 0 | 1 | 1 |
2 | 1 | 0 | 1 | 1 | 1 | 0 | 1 |
3 | 1 | 1 | 0 | 1 | 1 | 1 | 0 |
4 | 0 | 1 | 1 | 0 | 1 | 1 | 0 |
从上表中我们可以看到生成的第一个m序列为:11011…,与图5中得到的运行结果图一致,第二个生成的m序列原理类似,在此就不做赘述了。
(2)分析m序列的自相关性
在之前的实验原理部分,我们已经解释了m序列的自相关性原理,并给出了数学公式,实验过程中我们在程序中给出范围为1到200,使序列做循环移位,产生一个新的m序列,然后利用公式 ,得到自相关函数,代码如图7所示。
图7:实验代码
运行程序之后,得到如图8所示的实验结果图,
图8:实验结果图
分析结果:我们所产生的第一个m序列,级数为6,码长为P=2^n-1=63,在此也等于码元序列中的码元数,自相关系数是以PTc为周期的函数,m序列的自相关函数系数在处出现尖峰,并以PTc为周期重复出现,本次实验即为以63为周期反复出现,与实验运行结果相符。
(3)分析m序列的互相关性
互相关函数的相关原理已经在实验原理部分给出,代码部分如图9所示,包含的操作有把序列m移位、对n序列和移位后的m序列做异或、计算异或后1和0的个数,画出互相关函数图。
图9:实验代码
图10:实验结果图
由实验结果图看出它是一个多值函数,有正有负。
(4)扩展内容:举反例证明m序列的反馈系数不能随便取
移位寄存器级数(n)相同,反馈逻辑不同,产生的m序列就不同,一个线性反馈移位寄存器能否产生m序列,决定于它的反馈系数。下述,我们取反馈系数为105,运行后得到如图12所示的自相关函数图,明显可以看出不满足m序列的二值特性。
图11:实验代码图
图12:实验结果图
代码见: