当前位置: 首页 > news >正文

【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.lryc.cn/news/340181.html

相关文章:

  • NLP问答系统:使用 Deepset SQUAD 和 SQuAD v2 度量评估
  • php开发中如何防止抓包工具伪造请求
  • 密码学 | 椭圆曲线数字签名方法 ECDSA(下)
  • 拟态个人主页UI源码
  • 移动硬盘无法打开?别慌!这里有救星!
  • windows下已经创建好了虚拟环境,但是切换不了的解决方法
  • Java反序列化基础-类的动态加载
  • 课堂行为动作识别数据集
  • 【数据库】MVCC
  • 快速排序题目SelectK问题
  • es6解构赋值
  • Jenkins上面使用pnpm打包
  • 设计编程网站集:动物,昆虫,蚂蚁养殖笔记
  • 面经学习(众智宏图实习)
  • DataGrip2024安装包(亲测可用)
  • 【InternLM 实战营第二期-笔记4】XTuner 微调个人小助手认知
  • <计算机网络自顶向下> CDN
  • 【Git教程】(十二)工作流之项目设置 — 何时使用工作流,工作流的结构,项目设置概述、执行过程及其实现 ~
  • Java 排序算法
  • 【重磅更新】开源表单系统填鸭表单v5版发布!
  • 保姆级教程 | Adobe Illustrator 中插入数学符号
  • 数据结构——双向循环链表
  • 使用ZLMediaKit搭建服务器实现推流拉流
  • 【拦截器Interceptor】springboot拦截器的使用和原理
  • Android12 user版本无法进入recovery问题
  • Android沙盒机制
  • 【C++】每日一题 290 单词规律
  • CSS3 animation-direction 属性
  • 【mysql 5.7 没有ini 文件,手动添加配置文件】
  • 【Python】从零开始学习Python中的随机模块:实现验证码生成功能