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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 6649|回复: 14

[求助] modelsim仿真问题

[复制链接]
发表于 2011-1-7 17:11:17 | 显示全部楼层 |阅读模式

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

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

x

module ff(


clk,


rst,


in,


out

);


input clk;


input rst;


input in;


output out;

  


reg out;


reg in_pre;

  


always @(posedge clk)


begin


if (rst)


begin


in_pre <= 1'b0;


out
<= 1'b0;


end


else


begin


in_pre <= in;


out <= in_pre;


end


end

endmodule

                     图一
ff
综合后为两级D寄存器

module ff_tb1;

reg clk;

reg rst;

reg in;

wire out;

initial

begin


clk = 0;


rst = 1;


#12 rst = 0;

end

always #5 clk = ~clk;

always @(posedge clk)

begin

  if(rst)


in = 0;


else


in = $random;

end

ff ff_inst(.clk(clk),.rst(rst),.in(in),.out(out));

endmodule


图二
ff_tb1仿真波形

  查看波形发现信号in和in_pre好像是由两个网线连接的信号,而in_pre和out才像是经过了寄存器。一般寄存器的采样在时钟前delta时间,而赋值在时钟后delta时间


为什么in和in_pre,都是经过了寄存器,而输出的时序差别这么大呢???



研究了好长时间,老是想不通为什么

发表于 2011-1-7 17:13:54 | 显示全部楼层
没图啊
 楼主| 发表于 2011-1-7 17:17:26 | 显示全部楼层
图怎么没贴上







仿真

仿真
 楼主| 发表于 2011-1-7 17:20:00 | 显示全部楼层

图一 综合

图一 综合
不会弄
发表于 2011-1-7 17:44:10 | 显示全部楼层
in和prein中间再加个变量 是不是就出现你期待的结果了 这好像没意义吧
发表于 2011-1-7 17:56:25 | 显示全部楼层
这是modelsim工具的问题,和它对仿真事件的模拟顺序有关
一般情况下,在modelsim仿真中,如果在testbench中产生一个由posedge clk 触发的信号赋值,会被认为是在posedge clk之前发生。因此在设计单元中,对这一信号进行采样,出现的结果就是你这样的,像是在同一时钟沿上两个信号同时赋值了。
这是modelsim一直存在的问题。如果你在testbench里给 in 这个信号的赋值加上一个延时,就可以正确仿真了。
发表于 2011-1-7 22:59:23 | 显示全部楼层
建议所以代码设计最好都考虑时延
发表于 2011-1-8 10:01:44 | 显示全部楼层
回复 6# kmac


    学习了
 楼主| 发表于 2011-1-9 16:49:31 | 显示全部楼层
回复 6# kmac


    恩,多谢了。我也采用了一个类似的方法解决的,我在testbench里用了非阻塞赋值(<=)。不过好像在哪看过,推荐在tb里的驱动不要使用非阻塞赋值,所以觉得不妥,才发帖请教。
 楼主| 发表于 2011-1-9 16:55:00 | 显示全部楼层
回复 5# pzchu


    加变量就是浪费寄存器!!! 也不是没意义,我做一个2次迭代的算法。为了仿真调试方便,只仿真一次迭代,数对上了。把2次迭代都仿真,数就对不上了。原因就是1次迭代的输入是tb给的,2次迭代的输入是1次迭代的输出。一个没有延迟,一个延迟了一拍。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

GMT+8, 2024-11-6 10:58 , Processed in 0.026030 second(s), 10 queries , Gzip On, Redis On.

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