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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 4494|回复: 11

[求助] modelsim仿真异常问题分析(尚无结论)

[复制链接]
发表于 2012-7-4 15:15:35 | 显示全部楼层 |阅读模式

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

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

x
VHDLMODELSIM 6.6d
问题描述:
testbench中有模块A和B

A 输出 clk和data到B模块,在B模块中对data信号进行寄存器延时(相对于clk),得到data1延时1个clk

方式1:port到port直接相连
A port map(clk=>a,dout=>data);
B port map(clk=>a,din=>data);
结果:data1与data相等,未延时1个clk

方式2:经过中间信号转接
A port map(clk=>a,dout=>data);
B port map(clk=>a,din=>c);
c<=data;
结果:data1相对data延时1个clk,与设计目标相符。


之前也遇到过一次类似情况,当时没有深究,如今也是百思不得其解,盼高手解惑。
发表于 2012-7-4 16:01:45 | 显示全部楼层
话说你C是用assign赋值的么?
能否写一个最简单的示例贴出来,也许就能找到问题说在了
 楼主| 发表于 2012-7-4 20:37:34 | 显示全部楼层
回复 2# shxr

我用的VHDL啊,


c 直接在结构体中赋值,相当于连线信号。


有一点:clk为A模块从串行数据中恢复出来的时钟,为组合逻辑输出。不知道是否跟这个有关。
发表于 2012-7-4 23:40:32 | 显示全部楼层
看不太懂,不过代码写错了吧 ,data1到那里去了?
看看是不是线连错了。
发表于 2012-7-5 08:01:30 | 显示全部楼层
很大的可能是delta delay的问题。估计是data和clk之间的delta delay关系不对。经过一个单独的赋值语句后,c对data来说有一个delta delay. modelsim在这上面,好像是有问题。
发表于 2012-7-5 09:07:35 | 显示全部楼层
看看你的代码能不能综合出寄存器来啊,很有可能就是data1和data直接通过wire连接在一起了,这样的话就没有延时了
发表于 2012-7-5 11:32:44 | 显示全部楼层
我觉得,是你在A模块中,在输出dout和clk之前,dout的组合逻辑比clk的组合逻辑复杂,或者经历的路线长,所以在A模块端口处,dout相对于clk有一个delta延迟,产生波形的时候把这个小延迟给省略了,所以你看不到毛刺。所以会有方式1的结果:data1与data相等,未延时1个clk。一个稳妥的方法,在A模块输出clk和dout的时候经过一个同步处理。
 楼主| 发表于 2012-7-5 13:17:24 | 显示全部楼层
谢谢大家热心回复,我再查一查,有结果了告诉大家。
发表于 2012-7-5 13:36:51 | 显示全部楼层
仿真的时候,选择without optimization
 楼主| 发表于 2012-7-5 14:36:33 | 显示全部楼层
回复 9# falloutmx

这个问题与优化选项没有关系啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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


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

GMT+8, 2024-11-26 01:39 , Processed in 0.030880 second(s), 9 queries , Gzip On, Redis On.

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