首页 > 其他分享 >verilog随机序列发生器及很久不写verilog回忆起来的一些tips

verilog随机序列发生器及很久不写verilog回忆起来的一些tips

时间:2022-08-16 11:33:40浏览次数:53  
标签:抽头 触发器 LFSR 寄存器 发生器 verilog 多项式 序列 tips

今天写了一个随机序列发生器,实际上是伪随机数,使用了LFSR(line feedback shift register)

LFSR

将移位寄存器中的值取出,做适当的运算,再返回到序列中作为新的输入,就可以构造出简单的伪随机数序列发生器,之所以是伪随机数序列,是因为这些看似无序的随机数实际上是周期性的,不难想到如果有寄存器中存储着n个元素,那么这些寄存器最多就有2^n个状态,而在线性运算下,全0不会转入其他状态,故LFSR序列的最长周期为:2^n-1.
LFSR的初始值被称为伪随机序列的种子,影响下一个状态的比特位叫做抽头。LFSR的触发器编号一般从1开始,抽头取值范围是1到2^n-1。抽头序列可以用来描述该LFSR的反馈多项式。理论表明,要使LFSR得到最长的周期,这个抽头序列构成的多项式加1就是其反馈多项式,必须是一个本原多项式,也就是说这个多项式不可约(即不能写成两个次数较低的多项式之乘积)

常用的本源多项式
x^2+x+1
x^3+x+1
x^4+x+1
x^5+x^2+1
x^6+x+1
x^7+x^3+1
x^8+x^4+x^3+x^2+1
x^9+x^4+1
x^10+x^3+1
x^11+x^2+1

目前常用的LFSR分为斐波那契LFSR和伽罗瓦LFSR
斐波那契LFSR也可以称为多到一型LFSR,即抽头序列对应bit位置的多个触发器的输出通过异或逻辑来驱动一个触发器的输入。
伽罗瓦LFSR和斐波那契刚好相反,它是一到多型的LFSR,即最后一个触发器的输出通过与抽头序列对应位置触发器前一级触发器的输出异或逻辑驱动多个抽头序列对应位置触发器的输入。
虽然这两种电路都产生伪随机序列,但是一到多型的伽罗瓦LFSR具有更高的速度,因为它的两个触发器之间仅使用一个异或门。
应该避免寄存器进入全为0的禁止态,因为全为0的状态是不用的,而且可能会导致在这个状态出不来。
  预防办法:

  (1)想办法给寄存器置位到某个允许的状态

  (2)用额外的电路让寄存器能够从禁止状态自动进入允许状态

tips

标签:抽头,触发器,LFSR,寄存器,发生器,verilog,多项式,序列,tips
From: https://www.cnblogs.com/xing-usetc/p/16588712.html

相关文章

  • gorm tips
    约定的列明typeUserstruct{IDuint//列名是`id`Namestring//列名是`name`Birthdaytime.Time//列名是`birthday`CreatedA......
  • Verilog编译指令
    编译指令编译指令(Compilerdirective)能够让仿真器和综合工具执行一些特殊的操作。特点:以`(重音符号)为前缀从处理位置一直保持有效,除非被其他指令覆盖或者取消`rese......
  • [verilog手撕专题]时钟分频
    时钟分频前言,本专题属于verilog手撕专题中的一节,思维导图如下,其他专题请见导航2^n时钟分频modulediv_4(inputclk,inputrst_n,outputregclk_out)......