非线性反馈移位寄存器(NLFSR, Nonlinear feedback shift register)是相对于线性反馈移位暂存器而言的。
简介
非线性反馈移位寄存器(NLFSR, Nonlinear feedback shift register)是相对于线性反馈移位暂存器而言的。它们的大体电路逻辑相似,仅仅在于NLFSR的反馈逻辑是由异或门和与门构成的,而LFSR中仅存在异或门。从代数表达式来看,异或门是加法(+),而与门是乘法(*)。由加法构成的反馈逻辑,其反馈表达式的最高项次数不会增长,而由乘法参与的反馈表达式项次数会增长、并可能超过定义多项式的最高项。
线性反馈移位寄存器
线性反馈移位寄存器(
英语:Linear feedback shift register,LFSR)是指给定前一状态的输出,将该输出的
线性函数再用作输入的
移位寄存器。异或运算是最常见的单比特线性函数:对寄存器的某些位进行异或操作后作为输入,再对寄存器中的各比特进行整体移位。
赋给寄存器的初始值叫做“种子”,因为线性反馈移位寄存器的运算是确定性的,所以,由寄存器所生成的数据流完全决定于寄存器当时或者之前的状态。而且,由于寄存器的状态是有限的,它最终肯定会是一个重复的循环。然而,通过
本原多项式,线性反馈移位寄存器可以生成看起来是随机的且循环周期非常长的序列。
线性反馈移位寄存器的应用包括生成
伪随机数,
伪随机噪声序列,快速数字计数器,还有
扰频器。线性反馈移位寄存器在硬件和软件方面的应用都非常得普遍。
循环冗余校验中用于快速校验传输错误的数学原理,就与线性反馈移位寄存器密切相关。
Fibonacci LFSRs
图1中白色数字为抽头,与表中本原多项式相对应,则寄存器的循环周期为最大,65535(不包括全零状态)。图1中的状态为 0xACE1 (十六进制) 下一个状态是 0x5670。
影响下一个状态的比特位叫做抽头。图1中,抽头序列为[16,14,13,11]。
LFSR最右端的比特为输出比特。抽头依次与输出比特进行异或运算,然后反馈回最左端的位。最右端位置所生成的序列被称为输出流。
有LFSR或者基于同或门的LFSR生成的序列可以被认为是同
格雷码或者自然二进制码同样有效的二进制序列。
在LFSR中,抽头的设定可以用有限域算数中模2的多项式来表示。这就意味着,多项式中的所有系数必须是“1”或者“0”。这个多项式被称作回授多项式或特征多项式。抽头为在第16,14,13,11个比特,则相应的特征多项式为:
多项式中常数“1”并不代表某一个抽头,它所指的是一个比特位的输入(例如x,等效为 1 )。多项式中的指数代表从左至右的抽头位。第一个和最后一个比特一般相应的是输入和输出位。
当且仅当相应的回授多项式是
本原多项式时,LFSR才能达到最大长度。这表示以下条件是必须的:
生成最长LFSRs的本原多项式表可通过下部的链接找到。 这类型LFSR也被成为标准,多对一或外部异或门的LFSR。下一节将会介绍Galois型的LFSR。
Galois LFSRs
以法国数学家
埃瓦里斯特·伽罗瓦命名,是LFSRs的Galois型结构。
参见