线性反馈移位寄存器可以通过斐波纳契(Fibonacci)、伽罗瓦(Galois)两种方式实现。两种方式表现为外部反馈和内部反馈。
图1、Fibonacci implementationof LFSR.
图2、Galois implementation ofLFSR. 仔细观察可以发现两种方式的反馈连线标号gm、gm-1、、、g0相反,即伽罗瓦权重的顺序与斐波那契权重的顺序相反。 给定相同的反馈权重,两个LFSR实现将产生相同的序列。 然而,两个实现的初始状态必须不同于两个序列具有相同的相位(即,相对于彼此的零位偏移)。 斐波纳契形式的初始状态称为初始填充或初始向量,该初始填充包括从发生器输出的前m位。 必须适当调整Galois发生器的初始状态,以获得其前m位的等效输出。 (在数学文献中,任一形式的初始状态称为种子) LFSR发生器产生所谓的线性递归序列(LRS),因为所有的操作是线性的。 一般来说,重复发生之前的序列长度取决于反馈抽头和初始状态的两个因素。 任何给定尺寸m(寄存器数量)的LFSR能够在N =2m-1移位期间产生每个可能的状态,但只有在选择了适当的反馈分接头时才会这样做。 例如,这样一个八阶段的LFSR将包含255个移位之后的1和0的每个可能的组合。这样的序列被称为最大长度序列,最大序列或较不常见的最大长度序列。 它通常缩写为m序列。 Galois场数学被用于导出m序列反馈抽头。 任何LFSR可以表示为变量X的多项式,称为生成多项式:
系数gi表示如图1和图2所示的抽头权重,对于连接(反馈)的抽头,系数gi为1,否则为0。 多项式的序数m表示LFSR级数。 一个例子,多项式表示的生成多项式 G(X) = X3 +X1 + 1 表示有反馈抽头3和1的一个LFSR,记为[ 3, 1 ]:
生成多项式中的常数1表示移位寄存器g0的输入连接。
本原多项式: 16位及以下可以MATLAB求,primpoly(m);primpoly(m,'all');
参考文档:http://www.newwaveinstruments.com/resources/articles/m_sequence_linear_feedback_shift_register_lfsr.htm
个人理解有限,望大牛指正,再者希望对后来者有所帮助。
|