m序列生成方法、装置及存储介质与流程

文档序号:19154794发布日期:2019-11-16 00:35阅读:750来源:国知局
m序列生成方法、装置及存储介质与流程
本公开涉及计算机、通信
技术领域
,具体地,涉及一种m序列生成方法、装置及存储介质。
背景技术
:序列包括有多种,可以预先确定并且可以重复实现的序列称为确定序列;既不能预先确定又不能重复实现的序列称随机序列;不能预先确定但可以重复产生的序列称伪随机序列。m序列即为最长线性移位寄存器序列的简称,是一种伪随机序列、伪噪声码(pn,pseudonoise)或伪随机码。m序列是目前广泛应用的一种伪随机序列,其在通信领域有着广泛的应用,如扩频通信,卫星通信的码分多址,数字数据中的加密、加扰、同步、误码率测量等领域。目前,产生m序列的方法有很多,例如利用以下公式生成m序列:n=0,1,2,3,……,r为寄存器级数,x(i)即为m序列,其值为二进制数0或1,ci为反馈系数。通过上述公式进行一次运算只能生成一个比特的m序列,效率较低,且不适用于如今广泛使用的标量处理器进行运算。或者例如,还可以利用矩阵法生成m序列,然而每产生n个比特长度需要进行n次状态转移矩阵乘法,尤其当移位寄存器比较长时,运算量较大,同时,还需要存储状态转移矩阵,而且每次调用转移矩阵时,需要读取内存,增加处理时间。技术实现要素:本公开的目的是提供一种m序列生成方法、装置及存储介质,能够提升生成m序列的效率。根据本公开实施例的第一方面,提供一种m序列生成方法,包括:确定多级移位寄存器的反馈系数中包括的n个非零反馈系数的位置;分别按照每个非零反馈系数的位置对应的数值,对寄存器状态变量进行n次移位;将进行n次移位后的n个变量值进行异或运算;根据异或运算的结果,产生m序列;根据生成的m序列,对所述寄存器状态变量进行更新。可选的,令所述多级移位寄存器级数为r,所述n个非零反馈系数的位置从低位到高位分别对应的数值为a0,a1,……,am,其中m<r,a0=0,所述寄存器状态变量分别进行n次移位得到的n个变量值为ra0,ra1,……,ram;根据异或运算的结果,产生m序列,包括:令变量值ry=ra0^ra1^…^ram,其中,^为异或操作;将变量值ry由低到高的r-am位比特的值作为生成的m序列的值。可选的,令所述寄存器状态变量为变量r,根据生成的m序列,对所述寄存器状态变量进行更新,包括:确定数值r-am为一次能够输出的m序列的比特数;将所述变量r右移r-am位;将生成的r-am位比特补充到所述变量r的高位,以更新所述寄存器状态变量;在更新所述寄存器状态变量之后,并再次执行所述分别按照每个非零反馈系数的位置对应的数值,对寄存器状态变量进行n次移位、所述将进行n次移位后的n个变量值进行异或运算、及所述根据异或运算的结果,产生m序列的步骤。可选的,将进行n次移位后的n个变量值进行异或运算,包括:针对每个非零反馈系数的位置对应的数值,在将所述寄存器状态变量向右移动该数值对应的位数后,将移动后的高位补入相应位数的数值0;将高位补入数值0后的n个变量值进行异或运算。可选的,将进行n次移位后的n个变量值进行异或运算,包括:通过计算机的标量处理器对所述n个变量值进行异或运算。根据本公开实施例的第二方面,提供一种m序列生成装置,包括:确定模块,用于确定多级移位寄存器的反馈系数中包括的n个非零反馈系数的位置;移位模块,用于分别按照每个非零反馈系数的位置对应的数值,对寄存器状态变量进行n次移位;异或运算模块,用于将进行n次移位后的n个变量值进行异或运算;m序列生成模块,用于根据异或运算的结果,产生m序列;寄存器变量更新模块,用于根据生成的m序列,对所述寄存器状态变量进行更新。可选的,令所述多级移位寄存器级数为r,所述n个非零反馈系数的位置从低位到高位分别对应的数值为a0,a1,……,am,其中m<r,a0=0,所述寄存器状态变量分别进行n次移位得到的n个变量值为ra0,ra1,……,ram;令变量值ry=ra0^ra1^…^ram,其中,^为异或操作;所述m序列生成模块用于:将变量值ry由低到高的r-am位比特的值作为生成的m序列的值。可选的,令所述寄存器状态变量为变量r,所述寄存器变量更新模块用于:确定数值r-am为一次能够输出的m序列的比特数;将所述变量r右移r-am位;将生成的r-am位比特补充到所述变量r的高位,以更新所述寄存器状态变量;在更新所述寄存器状态变量之后,由所述移位模块再次执行分别按照每个非零反馈系数的位置对应的数值,对寄存器状态变量进行n次移位的步骤、由所述异或运算模块再次执行将进行n次移位后的n个变量值进行异或运算的步骤,以及由所述m序列生成模块再次执行根据异或运算的结果,产生m序列的步骤。可选的,所述异或运算模块用于:针对每个非零反馈系数的位置对应的数值,在将所述寄存器状态变量向右移动该数值对应的位数后,将移动后的高位补入相应位数的数值0;将高位补入数值0后的n个变量值进行异或运算。可选的,所述异或运算模块用于:通过计算机的标量处理器对所述n个变量值进行异或运算。根据本公开实施例的第三方面,提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现第一方面中任一项所述方法的步骤。通过上述技术方案,可以先确定多级移位寄存器的反馈系数中包括的n个非零反馈系数的位置,然后分别按照每个非零反馈系数的位置对应的数值,对寄存器状态变量进行n次移位,再将进行n次移位后的n个变量值进行异或运算,那么可以根据异或运算的结果,产生m序列。本公开的技术方案一方面无需存储状态转移矩阵即可生成m序列,节省了内存,也节省了从内存读取数据的处理时间,另一方面采用了移位异或的方法取代了计算矩阵间的乘法,减少了大量的运算,另一方面,对于标量处理器而言,直接进行异或运算便可产生m序列,相较于标量处理器单独取出特定比特再进行运算生成m序列的方式,更为简单、快捷。本公开的其他特征和优点将在随后的具体实施方式部分予以详细说明。附图说明附图是用来提供对本公开的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本公开,但并不构成对本公开的限制。在附图中:图1是根据一示例性实施例示出的一种移位寄存器的示意图;图2是根据一示例性实施例示出的一种m序列生成方法的流程图;图3是根据一示例性实施例示出的一种移位寄存器的示意图;图4是根据一示例性实施例示出的一种m序列生成装置的框图。具体实施方式以下结合附图对本公开的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本公开,并不用于限制本公开。首先,结合图1对现有技术中的m序列生成方式进行举例说明,m序列产生由寄存器状态和反馈系数两部分组成,其中x(n)到x(n+r-1)为移位寄存器状态,c0到c(r-1)为反馈系数。反馈系数在整个序列产生过程中,一开始设定好就不会变化,寄存器状态则会向右进行循环移位x(n)=x(n+1),x(n+1)=x(n+2),……,x(n+r-1)则根据各系数反馈结果进行填充,n=0,1,2,3,……,r为寄存器的级数,其中x(i)即为产生的m序列,0<=i<=2r-1。如果寄存器长度为r,则m序列周期长度为2r-1。例如,设寄存器级数r=8,初始状态x(0)=0,x(1)=1,x(2)=1,x(3)=0,x(4)=1,x(5)=1,x(6)=0,x(7)=1,反馈系数c0=1,c1=0,c2=1,c3=0,c4=1,c5=0,c6=0,c7=0,那x(8)可通过以下方式得到。当n=0时,代入公式得:(以下所述加法均为模二加)x(8)=x(0)*c0+x(1)*c1+x(2)*c2+….+x(7)*c7=x(0)*c0+x(2)*c2+x(4)*c4=0*1+1*1+1*1=0+1+1=0;依此类推,当n取1,2,3…时,代入公式计算得到x(9),x(10)……。可见,通过以上方式,一次计算能够产生一个比特的m序列,运算量较大且效率较低,以下将对本公开提出的降低运算量并提升m序列生成效率的方式进行说明。图2是根据一示例性实施例示出的一种m序列生成方法的流程图,如图2所示,该m序列生成方法可以应用于电子设备(包括但不限于计算机、手机、平板电脑等)中,包括以下步骤。步骤s11:确定多级移位寄存器的反馈系数中包括的n个非零反馈系数的位置。步骤s12:分别按照每个非零反馈系数的位置对应的数值,对寄存器状态变量进行n次移位。步骤s13:将进行n次移位后的n个变量值进行异或运算。步骤s14:根据异或运算的结果,产生m序列。步骤s15:根据生成的m序列,对寄存器状态变量进行更新。同样以图1所示的多级寄存器为例,令线性反馈移位寄存器级数r,将其状态存储于一变量r(即寄存器状态变量)中,并令该变量最低位为图1中的x(n),依次往左为x(n+1),……,x(n+r-1)。在步骤s11中,令各级寄存器对应的反馈系数c中的非零反馈系数位置从右到左分别为a0,a1,……,am(比如共有n个非零反馈系数,则n=m+1),其中m<r,a0=0。例如,寄存器级数r=4,令c0=c2=1,c1=c3=0,则非零值反馈系数有2个,分别为c0和c2,其位置从右往左分别为0和2,因此a0=0,a1=2,m=1。在步骤s12中,即,将r分别向右移位a0,a1,……,am,移位后的结果如下表1所示:表1.变量r移位结果bit(r-1)…bit4bit3bit2bit1bit0x(n+r-1)…x(n+4)x(n+3)x(n+2)x(n+1)x(n)x(n+a1+r-1)…x(n+a1+4)x(n+a1+3)x(n+a1+2)x(n+a1+1)x(n+a1)x(n+a2+r-1)…x(n+a2+4)x(n+a2+3)x(n+a2+2)x(n+a2+1)x(n+a2)…………………x(n+am+r-1)…x(n+am+4)x(n+am+3)x(n+am+2)x(n+am+1)x(n+am)将寄存器移位后的值分别记为:ra0=r>>a0;(“>>”表示右移,此处表示向右移动a0位)ra1=r>>a1;ra2=r>>a2;……ram=r>>am;则ra0的值如表1的第一行所示,其中最低比特为x(n),ra1的值如表1第二行所示,其中最低比特为x(n+a1),其余移位后的变量值依此类推。在步骤s13中,将移位得到的n个变量值ra0,ra1,……,ram进行异或运算,则,令ry=ra0^ra1^…^ram,其中,^为异或操作。可选的,针对每个非零反馈系数的位置对应的数值,在将寄存器状态变量向右移动该数值对应的位数后,将移动后的高位补入相应位数的数值0,然后将高位补入数值0后的n个变量值进行异或运算。也就是说,ra0,ra1,……,ram在向右移位后,可以是直接进行异或运算,或者也可以高位用0来补入,那么进行异或运算是用补入0后的变量值来进行异或运算。可选的,在步骤s14中,根据异或运算的结果,产生m序列,可以是将变量值ry由低到高的r-am位比特的值作为生成的m序列的值。令offset=r-am-1,ry可以表示为如表2所示。表2.移位后各变量值的异或结果bit(r-1)…bit(offset+1)bit(offset)…bit1bit0y(n+r-1)…y(n+offset+1)y(n+offset)…y(n+1)y(n)通过本公开的方法一次能进行offset+1(也即是r-am)位比特的输出,输出分别为x(n+r)=y(n),x(n+r+1)=y(n+1),……,x(n+r+offset)=y(n+offset)。可见,本公开一次能产生的序列长度取决于offset,即线性反馈寄存器的级数r以及最大非零反馈系数am,当am越小,offset越大,序列产生的效率越高。可选的,在步骤s15中,更新寄存器变量可以是先确定数值r-am为一次能够输出的m序列的比特数,然后将变量r右移r-am位,再将生成的r-am位比特补充到变量r的高位,以更新寄存器状态变量。那么在更新寄存器状态变量之后,会再次执行分别按照每个非零反馈系数的位置对应的数值,对寄存器状态变量进行n次移位、将进行n次移位后的n个变量值进行异或运算、及根据异或运算的结果,产生m序列的步骤。即,在输出序列后,会对寄存器状态进行更新,更新后的寄存器状态如表3所示。表3.比特输出后的寄存器状态bit(r-1)…bit(r-offset-1)…bit1bit0y(n+offset)…y(n)…x(n+offset+2)x(n+offset+1)更新后的寄存器状态,实际上是先将输出前的寄存器状态r向右移动offset+1,即r-am位,然后,将本次输出的y(n),y(n+1),……,y(n+offset)共r-am个比特补充到寄存器状态的尾部。然后会再次执行步骤s12-步骤s14,进行余下比特的产生,能够产生的最大非周期m序列长度为2r-1。可选的,将进行n次移位后的n个变量值进行异或运算,可以是通过计算机的标量处理器对n个变量值进行异或运算。也即是说,对于标量处理器而言,不便对各个比特进行操作,但可以对变量进行异或操作,因此本公开的技术方案可以应用在任意的标量处理器中。当然,在实际应用中,选取的m序列往往不是直接从x(0)开始取数,而会有一个偏移,令其为d,即取数从x(d)开始,依次往后选取一定序列的长度,例如d值为1600,如果按本公开方案,需要先产生1600个比特,然后从1601个比特开始才是真正需要的目标比特。针对这种情况,可以利用矩阵法与本公开的技术方案相结合。例如,当d=1600,寄存器级数为r时,可以先利用矩阵法,x1600=x0×a1600(x0为初始寄存器状态矢量,a为状态转移矩阵,是已知的),所以可以先用matlab等工具计算出a1600,计算出的x1600即为d=1600时的寄存器状态r,且x1600的值从低到高依次为x(1600),x(1601),……,x(1600+r-1),此时,便可利用本公开的技术方案,计算余下来的m序列。为了更好地阐述本公开的技术方案,以下将通过完整的实施例进行详细说明。实施例一:设寄存器级数r=8,初始状态x(0)=0,x(1)=1,x(2)=1,x(3)=0,x(4)=1,x(5)=1,x(6)=0,x(7)=1,反馈系数c0=1,c1=0,c2=1,c3=0,c4=1,c5=0,c6=0,c7=0。寄存器初始的变量值r=0xb6(‘0xb6’为16进制表示方法,总共8个比特,对应为10110110),如果r向右移一位,则变为01011011,高位移进的比特用0代替,对应十六进制数为0x5b依此类推,r向右两位,则变为00101101,高位再移入一个0,对应十六进制数为0x2d,以此类推。从反馈系数可以看出,非零系数分别为c0,c2和c4,则a0=0,a1=2,a2=4,则:ra0=r>>a0=r=0xb6;ra1=r>>a1=r>>2=0x2d;ra2=r>>a2=r>>4=0x0b;标量处理器中,能对变量进行异或操作,例如:对ra0^ra1,异或即把对应比特位进行模二相加,异或结果为10011011。则:ra0^ra1=0x9b;ry=ra0^ra1^ra2=0x9b^0x0b=0x90;offset=r-am-1=8-a2-1=8-4-1=3;则一次能计算出offset+1=4个比特x(8),x(9),x(10)和x(11),对应ry的低4比特,即:x(8)=0,x(9)=0,x(10)=0,x(11)=0。实施例二:如图3所示,假设寄存器级数r=4,寄存器初始状态r=3(二进制为0011,即此时n=0,x(0)=1,x(1)=1,x(2)=0,x(3)=0),反馈系数c0=1,c1=1,c2=0,c3=0,a0=0,a1=1,m=1,offset=r-am-1=4-1-1=2,按本公开所述的方法,一次能产生offset+1=3个比特。对r进行移位得到ra0和ra1:ra0=r>>a0=r=3;ra1=r>>a1=r>>1=1。对ra0和ra1进行异或操作:ry=ra0^ra1=3^1=2,2用二进制表示为0010,低的3个比特即为生成的m序列,所以x(4)=0,x(5)=1,x(6)=0。组成新的寄存器状态,各比特从高到低依次为x(6)=0、x(5)=1、x(4)=0、x(3)=0。即,更新寄存器状态r=4(二进制为0100);基于更新后的寄存器状态,再次执行移位以及异或运算的操作,以产生新的数据输出x(6),x(7)和x(8):ry=ra0^ra1=4^2=6(二进制为0110),则x(7)=0,x(8)=1,x(9)=1。接下来的x(n),n>9,可以按以上方法类推,4级的寄存器,能产生的m序列周期为24-1=15。请参见图4,基于同一发明构思,本公开实施例提供一种m序列生成装置400,该装置400可以包括:确定模块401,用于确定多级移位寄存器的反馈系数中包括的n个非零反馈系数的位置;移位模块402,用于分别按照每个非零反馈系数的位置对应的数值,对寄存器状态变量进行n次移位;异或运算模块403,用于将进行n次移位后的n个变量值进行异或运算;m序列生成模块404,用于根据异或运算的结果,产生m序列;寄存器变量更新模块405,用于根据生成的m序列,对所述寄存器状态变量进行更新。可选的,令所述多级移位寄存器级数为r,所述n个非零反馈系数的位置从低位到高位分别对应的数值为a0,a1,……,am,其中m<r,a0=0,所述寄存器状态变量分别进行n次移位得到的n个变量值为ra0,ra1,……,ram;令变量值ry=ra0^ra1^…^ram,其中,^为异或操作;所述m序列生成模块404用于:将变量值ry由低到高的r-am位比特的值作为生成的m序列的值。可选的,令所述寄存器状态变量为变量r,所述寄存器变量更新模块405用于:确定数值r-am为一次能够输出的m序列的比特数;将所述变量r右移r-am位;将生成的r-am位比特补充到所述变量r的高位,以更新所述寄存器状态变量;在更新所述寄存器状态变量之后,由所述移位模块402再次执行分别按照每个非零反馈系数的位置对应的数值,对寄存器状态变量进行n次移位的步骤、由所述异或运算模块403再次执行将进行n次移位后的n个变量值进行异或运算的步骤,以及由所述m序列生成模块404再次执行根据异或运算的结果,产生m序列的步骤。可选的,所述异或运算模块403用于:针对每个非零反馈系数的位置对应的数值,在将所述寄存器状态变量向右移动该数值对应的位数后,将移动后的高位补入相应位数的数值0;将高位补入数值0后的n个变量值进行异或运算。可选的,所述异或运算模块403用于:通过计算机的标量处理器对所述n个变量值进行异或运算。关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。在本公开所提供的实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。在本申请各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个非临时性计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、rom(read-onlymemory,只读存储器)、ram(randomaccessmemory,随机存取存储器)、磁碟或者光盘等各种可以存储程序代码的介质。以上所述,以上实施例仅用以对本公开的技术方案进行了详细介绍,但以上实施例的说明只是用于帮助理解本公开的方法及其核心思想,不应理解为对本公开的限制。本
技术领域
的技术人员在本公开揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本公开的保护范围之内。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1