发 帖  
[问答] verilog的if语句问题
250 Verilog
分享

新手
如图是代码和时序图。程序功能   是每个clk上升沿时检测a值(并存入ar,再将ar的存入b),在clk的上升沿同时执行if语句,使每当if(b)为真时,cr翻转,否则不变。
疑问   但我时序仿真时不理解一个地方(即问题1)。
推测   然后我认为是if(b)进行判断的同时,ar在对b进行赋值。由于只有当赋值结束,b才为1,因此,判断时if(b)不为真,维持原输出。
但好像不对,因为dr的输出立刻翻转了。
还是说由always驱动的/reg赋值/和/if语句块/有先后?时钟上升沿时,先if,再赋值?

问题1.我想不明白当b在上升沿时,为什么cr的输出没有立刻翻转,而是延时一个clk周期后翻转?
问题2.另一个dr的输出只是改变了敏感值里的上升沿触发为b的边沿触发,dr的输出就在b上升沿时立刻翻转了,这和cr的区别在哪?


还请各位帮忙解答一下,非常感谢!





0

时序

时序

代码

代码
2018-11-28 17:45:14   评论 邀请回答
3个回答
建议先看下Verilog里面几个幅值语句的先后吧
2018-11-28 18:44:12 评论

举报

always敏感信号不可以同时包括同一个信号的上升沿和下降沿
2018-12-1 15:29:51 评论

举报

b 的上升沿触发又有下降沿的触发这是不对的

撰写答案

你正在撰写答案

如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。

高级模式
您需要登录后才可以回帖 登录 | 注册

提问题
关闭

站长推荐 上一条 /7 下一条

快速回复 返回顶部 返回列表