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
    +关注

    关注

    1629

    文章

    21729

    浏览量

    602986
  • LFSR
    +关注

    关注

    0

    文章

    16

    浏览量

    12743

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

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

收藏 人收藏

    评论

    相关推荐

    浅谈加密芯片的一种破解方法和对应加密方案改进设计

    为了增加加密方案可靠度,设计成让主MCU的芯片序列号ID1、产生随机数R1和加密芯片的芯片序列号ID2、产生随机数R2参与计算临时过程秘钥,加密芯片使用秘钥Key对(ID1⊕RAN
    发表于 12-20 15:31

    “安徽造”量子随机数芯片通过国家密码管理局检测

    近日,国家密码管理局商用密码检测中心出具报告,由安徽问天量子科技公司自主研发的WT-QRNG300量子随机数芯片通过检测。这是国内首家官方商密报告认定、且已实现商用量产及产业化的“量子随机数芯片
    的头像 发表于 12-19 19:06 258次阅读

    问天量子和方寸微电子联合发布量子随机数芯片

    近日,国家密码管理局商用密码检测中心出具报告,问天量子和方寸微电子联合自主研发的WT-QRNG300量子随机数芯片通过检测,这是国内首家官方商密报告认定、且已实现商用量产及产业化的“量子随机数芯片”产品。
    的头像 发表于 12-19 16:18 211次阅读

    LuatOS开发之4G模组随机数(random)|实战指南

    本次学习的实战是关于4G模组LuatOS开发的随机数示例指南,希望大家有所收获。
    的头像 发表于 11-30 09:51 178次阅读
    LuatOS开发之4G模组<b class='flag-5'>随机数</b>(random)|实战指南

    解析Air780E模组LuatOS开发的随机数(random) 示例篇

    本文主要解析的是低功耗4G模组Air780E的LuatOS开发随机数(random)实例,我以整理成文分享给大家。
    的头像 发表于 11-29 20:23 115次阅读
    解析Air780E模组LuatOS开发的<b class='flag-5'>随机数</b>(random) 示例篇

    FPGA的计算方法

    我们在比较FPGA的芯片参数时经常说某一款FPGA是多少万门的,也有的说其有多少个LE,那么二者之间有何关系呢? FPGA等效门的计算方法有两种,一是把
    的头像 发表于 11-11 09:45 258次阅读
    <b class='flag-5'>FPGA</b>门<b class='flag-5'>数</b>的计算方法

    蓝牙AES+RNG如何保障物联网信息安全

    芯片,可以通过软件实现AES加密。然而,这种方式可能会增加芯片的功耗和成本,并且加密性能可能不如硬件加密。除了AES外,一些蓝牙模块具有随机数产生器(Random Number Generator)。该
    发表于 11-08 15:38

    雅特力AT32 MCU的随机数生成

    概述产品和生态系统安全性的需求比以往任何时候都更加重要。真随机数是所有安全系统的核心,其质量会影响设计的安全性。因此在没有内置硬件TRNG的AT32的微控制器系列中,如何提高随机数的有效,来符合
    的头像 发表于 08-30 12:26 541次阅读
    雅特力AT32 MCU的<b class='flag-5'>随机数</b>生成

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

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

    全志R128 SDK HAL 模块开发指南之 TRNG

    TRNG TRNG是真随机数发生器,随机源是8 路独立的环形振荡器,由模拟器件电源噪声产生频率抖动,用低频始终重采样,然后进行弹性抽取和熵提取处理,最终输出128bit真随机数。 模块
    发表于 04-24 09:42

    如何使用Python生成四位随机数

    为了实现这些目标,Python 为我们提供了random() 模块。random() 是一个内置的 Python 模块,用于生成随机数
    的头像 发表于 04-15 12:47 650次阅读

    合肥硅臻量子芯片通过商密检测,助力量子芯片商用发展

     据了解,这一成果填补了我国量子随机数发生器芯片在毫米级领域的空白,成为首个攻克量子随机数发生器商用规模化制约因素的重要里程碑。
    的头像 发表于 03-20 15:04 989次阅读

    TC389芯片上HSM的TRNG真随机数功能,如何判断其随机能力呢?

    想咨询一下,TC389芯片上HSM的TRNG真随机数功能,如何判断其随机能力呢?有什么资料或者测试内容吗?
    发表于 03-05 07:20

    请问rt-thread studio如何使用硬件随机数生成器?

    指导一下。 经过查询得知可以使用rt_hw_random_get()函数来获取硬件随机数,请文需要做什么配置才能使用rt_hw_random_get()函数。
    发表于 02-23 08:03

    基于时分复用光学参量振荡器的5比特全光量子随机数发生器

    联合研究团队研制出一种基于时分复用简并点飞秒光学参量振荡器,具备高重复频率飞秒光纤激光器泵浦,通过在谐振腔中接入多通单元,能高效拓展光路,实现5比特全光量子随机数发生器,并能保持系统高度的紧凑性和稳定性。
    的头像 发表于 01-09 11:13 536次阅读
    基于时分复用光学参量振荡器的5比特全光量子<b class='flag-5'>随机数</b>发生器