0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

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

3天内不再提示

FPGA产生基于LFSR的伪随机数概念

电子工程师 来源:博客园 作者:super_star123 2021-04-02 16:33 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

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

1.概念

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

2.由LFSR引出的产生方法

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

853083a2-9385-11eb-8b86-12bb97331649.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结构如下图:

853d2120-9385-11eb-8b86-12bb97331649.png

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

D2=D1_OUT=1;

D1=D0_OUT^D2_OUT=0;

D0=D2_OUT=1;

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

画出状态转移图如下:

85613786-9385-11eb-8b86-12bb97331649.png

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

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

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

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

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

3.verilog实现

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

85882148-9385-11eb-8b86-12bb97331649.png

verilog源代码如下:

85b4d166-9385-11eb-8b86-12bb97331649.png

仿真波形:

85f23b00-9385-11eb-8b86-12bb97331649.png

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

原文标题:荐读: FPGA产生基于LFSR的伪随机数

文章出处:【微信公众号:FPGA设计论坛】欢迎添加关注!文章转载请注明出处。

责任编辑:haq

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

    关注

    1664

    文章

    22501

    浏览量

    639031
  • LFSR
    +关注

    关注

    0

    文章

    16

    浏览量

    13084

原文标题:荐读: FPGA产生基于LFSR的伪随机数

文章出处:【微信号:gh_9d70b445f494,微信公众号:FPGA设计论坛】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    广东省电动汽车充电桩产品质量监督抽查实施细则(2026年版)

    1抽样方法以随机抽样的方式在被抽样生产者、销售者的待销产品中抽取。随机数一般可使用随机数表等方法产生。每批次产品抽取样品2台,其中1台作为检验样品、1台作为备样样品。2检验依据表1电动
    的头像 发表于 04-22 10:09 270次阅读
    广东省电动汽车充电桩产品质量监督抽查实施细则(2026年版)

    MPC5746R有真随机数模块(TRNG)吗?

    MPC5746R有真随机数模块(TRNG)吗? 如果有,请给些资料和例程,谢谢! 我的工程里没有使用SDK。
    发表于 04-08 06:20

    硅臻正式推出QRNG全系列量子随机数发生器产品

    信息安全是社会稳定的必要条件,数字时代其重要性更是愈发凸显。无论在经典还是量子加密的过程中,随机数都是安全性的基石。加密密钥由随机数生成,安全性由随机数的不可预测性保证。与
    的头像 发表于 03-10 16:24 378次阅读
    硅臻正式推出QRNG全系列量子<b class='flag-5'>随机数</b>发生器产品

    国产芯片SRAM存储器psram

    SRAM本质上是一种经过优化的DRAM(动态随机存取存储器),其核心技术在于通过内置的控制逻辑电路,模拟传统SRAM的接口时序,从而在使用上具备SRAM的简便性。用户无需关心内部复杂的刷新
    的头像 发表于 03-03 16:23 134次阅读

    Labview接口(interface)的工作过程

    文字描述部分: 目的:产生随机数,当随机数达到某个阈值时触发一个状态事件。 创建过程: 1、用labview 模板创建root Actor ,这个根操作者,用来管理所有其他的Actor 2、创建一个
    发表于 02-03 11:07

    飞凌嵌入式ElfBoard-系统信息与资源之产生随机数

    整数,作为随机数生成器的种子值。它决定了 rand() 函数生成的随机数序列的起始点。4.返回值无。5.示例:(使用rand函数产生一组随机数)#include #include #i
    发表于 01-22 08:59

    如何在LTspice仿真中实现随机数和真随机数的生成

    本文讨论如何在LTspice仿真中利用flat()、gauss()和mc()函数来实现随机数和真随机数的生成,并介绍如何使用设置面板的Hacks部分中的 Use the clock
    的头像 发表于 01-09 14:08 4847次阅读
    如何在LTspice仿真中实现<b class='flag-5'>伪</b><b class='flag-5'>随机数</b>和真<b class='flag-5'>随机数</b>的生成

    德思特应用 | 前沿量子随机数研究:多特蒙德工业大学如何通过高速数字化仪保障信息安全

    在量子信息时代,生成真正随机的数字对加密与安全至关重要。多特蒙德工业大学研究人员利用高速数字化仪对量子随机数生成过程进行多通道采集与分析,成功实验评估窃听风险,为密码协议与安全应用提供了可靠验证手段。
    的头像 发表于 12-22 17:22 521次阅读
    德思特应用 | 前沿量子<b class='flag-5'>随机数</b>研究:多特蒙德工业大学如何通过高速数字化仪保障信息安全

    QSPI PSRAM静态随机存储器选型攻略

    QSPI PSRAM是一种集成了QSPI接口与PSRAM存储功能的高效芯片。QSPI(四线串行外设接口)是一种高速串行通信接口,用于连接外部设备;而PSRAM(静态随机存储器)则结合了快速随机访问与动态存储的特性。
    的头像 发表于 10-23 15:40 730次阅读

    ‌基于RNG90的真随机数生成器技术解析与应用指南

    Microchip Technology RNG90 CryptoAuthentication™器件设计用于需要安全随机数发生器的系统。RNG90即用型,无需任何定制。Microchip RNG90
    的头像 发表于 10-10 15:01 843次阅读
    ‌基于RNG90的真<b class='flag-5'>随机数</b>生成器技术解析与应用指南

    星空投影灯方案开发设计案例

    ; 25 dB。 旋转角度 = (tick × 0.352°),同步更新 WS2812B 星图,北极星始终对准镜头中心。 流星随机算法 使用 MCU 的 LFSR 随机数,每帧
    发表于 09-03 15:45

    随机数随机数的区别

    随机数在当前程序运行环境中是一种常用参数,目前主要分为两种,随机数和真随机数,本期我们就来讲一下二者的区别。
    的头像 发表于 08-27 17:46 2872次阅读

    DS28S60具有ChipDNA的DeepCover加密协处理器技术手册

    的协处理器,命令功能包括ECDSA-P256签名和验证、基于SHA-256的数字签名、AES-128数据包加密/解密、用于会话密钥生成的ECDHE密钥交换以及访问高质量的随机数。集成了符合NIST
    的头像 发表于 05-13 14:39 976次阅读
    DS28S60具有ChipDNA的DeepCover加密协处理器技术手册

    FPGA芯片的概念和结构

    FPGA(Field Programmable Gate Array,现场可编程门阵列),是一种可在出厂后由用户根据实际需求进行编程配置的集成电路。与专用集成电路(如ASIC)不同,FPGA在硬件层面具备高度的可重构性,能够灵活实现各类数字逻辑电路和复杂系统方案。
    的头像 发表于 05-12 09:30 3204次阅读

    labview求助:想写一个labview输出不重复随机数的程序,有没有大佬帮忙看看这个假分支要怎么写?

    大佬们想写一个labview输出不重复随机数的程序,有没有大佬帮忙看看这个假分支要怎么写
    发表于 04-27 08:39