再说ModelSim难以察觉的问题

为什么,是“再说”,因为前面写的有篇博客叫ModelSim难以察觉的问题

废话少说,进入正题:

前些天仿真PLL时,发现PLL没有时钟输出,但是示波器一测,反而有输出,这真是个怪事!!

难道是ModelSim出问题了?我傻傻的想到。

于是,开始分析问题,我例化PLL时,设置的时钟输入是50M。而TestBeach中是这么写的:

CLK = 0; forever #5 CLK = ~CLK;

这句话就是产生一个时钟,#5也就是时钟的一个延时,

所谓RTL仿真是在理想的情况下进行的,一般情况下这里写几真的无所谓。

但是对于PLL而言却是有所谓了!

CLK = 0; forever #5 CLK = ~CLK; 这样写的话就是一个周期10ns,时钟就是100M

而我例化PLL时设置的时钟输入是50M,这两者明显不匹配,这显然让ModelSim很为难啊!于是给出一个警告,PLL就不产生波形了。

好了问题找到了:仿真涉及到PLL时,TestBeach产生的时钟,必须去匹配PLL,不然不产生波形!

于是乎:

CLK = 0; forever #10 CLK = ~CLK;

这样波形就出来了:

我们还发现,PLL起振,大约在20NS(意外的收获,嘿嘿)

再说一点,有的时候我写时钟时会写成这样(笔误造成的)

CLK = 0; forever CLK = ~CLK;

也就是把那个延时忽略掉了,这样的话,你基本是看不到波形了,

因为,ModelSim基本上已经卡死了!

如果有一天,你发现你的ModelSim无缘无故卡死,请看下你的TestBeach

是不是把这个重要的延时写漏了~~

粽子糖果 发表于09-22 11:11 浏览65535次
分享到:

已有0条评论

暂时还没有回复哟,快来抢沙发吧

添加一条新评论

只有登录用户才能评论,请先登录注册哦!

话题作者

粽子糖果
粽子糖果(总统)
金币:41631个|学分:51991个
立即注册
畅学电子网,带你进入电子开发学习世界
专业电子工程技术学习交流社区,加入畅学一起充电加油吧!

x

畅学电子网订阅号