Modelsim仿真一些简单问题

  1. 在学习时序逻辑的时候,我们明白寄存器赋值总有一拍的延迟但是有的时候仿真的时候会发现会没有延迟,比如下面这段代码对应的modelsim仿真。

       

    源代码代码如下:

    测试激励如下:

    仿真截图如下:

2.从仿真截图可以看出work_flag与se_flag几乎是同时拉高的,那么造成这个现象的原因是什么呢?

对代码的理解应该是这样的:如果时钟上升沿到来与se_flag == 1,那么在下一个时钟延到来时会让work_flag ==1,而在我们手动给se_flag激励的时候modelsim会认为在时钟上升沿之前se_flag已经等于1了,虽然这个在波形中看不出来,但是我们需要明白。

3:如何解决这种问题呢?其实办法很简单,就是我们在激励中尽量se_flag与时钟上升沿错开,即滞后一点再给激励,具体如下。

仿真截图如下:

4.这样在时钟上升沿到来时,se_flag还是0并未是1,便可以看到我们希望的理想结果。

  

转载于:https://www.cnblogs.com/jb9527/p/10089001.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值