對于寄存器,如果沒有明確指定其初始值,Vivado會根據其類型(FDCE/FDRE/FDPE/FDRE)設定合適的初始值。有些工程師喜歡使用復位信號,對所有的寄存器進行上電復位,使其在處理數據之前達到期望初始狀態。但這會有一個不利之處就是復位信號的扇出很大,從而消耗了大量的布線資源,甚至造成布線擁塞。那么能不能讓寄存器在上電之后不用通過復位就輸出期望值呢?答案是肯定的。
Xilinx也建議對于同步元件,最好設定其初始值。這里我們以最常用的寄存器為例。如果使用的是VHDL,可以采用下面的方法設定寄存器初始值,如下圖所示。
如果使用的是Verilog,可以采用下面的方法設定寄存器初始值,如下圖所示。
此外,對于Verilog,也可通過initial設定初始值,如下圖所示。
采用這種方法的好處是:綜合工具是支持的,這樣生成bit文件時這些初始值會被寫入配置文件中,上電即可生效,避免了使用復位造成的扇出過大;同時在仿真時,也能跟實際業務相匹配。 為了驗證這個方法是否生效,只需要打開綜合后的.dcp,找到相應的寄存器,在其Property窗口中查看屬性INIT的值,如下圖所示。
編輯:jq
-
寄存器
+關注
關注
31文章
5372瀏覽量
121283 -
上電復位
+關注
關注
1文章
39瀏覽量
15868 -
init
+關注
關注
0文章
16瀏覽量
3455
原文標題:如何設定寄存器的初始值?
文章出處:【微信號:Lauren_FPGA,微信公眾號:FPGA技術驛站】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
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)
評論