对于寄存器,如果没有明确指定其初始值,Vivado会根据其类型(FDCE/FDRE/FDPE/FDRE)设定合适的初始值。有些工程师喜欢使用复位信号,对所有的寄存器进行上电复位,使其在处理数据之前达到期望初始状态。但这会有一个不利之处就是复位信号的扇出很大,从而消耗了大量的布线资源,甚至造成布线拥塞。那么能不能让寄存器在上电之后不用通过复位就输出期望值呢?答案是肯定的。
Xilinx也建议对于同步元件,最好设定其初始值。这里我们以最常用的寄存器为例。如果使用的是VHDL,可以采用下面的方法设定寄存器初始值,如下图所示。

如果使用的是Verilog,可以采用下面的方法设定寄存器初始值,如下图所示。

此外,对于Verilog,也可通过initial设定初始值,如下图所示。

采用这种方法的好处是:综合工具是支持的,这样生成bit文件时这些初始值会被写入配置文件中,上电即可生效,避免了使用复位造成的扇出过大;同时在仿真时,也能跟实际业务相匹配。 为了验证这个方法是否生效,只需要打开综合后的.dcp,找到相应的寄存器,在其Property窗口中查看属性INIT的值,如下图所示。

编辑:jq
-
寄存器
+关注
关注
31文章
5590浏览量
129092 -
上电复位
+关注
关注
1文章
43浏览量
16143 -
init
+关注
关注
0文章
16浏览量
3666
原文标题:如何设定寄存器的初始值?
文章出处:【微信号:Lauren_FPGA,微信公众号:FPGA技术驿站】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
智能显示模块怎么在显示工程中给寄存器设置初始值?我想给变量一个上电的默认值该如何设置?
【NCS随笔】nRF54L15使用UICR寄存器保存数据
NVMe高速传输之摆脱XDMA设计32:寄存器功能验证与分析2
使用寄存器点亮LED灯
如何用C语言操作寄存器——瑞萨RA系列FSP库开发实战指南(10)

教你们怎么去设定寄存器的初始值
评论