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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 2196|回复: 2

[求助] 关于modelsim仿真问题

[复制链接]
发表于 2015-4-5 23:40:18 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
reg [7:0] temp;
reg [7:0] temp1;
always@(posedge clk or negedge rst_n)
begin
if(!rst_n)
  temp1 <= 0;
else
   temp1 <= Bina_img_in;
  if(temp1 > 124)  
   temp <= 255;
  else
    temp <= 0;
end
assign Bina_img_out = temp;
endmodule
[img]file:///C:\Users\sola\AppData\Roaming\Tencent\Users\380514580\QQ\WinTemp\RichOle\QA2ZO[)GPB_QFC4[K3D4SIR.png[/img]
请问一  上面这段代码仿真出来的波形图怎么是这样的  不是时钟上升沿才处理吗?  Bina_img_in应该往后推半个周期才对啊?  而且Bina_img_out应该是同步输出才是 怎么延后了一个半周期呢??求高手告知!!!
QQ截图20150405232242.png
发表于 2015-4-6 19:39:33 | 显示全部楼层
1. Bina_img_in是这个模块的input吧?如果是这样,它应该是你在testbench赋值的,至于它为什么是下降沿变化而不是上升沿,应该问你自己吧。
2. FPGA是并行的,尤其你使用阻塞语句“<=”时,“ temp1 <= Bina_img_in;”和后面一个“if...else...”是并行执行的,因此Bina_img_out输出值必然要delay一个时钟周期。
发表于 2015-4-8 13:39:54 | 显示全部楼层
这个仿真结果是正确的,在时钟上升沿处理数据,那么testbench中输入数据Bina_img_in就要在时钟下降沿加载,这样才能满足建立保持时间,从而避免竞争冒险。至于为什么要延时一个时钟周期,还是好好看看阻塞赋值和非阻塞赋值的区别吧。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

GMT+8, 2024-4-20 11:28 , Processed in 0.019107 second(s), 9 queries , Gzip On, Redis On.

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