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

本文深入探讨线性反馈移位寄存器(LFSR)的原理,包括伽罗瓦和斐波那契两种类型,以及如何通过选择反馈系数和抽头位置来生成随机数序列。介绍了LFSR在伪随机数生成、数据加密和CRC校验中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

线性反馈移位寄存器(LFSR):通常由移位寄存器和异或门逻辑组成。其主要应用在:伪随机数,伪噪声序列,计数器,BIST,数据的加密和CRC校验等。

线性反馈移位寄存器(LFSR)主要包括两大类

  • 伽罗瓦(内部LFSR),又称one-to-many
    在这里插入图片描述
  • 斐波那契(外部LFSR),又称many-to-one
    在这里插入图片描述
  • 其中,gn为反馈系数,取值只能为0或1,取为0时表明不存在该反馈之路,取为1时表明存在该反馈之路;这里的反馈系数决定了产生随机数的算法的不同。用反馈函数表示成
    y = a0x^0 + a1x + a2x^2…,反馈函数为线性的叫线性移位反馈序列,否则叫非线性反馈移位序列。
  • Q1、Q2、Q3、Qn为LFSR的输出,M(x)是输入的码字多项式,如M(x)=x^4+ x^1+ 1,表示输入端的输入顺序为11001,同样,LFSR的结构也可以表示为多项式G(x),称为生成多项式:
    G(x) = gn*x^n+ …+g1*x^1+ g0

抽头选择与状态个数最大

  • 影响线性反馈寄存器下一个状态的比特位叫做抽头,选取的“某些位”构成的序列叫做抽头序列,理论表明,要使LFSR得到最长的周期,这个抽头序列构成的多项式加1必须是一个本原多项式(所有系数的最大公因数为1的多项式),也就是说这个多项式不可约,如:
    f(x) = x^4 + x + 1
  • n个D触发器最多可以提供2^(n-1)个状态(不包括全0的状态),为了保证这些状态没有重复,gn的选择必须满足一定的条件。下面以n=3,g0=1,g1=1,g2=0,g3=1为例,说明LFSR的特性,具有该参数的LFSR结构如下图:
    在这里插入图片描述

假设在开始时,D2D1D0=111(seed),那么,当时钟到来时,有:
D2=D1_OUT=1;
D1=D0_OUT^D2_OUT=0;
D0=D2_OUT=1;
即D2D1D0=101;同理,又一个时钟到来时,可得D2D1D0=001.……

画出状态转移图如下:
在这里插入图片描述

从图可以看出,正好有2^3-1=7个状态,不包括全0;
如果您理解了上图,至少可以得到三条结论:
1)初始状态是由SEED提供的;
2)当反馈系数不同时,得到的状态转移图也不同;必须保证gn===1,否则哪来的反馈?
3)D触发器的个数越多,产生的状态就越多,也就越“随机”;

### LSFR 实现概述 线性反馈移位寄存器 (LSFR) 是一种用于生成伪随机序列的重要工具,在通信系统、加密算法等领域有着广泛应用。通过特定的多项式配置,可以实现不同长度和特性的序列生成。 #### 3.1 移位寄存器基本概念 移位寄存器是一种能够存储多位数据并按顺序逐位移动的数据结构。在线性反馈移位寄存器中,除了普通的移位操作外,还加入了基于异或运算(XOR) 的反馈机制来决定新输入位的状态[^3]。 #### 3.2 Verilog 中的 LSFR 设计实例 下面展示了一个简单的五比特宽度的线性反馈移位寄存器的设计案例: ```verilog module lfsr #(parameter WIDTH=5)( input wire clk, input wire rst_n, output reg [WIDTH-1:0] q); always @(posedge clk or negedge rst_n) if (!rst_n) q <= {WIDTH{1'b1}}; // 初始化为全'1' else begin case(WIDTH) 5: q <= {q[WIDTH-2:0], ^(q & 5'b10011)}; // 使用给定的特征多项式 default: ; endcase end endmodule ``` 此模块定义了一个参数化的 `lfsr` 组件,其中包含了时钟信号 (`clk`) 和复位信号(`rst_n`) 输入端口以及输出向量 `q` 。当检测到上升沿触发事件或者低电平复位脉冲到来时,内部状态会相应更新。特别地,在正常工作模式下,新的最低有效位由当前寄存器内容与指定掩码(此处为二进制表示形式下的 "10011") 进行按位与之后再求异或得到的结果填充而成。 #### 3.3 CRC 计算中的应用 循环冗余校验(CRC) 是另一种常见的利用 LSFR 技术的应用场景之一。对于串行传输而言,可以通过构建相应的硬件电路来进行高效而可靠的错误检测。具体来说,就是按照既定的标准选取合适的生成多项式,并据此搭建对应的 LSFR 结构完成数据帧尾部附加检验字段的过程[^4]。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值