Re: [問題] verilog delay問題

看板Electronics作者 (可愛的哲哲)時間5年前 (2018/11/08 13:51), 5年前編輯推噓1(100)
留言1則, 1人參與, 5年前最新討論串2/2 (看更多)
※ 引述《Emeth (Emeth)》之銘言: : 大家好,我有一個關於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。 : 請問我是哪裡想錯了? : 謝謝。 : 我明白了,謝謝! : 不過這樣我又有幾個問題: : 1. 所以有delay的gate,例如我程式裡的nor gate, : 只有在input發生改變時才會被「觸發」, : 並在delay 40ns以後,才去做nor的動作嗎? : 且其在執行時,所看的input的值,都是在執行當下的值嗎? : 例如nor在150ns時執行,而它要看的是150ns的w1和E的值。 : (用「觸發」這個詞好像有點不恰當,希望你能明白我的意思……) 是的,觸發後,根據 gate-delay 設定,等待時間過後,再去抓值並計算。 110ns 觸發的 event, 先等待,再計算,計算的時候抓目前的w1 和 E 來算 D : 2. 所以在我這個例子中,delay的意義是體現在於, : 當input有所改變後,要「delay」若干ns才執行動作, : 而不是input的值要「delay」若干ns後,才進gate中去執行動作。 : 我這樣理解是否正確? 本來你寫的 delay 就是指 gate 的 delay 啊 : 3. 如果我把我例子中的or的#(30)改為#(50),會得到下面這張波形圖: : https://i.imgur.com/gHjkfBk.png
: 想請問在這張波形圖中,w1也剛好在150ns時從0變成1, : 那麼在150ns要做nor時,為什麼取到的w1的值是0?而不是1? 你現在問的問題是牽涉到同一個 time slot 中,Verilog Standard 規定 的處理順序。我覺得你有興趣就自己去 K Verilog Standard 就好了。 把 or #(50) 改成 or #(51) 會讓你把你的問題看清楚, 而不要再陷入另外一個問題中。或者你說這個叫做 race condition 的問題。 先避開,不要同時看兩個問題。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.123.101.43 ※ 文章網址: https://www.ptt.cc/bbs/Electronics/M.1541656287.A.AB3.html ※ 編輯: wildwolf (140.123.101.43), 11/08/2018 13:52:26

11/08 15:33, 5年前 , 1F
好的,太感謝你了!!
11/08 15:33, 1F
文章代碼(AID): #1RuyxVgp (Electronics)
討論串 (同標題文章)
文章代碼(AID): #1RuyxVgp (Electronics)