作者Emeth (Emeth)
看板Electronics
標題[問題] verilog delay問題
時間Wed Nov 7 16:18:59 2018
大家好,我有一個關於delay的問題,不知何解,
程式碼如下:
https://i.imgur.com/Es4FI5x.png
我根據程式碼畫出來的波形圖是長這樣:
https://i.imgur.com/s3TT4iB.png
然後實際跑出來的結果是這樣:
https://i.imgur.com/bkf0QxD.png
我的問題是:為什麼D在150ns~170ns之間沒有變成1?
我的想法是,因為在110ns時,E從1變成0,
那麼在delay 40ns以後,在150ns的時候,
D應該是做0和0的nor(因為在110ns時,w1和E都是0),所以D在150ns時變成1。
請問我是哪裡想錯了?
謝謝。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.113.193.118
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Electronics/M.1541578742.A.99F.html
1F:→ wildwolf: 110ns的E變化,要等到 110+40=150ns 的時候,才去看w1和 11/07 16:32
2F:→ wildwolf: E的值,所以在 150ns 的時候,D的值是 0 11/07 16:33
我明白了,謝謝!
不過這樣我又有幾個問題:
1. 所以有delay的gate,例如我程式裡的nor gate,
只有在input發生改變時才會被「觸發」,
並在delay 40ns以後,才去做nor的動作嗎?
且其在執行時,所看的input的值,都是在執行當下的值嗎?
例如nor在150ns時執行,而它要看的是150ns的w1和E的值。
(用「觸發」這個詞好像有點不恰當,希望你能明白我的意思……)
2. 所以在我這個例子中,delay的意義是體現在於,
當input有所改變後,要「delay」若干ns才執行動作,
而不是input的值要「delay」若干ns後,才進gate中去執行動作。
我這樣理解是否正確?
3. 如果我把我例子中的or的#(30)改為#(50),會得到下面這張波形圖:
https://i.imgur.com/gHjkfBk.png
想請問在這張波形圖中,w1也剛好在150ns時從0變成1,
那麼在150ns要做nor時,為什麼取到的w1的值是0?而不是1?
不好意思,問題有點多……
再次感謝你的回答!
3F:→ furio: 請問是用什麼跑出來的? 11/07 18:10
我用的simulator是ncverilog,
不好意思我是初學,不知道你要問的是不是這個?
※ 編輯: Emeth (123.195.36.40), 11/07/2018 21:32:22
※ 編輯: Emeth (123.195.36.40), 11/07/2018 21:33:18