前言
本復位只針對vivado中的暫存器復位。
什麼時候需要復位?到底要不要復位?怎麼復位?復位有什麼卵用?
該復位的暫存器需要復位,復位使得暫存器恢復初始值,有的暫存器並不需要復位(資料流路徑上)。
官方說法如下:具體可檢視ug949。
流程所以,問題來了,為了不使用復位訊號該怎麼賦初始值。
注意:reg語句中給暫存器賦初始值,在fpga上電配置後值就為這個初始值。
如果只有復位語句中的初始值,那麼上電配置(configuration )後和復位(reset)後暫存器都為此初始值。
如果reg語句給了初始值x1,且在復位語句中賦初始值x2,那麼上電配置後初始值為x1,復位後暫存器初始值為x2。
**驗證:
1.如下**,不復位也不賦初始值,vivado綜合後暫存器初始值全為0。
(*dont_touch="2.如下**,不復位賦初始值,vivado綜合後暫存器初始值為**中賦的初始值。yes"*)reg [5:0
] r_cnt_1;
always @(posedge i_clk)
begin
r_cnt_1
<= r_cnt_1 + 6
'd1;
end //
always
(*dont_touch="3.如下**,使用復位但不給初始值,vivado綜合後暫存器初始值為**中復位語句中賦的初始值。(xilinx不推薦非同步復位)yes"*)reg [5:0
] r_cnt_1 = 6'h34;
always @(posedge i_clk)
begin
r_cnt_1
<= r_cnt_1 + 6
'd1;
end //
always
(*dont_touch="4.如下**,既使用復位且給初始值,vivado綜合後暫存器初始值為reg賦的初始值。yes"*)reg [5:0
] r_cnt_0;
always @(posedge i_clk,negedge i_rst_n)
begin
if (~i_rst_n)
r_cnt_0
<= 6
'h12;
else
r_cnt_0
<= r_cnt_0 + 6
'd1;
end //
always
(*dont_touch="另乙個問題,vivado綜合暫存器初始值怎麼檢視?yes"*)reg [5:0] r_cnt_2 = 6
'h01;
always @(posedge i_clk,negedge i_rst_n)
begin
if (~i_rst_n)
r_cnt_2
<= 6
'h12;
else
r_cnt_2
<= r_cnt_2 + 6
'd1;
end //
always
(1)開啟綜合後的工程。
(3)在properties視窗中檢視初始值如下,右側可以更改初始值(沒使用過。。)
以上。
Vivado暫存器初始值問題
前言 本復位只針對vivado中的暫存器復位。什麼時候需要復位?到底要不要復位?怎麼復位?復位有什麼卵用?該復位的暫存器需要復位,復位使得暫存器恢復初始值,有的暫存器並不需要復位 資料流路徑上 官方說法如下 具體可檢視ug949。流程所以,問題來了,為了不使用復位訊號該怎麼賦初始值。注意 reg語句...
傳參初始值問題
方式一 後台直接接收,列出所有引數,設定預設值為空,這樣mybatis判斷時不會出現找不到引數屬性的情況 requestbody為接收json或者實體物件必備 requestparam value endtime defaultvalue string endtime,requestparam va...
DropdownList 賦初始值問題
網上查了這樣的 雖然是可以用。但是會點選多次會出現 dropdownlist不能選多個值的問題 private void initdroplistitemlirun string c business private void initdroplistitem string c business 最...