CN109375897B - 伪随机序列的生成方法 - Google Patents
伪随机序列的生成方法 Download PDFInfo
- Publication number
- CN109375897B CN109375897B CN201710657524.1A CN201710657524A CN109375897B CN 109375897 B CN109375897 B CN 109375897B CN 201710657524 A CN201710657524 A CN 201710657524A CN 109375897 B CN109375897 B CN 109375897B
- Authority
- CN
- China
- Prior art keywords
- data
- initial data
- pseudo
- random sequence
- shift register
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/58—Random or pseudo-random number generators
- G06F7/582—Pseudo-random number generators
- G06F7/586—Pseudo-random number generators using an integer algorithm, e.g. using linear congruential method
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Error Detection And Correction (AREA)
- Synchronisation In Digital Transmission Systems (AREA)
Abstract
本发明提供了一种伪随机序列的生成方法,根据N个第一初始数据和N个第二初始数据,分别计算N个第一数据和N个第二数据,并分别作为第一移位寄存器的初始数据和第二移位寄存器的初始数据。根据第一移位寄存器和第二移位寄存器的初始数据可通过一个时钟周期生成伪随机序列中的第一个数据,并且每一个时钟周期产生伪随机序列中的一个数据,最终生成伪随机序列。生成伪随机序列中的第一个数据只需一个时钟周期,大大提高了生成伪随机序列的速度,缩短了生成时间。
Description
技术领域
本发明涉及通信技术领域,更具体地,涉及伪随机序列的生成方法。
背景技术
目前,伪随机序列在扩频通信***中用于与调制后的信号相乘以扩展信号的带宽,或者用于实现数据加扰。实现简单伪随机序列的现有硬件电路通常是带有抽头结构的移位寄存器。在实际应用中,用于与信号相调制或解调的伪随机序列并不是单一序列,而是多个具有不同初始值的伪随机序列进行某种逻辑运算的结果。在长期演进技术的后续演进(Long Term Evolution Advance,LTE-A)***中,伪随机序列的生成函数为两个子序列x1(n+NC)与x2(n+NC)进行模二加法的结果。
在LTE-A***中,承载不同业务的物理信道要求不同初始值的伪随机序列,例如在物理广播信道(physical broadcast channel,PBCH)中,要求初始值其中,ID为小区标识。而在下行共享信道(physical downlink control channel,PDCCH)要求初始值其中,ns为时隙号,nRNTI与无线网络临时鉴定(radio network temporary identifier,RNTI)。硬件实现中,对序列生成的实时性要求非常严格,但是通常生成伪随机序列的电路需要多个时钟周期的初始化之后,才能完成一个伪随机序列中第一个数据的计算输出。LTE-A***中的伪随机序列可通过下式表示:c(n)=[x1(n+NC)+x2(n+NC)]mod2,其中,x1(n+31)=[x1(n+3)+x1(n)]mod2,x2(n+31)=[x2(n+3)+x2(n+2)+x2(n+1)+x2(n)]mod2。式中子序列x1(n)与x2(n)分别为两个m序列,NC=1600,NC是为了保证两个不同的m序列之间的非相关性而增加的状态偏移量,mod2表示对前面的数据进行模2加法运算。伪随机序列C的生成过程中,两个子序列x1(n)与x2(n)分别由31个带有反馈的线性移位寄存器移位产生,其中x1(0)~x1(30)与x2(0)~x2(30)分别为x1(n)与x2(n)的已知的初始值或者可间接计算得到的初始值。因此,由于NC的存在,要得到c(0)的值,在现有技术的普通算法中,至少需要等待NC个时钟周期完成x1(NC)与x2(NC)的计算,即需要迭代NC次才能计算出c(0)。
现有的伪随机序列C生成电路结构如图1所示。在初始状态下,子序列x1(n)与x2(n)的31个初始值分别装填在深度为31位的移位寄存器,然后移位寄存器在时钟的驱动下运行,分别计算出x1(n)与x2(n)的后续值,伪随机序列C的第一个数据c(0)需要等待1600个时钟周期之后,由x1(1600)与x2(1600)计算得出。
现有的伪随机序列的生成方法需要经过多次迭代才能计算得到需要的伪随机序列,大大增加了生成伪随机序列需要的时间,降低了生成伪随机序列的速度。
发明内容
为克服上述问题或者至少部分地解决上述问题,本发明提供了一种伪随机序列的生成方法。
一方面,本发明提供了1、一种伪随机序列的生成方法,包括:S1,分别获取N个第一初始数据和N个第二初始数据;N为大于3的整数;S2,根据所述N个第一初始数据,基于第一递推公式,计算N个第一数据,并将所述N个第一数据作为第一移位寄存器的初始数据;S3,根据所述N个第二初始数据,基于第二递推公式,计算N个第二数据,并将所述N个第二数据作为第二移位寄存器的初始数据;S4,根据所述第一移位寄存器的初始数据和所述第二移位寄存器的初始数据,生成所述伪随机序列。
优选地,S2具体包括:基于第一递推公式,通过所述N个第一初始数据中若干个第一初始数据对所述N个第一数据中每一个第一数据进行表示,并计算所述N个第一数据。
优选地,所述第一递推公式通过如下公式迭代计算得到:
x1(n+N)=[x1(n+3)+x1(n)]mod2
其中,x1(n+N)为第一子序列x1中第n+N+1个数据,且所述x1中的前N个数据x1(0)~x1(N-1)为所述N个第一初始数据,n≥0。
优选地,所述第一递推公式如下:
优选地,S3具体包括:基于第二递推公式,通过所述N个第二初始数据中若干个第二初始数据对所述N个第二数据中每一个第二数据进行表示,并计算所述N个第二数据。
优选地,所述第二递推公式通过如下公式迭代计算得到:
x2(n+N)=[x2(n+3)+x2(n+2)+x2(n+1)+x2(n)]mod2
其中,x2(n+N)为第二子序列x2中第n+N+1个数据,且所述x2中的前N个数据x2(0)~x2(N-1)为所述N个第二初始数据,n≥0。
优选地,所述第二递推公式如下:
另一方面,本发明提供了一种伪随机序列的生成设备,包括:至少一个处理器;以及与所述处理器通信连接的至少一个存储器,其中:所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令以执行上述的生成方法。
另一方面,本发明提供了一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,使所述计算机执行上述的生成方法。
另一方面,本发明提供了一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行上述的生成方法。
本发明提供的伪随机序列的生成方法,根据N个第一初始数据和N个第二初始数据,分别计算N个第一数据和N个第二数据,并分别作为第一移位寄存器的初始数据和第二移位寄存器的初始数据。根据第一移位寄存器和第二移位寄存器的初始数据可通过一个时钟周期生成伪随机序列中的第一个数据,并且每一个时钟周期产生伪随机序列中的一个数据,最终生成伪随机序列。生成伪随机序列中的第一个数据只需一个时钟周期。避免了通过第一移位寄存器和第二移位寄存器,直接根据N个第一初始数据和N个第二初始数据,经过指定数量的时钟周期后才能得到伪随机序列的第一个数据。生成伪随机序列的第一个数据的过程中,不需要进行迭代,只需通过一个时钟周期即可完成,大大提高了生成伪随机序列的速度,缩短了生成时间。
附图说明
图1为现有技术中伪随机序列的生成电路结构示意图;
图2为本发明实施例提供的一种伪随机序列的生成方法流程图;
图3为本发明实施例提供的一种伪随机序列的生成方法中x1(n+NC)递归生成关系的示意图;
图4为本发明实施例提供的一种伪随机序列的生成方法中x2(n+NC)递归生成关系的示意图;
图5为本发明实施例提供的一种伪随机序列的生成方法流程图;
图6为现有技术中计算第一子序列中任一个数据时的递归实例个数和递归深度之间的关系示意图;
图7为现有技术中计算第二子序列中任一个数据时的递归实例个数和递归深度之间的关系示意图;
图8为本发明实施例提供的一种伪随机序列的生成方法流程图。
具体实施方式
下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。
通常为了使得生成的伪随机序列满足某种特定的需求,使用现有方法生成伪随机序列C时,通常是将多个不同的子序列的输出结果进行某种逻辑运算之后作为当前时刻的伪随机序列,需要进行多次递归式迭代才能得到。并且,生成伪随机序列C中不同序号的数据时,递归深度可能不同,表现在硬件电路的实现上,这些递归迭代运算需要多个时钟周期的计算才能完成。
如图2所示,本发明一实施例提供了一种伪随机序列的生成方法,包括:S1,分别获取N个第一初始数据和N个第二初始数据;N为大于3的整数;S2,根据所述N个第一初始数据,基于第一递推公式,计算N个第一数据,并将所述N个第一数据作为第一移位寄存器的初始数据;S3,根据所述N个第二初始数据,基于第二递推公式,计算N个第二数据,并将所述N个第二数据作为第二移位寄存器的初始数据;S4,根据所述第一移位寄存器的初始数据和所述第二移位寄存器的初始数据,生成所述伪随机序列。
具体地,如果一个序列,一方面它是可以预先确定的,并且是可以重复地生产和复制;另一方面它又具有某种随机序列的随机特性(即统计特性),这种序列为伪随机序列。伪随机序列是具有某种随机特性的确定的序列,由移位寄存器产生。m序列是最长线性反馈移存器序列的简称,它是由带线性反馈的移存器产生的周期最长的一种序列。m序列对优选的两个n次本原多项式乘积构成的新序列为Gold序列,或m序列对优选的两个本原多项式所产生序列的移位模2和对应的新序列也叫做Gold序列。以下以生成Gold序列对本发明方案进行描述,但本发明并不限于生成Gold序列,还可用于生成其他伪随机序列。
在LTE-A***中,Gold序列由第一子序列和第二子序列组成,每个子序列分别对应有N个初始数据,即N个第一初始数据和N个第二初始数据。这里的N为初始数据的个数,同时也是第一子序列和第二子序列的周期长度,由于Gold序列是由第一子序列和第二子序列组成,所以Gold序列的周期长度也为N。
由于第一子序列和第二子序列的初始数据均为N个,与第一子序列匹配的第一移位寄存器的位数也需要是N个,同样的,与第二子序列匹配的第二移位寄存器的位数也需要是N个。所以基于第一递推公式,计算第一子序列中能够用于生成伪随机序列中的第一个数据的N个第一数据,并将N个第一数据作为第一移位寄存器的初始数据。同理,基于第二递推公式,计算第二子序列中能够用于生成伪随机序列中的第一个数据的N个第二数据,并将N个第二数据作为第二移位寄存器的初始数据。
本实施例中,S2和S3的执行顺序是相对独立的,并没有具体的时序关系,既可以先执行S2再执行S3,也可以先执行S3再执行S2,还可以同时执行S2和S3。在此不作具体限定。
根据第一移位寄存器的初始数据和第二移位寄存器的初始数据,经过一个时钟周期可得到伪随机序列中的第一个数据,再基于移位寄存器的性质,每经过一个时钟周期,可产生一个新的数据,经过多个时钟周期后,可得到伪随机序列中的后续数据,生成伪随机序列。
本实施例中,根据N个第一初始数据和N个第二初始数据分别计算N个第一数据和N个第二数据,并将其分别作为第一移位寄存器和第二移位寄存器的初始数据,根据第一移位寄存器和第二移位寄存器的初始数据,可经过一个时钟周期生成伪随机序列中的第一个数据,并且每经过一个周期产生伪随机序列中的一个数据,最终生成伪随机序列。生成伪随机序列的第一个数据只需一个时钟周期。避免了通过第一移位寄存器和第二移位寄存器,直接根据N个第一初始数据和N个第二初始数据,经过指定数量的时钟周期后才能得到伪随机序列的第一个数据。生成伪随机序列的第一个数据的过程中,不需要进行迭代,只需通过一个时钟周期即可完成,大大提高了生成伪随机序列的速度,缩短了生成时间。
需要注意的是,本发明实施例中提到的“第一”和“第二”仅起区分作用,并不是对时序或顺序的限定。
在LTE-A***中,用于扩频的伪随机序列是周期长度N=31的Gold序列,也就是在Gold序列中有31个初始数据。Gold序列的构成如下:
c(n)=[x1(n+NC)+x2(n+NC)]mod2
由于mod2表示对前面的数据进行模2加法运算,模2加法运算是一种二进制的运算,等同于“异或”(“异或”的逻辑运算符号为^)运算。所以Gold序列c(n)还可表示为:
c(n)=x1(n+NC)^x2(n+NC)
其中,
x1为第一子序列,x2为第二子序列。下面引出数据的序号的概念,数据的序号是指某一序列中,根据每一个数据在序列中的位置,为每一个数据设置不同的序号,从第一个数据开始,依次为每一个数据设置序号,序号分别为0、1、2、3……,其中,序号0对应的数据为第一个数据,序号1对应的数据为第二个数据,并以此类推。例如,第一子序列x1中的x1(0)表示此数据对应的序号为0,在x1中的位置为第一个,即代表x1中的第一个数据。
在Gold序列c(n)的表达式中,第一子序列x1和第二子序列x2均与c(n)相差相同的状态偏移量NC,即要生成c(0),需要x1(NC)和x2(NC),生成c(1),需要x1(NC+1)和x2(NC+1),以此类推。x1(n+NC)与x2(n+NC)的递推关系如图3和图4所示。由图中可以得出,x1(n+NC)由前一时刻的两个值x1(n+NC-28)和x1(n+NC-31)决定,x2(n+NC)由前一时刻的四个值x2(n+NC-28)、x2(n+NC-29)、x2(n+NC-30)和x2(n+NC-31)决定。
根据LTE-A***的物理信道和调制技术规范,x1与x2的前31个初始数据已经确定或者可以根据信道参数间接确定。初始数据的取值不同,得到的伪随机序列也不相同。
当NC=1600时,伪随机序列中的第一个数据c(0)=x1(1600)^x2(1600),也就是通过对第一子序列中第1601个数据和第二子序列中第1601个数据进行异或运算,得到c(0)。同理,要生成一个伪随机序列C,第一子序列中的数据和第二子序列中的数据都至少需要是第1601个数据或第1601个数据之后的数据。所以,为减小不必要的时钟周期,将第一移位寄存器的初始值分别设置为x1(1600)~x1(1630),将第二移位寄存器的初始值分别设置为x2(1600)~x2(1630),这样可在一个时钟周期内生成伪随机序列中的第一个数据,并利用第一移位寄存器和第二移位寄存器的性质,计算待生成的伪随机序列中的每一个数据。
在上述实施例的基础上,S2具体包括:基于第一递推公式,通过所述N个第一初始数据中若干个第一初始数据对所述N个第一数据中每一个第一数据进行表示,并计算所述N个第一数据。
具体地,所述第一递推公式通过如下公式迭代计算得到:
x1(n+N)=[x1(n+3)+x1(n)]mod2
其中,x1(n+N)为第一子序列x1中第n+N+1个数据,且所述x1中的前N个数据x1(0)~x1(N-1)为所述N个第一初始数据,n≥0。
对第一子序列的迭代公式x1(n+N)进行分析,通过迭代公式执行的迭代次数和模2加法的运算,构建第一递推公式。其中迭代次数为由于模2加法的运算法则可知,对于偶数个相同的数据做模2加法的运算则将该偶数个相同的数据均删除;对于奇数个相同的数据做模2加法的运算则仅保留一个数据,且数据的位置不变。则第一次迭代后与每经过2的倍数次迭代后均只剩下第一项和最后一项。
得到第一递推公式如下:
以下以N=31为例,即x1(n+31)=[x1(n+3)+x1(n)]mod2。对第一子序列的任一个数据x1(n),第一次迭代后得到x1(n)=x1(n-31)^x1(n-28),第二次迭代后得到:
x1(n)=x1(n-31×2)^x1(n-31-28)^x1(n-28-31)^x1(n-28×2)
=x1(n-31×2)^x1(n-28×2)
再分别对得到的两项利用上述公式进行第三次迭代,得到:
x1(n)=x1(n-31×3)^x1(n-31×2-28)^x1(n-28×2-31)^x1(n-28×3)
再分别对得到的两项利用上述公式进行第四次迭代,得到:
x1(n)=x1(n-31×4)^x1(n-28×4)
以此类推,得到的第一递推公式如下式:
利用第一递推公式,可计算第一子序列中任一个数据x1(n)。以下以n=1000,N=31为例,计算序号为1000的第一数据x1(1000)。
由于分别得到: 所以x1(1000)=x1(8)^x1(104)。但由于x1(104)不能直接从第一子序列中已知或间接已知的31个初始数据中得到,需要对x1(104)再次利用第一递推公式,直至将x1(1000)用初始数据表示。x1(104)进一步可表示为x1(104)=x1(42)^x1(48)=x1(11)^x1(14)^x1(17)^x1(20)。
综上,x1(1000)=x1(8)^x1(11)^x1(14)^x1(17)^x1(20)。
利用第一递推公式,可得到第一子序列中的第1601个数据至第1631个数据,即x1(1600)~x1(1630),也就是31个第一数据,得到的结果如下:
x1(1600)=x1(1)^x1(12)^x1(17)^x1(19)^x1(20)^x1(25)^x1(3)^x1(4)^x1(5)^x1(6)^x1(9)
x1(1601)=x1(10)^x1(13)^x1(18)^x1(2)^x1(20)^x1(21)^x1(26)^x1(4)^x1(5)^x1(6)^x1(7)
x1(1602)=x1(11)^x1(14)^x1(19)^x1(21)^x1(22)^x1(27)^x1(3)^x1(5)^x1(6)^x1(7)^x1(8)
……
x1(1615)=x1(1)^x1(12)^x1(16)^x1(18)^x1(19)^x1(20)^x1(21)^x1(24)^x1(27)^x1(3)^x1(6)^x1(7)^x1(9)
x1(1630)=x1(0)^x1(14)^x1(16)^x1(18)^x1(2)^x1(21)^x1(22)^x1(24)^x1(27)^x1(4)^x1(6)^x1(7)
在上述实施例的基础上,S3具体包括:基于第二递推公式,通过所述N个第二初始数据中若干个第二初始数据对所述N个第二数据中每一个第二数据进行表示,并计算所述N个第二数据。
具体地,所述第二递推公式通过如下公式迭代计算得到:
x2(n+N)=[x2(n+3)+x2(n+2)+x2(n+1)+x2(n)]mod2
其中,x2(n+N)为第二子序列x2中第n+N+1个数据,且所述x2中的前N个数据x2(0)~x2(N-1)为所述N个第二初始数据,n≥0。
对于第二子序列的迭代公式x2(n+N)进行分析,通过迭代公式执行的迭代次数和模2加法的运算,构建第二递推公式。其中迭代次数为和由于公式可等效为第一项与第二项作异或运算,第三项与第四项作异或运算,得到的结果再进行异或,所以第一项和第二项的迭代次数相同,第三项和第四项的迭代次数相同。
由于模2加法的运算法则可知,对于偶数个相同的数据做模2加法的运算则将该偶数个相同的数据均删除;对于奇数个相同的数据做模2加法的运算则仅保留一个数据,且数据的位置不变。则第一次迭代后与每经过2的倍数次迭代后均只剩下第一项和最后一项。
得到第二递推公式如下:
以N=31为例,即x2(n+31)=[x2(n+3)+x2(n+2)+x2(n+1)+x2(n)]mod2。利用与得到第一递推公式相同的方法,得到第二递推公式如下:
利用第二递推公式,可计算第二子序列中任一个数据x2(n)。以下依然以n=1000为例,计算序号为1000的第二数据x2(1000)。
可分别得到: 所以x2(1000)=x2(8)^x2(40)^x2(72)^x2(104)。但由于x2(40)、x2(72)和x2(104)均不能直接从第二子序列中已知或间接已知的31个初始数据中得到,需要分别对x2(40)、x2(72)和x1(104)再次利用第二递推公式,直至将x2(1000)用初始数据表示。x2(40)进一步可表示为x1(40)=x1(9)^x1(10)^x1(11)^x1(12),x2(72)进一步可表示为x1(72)=x1(10)^x1(12)^x1(14)^x1(16)。x2(104)进一步可表示为:
x2(104)=[x2(11)^x2(12)^x2(13)^x2(14)]^[x2(13)^x2(14)^x2(15)^x2(16)]^[x2(15)^x2(16)^x2(17)^x2(18)]^[x2(17)^x2(18)^x2(19)^x2(20)]
由于异或(逻辑运算符号为^),运算规则是:若符号^两侧的数值的每一个二进制位,同值取0,异值取1;同时,对多个数值进行异或运算时,多个数值的顺序不同得到的结果也不相同。所以在计算x2(1000)时,需要将偶数个相同的第二数据全部删除,将奇数个相同的第二数据保留一个,但要保证每个第二数据的位置不变,以避免因第二数据的顺序不同而导致计算得到的结果发生变化。
综上,x2(1000)=x2(8)^x2(9)^x2(12)^x2(14)^x2(19)^x2(20)。
利用第二递推公式,可得到第二子序列中的第1601个数据至第1631个数据,即x2(1600)~x2(1630),也就是31个第二数据,得到的结果如下:
x2(1600)=x2(1)^x2(12)^x2(16)^x2(19)^x2(2)^x2(20)^x2(23)^x2(3)^x2(8)
x2(1601)=x2(13)^x2(17)^x2(2)^x2(20)^x2(21)^x2(24)^x2(3)^x2(4)^x2(9)
x2(1602)=x2(10)^x2(14)^x2(18)^x2(21)^x2(22)^x2(25)^x2(3)^x2(4)^x2(5)
……
x2(1615)=x2(0)^x2(1)^x2(10)^x2(16)^x2(17)^x2(18)^x2(2)^x2(23)^x2(27)^x2(8)^x2(9)
……
x2(1630)=x2(0)^x2(10)^x2(11)^x2(12)^x2(13)^x2(14)^x2(15)^x2(16)^x2(17)^x2(2)^x2(23)^x2(24)^x2(25)^x2(3)^x2(5)^x2(7)^x2(8)^x2(9)
利用初始数据计算出x1(1600)与x2(1600)之后,就可以在不用等待NC=1600个时钟周期的情况下,仅经过一个时钟周期即可输出伪随机序列中的第一个数据c(0),c(0)=x1(1600)^x2(1600)。
分别将x1(1600)~x1(1630)与x2(1600)~x2(1630)作为第一移位寄存器和第二移位寄存器的初始数据,每个时钟周期得到伪随机序列的一个数据,最终生成整个伪随机序列C。输出待生成的伪随机序列中的第一个数据c(0)的流程如图5所示。
下面说明本发明运算的复杂度相对于现有方案的优势。在现有的方案中,计算x1与x2中的每一个数据时是通过递归方式实现,例如计算x1(1000)时,需要递归地求解x1(1000-28)与x1(1000-31),并将这两个数据作为递归实例存储在内存中,而计算x1(1000-28)的时候,又需要计算x1(1000-28×2)与x1(1000-28-31),并将这两个数据作为递归实例存储在内存中,以此类推,直至x1(1000)能通过x1中的第一初始数据表示出来为止。计算x1(n)时需要存储的递归实例的个数随着递归深度(递归次数)的增加而呈2的指数幂增长,其中幂指数为同样地,计算x2(1000)需要同时计算x2(1000-31)、x2(1000-30)、x2(1000-29)与x2(1000-28),而计算这四个数据中的每一个数据时都需要再递归地计算前四个数据,因此计算x2(1000)需要存储的递归实例的个数随着递归深度(递归次数)的增加而呈2的指数幂增长。
如图6所示,为现有技术中计算第一子序列中任一个数据时的递归实例个数和递归深度之间的关系,横坐标为递归深度h,纵坐标为递归实例个数W1,则复杂度即递归实例曲线与横坐标轴之间包围部分(如图6中斜线部分)的面积。从公式和图6中可以看出,计算任一个数据的复杂度随递归深度呈2的指数幂增长。
如图7所示,为现有技术中计算第二子序列中任一个数据时的递归实例个数和递归深度之间的关系,横坐标为递归深度h,纵坐标为递归实例个数W2,则复杂度即递归实例曲线与横坐标轴之间包围部分(如图7中斜线部分)的面积。从公式和图7中可以看出,计算任一个数据的复杂度随递归深度呈4的指数幂增长。这种复杂度呈指数式的增长在算法实现中是不能容忍的。
而使用本发明的方法,利用第一递推公式得到的任一数据或利用第二递推公式得到的任一数据,每两次递归之间的间隔增大,这样使得递归深度呈指数迅速下降,复杂度大约呈线性O(h)。如图8所示,横坐标为递归深度h,纵坐标为递归实例个数W,复杂度为几个矩形的面积和。例如计算x1(1000)时的复杂度可表示为递归实例的个数,即需要存储的数据个数为10,同理计算x2(200)时的复杂度为28。
表1现有方案与本发明计算复杂度对比
现有方案 | 本发明方案 | |
复杂度 | O(2<sup>h</sup>)或O(4<sup>h</sup>) | O(h) |
x<sub>1</sub>(1000) | 2<sup>32</sup> | 10 |
x<sub>2</sub>(200) | 4<sup>6</sup> | 28 |
本发明的另一实施例中提供了一种伪随机序列的生成设备,包括:至少一个处理器;以及与所述处理器通信连接的至少一个存储器,其中:所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令以执行上述实施例提供的生成方法,例如可执行以下伪随机序列的生成方法:S1,分别获取N个第一初始数据和N个第二初始数据;N为大于3的整数;S2,根据所述N个第一初始数据,基于第一递推公式,计算N个第一数据,并将所述N个第一数据作为第一移位寄存器的初始数据;S3,根据所述N个第二初始数据,基于第二递推公式,计算N个第二数据,并将所述N个第二数据作为第二移位寄存器的初始数据;S4,根据所述第一移位寄存器的初始数据和所述第二移位寄存器的初始数据,生成所述伪随机序列。
这里的处理器可以为微处理器(Micro-Controller Unit,MCU)和/或现场可编程门阵列(Field-Programmable Gate Array,FPGA)。还可以是其他调用所述程序指令以执行上述实施例提供的生成方法的处理器。本实施例在此不作具体限定。
本发明的另一实施例中,提供了一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,使所述计算机执行上述实施例提供的生成方法。例如,计算机执行的伪随机序列的生成方法为:S1,分别获取N个第一初始数据和N个第二初始数据;N为大于3的整数;S2,根据所述N个第一初始数据,基于第一递推公式,计算N个第一数据,并将所述N个第一数据作为第一移位寄存器的初始数据;S3,根据所述N个第二初始数据,基于第二递推公式,计算N个第二数据,并将所述N个第二数据作为第二移位寄存器的初始数据;S4,根据所述第一移位寄存器的初始数据和所述第二移位寄存器的初始数据,生成所述伪随机序列。
本发明的另一实施例中,提供了一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行上述实施例提供的伪随机序列的生成方法。伪随机序列的生成方法可以为:S1,分别获取N个第一初始数据和N个第二初始数据;N为大于3的整数;S2,根据所述N个第一初始数据,基于第一递推公式,计算N个第一数据,并将所述N个第一数据作为第一移位寄存器的初始数据;S3,根据所述N个第二初始数据,基于第二递推公式,计算N个第二数据,并将所述N个第二数据作为第二移位寄存器的初始数据;S4,根据所述第一移位寄存器的初始数据和所述第二移位寄存器的初始数据,生成所述伪随机序列。
综上,本发明实施例提供了一种伪随机序列的生成方法,根据N个第一初始数据和N个第二初始数据,分别计算N个第一数据和N个第二数据,并分别作为第一移位寄存器的初始数据和第二移位寄存器的初始数据。根据第一移位寄存器和第二移位寄存器的初始数据可通过一个时钟周期生成伪随机序列中的第一个数据,并且每一个时钟周期产生伪随机序列中的一个数据,最终生成伪随机序列。生成伪随机序列中的第一个数据只需一个时钟周期。避免了通过第一移位寄存器和第二移位寄存器,直接根据N个第一初始数据和N个第二初始数据,经过指定数量的时钟周期后才能得到伪随机序列的第一个数据。生成伪随机序列的第一个数据的过程中,不需要进行迭代,只需通过一个时钟周期即可完成,大大提高了生成伪随机序列的速度,缩短了生成时间。同时,通过第一递归公式和第二递归公式可增加每两次递归之间的间隔,即减小递归次数,从而使递归深度成指数下降,进而使计算复杂度接近于线性,进一步提高了生成伪随机序列的速度,缩短了生成时间。
最后,本发明的方法仅为较佳的实施方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (7)
1.一种伪随机序列的生成方法,其特征在于,包括:
S1,分别获取N个第一初始数据和N个第二初始数据;N为大于3的整数;
S2,根据所述N个第一初始数据,基于第一递推公式,计算N个第一数据,并将所述N个第一数据作为第一移位寄存器的初始数据;
S3,根据所述N个第二初始数据,基于第二递推公式,计算N个第二数据,并将所述N个第二数据作为第二移位寄存器的初始数据;
S4,根据所述第一移位寄存器的初始数据和所述第二移位寄存器的初始数据,生成所述伪随机序列;
所述第一递推公式如下:
所述第二递推公式如下:
2.根据权利要求1所述的生成方法,其特征在于,S2具体包括:
基于第一递推公式,通过所述N个第一初始数据中若干个第一初始数据对所述N个第一数据中每一个第一数据进行表示,并计算所述N个第一数据。
3.根据权利要求2所述的生成方法,其特征在于,所述第一递推公式通过如下公式迭代计算得到:
x1(n+N)=[x1(n+3)+x1(n)]mod2
其中,x1(n+N)为第一子序列x1中第n+N+1个数据,且所述x1中的前N个数据x1(0)~x1(N-1)为所述N个第一初始数据,n≥0。
4.根据权利要求2所述的生成方法,其特征在于,S3具体包括:
基于第二递推公式,通过所述N个第二初始数据中若干个第二初始数据对所述N个第二数据中每一个第二数据进行表示,并计算所述N个第二数据。
5.根据权利要求4所述的生成方法,其特征在于,所述第二递推公式通过如下公式迭代计算得到:
x2(n+N)=[x2(n+3)+x2(n+2)+x2(n+1)+x2(n)]mod2
其中,x2(n+N)为第二子序列x2中第n+N+1个数据,且所述x2中的前N个数据x2(0)~x2(N-1)为所述N个第二初始数据,n≥0。
6.一种伪随机序列的生成设备,其特征在于,包括:
至少一个处理器;以及与所述处理器通信连接的至少一个存储器,其中:
所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令以执行如权利要求1至5任一所述的生成方法。
7.一种非暂态计算机可读存储介质,其特征在于,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行如权利要求1至5任一所述的生成方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710657524.1A CN109375897B (zh) | 2017-08-03 | 2017-08-03 | 伪随机序列的生成方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710657524.1A CN109375897B (zh) | 2017-08-03 | 2017-08-03 | 伪随机序列的生成方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109375897A CN109375897A (zh) | 2019-02-22 |
CN109375897B true CN109375897B (zh) | 2021-03-26 |
Family
ID=65404094
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710657524.1A Expired - Fee Related CN109375897B (zh) | 2017-08-03 | 2017-08-03 | 伪随机序列的生成方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109375897B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112019324B (zh) * | 2019-05-31 | 2023-08-01 | ***通信有限公司研究院 | 伪随机序列初始相位的生成方法、装置及通信设备 |
CN111694546B (zh) * | 2020-06-12 | 2021-07-06 | 成都海光集成电路设计有限公司 | 伪随机二进制序列码生成方法以及装置 |
CN111813374A (zh) * | 2020-07-01 | 2020-10-23 | 浙江三维利普维网络有限公司 | 基于dsp的伪随机序列的生成方法和装置、存储介质 |
CN115223065B (zh) * | 2022-07-25 | 2023-04-07 | 中国人民解放军陆军航空兵学院 | 一种基于高精度定位复盘分析空突地面装备机动能力的方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101071455B1 (ko) * | 2008-12-16 | 2011-10-10 | 한국전자통신연구원 | 시퀀스 지연 및 고속동작이 가능한 골드 코드 생성 장치 |
JP2011097545A (ja) * | 2009-11-02 | 2011-05-12 | Lyde:Llc | 1/fゆらぎ信号発生回路 |
CN103812596B (zh) * | 2012-11-09 | 2017-07-04 | 联芯科技有限公司 | 伪随机序列的生成方法和装置 |
CN105262557B (zh) * | 2015-09-07 | 2019-02-01 | 东南大学 | Lte***中一种伪随机序列的生成方法 |
CN105656620A (zh) * | 2016-02-19 | 2016-06-08 | 上海果路交通科技有限公司 | 一种伪随机序列生成方法 |
-
2017
- 2017-08-03 CN CN201710657524.1A patent/CN109375897B/zh not_active Expired - Fee Related
Non-Patent Citations (1)
Title |
---|
An improved implementation method of the gold sequence generator;Soo Yun Hwang等;《2008 IEEE International Symposium on Consumer Electronics》;IEEE;20080709;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN109375897A (zh) | 2019-02-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109375897B (zh) | 伪随机序列的生成方法 | |
US20120030548A1 (en) | Method and device for implementing cyclic redundancy check codes | |
Von Maurich et al. | Towards side-channel resistant implementations of QC-MDPC McEliece encryption on constrained devices | |
US8880574B2 (en) | State machine and generator for generating a description of a state machine feedback function | |
CN104158557A (zh) | Gold序列参数估计方法 | |
CN105262557A (zh) | Lte***中一种伪随机序列的生成方法 | |
Condo et al. | Pseudo‐random Gaussian distribution through optimised LFSR permutations | |
Massolino et al. | Optimized and scalable co-processor for McEliece with binary Goppa codes | |
CN106354475A (zh) | 高性能随机数发生方法及发生器 | |
Michaels | Improved RNS-based PRNGs | |
CN112579045A (zh) | 伪随机序列的生成方法、装置及存储介质 | |
RU2577588C1 (ru) | Способ и устройство для формирования кода скремблирования | |
CN108809323B (zh) | 循环冗余校验码的生成方法和装置 | |
EP3817251B1 (en) | Data processing method, device, and computer-readable storage medium | |
CN114553386B (zh) | 一种序列生成方法及装置、计算机可读存储介质 | |
US20090254333A1 (en) | LFSR Emulation | |
Ma et al. | A pseudo-random sequence generation scheme based on RNS and permutation polynomials | |
Michaels et al. | PRNG sequence combination techniques via Galois extension fields | |
Zhang et al. | PN code acquisition using belief propagation with adaptive parity check matrix | |
CN112764713B (zh) | 随机数的生成方法和装置 | |
TWI387921B (zh) | 利用中央極限定理之常態分佈亂數產生器及其亂數產生方法 | |
CN110457008B (zh) | m序列生成方法、装置及存储介质 | |
CN113922913B (zh) | 一种lte***的gold扰码序列生成方法、***及设备 | |
CN107846272B (zh) | 一种Golden序列的快速生成装置及方法 | |
WO2022022311A1 (zh) | 产生伪随机序列的方法和装置、电子设备、存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20210326 |