m序列的产生原理与matlab代码

来源:互联网 发布:济南思成网络 编辑:程序博客网 时间:2024/06/03 20:58

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

如图1所示,m序列可由二进制线性反馈移位寄存器产生。它主要由n个串联的寄存器、移位脉冲产生器和模2加法器组成。 图中第i级移存器的状态ai表示,ai=0ai=1i=整数。反馈线的连接状态用ci表示,ci=1表示此线接通(参加反馈),ci=0表示此线断开。

  由于反馈的存在,移存器的输入端受控地输入信号。不难看出,若初始状态为全0,则移位后得到的仍为全“0”,因此应避免出现全“0”状态,又因为n级移存器共有2n种可能的不同状态,除全“0”状态外,剩下2n-1种状态可用。每移位一次,就出现一种状态,在移位若干次后,一定能重复出现前某一状态,其后的过程便周而复始了。反馈线位置不同将出现不同周期的不同序列,我们希望找到线性反馈的位置,能使移存器产生的序列最长,即达到周期P=2n-1。按图中线路连接关系,可以写为:

     

该式称为递推方程。(注意: 后面有个模2  mod 2


1 线性反馈移位寄存器

上面曾经指出,ci的取值决定了移位寄存器的反馈连接和序列的结构。现在将它用下列方程表示:


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

m序列的基本性质如下:

(1)周期性:m序列的周期p取决于它的移位寄存器的级数, p=2n-1

(2)平衡特性:m序列中01的个数接近相等;m序列中一个周期内“1”的数目比“0”的数目多1个。

(3)游程特性:m序列中长度为1的游程约占游程总数的1/2,长度为2的游程约占游程总数的1/22 ,长度为3的游程约占游程总数的1/23

(4)线性叠加性:m序列和其移位后的序列逐位模2相加,所得的序列还是m序列,只是相移不同而已。

(5) 二值自相关特性:码位数越长越接近于随机噪声的自相关特性。


m序列:




Matlab代码:

function [mseq]=m_sequence(fbconnection) 

% primpoly(10,'all');


n=length(fbconnection); 
N=2^n-1;  
register=[zeros(1,n-1) 1];  %移位寄存器的初始状态 
mseq(1)=register(n);        %m序列的第一个输出码元 


for i=2:N      
    newregister(1)=mod(sum(fbconnection.*register),2);     
    for j=2:n          
        newregister(j)=register(j-1);     
    end;      
    register=newregister;     
    mseq(i)=register(n); 
end   


可在matlab命令窗口 help primpoly 查看该函数用法。 (primpoly(10,'all')得到10阶m序列的所有本原多项式。 不唯一?

输入 m_sequence([1 0 0 0 0 0 0 1 0 1])     (10bit) 

便可得到一个1023的序列。

说明:1 0 0 0 0 0 0 1 0 1 输入参数的物理意义为各寄存器的初始状态。其数学意义是所选用的本征多项式D^10+D^3+1。D^1到D^10的各个系数。 



原博客链接:http://blog.csdn.net/laomai/article/details/24342493

  http://blog.sina.com.cn/s/blog_7b818ee70101bi6h.html




原创粉丝点击