伪随机序列:LFSR Sequence、m-Sequence和Gold Code/Sequence

线性反馈移位寄存器(Linear Feedback Shift Register,LFSR)

LFSR是一种移位寄存器电路,其中间步骤的两个或多个输出的线性组合会反馈到输入值。这就是为什么LFSR被称为线性反馈移位寄存器,如下图1所示 [1]。从图1中可以看出,LFSR主要由作为寄存器的D触发器和作为反馈运算的异或门组成。

在这里插入图片描述

图1. LFSR示例 [1]

 

更一般地,一个 n n n阶的LFSR由 n n n个D触发器和若干个异或门组成,如图2所示。其中, g n g_n gn反馈系数,其值只能为0或1。1表示存在反馈回路,0表示不存在反馈回路,且 g 0 g_{0} g0总为1。以上图1中LFSR为例,其反馈系数为 g 0 = 1 g_0=1 g0=1 g 1 = 0 g_1=0 g1=0 g 2 = 0 g_2=0 g2=0 g 3 = 1 g_3=1 g3=1 g 4 = 1 g_4=1 g4=1。反馈系数决定了哪些中间D触发器的比特会反馈到输入位( D 1 D_1 D1),也即决定了随机数的产生算法。LFSR最右边是输出位( D n D_n Dn),输出的序列相应称为LFSR序列 X 0 , X 1 , ⋯ X_0,X_1,\cdots X0,X1,)。LFSR的工作流程也很简单,每次时钟信号触发,D触发器内寄存的数据会整体位移一位( D 1 → D 2 D_1 \rightarrow D_2 D1D2 D 2 → D 3 D_2 \rightarrow D_3 D2D3,…, D n − 1 → D n D_{n-1} \rightarrow D_n Dn1Dn),同时一些中间结果的线性组合会反馈到输入位 D 1 D_1 D1,而输出位 D n D_n Dn会输出 D n D_n Dn寄存的比特值 X k X_k Xk

在这里插入图片描述

图2. n阶LFSR示例 [2]

 

更深入点,我们看一下如何数学地描述LFSR序列 [3]:
X n + k = ( ∑ i = 0 n − 1 g n − i X k + i ) mod  2 ,   k = 0 , 1 , ⋯ (1) X_{n+k} = \left( \sum \limits_{i=0}^{n-1} g_{n-i} X_{k+i} \right) \text{mod}~2,~k=0,1,\cdots \tag{1} Xn+k=(i=0n1gniXk+i)mod 2, k=0,1,(1)

我发现,这里很多文章都搞错了,或者搞不明白,所以我一开始也是被绕晕了,因为看了几份资料,说法不一。还好我死磕下去,按照自己理解和逻辑给理顺了。比如[2]中,将LFSR序列标号弄反了,虽然不能说是错误,但是不严谨,所以我将图2做了修改。

搞清楚上面这个式子,接下来我们再说一下如何去“表示”或“读”一个LFSR。关于这点,我看了一圈,很少有说明白的,甚至大名鼎鼎的sharetechnote都写错了。我这里总结大概有以下几种方法:

(1)抽头序列

什么叫抽头?维基百科的解释是“影响下一个状态的比特位叫做抽头”[4]。我们在这里将抽头形象(但是可能不严谨)地理解为反馈系数(但实际上 g 0 g_0 g0并不表示一个比特位),所以抽头序列就是反馈系数的序列。

以图1为例,图1中的LFSR对应的抽头序列是[1 0 0 1 1](注意是按照递增的顺序,即序列从左往右依次对应 g 0 ,   g 1 ,   ⋯   ,   g n g_0,~g_1,~\cdots,~g_n g0, g1, , gn)。

(2)特征多项式

以图1为例,图1中的LFSR对应的特征多项式为 f ( x ) = x 4 + x 3 + 1 f(x) = x^4+x^3+1 f(x)=x4+x3+1,或者更简单的表示为[4 3 0](1相当于 x 0 x^0 x0)。我们只要记住D触发器或者反馈系数是按照从左往右,序号依次递增的方式来标号即可(所以我又在图上标了D触发器的序号,这样帮助理解),这样就很容易写出LFSR对应的特征多项式,或者根据特征多项式画出LFSR。

在这里插入图片描述

图3. LFSR的表示 [1]

 

(3)递归公式

以图1为例,图1中的LFSR对应的递归公式为
X k + 4 = ( X k + 1 + X k ) mod  2 ,   k = 0 , 1 , ⋯ (2) X_{k+4} = \left(X_{k+1}+X_{k}\right) \text{mod}~2,~k=0,1,\cdots \tag{2} Xk+4=(Xk+1+Xk)mod 2, k=0,1,(2)
这个对照公式(1)或者图1也很好理解,只要记住图中的输出序列的序号,是从左往右依次递减的,这点和上面的反馈系数和D寄存器的序号规则正好相反。我们从右往左,将图最右边标上 X k X_{k} Xk,再依次类推。

最后,我们说一下LFSR的性质 [1]:

  • 如果初始状态相同,那么我们将始终得到相同的输出序列(即输出序列是确定的)。
  • 输出序列趋向于随机序列(伪随机)。
  • 经过一定次数的迭代后,我们将得到与初始状态相同的状态值(最大重复间隔可由 2 n − 1 \mathbf{2^{n}-1} 2n1计算得到,其中 n n n为D触发器的数目,这里减去的1表示全0态)。

下图4给出了图1中LFSR在初始状态为 [ 1 , 1 , 1 , 1 ] [1,1,1,1] [1,1,1,1]的情况下,状态变化和输出序列计算的整个过程。

在这里插入图片描述

图4. LFSR序列计算过程示例 [1]

注释
这里只是概要形象地解释了通信中常遇到的LFSR,实际的LFSR概念要更宽泛,也更复杂。比如,上述介绍的LFSR中,异或门可以替换为同或门 [4];LFSR一般分外接LFSR(即IE型LFSR或者Fibonacci LFSR)和内接LFSR(EE型LFSR或者Galois LFSR)[2] [4],但是我们在此不再深入。


最大长度序列(Maximum Length Sequence,MLS)

MLS也叫m-Sequence,其是LFSR序列的一种。m-Sequence区别于一般LFSR序列的地方在于,在D触发器数目相同的情况下,m-Sequence拥有最长的非重复序列,即其重复间隔为 2 n − 1 \mathbf{2^{n}-1} 2n1 [2]。

如果一个LFSR序列为MLS,那么其对应的特征多项式必须是一个本原多项式,即为不可约多项式必要不充分条件为:

  • 抽头数必须为偶数。
  • 抽头之间不能成对出现,必须是互质的。

一些比较典型的MLS如下表1中所示。

表1. 一些典型的m-Sequence [1]

在这里插入图片描述
 

Gold Code

Gold Code是以Robert Gold命名的。Gold Code是指一组特殊的二进制随机(伪随机)序列,该组序列中每个成员/序列之间的相关性很小。由于这种特性(成员序列之间的相关性小),Gold Code被广泛地用作各种无线通信系统的扰码 [6]。

我们可以非常简单地利用m-Sequence来生成Gold Code:选择两个m-Sequence,且这两个序列的移位寄存器的数量相同,然后将这2个序列按位进行异或操作,就会产生Gold Code。下图5给出了LTE中常见的31阶Gold Code生成器电路,其常用于信道编码的加扰、参考信号、循环冗余校验(CRC)。

在这里插入图片描述

图5. LTE中使用的31阶Gold Code生成器电路 [7]

 

上面图5中的31阶Gold Code生成器电路输出的伪随机序列对应的就是下面的这个式子。这个式子我们在通信中,包括LTE和5G NR中会经常碰到,我们会在相应的文章中再具体解释。

在这里插入图片描述

 

Reference

[1]: http://www.sharetechnote.com/html/Handbook_Communication_LFSR.html
[2]: http://blog.sina.com.cn/s/blog_62d9edac01015lsd.html
[3]: https://wenku.baidu.com/view/38a4fb1aff00bed5b9f31d7a.htm
[4]: https://bk.tw.lvfukeji.com/wiki/LFSR
[5]: http://www.sharetechnote.com/html/Handbook_Communication_mSequence.html
[6]: http://www.sharetechnote.com/html/Handbook_Communication_GoldCode.html
[7]: LTE - The UMTS Long Term Evolution: From Theory to Practice, 2nd Edition
  • 12
    点赞
  • 54
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值