首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

FPGA时钟管理单元(DCM)结构及使用(上)

FPGA时钟管理单元(DCM)结构及使用(上)

什么叫DCM(Digital Clock Management)?

    DCM内部是DLL(Delay Lock Loop(?)结构,对时钟偏移量的调节是通过长的延时线形成的。DCM的参数里有一个PHASESHIFT(相移),可以从0变到255。所以我们可以假设内部结构里从Clkin到Clk_1x之间应该有256根延时线(实际上,由于对不同频率的时钟都可以从0变到255,延时线的真正数目应该比这个大得多)。DCM总会把输入时钟Clkin和反馈时钟Clkfb相比较,如果它们的延时差不等于所设置的PHASESHIFT,DCM就会改变在Clkin和Clk_1x之间的延时线数目,直到相等为止。这个从不等到相等所花的时间,就是输出时钟锁定的时间,相等以后,Lock_flag标识才会升高。

    当DCM发现Clkin和Clkfb位相差不等于PHASESHIFT的时候,却去调节Clk_1x和Clkin之间延时,所以如果Clk_1x和Clkfb不相关的话,那就永远也不能锁定了。呵呵。



如何使用DCM

    DCM一般和BUFG配合使用,要加上BUFG,应该是为了增强时钟的驱动能力。DCM的一般使用方法是,将其输出Clk_1x接在BUFG的输入引脚上,BUFG的输出引脚反馈回来接在DCM的反馈时钟脚CLKFB上。另外,在FPGA里,只有BUFG的输出引脚接在时钟网络上,所以一般来说你可以不使用DCM,但你一定会使用BUFG。有些兄弟总喜欢直接将外部输入的时钟驱动内部的寄存器,其实这个时候虽然你没有明显地例化BUFG,但工具会自动给你加上的。
返回列表