【数字IC/FPGA】线性反馈移位寄存器

线性反馈移位寄存器

LFSR用于产生可重复的伪随机序列PRBS,该电路有n级触发器和一些异或门组成,如下图所示。它和移位寄存器最大的区别就是他有反馈
在这里插入图片描述
其中, g n g_n gn为反馈系数,取值只能为0或1,取为0时表明不存在该反馈之路,取为1时表明存在该反馈之路;这里的反馈系数决定了产生随机数的算法的不同。用反馈函数表示成 y = a 0 x 0 + a 1 x + a 2 x 2 . . . . . . . y=a_0x^0+a_1x+a_2x^2....... y=a0x0+a1x+a2x2.......反馈函数为线性的叫线性移位反馈序列,否则叫非线性反馈移位序列。
LFSR的初始值被称为伪随机序列的种子,影响下一个状态的比特位叫做抽头。LFSR的触发器编号一般从1开始,抽头取值范围是 1 到 2 n − 1 1到2^n-1 12n1。抽头序列可以用来描述该LFSR的反馈多项式。由n个触发器构成的LFSR电路可以产生一个周期为 2 n − 1 2^n-1 2n1的序列。理论表明,要使LFSR得到最长的周期,这个抽头序列构成的多项式加1就是其反馈多项式,必须是一个本原多项式,也就是说这个多项式不可约

LSFR的分类

目前常用的LFSR电路可分为斐波那契LFSR伽罗瓦LFSR

斐波那契LFSR

斐波那契LFSR也可以称为多到一型LFSR,即抽头序列对应bit位置的多个触发器的输出通过异或逻辑来驱动一个触发器的输入。如下图所示
在这里插入图片描述

伽罗瓦LFSR

伽罗瓦LFSR和斐波那契刚好相反,它是一到多型的LFSR,即最后一个触发器的输出通过与抽头序列对应位置触发器前一级触发器的输出异或逻辑驱动多个抽头序列对应位置触发器的输入。如下图所示
在这里插入图片描述

代码实现

`timescale 1ns / 1ps
//
// Company: 
// Engineer: 
// 
// Create Date: 2022/03/09 15:40:06
// Design Name: 
// Module Name: LSFR1
// Project Name: 
// Target Devices: 
// Tool Versions: 
// Description: 
// 
// Dependencies: 
// 
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
// 
//


module LSFR(
input logic clk,
input logic rst_n,
output logic [3:0] o1,
output logic [2:0] o2
    );
always_ff@(posedge clk,negedge rst_n)
if(~rst_n)
    o1<=4'b1001;
else
begin
    o1<={o1[2:0],o1[3]^o1[2]};
end
//
always_ff@(posedge clk,negedge rst_n)
if(~rst_n)
    o2<=3'b001;
else
begin
    o2<={o2[1],o2[2]^o2[0],o2[2]};
end
endmodule

仿真结果

在这里插入图片描述

总结

一到多型的伽罗瓦LFSR具有更高的速度,因为它的两个触发器之间仅使用一个异或门,关键路径比较短,可以达到更高的时钟频率
需要注意的是,应避免寄存器进入全为0的禁止态,因为一旦进入全零状态,LSFR的状态永远也无法发生改变了
预防办法:
(1)将寄存器复位到某个允许的状态
(2)用额外的电路让寄存器能够从禁止状态自动进入允许状态

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FPGA硅农

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值