【verilog 设计】 reg有没有必要全部赋初值?

一、前言

在知乎发现“reg有没有必要全部赋初值”这个问题,与自己近期对Verilog reg的进一步学习相契合,此文对这个问题进行总结。

二、reg的初值赋值方式

就语法意义赋初值而言,就是在声明reg时对其赋值。在工程中,对于数字系统的初始化一般是在上电后使用全局复位变量来实现的,也即利用复位信号来赋初值。

三、reg是否有必要全部赋初值

由于verilog不仅用于ASIC,还用于FPGA,关于reg是否需要全部赋初值又与这两个应用方向二存在差异。

3.1 FPGA场景下reg赋初值

3.1.1 FPGA reg赋初值方式选择

在声明reg变量时对其赋初值,寄存器初值可以靠上电时给对应存储单元置位,可以做初值置位。此外也可以通过复位来赋初值。

但如果只靠声明时赋初值,而不用复位赋初值时,整个系统需要复位重启时,这时FPGA只能通过重新上电来获取处置,这是比直接拉复位信号麻烦的,甚至在某些系统中不可实现的。

如果用复位赋初值,则声明变量时赋初值则完全没必要,因为数字系统一般上电后紧接着就是给一个复位信号。

因此,fpga场景下最好还是采用复位赋初值的方式来实现。

3.1.2 reg是否需要全部赋初值

此处对reg是否全部赋初值等价是否全部的reg都需要复位逻辑。我在之前自己编写的代码中基本上是全部都写了复位逻辑,但最近也看到了别人写不复位的寄存器,因此引发了对是否需要对全部reg赋初值的思考。

首先,全部复位是完全可以的(如果FPGA资源时序允许的话),这样电路复位后的状态是完全可知的,可以避免电路刚上电是出现X态。

其次,控制流需要复位,数据流不进行复位,保证所有数据寄存器在使用前被正确数据覆盖也是可以的。这时上电带来的随机值(X态)对电路功能并没有影响,而且当电路设计错误时,保留X态的传播可以让开发者在波形上更快的发现错误,加快调试进程。另一方面,没有复位逻辑的寄存单元,也可以减少复位信号的扇出,对功耗面积布线都是好处的。

至于,具体是否需要全部编写复位逻辑,可以根据具体的应用场景需求和可用资源而决定。

3.2 ASIC场景下reg赋初值

3.2.1 ASIC reg赋初值方式

对于ASIC来说,在声明reg时赋初值毫无意义,不同于FPGA查找表方式,数字电路并没有某种机制让这个寄存器在一开始确定为某个值。在声明reg时赋初值虽然不算不可综合但是也没哪家的cell上能生效。因此对于ASIC而言,都是通过上电复位来实现赋初值的。

3.2.2 reg 是否需要全部赋初值

这点与FPGA场景下的思路是一致的。

四、参考资料

Verilog reg有没有必要全部初始赋值? - 知乎 (zhihu.com)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/821783.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Windows】GPU、CUDA、cuDNN、Pytorch、Python知识总结

文章目录 显卡GPUCUDACUDA ToolkitCUDA SamplesCUDA DriverCUDA Toolkit和CUDA Driver版本的对应CUDA Driver和CUDA Runtime的区别nvcc和nvidia-smi的区别cuDNN查看GPU信息nvidia-smi(Driver版)NVIDIA控制面板nvcc -V或nvcc --version(runtime版)报错:nvcc 不是内部或外部…

数字化转型-工具变量数据集

01、数据介绍 数字化转型是指企业或个人利用数字技术,如大数据、云计算、人工智能等,对其业务流程、运营模式、决策方式等进行全面、深入的变革,以提高效率、降低成本、提升质量、增强竞争力。在这个过程中,工具变量扮演着至关重…

手写SpringBoot项目所使用的xxl-job分布式任务调度平台的starter

手写SpringBoot项目所使用的xxl-job分布式任务调度平台的starter 要将上述代码抽离成一个独立的 Spring Boot Starter,您需要创建一个新的 Maven 项目,并按照以下步骤进行操作: 创建 Maven 项目: 使用 IDE 或命令行创建一个新的 …

JVM虚拟机(九)如何开启 GC 日志

目录 一、引言二、开启 GC 日志三、解析 GC 日志四、优化建议 一、引言 在 Java 应用程序的运行过程中,垃圾收集(Garbage Collection,简称 GC)是一个非常重要的环节。GC 负责自动管理内存,回收不再使用的对象所占用的…

zabbix 自动发现与自动注册 部署 zabbix 代理服务器

zabbix 自动发现(对于 agent2 是被动模式) zabbix server 主动的去发现所有的客户端,然后将客户端的信息登记在服务端上。 缺点是如果定义的网段中的主机数量多,zabbix server 登记耗时较久,且压力会较大。1.确保客户端…

一次配置Docker环境的完整记录

一次配置Docker环境的完整记录 Docker环境搭建报错与解决报错一报错二报错三 Docker环境搭建 本节介绍了一次配置docker环境的完整记录: 编写Dockerfile文件: FROM pytorch/pytorch:1.10.0-cuda11.3-cudnn8-develRUN rm /etc/apt/sources.list.d/cuda.l…

mfc 带有复选框的ListBox

mfc 带有复选框的 ListBox 效果: 添加 ListBox 控件 从工具箱拖拽 ListBox 控件到窗口上,并设置属性: 包含字符串:true所有者描述:Fixed 给ListBox添加控制变量 添加完后,将m_list_box的类型使用CC…

Qt+vstudio2022的报错信息积累

从今天开始记录一下平常开发工作中的报错记录,后续有错误动态补充! 报错信息:【MSB8041】此项目需要 MFC 库。从 Visual Studio 安装程序(单个组件选项卡)为正在使用的任何工具集和体系结构安装它们。 解决: 背景:换…

uniapp--登录和注册页面-- login

目录 1.效果展示 2.源代码展示 测试登录 login.js 测试请求 request.js 测试首页index.js 1.效果展示 2.源代码展示 <template><view><f-navbar title"登录" navbarType"4"></f-navbar><view class"tips"><…

通俗易懂降维理解------SIFT【大白话版】!!!

SIFT&#xff08;尺度不变特征变换&#xff09;是一种在计算机视觉中用来发现图像中特定点&#xff08;特征点&#xff09;并能够精确描述这些点的方法&#xff0c;这样即使在图像的大小、角度或光线变化后&#xff0c;这些点仍然可以被识别和匹配。简单来说&#xff0c;SIFT帮…

图数据库Neo4J入门——Neo4J下载安装+Cypher基本操作+《西游记》人物关系图实例

这里写目录标题 一、效果图二、环境准备三、数据库设计3.1 人物节点设计3.2 关系设计 四、操作步骤4.1 下载、安装、启动Neo4J服务4.1.1 配置Neo4J环境变量4.1.2 启动Neo4J服务器4.1.3 启动Ne04J客户端 4.2 创建节点4.3 创建关系&#xff08;从已有节点创建关系&#xff09;4.4…

PhpStorm2024安装包(亲测可用)

目录 一、软件简介 二、软件下载 一、软件简介 PhpStorm是由JetBrains公司开发的一款商业的PHP集成开发环境&#xff08;IDE&#xff09;&#xff0c;深受全球开发人员的喜爱。它旨在提高开发效率&#xff0c;通过深刻理解用户的编码习惯&#xff0c;提供智能代码补全、快速导…

前端解析URL的两种方式

方法一&#xff1a;利用 splice 分割 循环依次取出 方法一&#xff1a; function queryURLparams(url) {let obj {}if (url.indexOf(?) < 0) return objlet arr url.split(?)url arr[1]let array url.split(&)for (let i 0; i < array.length; i) {let arr2…

Linux bash 与 命令行 查找进程的不同

#必须使用 GL2ServerConsole.dll 来过滤 #不能使用 GL2ServerConsole #在命令行模式下一样 #但是通过远程bash调用 后者会返回如下内容: root 25800 0.0 0.0 113280 1220 ? S 20:36 0:00 bash -c /root/Run_GL2ServerConsole.sh root 25801 0.0 0.0 113284 872 ? S 20:36 0:…

【JavaEE】网络编程

文章目录 一、什么是网络编程网络编程中的基本概念 一、什么是网络编程 网络编程&#xff0c;指网络上的主机&#xff0c;通过不同的进程&#xff0c;以编程的方式实现网络通信&#xff08;或称为网络数据传输&#xff09;。 当然&#xff0c;我们只要满足进程不同就行&#x…

Java面试八股文(JVM篇)(❤❤)

Java面试八股文_JVM篇 1、知识点汇总2、知识点详解&#xff1a;3、说说类加载与卸载11、说说Java对象创建过程12、知道类的生命周期吗&#xff1f;14、如何判断对象可以被回收&#xff1f;17、调优命令有哪些&#xff1f;18、常见调优工具有哪些20、你知道哪些JVM性能调优参数&…

vue的就地更新与v-for的key属性

vue的就地更新 Vue中的就地更新到底是怎么回事&#xff0c;为什么会存在就地更新的现象&#xff1f; 注意下面的例子&#xff0c;使用v-for指令时&#xff0c;没有绑定key值&#xff0c;才有就地更新的现象&#xff0c;因为Vue默认按照就地更新的策略来更新v-for渲染的元素列表…

CTFHUB-技能树-Web前置技能-文件上传(前端验证—MIME绕过、00截断、00截断-双写后缀)

CTFHUB-技能树-Web前置技能-文件上传&#xff08;前端验证—MIME绕过、00截断、00截断-双写后缀&#xff09; 文章目录 CTFHUB-技能树-Web前置技能-文件上传&#xff08;前端验证—MIME绕过、00截断、00截断-双写后缀&#xff09;前端验证—MIME绕过有关MIMEMIME的作用 解题时有…

元宇宙VR虚拟线上展馆满足企业快速布展的需要

想要拥有一个VR线上虚拟展馆&#xff0c;展现您的城市风采或企业特色吗? 相比实体展馆搭建&#xff0c;VR线上虚拟展馆投入资金少&#xff0c;回报周期短&#xff0c;只需几个月的时间&#xff0c;您就能开始资金回笼。那么一个VR线上虚拟展馆多少钱呢? 深圳VR公司华锐视点基…

数据库基本概念和SQL基本语句

数据库&#xff08;Database&#xff09;是按照数据结构来组织、存储和管理数据的仓库。在数据库中&#xff0c;数据通常以表格的形式存储&#xff0c;这些表格包含了行和列。行通常代表记录&#xff0c;而列代表记录中的不同字段。数据库的设计允许对数据进行高效地查询、更新…