FPGA开发——verilog随机涵数$random的使用方法

一、概述

我们进行FPGA开发的过程中在做仿真的时候,难免会需要一些数据作为输入。有的时候需要输入大量的数据对于设计结果进行一个验证,如果逐个去进行输入,就需要花费大量的时间。这种情况下我们通常会想到使用随机数。随机数在我们的日常开发中非常常见。不管是在软件编程还是硬件开发中,应用都非常广泛。

在FPGA开发中我们同样也可以使用Verilog提供的随机数生成系统任务$random来帮助生成大量的随机数。

二、调用方法分类

前面两种都是直接对于$random进行一个调用,产生的结果都是一致的,而第三种就和前面两种不一样。

random、random():

random的返回值是一个32位的整数,但是有时不见得需要这么大的数。如果希望随机数的值能固定在某个范围,那么可以这么使用:random%b;那么生成的随机数的范围就是 ( -b+1 ) : (b- 1 ) 。 这其实就是对b取余。

此外,如果我们希望只生成正数范围内的随机数,那么可以这么使用:{random}%b;那么生成的随机数的范围就是 \[0 : (b - 1 )\]。 **random(seed):**

这种写法与上面两种不同,给random传入了参数seed,因此random根据seed来产生随机数。seed不同,产生的随机数的序列也不同。而且,每执行一次$random(seed)产生一个随机数,seed也自动更新一次。

三、 $random的调用

1)$random

rand=$random % 52; //产生一个在 -52---52范围的随机数。

rand={$random} % 52; //通过位拼接操作{}产生0---52范围的随机数

**rand = 10+{$random}%(10-1+1)//**产生一个在1, 10之间随机数的例子

2)$random(seed)

$random(1)//这里当括号里面的值不发生改变时,每次随机都会产生同一个数。

相关推荐
物质波波波6 小时前
WS-RPE:面向边缘物理AI实时特征值计算的硬件工作窃取调度器与冗余PE激活架构
人工智能·fpga开发·架构·系统架构·硬件架构
我爱C编程9 小时前
基于FPGA的DSB调制解调系统verilog开发
fpga开发·verilog·fpga·dsb
zlinear数据采集卡10 小时前
USB HS 480M高速传输与SRAM记录仪:DABM-D223数据存储系统全解析
arm开发·嵌入式硬件·fpga开发·开源
逻辑诗篇12 小时前
基于 XCVU13P 的 4 路 100G 光纤 PCIe 处理板 PCIE727 硬件规格全解析
fpga开发
玩嵌入式谁会脱发呀15 小时前
【FPGA】 verilog设计spi读写flash实现数据DMA搬运
fpga开发
LabVIEW开发2 天前
LabVIEW 如何把地下震源定位误差做到5米内
fpga开发·labview·labview知识·labview功能·labview程序
Dr.kangder2 天前
嵌入式处理器架构解析(十)——DSP+FPGA
fpga开发·架构·嵌入式
szxinmai主板定制专家2 天前
Zynq MPSoC实现半导体真空腔体状态监测|FPGA多传感器时序同步采集方案
fpga开发·zynq·控制器·mpsoc·半导体设备·fpga同步
学习FPGA的电气小兴兴2 天前
基于FPGA的DDS信号发生器设计,生成频率可调的正弦波、三角波、锯齿波和方波
fpga开发·数字信号处理·fpga·vivado·dsp·dds·diy
szxinmai主板定制专家3 天前
Zynq MPSoC半导体高精度运动控制方案|FPGA硬件插补实现亚微米级伺服实时控制
人工智能·嵌入式硬件·fpga开发·zynq·运动控制·ethercat