1 补充: FPGA产生基于LFSR的伪随机数-德赢Vwin官网 网
0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

补充: FPGA产生基于LFSR的伪随机数

FPGA学习交流 来源:互联网 作者:佚名 2018-06-13 11:21 次阅读

大家好,又到了每日学习的时间了,上一篇《荐读:基于FPGA 的CRC校验码生成器》文中,提到了“要实现这一过程,仍然需要LFSR电路,参看《FPGA产生基于LFSR的伪随机数》中关于该电路特性的介绍”,在这补一篇《FPGA产生基于LFSR的伪随机数》,欢迎大家交流学习。

1.概念
通过一定的算法对事先选定的随机种子(seed)做一定的运算可以得到一组人工生成的周期序列,在这组序列中以相同的概率选取其中一个数字,该数字称作伪随机数,由于所选数字并不具有完全的随机性,但是从实用的角度而言,其随机程度已足够了。这里的“伪”的含义是,由于该随机数是按照一定算法vwin 产生的,其结果是确定的,是可见的,因此并不是真正的随机数。伪随机数的选择是从随机种子开始的,所以为了保证每次得到的伪随机数都足够地“随机”,随机种子的选择就显得非常重要,如果随机种子一样,那么同一个随机数发生器产生的随机数也会一样。

2.由LFSR引出的产生方法
产生伪随机数的方法最常见的是利用一种线性反馈移位寄存器(LFSR),它是由n个D触发器和若干个异或门组成的,如下图:
172436rpfddydydqfssy4b.png


其中,gn为反馈系数,取值只能为0或1,取为0时表明不存在该反馈之路,取为1时表明存在该反馈之路;n个D触发器最多可以提供2^n-1个状态(不包括全0的状态),为了保证这些状态没有重复,gn的选择必须满足一定的条件。下面以n=3,g0=1,g1=1,g2=0,g3=1为例,说明LFSR的特性,具有该参数的LFSR结构如下图:
172437h4v9c2u4l24mfcwl.png

假设在开始时,D2D1D0=111(seed),那么,当时钟到来时,有:

D2=D1_OUT=1;

D1=D0_OUT^D2_OUT=0;

D0=D2_OUT=1;

即D2D1D0=101;同理,又一个时钟到来时,可得D2D1D0=001. ………………

画出状态转移图如下:
172437n8pz2rre8a2aepg9.png


从图可以看出,正好有2^3-1=7个状态,不包括全0;

如果你理解了上图,至少可以得到三条结论:

1)初始状态是由SEED提供的;

2)当反馈系数不同时,得到的状态转移图也不同;必须保证gn===1,否则哪来的反馈?

3)D触发器的个数越多,产生的状态就越多,也就越“随机”;


3.verilog实现

基于以上原理,下面用verilog产生一个n=8,反馈系数为g0g1g2g3g4g5g6g7g8=101110001的伪随机数发生器,它共有2^8=255个状态,该LFSR的结构如下:
172437z10f8ahd4db2hkkt.png

verilog源代码如下:
172438bsww78bz0ozi81iw.png


仿真波形:
172438hzqlfvald91af2r8.png

以1111 1111为种子,load信号置位后,开始在255个状态中循环,可将输出值255、143、111……作为伪随机数。

这篇补充就说到这里,各位,加油。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表德赢Vwin官网 网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1629

    文章

    21729

    浏览量

    602960
收藏 人收藏

    评论

    相关推荐

    FPGA产生随机数发生器分析

    性,但是从实用的角度而言,其随机程度已足够了。这里的的含义是,由于该随机数是按照一定算法模拟产生的,其结果是确定的,是可见的,因此并不是真正的随机
    的头像 发表于 11-21 11:49 3545次阅读
    <b class='flag-5'>FPGA</b><b class='flag-5'>产生</b>中<b class='flag-5'>伪</b><b class='flag-5'>随机数</b>发生器分析

    学习笔记 | 基于FPGA随机数发生器(附代码)

    今天是画师本人第一次和各位大侠见面,执笔绘画FPGA江湖,本人写了篇关于FPGA随机数发生器学习笔记,这里分享给大家,仅供参考。学习笔记 | 基于
    发表于 04-21 19:42

    C语言中随机数产生及性能检验

    系统仿真或加密算法中常需要产生满足一定分布函数的 随机数 ,高级程序设计语言中的库函数采用线性同余法产生一个在[0,32767] 服从均匀分布的
    发表于 07-07 16:35 70次下载

    C语言random函数随机数产生

    由C语言的stalib.h库里面的random函数可以得到一个0-0x7FFFh的随机数,当然,调用随机数函数之前,是要进行种子的筛选的,以当前的时间参数作为种子,可以使得随机数至少
    发表于 08-25 17:56 1.3w次阅读

    C#教程之随机数加密

    C#教程之随机数加密,很好的C#资料,快来学习吧。
    发表于 04-21 09:52 5次下载

    产生随机数

    一个自己写的产生随机数的工程
    发表于 12-01 15:45 13次下载

    为max765x微处理器的随机数生成程序

    扩频通信、安全、加密和调制解调器等应用需要随机数产生。实现一个随机数发生器的最常用的方法是一个线性反馈移位登记(LFSR)。由一个LFSR
    发表于 04-12 09:50 1次下载
    为max765x微处理器的<b class='flag-5'>伪</b><b class='flag-5'>随机数</b>生成程序

    随机数生成算法

    在计算机上用数学的方法产生随机数列是目前通用的方法,它的特点是占用的内存少,速度快.用数学方法产生随机数列是根据确定的算法推算出来的,严格说来并不是
    发表于 04-03 10:25 6次下载

    单片机C语言如何产生随机数

    C语言中有三个通用的随机数发生器,分别为 rand函数、random函数、randomize 函数,但是rand函数产生的并不是真意正义上的随机数,是一个
    的头像 发表于 11-26 14:25 7558次阅读

    FPGA产生基于LFSR随机数概念

    大家好,又到了每日学习的时间了,上一篇《荐读:基于FPGA 的CRC校验码生成器》文中,提到了“要实现这一过程,仍然需要LFSR电路,参看《FPGA产生基于
    的头像 发表于 04-02 16:33 2407次阅读
    <b class='flag-5'>FPGA</b><b class='flag-5'>产生</b>基于<b class='flag-5'>LFSR</b>的<b class='flag-5'>伪</b><b class='flag-5'>随机数</b>概念

    基于FPGA随机数发生器设计方案

    基于FPGA随机数发生器设计方案
    发表于 06-28 14:36 4次下载

    基于LFSR随机数FPGA产生

    通过一定的算法对事先选定的随机种子(seed)做一定的运算可以得到一组人工生成的周期序列,在这组序列中以相同的概率选取其中一个数字,该数字称作伪随机数,由于所选数字并不具有完全的随机性,但是从实用的角度而言,其
    发表于 11-17 09:54 722次阅读

    MAX765x微处理器的随机数生成例程

    扩频通信、安全、加密和调制解调器等应用需要生成随机数。实现随机数发生器的最常见方法是线性反馈移位寄存器(LFSR)。LFSR生成的代码实际上是“
    的头像 发表于 03-01 15:28 654次阅读
    MAX765x微处理器的<b class='flag-5'>伪</b><b class='flag-5'>随机数</b>生成例程

    FPGA随机数发生器学习介绍

    随机试验的结果,产生随机数有多种不同的方法。这些方法被称为随机数生成器。随机数最重要的特性是它在产生
    的头像 发表于 09-12 09:13 1555次阅读

    如何在FPGA中实现随机数发生器

    分享如何在Xilinx Breadboardable Spartan-7 FPGA, CMOD S7中实现4位随机数发生器(PRNGs)。
    的头像 发表于 08-06 11:20 661次阅读
    如何在<b class='flag-5'>FPGA</b>中实现<b class='flag-5'>随机数</b>发生器