宋桓公

【笔记】再说ModelSim难以察觉的问题

0
阅读(2370)

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

 

废话少说,进入正题:

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

image

难道是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;

这样波形就出来了:

image

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

 

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

CLK = 0; forever  CLK = ~CLK;

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

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

 

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

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


技术讨论欢迎加群~~电子技术协会   362584474