Verilog基础:$random系统函数的使用
相关阅读
Verilog基础编辑
https://blog.csdn.net/weixin_45791458/category_12263729.html
$random系统函数语法的BNF范式如下所示,有关BNF范式相关内容,可以浏览以往文章Verilog基础:巴科斯范式(BNF)。

$random系统函数在每次调用时返回一个32位的随机数,这个随机数是有符号的,可正可负。按照Verilog标准语法,$random系统函数的调用方式为$random或$random(seed),但实际上$random()这种调用方式也是可以的,且其与$random完全一样。
seed是系统函数产生随机数的种子,当不指定种子时,如$random()或$random,系统会默认指定一个在每次调用后都会改变的隐形种子,且种子的改变轨迹是确定的,具体如下所示。
`timescale 1ns/1ns
module test();
initial begin repeat(10) #5 $display("Default Random number is %d", $random);
end
endmodule输出:
Default Random number is 303379748
Default Random number is -1064739199
Default Random number is -2071669239
Default Random number is -1309649309
Default Random number is 112818957
Default Random number is 1189058957
Default Random number is -1295874971
Default Random number is -1992863214
Default Random number is 15983361
Default Random number is 114806029
上面代码的随机数序列是确定的,即第一次调用系统函数时返回303379748,第二次时返回-1064739199,以此类推。
对于相同数值的种子,系统函数会返回相同的值,如下所示。
`timescale 1ns/1ns
module test();
initial begin repeat(10) #5 $display("Default Random number is %d", $random(0));
end
endmodule输出:
Default Random number is 303379748
Default Random number is 303379748
Default Random number is 303379748
Default Random number is 303379748
Default Random number is 303379748
Default Random number is 303379748
Default Random number is 303379748
Default Random number is 303379748
Default Random number is 303379748
Default Random number is 303379748
从上面的输出我们还可以发现,系统默认的隐形种子的种子值可能就是从0开始。
如果指定了种子值,我们必须保证在每次调用系统函数前的种子值是不同的,这样才能得到一个看近似随机的数字,如使用$time系统函数,它会返回当前的仿真时间。
`timescale 1ns/1ns
module test();
initial begin repeat(10) #5 $display("Default Random number is %d", $random($time));
end
endmodule输出:
Default Random number is -2147138048
Default Random number is -2146792448
Default Random number is -2146447360
Default Random number is -2146101760
Default Random number is -2145756672
Default Random number is -2145411072
Default Random number is -2145065984
Default Random number is -2144720384
Default Random number is -2144375296
Default Random number is -2144029696
$random系统函数返回的是32位有符号数,如果我们不需要这么大的有符号数可以使用求余运算符得到一个小的随机数,如下所示。
`timescale 1ns/1ns
module test();
initial begin repeat(10) #5 $display("Default Random number is %d", {$random} % 8);
endmodule输出:
Default Random number is 4
Default Random number is -7
Default Random number is -7
Default Random number is -5
Default Random number is 5
Default Random number is 5
Default Random number is -3
Default Random number is -6
Default Random number is 1
Default Random number is 5
通过对8求余,我们得到了一个位于-7到7之间的随机数。
如果我们需要无符号的随机数,我们可以利用拼接运算符、域选或$unsigned系统函数,如下所示。
`timescale 1ns/1ns
module test();
integer a;
initial begin repeat(10) #5 $display("Default Random number is %d", {$random} % 8);//repeat(10) #5 begin a = $random; a = a[2:0]; $display("Default Random number is %d", a);end//repeat(10) #5 $display("Default Random number is %d", $unsigned($random) % 8);
end
endmodule输出:
Default Random number is 4
Default Random number is 1
Default Random number is 1
Default Random number is 3
Default Random number is 5
Default Random number is 5
Default Random number is 5
Default Random number is 2
Default Random number is 1
Default Random number is 5
三种方法的输出结果是一样的,因为他们的原理是类似的,{}拼接运算符的结果是无符号的;域选运算符的结果也是无符号的,同时域选的位宽还可以保证输出数据的大小,这甚至省略了求余的操作;$unsigned系统函数可以直接将一个有符号数转换为无符号数。
相关文章:
Verilog基础:$random系统函数的使用
相关阅读 Verilog基础编辑https://blog.csdn.net/weixin_45791458/category_12263729.html $random系统函数语法的BNF范式如下所示,有关BNF范式相关内容,可以浏览以往文章Verilog基础:巴科斯范式(BNF)。 $random系统函数在每次调用时返回一…...
数据库Delete的多种用法
数据库的Delete操作是用来删除数据库中的数据记录的,它是数据库操作中的一种重要操作,能够帮助用户删除不需要的数据,以便保持数据库的整洁和高效。在使用Delete操作时,需要注意确保操作的准确性和安全性,以免误删重要…...
鸿蒙前端开发-构建第一个ArkTS应用(Stage模型)
创建ArkTS工程 若首次打开DevEco Studio,请点击Create Project创建工程。如果已经打开了一个工程,请在菜单栏选择File > New > Create Project来创建一个新工程。 选择Application应用开发(本文以应用开发为例,Atomic Serv…...
从零开始搭建链上dex自动化价差套利程序(12)
其他品种 扩展到其他币种的价差套利 1.eth 新建文件get_depth_data_eth.py import asyncio from apexpro.http_public import HttpPublic from dydx3 import Client from dydx3.constants import MARKET_ETH_USD# 定义交易对列表 symbol ETHUSDC market MARKET_ETH_USD# …...
MySQL 数据库如何实现 XA 规范?
本文我们来讨论 MySQL 的 XA 规范有哪些应用相关的内容。 MySQL 为我们提供了分布式事务解决方案,在前面的内容中提到过 binlog 的同步,其实是 MySQL XA 规范的一个应用,那么 XA 规范是如何定义的,具体又是如何应用的呢ÿ…...
SVN修改已提交版本的日志方法
1.在工做中一直是使用svn进行項目的版本控制的,有时候因为提交匆忙,或是忘了添加Log,或是Log内容有错误。遇到此类状况,想要在查看项目的日志时添加log或是修改log内容,遇到以下错误: Repository has not b…...
ArkUI组件--Text组件
1.声明Text组件并设置文本内容 Text(content?:string|Recource) #两种数据类型,字符串和本地资源文件 ①string格式,直接填写文本内容 Text(需要显示的文本) ②Recource格式,读取本地资源文件 Text($r(app.string.width_label)) 读取图…...
mysql的组合查询
mysql的组合查询 1、mysql的内连接查询 在 MySQL 中,内连接(INNER JOIN)是一种根据两个或多个表之间的匹配条件,将多个表中的数据进行联接的操作。内连接只返回符合联接条件的行,而不会返回未匹配的行。 内连接的语…...
短视频购物系统源码:构建创新购物体验的技术深度解析
短视频购物系统作为电商领域的新宠,其背后的源码实现是其成功的关键。本文将深入探讨短视频购物系统的核心技术和源码设计,以揭示其如何构建创新购物体验的技术奥秘。 1. 技术架构与框架选择 短视频购物系统的源码首先考虑的是其技术架构。常见的选择…...
暴力破解漏洞
暴力破解漏洞 1.1 漏洞简介1.2 漏洞影响范围1.3 漏洞详解1.3.1DVWA(1)LOW(2)Medium(3)HIGH 1.3.2 Pikachu(1)验证码绕过(on server)(2)验证码绕过(on client) 1.3.3 识别验证码(绕过)1.3.4 密码加密的情况 1.1 漏洞简介 暴力破解是一攻击具手段…...
前端成神之路-CSS基础选择器
前端成神之路-CSS基础选择器 目录 前端成神之路-CSS基础选择器 CSS选择器(重点) 1. CSS选择器作用(重点) 选择器的作用 2. CSS基础选择器 2.1 标签选择器 2.2 类选择器 2.3 类选择器特殊用法- 多类名 2.4 id选择器 id选…...
Endnote在word中加入参考文献及自定义参考文献格式方式
第一部分:在word中增加引用步骤 1、先下载对应文献的endnote引用格式,如在谷歌学术中的下载格式如下: 2、在endnote中打开存储env的格式库,导入对应下载的文件格式:file>import>file>choose,import对应文件&a…...
LeetCode力扣每日一题(Java):28、找出字符串中第一个匹配项的下标
别问我为什么今天做了两题,问就是我干概率论干废了,需要换换脑子想想不同类型的问题,所以来刷刷算法 一、题目 二、解题思路 1、我的思路 其实这题思路还挺简单的,我直接把代码放这,大家应该稍微看看就能懂 char[]…...
Java UDP 多人聊天室简易版
服务端 import java.io.*; import java.net.*; import java.util.ArrayList; public class Server{public static ServerSocket server_socket;public static ArrayList<Socket> socketListnew ArrayList<Socket>(); public static void main(String []args){try{…...
leetcode 100.相同的树
涉及到递归,最好多画图理解,希望对你们有帮助 100.相同的树 题目 给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。 如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。 题目链接…...
2021年第十届数学建模国际赛小美赛A题气道阻力的评估解题全过程文档及程序
2021年第十届数学建模国际赛小美赛 A题 气道阻力的评估 原题再现: 气道阻力的定义是通过肺气道产生单位气流所需的经肺压力的变化。更简单地说,它是嘴和肺泡之间的压力差,除以气流。影响气道阻力的因素是多方面的,我们需要探讨这…...
内网环境安装K8S1.20.11版本集群
目录 第一章.实验要求和环境 1.1.实验要求 1.2.实验环境 1.3.依赖关系处理 第二章.K8S的安装过程 2.1.初始化到集群安装成功 ------------------------------ 环境准备 ------------------------------ docker安装好了后 2.2.安装K8组件 -------------------- 部署K8…...
【前端设计模式】之策略模式
概述 在前端开发中,我们经常会遇到需要根据不同的条件或情况来执行不同的算法或行为的情况。这时,策略模式就能派上用场。策略模式是一种行为型设计模式,它将不同的算法封装成独立的策略对象,使得这些算法可以互相替换࿰…...
JUC包(面试常问)
1. Callable接口 类似于Runnable接口,Runnable描述的任务,不带返回值;Callable描述的任务带返回值。 public class Test {//创建线程,计算12...1000public static void main(String[] args) throws ExecutionException, Interru…...
文字处理工具Word mac软件特点
Microsoft Word mac是一款文字处理软件。它是 Microsoft office 套件的一部分,已广泛用于创建、编辑和格式化文本文档。 Word mac软件特点 改进的协作工具:使用 Microsoft Word 2021,多个用户可以同时处理一个文档,从而更轻松地与…...
利用 Taotoken 的模型广场为你的智能客服场景挑选合适模型
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 利用 Taotoken 的模型广场为你的智能客服场景挑选合适模型 构建智能客服或对话系统时,一个核心挑战是如何从众多大模型…...
视频生成MOE Mamoda2.5:基于DiT-MoE的统一多模态理解与生成框架技术解析
稀疏激活专家混合架构驱动的高效视频理解与生成新范式 多模态大模型视频生成DiT-MoE稀疏激活强化学习 统一多模态模型正经历从"单任务专家"向"一体化系统"的范式转变。字节跳动研究团队提出的Mamoda2.5,通过将细粒度混合专家(MoE&…...
区块链与计算机视觉融合:构建可信机器感知系统的架构与实践
1. 项目概述:当计算机视觉遇见区块链在人工智能的浪潮中,计算机视觉(CV)无疑是那颗最耀眼的明星之一。它让机器拥有了“看”和理解世界的能力,从医疗影像中精准定位病灶,到自动驾驶汽车识别路况,…...
Windows安卓应用安装器终极指南:告别模拟器,轻松在电脑上运行手机应用
Windows安卓应用安装器终极指南:告别模拟器,轻松在电脑上运行手机应用 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 你是否曾想在Windows电脑…...
Office RibbonX Editor:零编程定制Office界面的终极免费开源工具
Office RibbonX Editor:零编程定制Office界面的终极免费开源工具 【免费下载链接】office-ribbonx-editor An overhauled fork of the original Custom UI Editor for Microsoft Office, built with WPF 项目地址: https://gitcode.com/gh_mirrors/of/office-ribb…...
3步快速清理Windows驱动存储:DriverStore Explorer终极使用指南
3步快速清理Windows驱动存储:DriverStore Explorer终极使用指南 【免费下载链接】DriverStoreExplorer Driver Store Explorer 项目地址: https://gitcode.com/gh_mirrors/dr/DriverStoreExplorer 你是否发现Windows系统盘空间不断减少,却找不到原…...
瑞萨MCU集成AI加速器:嵌入式开发者的边缘智能实战指南
1. 项目概述:当传统MCU巨头按下AI加速键最近在半导体圈里,一个消息引发了不小的讨论:瑞萨电子,这家在微控制器领域常年稳坐头把交椅的巨头,宣布要全面拥抱人工智能。你可能对这个名字有点陌生,但你的车里、…...
武林外传十年之约手游官网下载:武林外传十年之约最新官方下载渠道
《武林外传十年之约》又名《武林外传手游》《武林外传怀旧版》《武林外传正版复刻》,由安徽游昕联合忆往游戏运营的正版武侠 MMORPG 手游。1:1 复刻同福客栈、七侠镇、五霸岗、十八里铺等经典场景,完美还原枪豪、剑客、术士、医师四大职业体系࿰…...
Unity里嵌入一个浏览器?用Embedded Browser插件5分钟搞定H5页面展示与交互
Unity项目快速集成H5页面:Embedded Browser插件实战指南 当Unity项目需要展示动态更新的网页内容时,传统方案往往需要重新开发UI或依赖第三方服务。而Embedded Browser插件提供了一种优雅的解决方案,让开发者能够在Unity中直接嵌入完整的浏览…...
电赛小车结构翻车实录:从STM32F407到剪叉式结构,我们踩过的那些坑
电赛智能车避坑指南:从机械结构到控制系统的实战复盘 第一次参加电子设计竞赛的团队,往往会被智能车项目中隐藏的"坑"绊得措手不及。作为一支从零开始的参赛队伍,我们在机械结构选型、核心器件采购、系统调试等环节踩遍了几乎所有常…...
