作者BaChi5566 (巴奇56)
看板Electronics
標題[問題] async reset一個問題
時間Tue Jul 16 17:20:40 2019
有個verilog 問題困擾我很久了
就是一般always block
如下舉例
假設有兩個1bit reg a,b
always @(posedge clk or negedge reset)
if (~reset)
a <= 1'b0;
else
a<=b;
那當reset是1時
會將 “clk rising 前”的b值給a
那為什麼當negedge reset產生時
以上面的推論
我們看到的應該是
reset falling前的值 即reset是1的情況
(這樣就不會進入if的第一個條件)
麻煩各位幫忙解答一下
感謝
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 101.12.25.96 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Electronics/M.1563268842.A.575.html
※ 編輯: BaChi5566 (101.12.25.96 臺灣), 07/16/2019 17:23:33
※ 編輯: BaChi5566 (101.12.25.96 臺灣), 07/16/2019 17:24:07
※ 編輯: BaChi5566 (101.12.25.96 臺灣), 07/16/2019 17:24:35
※ 編輯: BaChi5566 (101.12.25.96 臺灣), 07/16/2019 17:24:56
1F:推 tkhan: 這不是C喔,而且看不懂你在講啥 07/16 18:08
2F:→ haswell425: 自己畫畫看波形 07/17 08:46
3F:推 bakerly: 順序應該是edge發生->進入always->檢查條件->執行敍述。 07/17 13:32
4F:→ bakerly: 而不是你講的把clk rising前的b給a。 07/17 13:32
5F:推 Baneling: 不知道該說語法不好還是電路不好... 你自己都說非同步了 07/17 23:16
6F:→ Baneling: reset跟clk就沒有關係呀 (其實在timing上還是有...) 07/17 23:18
7F:→ Baneling: 那由negedge reset觸發條件時為何reset要為1? 07/17 23:19
8F:推 ViewMoon: clk rising 前 (X) -> clk rising 時 (O) 07/23 07:55
9F:→ ViewMoon: reset falling前的值 (X) -> reset falling 時的值 07/23 07:56
10F:→ ViewMoon: 即reset是1的情況 (X) -> 即reset是0的情況 (O) 07/23 07:56
11F:→ ViewMoon: reset is edge-trig in RTL simulatoin (O) 07/23 07:57
12F:→ ViewMoon: reset is level-trig in physical device (O) 07/23 07:58