这个dcm究竟怎么了?

[复制链接]
5594|10
 楼主| andyany 发表于 2010-8-9 16:57 | 显示全部楼层 |阅读模式
有这样两个工程——
工程1:把输入的50MHz时钟通过dcm倍频,顶层模块除了把dcm的6个端口引出外部作任何处理。testbench里一直将dcm的对应复位脚赋0。仿真表明,倍频是成功的。
工程2:把输入的50MHz时钟通过dcm倍频。顶层模块用dcm输出的倍频信号作时钟,做了个led闪烁功能。dcm的输入时钟和复位通过顶层模块引出。testbench对时钟和复位的处理和工程1完全相同。仿真的结果是:led不闪烁。
谁能告诉我为什么?谢谢!!!
欧阳青云 发表于 2010-8-9 17:43 | 显示全部楼层
会不会太快了啊来不及闪烁
drentsi 发表于 2010-8-9 18:57 | 显示全部楼层
spartan-3,virtex-4系列DCM有两个重要的参数DFS_FREQUENCY_MODE和DLL_FREQUENCY_MODE 和频率范围有关,必须设置正确,还有输入50M是否满足频率范围要求,仔细查手册
sleepybear 发表于 2010-8-9 21:49 | 显示全部楼层
100MHz,你要是能看到那就神了。。。那示波器表笔量一下吧,还有看看lock信号。。。
 楼主| andyany 发表于 2010-8-12 15:11 | 显示全部楼层
本帖最后由 andyany 于 2010-8-15 16:44 编辑

楼上说得对,100MHz肯定看不出来。我是用这100MHz人为分频,然后用分频后的低频时钟控制led。1秒闪烁一次。
补传一下:
工程1:sample32mega;
工程2:DCMLED

本帖子中包含更多资源

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

×
 楼主| andyany 发表于 2010-8-18 08:49 | 显示全部楼层
高手们,你们在哪?
sibaidong 发表于 2010-8-18 10:38 | 显示全部楼层
我不知道你第二个工程的TESTBENCH是怎么写的,从第一个工程来讲,你仿真对了,上板肯定会出现问题,即使成功了都有可能出现失锁现象。DCM复位很重要,xilinx官方文档说得很详细,要使DCM输出可靠,对时序是有限制的,所以你直接接0就等于不复位,这样DCM在上板时,是有可能锁不住的。
sibaidong 发表于 2010-8-18 10:48 | 显示全部楼层
看了一下你第二个的TESTBENCH,这样写肯定出不来的,你对复位管脚的激励这样写试一下:
        initial begin
                // Initialize Inputs
                clk = 0;
                rst_in = 1;
                // Wait 100 ns for global reset to finish
                #100000;               
                rst_in = 0;        
                // Add stimulus here
        end
tingtang 发表于 2010-8-18 16:57 | 显示全部楼层
你不就是想知道好不好使吗?我告诉你,你吧你要测试的时钟在分频,如果是你想要的,就是对的喽!!!
要是好就给分啊:lol
 楼主| andyany 发表于 2010-8-21 12:36 | 显示全部楼层
ISE默认的testbench和8楼的做法一致,先复位100ns。仿真可知锁定信号为高后,DCM就可以用了。
这样的话,程序首先要计时(和100ns协调)复位,然后判断锁定信号,等其为高后才能使用DCM。
因为想偷懒,看到ISE对dcm的复位脚有如下解释——
可以不选。这样该管脚被接地。
所以有工程所示的做法。
真的不能偷懒?!
 楼主| andyany 发表于 2010-9-1 10:19 | 显示全部楼层
本帖最后由 andyany 于 2010-9-8 15:48 编辑

故障定位很明确了。复位有问题。问题转到新帖——dcm的复位脚怎么控制?
欢迎指导和讨论!谢谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

62

主题

664

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部