作者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/cn.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