打印

《原创》 DCM简介

[复制链接]
2983|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 钻研的鱼 于 2011-6-3 15:57 编辑

数字时钟管理器 (DCM) 提供广泛而强大的时钟管理功能,主要是时钟去歪斜、相移,以此满足IO管脚时序要求。以spartan6 DCM为例,深入分析DCM的原理、结构。
首先理解fpga内部时钟走线的布局。fpga内部有全局时钟网络,这个网络是经过优化的,可以假设这个布线是非常粗的铜线,这个铜线有很多分叉,但每条支路到达触发器的D端延迟基本相等,即clock skew非常小。(目前有更小skew的时钟网络,即通过bufio的时钟网络)。如图1所示:

      
   BUFG的前端可以接一普通IO引脚的输入,如图2所示

     从bufg出来的信号到触发器的D端skew非常小,这部分网络是全局时钟网络。这两种输入的区别在于从IBUFG到BUFG的时间固定,而IBUF到BUFG的延迟不固定,如果从IO起点算延迟,不同引脚输入的延迟变化非常大。

其次理解DESKEW_ADJUST参数含义.
一个典型的DCM应用如图3所示:

在SYSTEM_SYNCHRONOUS为系统同步时,各点的相位关系如图4所示:

在查阅《Virtex-5 用户指南.pdf》资料时,dcm对时钟去歪斜有一个更深入的说明:如图5所示:

   
       DCM 包含一个延迟锁定环 (DLL),该延迟锁定环根据输入时钟去除 DCM 的输出时钟歪斜,以完全消除时钟分布延迟。DLL 包含延迟单元(分立的小型缓冲器)和控制逻辑。输入的时钟驱动一连串延迟单元,因此,每个延迟单元的输出代表在不同点延迟的输入时钟的一个版本。
   控制逻辑包含一个相位检测器和一个延迟线选择器。相位检测器将输入的时钟信号
(CLKIN) 与一个反馈输入 (CLKFB) 进行比较,然后控制延迟线选择器,这实质上是通过对 DCM 的输出加入延迟直到 CLKIN 与 CLKFB 重合。
    下面自己的理解:dcm的clkin经过简单的延迟单元,输出到clk0,clk0经过bufg和feedback tap delays反馈到clkfb。DESKEW_ADJUST参数应该对应tap数目, 当初始化时DESKEW_ADJUST固定,dcm不断比较clkin和clkfb的相位差,动态调整clkin经过的延迟单元数目,达到调整clk0相位的目的。
    系统同步设置:在理想情况下,DLL 的用途是将时钟延迟清零,即上图的clk source处相位和右边D触发器时钟端相位差为0。dcm中clkin和clkfb相位差为0,clk source提前clkin IBUFG时间,D触发器时钟端提前clkfb DESKEW_ADJUST个taps时间,所以clk source能和D触发器时钟端同相。
  源同步设置:当 DESKEW_ADJUST 设置为源同步模式时,DCM 反馈延迟单元设置为零。通过分析,容易得知:右边D触发器时钟端落后clk source 一个IBUFG时间,同样,D触发器数据端落后Data input一个IBUF时间,IBUFG特性和IBUF相同,因此,在fpga内部,clk source和Data input 经过相同的时间延迟到达D触发器,即源同步。
评分
参与人数 2威望 +5 收起 理由
edacsoft + 1
SuperX-man + 4

相关帖子

沙发
wahahaabc| | 2011-6-3 17:10 | 只看该作者
鱼哥的资料 值得一看

使用特权

评论回复
板凳
GoldSunMonkey| | 2011-6-4 21:49 | 只看该作者
我觉得这里面主要是要理解好系统同步和源同步的关系,然后基本就可以理清楚这里面的东西。

使用特权

评论回复
地板
SuperX-man| | 2011-6-5 09:16 | 只看该作者
我加,我顶

使用特权

评论回复
5
21IC之星| | 2011-6-5 13:16 | 只看该作者
美中不足的就是图片没弄好

使用特权

评论回复
6
edacsoft| | 2011-6-7 16:41 | 只看该作者
“clk source提前clkin IBUFG时间,D触发器时钟端提前clkfb DESKEW_ADJUST个taps时间,所以clk source能和D触发器时钟端同相。”

请大侠解释“所以”

使用特权

评论回复
7
钻研的鱼|  楼主 | 2011-6-7 17:24 | 只看该作者
当IBUFG的延迟时间等于DESKEW_ADJUST个taps时间,clk source和D触发器时钟端的沿会严格对齐,即同相

使用特权

评论回复
8
edacsoft| | 2011-6-8 11:39 | 只看该作者
当IBUFG的延迟时间等于DESKEW_ADJUST个taps时间,clk source和D触发器时钟端的沿会严格对齐,即同相
钻研的鱼 发表于 2011-6-7 17:24

IBUFG的延迟时间从哪里得到?

使用特权

评论回复
9
钻研的鱼|  楼主 | 2011-6-8 14:54 | 只看该作者
参数为TIOPI。
可以在timing里面看到很多参数

使用特权

评论回复
10
edacsoft| | 2011-6-8 16:15 | 只看该作者
本帖最后由 edacsoft 于 2011-6-8 16:18 编辑

我在spartan3e手册中没有看到TIOPI这个参数,但有两个类似的
TIOPICK和TIOPICKD,不知您说的是它吗?不明白怎么会出来两种。

使用特权

评论回复
11
钻研的鱼|  楼主 | 2011-6-11 08:44 | 只看该作者
有点类似,但我觉得不是完全相同。Tiopick除了IBUF的延迟,可能还要加上IBUF到IFF D端的布线延迟

使用特权

评论回复
12
edacsoft| | 2011-6-13 11:21 | 只看该作者
有点类似,但我觉得不是完全相同。Tiopick除了IBUF的延迟,可能还要加上IBUF到IFF D端的布线延迟
钻研的鱼 发表于 2011-6-11 08:44

Tiopick除了IBUF的延迟,可能还要加上IBUF到IFF D端的布线延迟.
从给出的description来看,应该包括。
不明白Tiopick和Tiopickd区别,为什么会出现这两种参数,因为器件不同还是因为代码编写不同使用的不同的primitive造成的

使用特权

评论回复
13
钻研的鱼|  楼主 | 2011-6-16 10:05 | 只看该作者
Tiopick和Tiopickd区别:刚刚看了参数表,主要是IFD_DELAY_VALUE的参数值问题,如果看到底层布线,IFD_DELAY_VALUE为0和IFD_DELAY_VALUE为非零值,布线是不同的通道。经过IDELAY,数据肯定要延迟

使用特权

评论回复
14
墨攻1991| | 2011-7-21 17:28 | 只看该作者
有点更加深入的了解DCM。加油

使用特权

评论回复
15
tmkdfan| | 2012-7-5 23:11 | 只看该作者
分析的很好,学习了!!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

64

主题

967

帖子

4

粉丝