Re: [問題] veriog撰寫問題
作者: 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
08/07 20:09, 1F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 9 之 10 篇):