Re: [問題] veriog撰寫問題

看板Electronics作者時間16年前 (2009/08/07 17:30), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串9/10 (看更多)
作者: bakerly (bakerly) 看板: Electronics 標題: Re: [問題] veriog撰寫問題 時間: Fri Aug 7 17:30:19 2009 ※ 引述《felghana (adol)》之銘言: : : reg incr_d; : : always @ ( posedge reset or posedge clk ) : : if ( reset ) incr_d <= 1'b0; : : else incr_d <= incr; : : wire incr_p = incr & ~incr_d; : : reg decr_d; : : always @ ( posedge reset or posedge clk ) : : if ( reset ) decr_d <= 1'b0; : : else decr_d <= decr; : : wire decr_p = decr & ~decr_d; : : reg [12:0] mod_n; : : always @ ( posedge reset or posedge clk ) : : if ( reset ) mod_n <= 13'h000; : : else if ( incr_p ) mod_n <= mod_n + 13'h00a; : : else if ( decr_p ) mod_n <= mod_n - 13'h00a; : 講一下我對這個電路的想法好了 各位大大看有沒有錯 : 1.假定某一時間incr=1 那麼incr_p也會立刻變為1 : 2.當離這個時間最接近的那一次posedge clk發生的瞬間 : 會同時進入三個always block 因此incr_d=1造成incr_p=0 : 3.同時間第三個always block也要根據incr_p的值來決定進入哪個判斷式 : 我的疑問就是 這樣2和3同時發生 能確定一定會跑mod_n <= mod_n + 13'h00a 嗎? : 到底是incr_p先變為0 再做判斷 : 還是incr_p還沒變為0時 就做完判斷了 : 我的電路要後者才是正確的 : 不知道我有哪邊想錯? 還請指教 問題在於 因為incr_d是由CLK產生的,所以在incr_p變為0之前第三個always會先執行 現實生活上的電路incr_p一定會比CLK慢一個DFF+一個AND的延遲。 我在這裡沒有寫任何的delay在裡面,你如果把每一行code都加上個#1 再下去想可能就會清楚一點了。 當然...這有個前題...CLK是完美的...如果CLK的SKEW也拿進來講 那是有機會出錯的。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.168.128.150 ※ 編輯: bakerly 來自: 218.168.128.150 (08/07 17:32)

08/07 20:09, , 1F
確實用硬體去想 加上delay就不會錯了 感謝指教
08/07 20:09, 1F
文章代碼(AID): #1AU_GiPI (Electronics)
討論串 (同標題文章)
文章代碼(AID): #1AU_GiPI (Electronics)