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

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

3天内不再提示

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

FPGA研究院 来源:Java学研大本营 2024-08-06 11:20 次阅读

分享如何在Xilinx Breadboardable Spartan-7 FPGA, CMOD S7中实现4位伪随机数发生器(PRNGs)。

现场可编程门阵列(FPGA)是一种高度可配置的集成电路,它使开发者能够测试和重写程序以执行各种功能。它在原型设计、测试数字电路和实现生产中的定制数字系统方面很受欢迎。

该领域涉及但不限于:

数字信号处理

-实现滤波器、变换和信号发生器

-示例应用:音频视频处理、通信系统和雷达处理。

机器学习(ML)和人工智能AI

-实现定制的ML和AI算法,如CNN

-示例应用:计算机视觉、自然语言处理和语音识别

通信系统和数据存储中的加密安全

-实现加密算法,如AES、DES和RSA

-示例应用:安全通信系统和数据存储

工业控制系统

-在各种工业中实现定制的控制系统机器人、自动化和过程控制

-示例应用:自主车辆控制系统和智能电网控制系统

航空航天和国防

-实现定制的数字系统,具有高性能、低功耗和抗辐射能力

-示例应用:雷达处理和制导系统

1、 问题陈述

虽然随机性是安全网络物理系统(CPS)的一个重要组成部分,但如何在FPGA中实现随机数发生器呢?

今天分享一下关于如何在Xilinx Breadboardable Spartan-7 FPGA, CMOD S7中实现4位伪随机数发生器(PRNGs)。

请注意,PRNGs与真随机数发生器不同。PRNGs可能在输出中存在偏差或模式,因此应结合其他安全措施使用,如安全的密钥管理实践和强大的加密算法,以保护目标系统。

28b6cd68-4f14-11ef-b8af-92fbcf53809c.pngCMOD S7的近景

下面是用Verilog语言编写的程序,使用了Vivado软件。在这个程序中,主要有3个主要功能:

这个程序使用计数器来确定1秒的间隔

这个程序在反馈中进行LFSR操作,并计算4位lfsr_reg

这个程序以二进制格式输出随机数,用LED灯显示,范围从0 ~ 15。下图显示为1011,即十进制的11。

28eae9fe-4f14-11ef-b8af-92fbcf53809c.png随机数的一个输出。二进制的1011是十进制的11

290a2422-4f14-11ef-b8af-92fbcf53809c.png4位二进制数转换为十进制。

下面是用Verilog语言实现4位LFSR的源代码。

我们定义了一个名为“DELAY”的常量,其十进制值为12000000,以匹配默认时钟运行在12 MHz

clog2(12000000)=24

//因为默认时钟运行在12MHz
`defineDELAY1_200_000_0//1秒

modulelfsr(
inputclk,
outputreg[3:0]LED
);

reg[3:0]lfsr_reg;
reg[$clog2(`DELAY)-1:0]counter=0;

wirefeedback;

assignfeedback=~(lfsr_reg[3]^lfsr_reg[2]);

always@(posedgeclk)
begin
if(counter==`DELAY-1)
begin
counter<= 0; // 复位计数器
        lfsr_reg <= {lfsr_reg[2:0], feedback}; // 更新LFSR // 反馈位在第3和第2位,向左移位
        LED = lfsr_reg;
    end 
    else
        counter <= counter + 1; // 增加计数器
        
end

Cmod-S7–25-Master.xdc的示例内容,其中定义了设计约束,如引脚分配、时钟约束和I/O时序参数,这些参数在实现阶段使用。

##Thisfileisageneral.xdcfortheCmodS7-25Rev.B
##Touseitinaproject:
##-uncommentthelinescorrespondingtousedpins
##-renametheusedports(ineachline,afterget_ports)accordingtothetoplevelsignalnamesintheproject

##12MHzSystemClock
set_property-dict{PACKAGE_PINM9IOSTANDARDLVCMOS33}[get_ports{clk}];#IO_L13P_T2_MRCC_14Sch=gclk
create_clock-add-namesys_clk_pin-period83.33-waveform{041.66}[get_ports{clk}];

##4LEDs
set_property-dict{PACKAGE_PINE2IOSTANDARDLVCMOS33}[get_ports{LED[0]}];#IO_L8P_T1_34Sch=led[1]
set_property-dict{PACKAGE_PINK1IOSTANDARDLVCMOS33}[get_ports{LED[1]}];#IO_L16P_T2_34Sch=led[2]
set_property-dict{PACKAGE_PINJ1IOSTANDARDLVCMOS33}[get_ports{LED[2]}];#IO_L16N_T2_34Sch=led[3]
set_property-dict{PACKAGE_PINE1IOSTANDARDLVCMOS33}[get_ports{LED[3]}];#IO_L8N_T1_34Sch=led[4]

set_propertyCONFIG_VOLTAGE3.3[current_design]
set_propertyCFGBVSVCCO[current_design]

set_propertyBITSTREAM.GENERAL.COMPRESSTRUE[current_design]
set_propertyBITSTREAM.CONFIG.CONFIGRATE33[current_design]
set_propertyCONFIG_MODESPIx4[current_design]

2、演示

291c01ba-4f14-11ef-b8af-92fbcf53809c.gif

3 、结论

从综合报告中可以看出,这个程序只占用了FPGA中0.05%的LUT滑块。我们可以在这个CMOD S7中实现更多有趣的功能,充分利用资源。

来源: 本文转载自Java学研大本营公众号

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

    关注

    1620

    文章

    21496

    浏览量

    598548
  • 滤波器
    +关注

    关注

    158

    文章

    7582

    浏览量

    176455
  • Xilinx
    +关注

    关注

    70

    文章

    2134

    浏览量

    120289
  • 生成器
    +关注

    关注

    7

    文章

    312

    浏览量

    20821

原文标题:使用Verilog在FPGA中实现伪随机数生成器

文章出处:【微信号:FPGA研究院,微信公众号:FPGA研究院】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    【assingle分享】labview随机数发生器

    ,提供了多种不同的函数,下面大概总结一下。一、伪随机数发生器在LABVIEW数值函数选板,提供了一个随机数发生器函数,返回一个0-1之间的
    发表于 04-07 10:27

    【总结】LabVIEW随机数发生器

    ,提供了多种不同的函数,下面大概总结一下。一、伪随机数发生器在LABVIEW数值函数选板,提供了一个随机数发生器函数,返回一个0-1之间的
    发表于 01-30 14:51

    怎么设计基于USB和FPGA随机数发生器验证平台?

    一种必然。为此,基于纯数字电路实现随机数发生器已成为研究的热点,而FPGA可编程逻辑芯片为此类随机数
    发表于 08-27 06:05

    请问随机数发生器的主要特性和功能以及如何操作?

    随机数发生器简介随机数发生器主要特性随机数发生器功能说明随机
    发表于 11-13 07:51

    随机数发生器的相关资料分享

    00. 目录文章目录00. 目录01. 随机数发生器简介02. 随机数发生器主要特性03. 随机数发生器
    发表于 02-14 07:35

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

    以及真随机数。本次设计为基于FPGA生成的伪随机数发生器,什么是伪随机数呢?统计学伪随机性指的是
    发表于 04-21 19:42

    用振荡采样随机数发生器保证网络SoC设计加密算法的安全性

    用振荡采样随机数发生器保证网络SoC设计加密算法的安全性 在保障互联网安全的各种加密算法随机数产生至关重要。产生
    发表于 12-26 14:45 1041次阅读

    基于FPGA的真随机数发生器设计

    设计并实现了一种基于 FPGA 的真 随机数发生器 ,利用一对振荡环路之间的相位漂移和抖动以及亚稳态作为随机源,使用线性反馈移位寄存
    发表于 05-30 17:04 72次下载
    基于<b class='flag-5'>FPGA</b>的真<b class='flag-5'>随机数</b><b class='flag-5'>发生器</b>设计

    随机数发生器的容差分析

    基于混沌、均匀分布的真随机数发生器的工作电路和精度要求较高的电压参考电路的温度漂移进行分析,给出了仿真得到的温度曲线;分析了工艺可能存在的问题和温度的影响与运放的
    发表于 06-10 15:53 26次下载
    真<b class='flag-5'>随机数</b><b class='flag-5'>发生器</b>的容差分析

    利用FPGA的自身特性实现随机数发生器

    本文主要介绍利用FPGA的自身的特性实现随机数发生器,在Virtex-II Pro开发板上用ChipScope观察随机数序列,以及在PCIe
    发表于 02-11 16:26 1.3w次阅读
    利用<b class='flag-5'>FPGA</b>的自身特性<b class='flag-5'>实现</b><b class='flag-5'>随机数</b><b class='flag-5'>发生器</b>

    PIC32系列参考手册之加密引擎和随机数发生器(RNG)

    本文主要介绍了PIC32系列参考手册之加密引擎和随机数发生器(RNG)。
    发表于 06-05 17:29 5次下载

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

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

    【STM32】随机数发生器详解

    00. 目录文章目录00. 目录01. 随机数发生器简介02. 随机数发生器主要特性03. 随机数发生器
    发表于 12-08 18:36 11次下载
    【STM32】<b class='flag-5'>随机数</b><b class='flag-5'>发生器</b>详解

    FPGA的伪随机数发生器学习介绍

    今天是画师本人第一次和各位大侠见面,执笔绘画FPGA江湖,本人写了篇关于FPGA的伪随机数发生器学习笔记,这里分享给大家,仅供参考。 基于FPGA
    的头像 发表于 09-12 09:13 1370次阅读

    基于多级反馈环形振荡的真随机数发生器设计

    电子发烧友网站提供《基于多级反馈环形振荡的真随机数发生器设计.pdf》资料免费下载
    发表于 09-14 14:56 0次下载
    基于多级反馈环形振荡<b class='flag-5'>器</b>的真<b class='flag-5'>随机数</b><b class='flag-5'>发生器</b>设计