线性反馈移位寄存器 LFSR
参考连接:添加链接描述
运算基础:模2运算;
线性反馈移位寄存器用于产生可重复的伪随机序列PRBS,该电路由n级除法器和异或门组成;
在k阶段,寄存器存在初值,(Rn-1, … R1, R0),称为seed
在k+1阶段,寄存器的值变为:
*k+1阶段
Rn-1 = Rn-2
Rn-2 = Rn-3
…
R0 = f(R1, R2, …, Rn-1) = (Rn-1gn)⊕(Rn-2gn-1)⊕…⊕(R0*g1)g0
也就是说寄存器存储的结果 (Rn-1, … R1, R0) 每个时钟周期改变一次,其中R1-Rn-1是位移产生,R0是线性反馈函数 f(Rn-1, … R1, R0) 产生,所以称为线性反馈移位寄存器。
线性反馈移位寄存器总是假定g0,gn为1,否则 (Rn-1, … R1, R0) 将在n个周期后恒定为0。
抽头和特征多项式:
f(Rn-1, … R1, R0) = (Rn-1gn)⊕(Rn-2gn-1)⊕…⊕(R0*g1)*g0 可以用多项式表示为:
G(x)=gnxn+gn-1xn-1+…+g1x+g0
G(x)称为LFSR的特征多项式
影响线性反馈寄存器下一个状态的 gi = 0 或1叫做抽头,抽头的设定会决定线性反馈寄存器存储的结果 (Rn-1, … R1, R0) 的变化规律。
通常N位的线性反馈寄存器最多有 2N 个不同的状态。但是如果出现初值为N个0的情况,线性反馈寄存器陷入死循环,要排除掉。所以N位线性反馈寄存器能产生最长的不重复序列为 2N-1。
抽头的位置会影响LSFR的最大输出状态的个数
例如:3位的抽头为(g3, g2, g1, g0) = (1, 1, 0, 1)会产生7个状态(多项式对应为:G(x)=x3+x2+1)
若抽头为(g3, g2, g1, g0) = (1, 0, 1, 1),会产生2个状态(多项式对应为:x3+x+1)。
使最大输出序列长度为2N-1的不可约多项式称为LFSR的本原多项式,本原多项式产生的寄存器序列为M序列。
当N位下,本原多项式不是唯一的。下表为不同的位下的本原多项式:
3阶线性反馈移位寄存器实例:
上图为3阶线性反馈移位寄存器
抽头为(g3, g2, g1, g0) = (1, 1, 0, 1)
多项式对应为:G(x)=x3+x2+1
线性反馈函数R0 = f(R2, R1, R0) = R1⊕R2
初始值为SEED = (R2, R1, R0) = (1, 0, 1)
3阶线性反馈移位寄存器周期为7:
k周期 (R2, R1, R0)
0 (1, 0, 1)
1 (0, 1, 1)
2 (1, 1, 1)
3 (1, 1, 0)
4 (1, 0, 0)
5 (0, 0, 1)
6 (0, 1, 0)
7 (1, 0, 1)
通过设定seed和抽头,LFSR最多可产生2N-1个序列,这些序列之间看似是随机产生的,之所以称之为伪随机,是因为这些数是通过具体的关系式产生,最终会实现循环。
上代码:
LSFR_3
`timescale 1ns/1ps
module LSFR_3(//input wire clk,//input wire rstn,//output wire [2:0] o//{r2,1,r0}
);
reg clk;
reg rstn;
reg [2:0] o_out;parameter perd = 20;
initial beginrstn=1;clk=1;#20 rstn =0;#20 rstn =1;
endalways #(perd/2) clk =~clk;always @(posedge clk or negedge rstn) beginif(~rstn) begino_out<=3'b101;endelse begin//o_out<={r1,r0,r1^r2};o_out<={o_out[1],o_out[0],o_out[1]^o_out[2]};endendendmodule
测试和计算一样;
线性反馈移位寄存器 LFSR相关推荐
- 四类九种移位寄存器总结(循环(左、右、双向)移位寄存器、逻辑和算术移位寄存器、串并转换移位寄存器、线性反馈移位寄存器LFSR|verilog代码|Testbench|仿真结果)
移位寄存器总结 一.前言 二.简单循环左移/右移/双向移位寄存器 2.1 简单循环左移/右移/双向移位寄存器 2.2 verilog代码 2.3 Testbench 2.4 仿真结果 三.逻辑移位与算 ...
- 线性反馈移位寄存器LFSR(斐波那契LFSR(多到一型)和伽罗瓦LFSR(一到多型)|verilog代码|Testbench|仿真结果)
线性反馈移位寄存器LFSR 一.前言 二.LFSR简介 三.斐波那契LFSR和伽罗瓦LFSR 3.1 斐波那契LFSR 3.1.1 斐波那契LFSR 3.1.2 verilog代码 3.1.3 Tes ...
- 线性反馈移位寄存器(LFSR) ______FPGA产生基于LFSR的伪随机数
FPGA产生基于LFSR的伪随机数 https://blog.csdn.net/qq_34070723/article/details/89736772 1.概念 通过一定的算法对事先选定的随机种子( ...
- 线性反馈移位寄存器-LFSR
LFSR badmonkey的博客 最开始了解到LFSR的时候是在学习MT19937伪随机数生成器的时候,当时也是初步了解.也没有用代码实现过,最近做了几道相关的题,在这里记录一下. 原理 证明过程不 ...
- 序列密码体制(python随机数密码,RC4,线性反馈移位寄存器
目录 概念: Vernam密码技术(序列密码的起源 伪随机数 线性反馈移位寄存器: 线性反馈移位寄存器LFSR 概念: 明文按一定长度分组后表示成一个序列,称为明文流.加密时,由种子密钥通过密钥流生产 ...
- 流密码(一)同步流密码、自同步流密码以及线性反馈移位寄存器
正式进入密码学领域,发现密码学更像是一门数学,主要是对数论.近世代数的简单应用以及运用在算法中,常常结合模运算以及数字逻辑运算. 流密码的第一部分主要是比较了同步流密码和自同步流密码,其中自同步流密码 ...
- 线性反馈移位寄存器(LSFR)
线性反馈移位寄存器(LSFR) 流密码的流密钥产生器可以通过线性驱动和非线性组合两部分来实现.而线性驱动部分可以由线性反馈移位寄存器(LFSR)来实现. 线性反馈移位寄存器(LFSR):通常由移位寄存 ...
- 【数字IC/FPGA】线性反馈移位寄存器
线性反馈移位寄存器 LFSR用于产生可重复的伪随机序列PRBS,该电路有n级触发器和一些异或门组成,如下图所示.它和移位寄存器最大的区别就是他有反馈. 其中,gng_ngn为反馈系数,取值只能为0或 ...
- HDLBits 系列(21)LFSR(线性反馈移位寄存器)
目录 5 bit LFSR 3 bit LFSR 32 bit LFSR 5 bit LFSR A linear feedback shift register is a shift register ...
- quartus仿真6:74194构建线性反馈移位寄存器计数器LFSR
扭环形计数器具有8个有效状态,仍然有8个无效状态.进一步提高移位寄存器构建的计数器的有效状态数,可采用线性反馈移位寄存器计数器(Linear Feedback Shift-Register Count ...
最新文章
- java.lang.UnsupportedClassVersionError: Bad version number in .class file 解决方法
- (转)NSIS使用心得
- Halcon :畸变矫正与标定(2)
- CDH-5.7.0:基于Parcels方式离线安装配置
- ie compatibility
- Python办公自动化--Word、Excel、PDF
- 蓝桥杯2017年第八届C/C++省赛C组第一题-贪吃蛇长度
- linux 快捷键回复禁用,Linux 禁用Ctrl+Alt+Delete重启服务器操作
- linux编写python脚本_在ubuntu linux 中编写一个自己的python脚本
- dsoframer java_DSOFramer的使用
- 【Excel】按百分比随机抽取excel中数据
- 我的007之skyfall歌词鉴赏及翻译
- 汽车颗粒物排放对环境和健康的影响及政府监管策略
- Java opencv tld_TLD-(windows) tld c++版可运行版本,亲测. tld OpenCV 252万源代码下载- www.pudn.com...
- python编程趣味试题_Python趣味编程-中国大学mooc-试题题目及答案
- 如何成为名副其实的测试架构师?
- 【微信】微信小程序前后端数据请求示例
- 微信小程序的表格table
- Winsock属性、方法介绍
- html搜索栏热搜效果,CSS3实战开发:百度新闻热搜词特效实战开发_html/css_WEB-ITnose...