在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
楼主: mysoul

[求助] modelsim仿真与实际功能不符问题?

[复制链接]
发表于 2017-6-14 16:51:42 | 显示全部楼层
第四根黄线也是在黄线后的那个时钟沿采到的shift_clk_negedge
 楼主| 发表于 2017-6-16 10:23:16 | 显示全部楼层
回复 10# 殷工


   这个地方其实我确认过,在黄线的下一个时钟沿如果采样到该信号为1,计数器依旧会减一对吧?不过在黄线后面的下一个主时钟上升沿,该信号为0,所以应该不会减一,还有一点就是,如果是这个时钟采样到该信号为1,bit_cnt的跳变也应该在下一个主时钟的上升沿那里才对吧?
 楼主| 发表于 2017-6-16 10:24:18 | 显示全部楼层
回复 9# 殷工

希望你能把我的错误指出来,我一直没想明白
发表于 2017-6-16 11:03:12 | 显示全部楼层
回复 12# mysoul


    黄线处并没有采到 1 ; 黄线后的那个时钟沿才采到,cnt是D触发器,所以它的值在黄线后的那个时钟沿就立即变了
发表于 2017-6-16 11:25:13 | 显示全部楼层
仿真的结果是对的
 楼主| 发表于 2017-6-19 10:06:42 | 显示全部楼层
回复 14# 殷工
首先很谢谢你的指导,让我发现了自己对基础知识理解的一些错误,不过我还有个问题想问你。1.黄线后一个周期的时钟上升沿,该信号是由1跳变到0,我在modelsim上把线弄到时钟上升沿,该信号处显示为0,这里我应该把该信号看成1还是0。2.你说的这个cnt是D触发器,所以cnt在时钟沿的时候立即跳变。这里不是很明白,我一直认为,D触发器具有延时一个周期的功能?不知道我的理解对不对?
发表于 2017-6-19 11:14:10 | 显示全部楼层
回复 16# mysoul


    1. 因为你的edge信号实在时钟控制下产生的,所以他的变化比时钟沿有一个很小的延时,但是这个延时你在modesim做前仿是看不到的。你看到的edge的变化跟是种沿是对其的,再加上下一个触发器采这个信号的时候需要一定的建立时间所以在黄线处是采不到的。
2,D触发器的延时作用产生的原因同1
 楼主| 发表于 2017-8-2 17:06:10 | 显示全部楼层
回复 15# wangyongan

你好,我还是没有明白这个仿真结果为什么会是对的,总感觉应该是前一个时钟采样到条件满足,下一个时钟数据才更新,不知道是不是我对非阻塞赋值方式的理解有错误?希望你能为我解答疑惑
发表于 2017-8-3 10:28:55 | 显示全部楼层
1.都采样到了信号的上升沿啊,但是不是和时钟同步的,你可以调出sck_r1和sck_r2的波形看一下
2.第一个边沿为啥不减1是不是因为你的spi_state还处于IDLE
 楼主| 发表于 2017-8-3 14:43:47 | 显示全部楼层
回复 19# renfz


    第一个没有减一,我查看了一下那个时候的状态并不是出于idle,你说的都采样到了上升沿,我不太明白是什么意思?

不过肯定都采样到了sck的上升沿,但是图中黄线部分都没有采样到shift_clk_negedge为1 ,而是在下一个时钟沿采样到其为1。但是这个采样不是我最大的疑惑。

我最大的疑惑在于,为什么非阻塞赋值,这个计数器变量的更新没有延时一个周期。我的理解是当前时钟沿采样到条件满足,下一个时钟沿变量才更新?而图中的现象和我理解的完全不同。殷工所说的,因为cnt是D触发器,所以值会立即更新。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

×

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-3-29 05:09 , Processed in 0.029312 second(s), 6 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表