对于寄存器,如果没有明确指定其初始值,Vivado会根据其类型(FDCE/FDRE/FDPE/FDRE)设定合适的初始值。有些工程师喜欢使用复位信号,对所有的寄存器进行上电复位,使其在处理数据之前达到期望初始状态。但这会有一个不利之处就是复位信号的扇出很大,从而消耗了大量的布线资源,甚至造成布线拥塞。那么能不能让寄存器在上电之后不用通过复位就输出期望值呢?答案是肯定的。
Xilinx也建议对于同步元件,最好设定其初始值。这里我们以最常用的寄存器为例。如果使用的是VHDL,可以采用下面的方法设定寄存器初始值,如下图所示。
如果使用的是Verilog,可以采用下面的方法设定寄存器初始值,如下图所示。
此外,对于Verilog,也可通过initial设定初始值,如下图所示。
采用这种方法的好处是:综合工具是支持的,这样生成bit文件时这些初始值会被写入配置文件中,上电即可生效,避免了使用复位造成的扇出过大;同时在仿真时,也能跟实际业务相匹配。 为了验证这个方法是否生效,只需要打开综合后的.dcp,找到相应的寄存器,在其Property窗口中查看属性INIT的值,如下图所示。
编辑:jq
-
寄存器
+关注
关注
31文章
5377浏览量
121396 -
上电复位
+关注
关注
1文章
39浏览量
15869 -
init
+关注
关注
0文章
16浏览量
3459
原文标题:如何设定寄存器的初始值?
文章出处:【微信号:Lauren_FPGA,微信公众号:FPGA技术驿站】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
使用ads1298时,部分寄存器读写不正常,为什么?
ADS1298 CONFIG2读取初始值不正常是什么原因引起的?
AFE5801到底怎么读TGC registers寄存器组的值?
ads124s08把AIN0端口接入的采集电压断开或者接通,芯片的寄存器所有配置值都变成默认的初始值了,为什么?
AFE4404没有接外部时钟,4404寄存器的为初始值,能够通过IIC修改寄存器值吗?
使用ADS1256的8个Single-Ended输入去采集压力传感器数据,压力传感器空载时AIN0-AIN7 8个通道初始值不是直线,为什么?
Modbus协议的读取保持寄存器值
TAS5733L按照初始化的寄存器配置,播放音乐无声是怎么回事?
寄存器是什么意思?寄存器是如何构成的?
![<b class='flag-5'>寄存器</b>是什么意思?<b class='flag-5'>寄存器</b>是如何构成的?](https://file1.elecfans.com/web2/M00/00/2C/wKgZomasr0-AZeFEAAQm5QfLT8M176.png)
评论