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)//这里当括号里面的值不发生改变时,每次随机都会产生同一个数。

相关推荐
9527华安15 小时前
国产安路FPGA开发设计培训课程,提供开发板+工程源码+视频教程+技术支持
fpga开发·fpga·安路·视频教程·培训·安路fpga
UVM_ERROR1 天前
硬件设计实战:解决Valid单拍采样失效问题(附非阻塞赋值与时序对齐核心要点)
驱动开发·fpga开发·github·芯片
brave and determined1 天前
可编程逻辑器件学习(day36):从沙粒到智能核心:芯片设计、制造与封装的万字全景解析
fpga开发·制造·verilog·fpga·芯片设计·硬件设计·芯片制造
步达硬件1 天前
【FPGA】FPGA开发流程
fpga开发
我爱C编程2 天前
【仿真测试】基于FPGA的完整16QAM通信链路实现,含频偏锁定,帧同步,定时点,Viterbi译码,信道,误码统计
fpga开发·16qam·帧同步·卷积编码·viterbi译码·维特比译码·频偏锁定
s09071363 天前
ZYNQ DMA to UDP 数据传输系统设计文档
网络协议·fpga开发·udp
燎原星火*3 天前
QSPI IP核 基本参数
fpga开发
XINVRY-FPGA3 天前
XCVU9P-2FLGC2104I Xilinx AMD Virtex UltraScale+ FPGA
嵌入式硬件·机器学习·计算机视觉·fpga开发·硬件工程·dsp开发·fpga
FPGA_小田老师3 天前
FPGA Debug:PCIE一直自动重启(link up一直高低切换)
fpga开发·pcie debug·pcie初始化问题
hexiaoyan8273 天前
视频信号检测板卡:208-Base Camera Link 图像信号模拟器
fpga开发·图像信号模拟器·视频信号检测·视频信号分析·智能图像分析