收藏 分享(赏)

DCM_ADV.doc

上传人:kpmy5893 文档编号:7329252 上传时间:2019-05-15 格式:DOC 页数:17 大小:331KB
下载 相关 举报
DCM_ADV.doc_第1页
第1页 / 共17页
DCM_ADV.doc_第2页
第2页 / 共17页
DCM_ADV.doc_第3页
第3页 / 共17页
DCM_ADV.doc_第4页
第4页 / 共17页
DCM_ADV.doc_第5页
第5页 / 共17页
点击查看更多>>
资源描述

1、本文翻译自 Using Digital Clock Managers (DCMs) in Spartan-3 FPGAs DCM 主要功能1. 分频倍频:DCM 可以将输入时钟进行 multiply 或者 divide,从而得到新的输出时钟。2. 去 skew:DCM 还可以消除 clock 的 skew,所谓 skew 就是由于传输引起的同一时钟到达不同地点的延迟差。3. 相移:DCM 还可以实现对输入时钟的相移输出,这个相移一般是时钟周期的一个分数。4. 全局时钟:DCM 和 FPGA 内部的全局时钟分配网络紧密结合,因此性能优异。5. 电平转换:通过 DCM,可以输出不同电平标准的时钟。

2、 DCM 的特点与能力(Spartan-3 系列为例) 数量:4 DCM / FPGA(也有例外)- 应该够用了 数字频率综合器输入(CLKIN):1-280MHz 延迟锁相环输入(CLKIN):18-280MHz 时钟输入源(CLKIN):Global buffer input padGlobal buffer outputGeneral-purpose I/O (no deskew)Internal logic (no deskew)- 上面最后两个分别是外部的普通 IO 口和内部的逻辑,没有deskew,所以时钟质量不会很好。 频率综合器输出(CLKFX、CLKFX180):是 CLKI

3、N 的 M/D 倍,其中M=232D=132- 这样看来最大能倍频 32 倍,最小能 16 分频。 时钟 dividor 输出(CLKDV):是 CLKIN 的下列分频1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5, 5.5, 6, 6.5, 7, 7.5, 8, 9, 10, 11, 12, 13, 14, 15, or 16- 发现没有,最大的分频也是 16。不过能支持半分频,比用频率综合器方便。 倍频输出(CLK2X、CLK2X180 ):CLKIN 的 2 倍频 时钟 conditioning、占空比调整:这个对所有时钟输出都施加,占空比为 50%。 1/4 周期相移输出

4、(CLK0/90/180/270 ):是 CLKIN 的 1/4 周期相移输出。 半周期相移输出(CLK0/180、CLK2X/180、CLKFX/180):相差为 180 度的成对时钟输出。 相移精度:最高精度为时钟周期的 1/256。 时钟输出:9 个到全局时钟网的时钟输出:最多 9 个中的 4 个到 General purpose 互联:最多 9 个到输出脚:最多 9 个- 可见 9 个时钟输出可以随意链接内部信号或者外部输出,但是进入全局时钟网的路径最多只有 4 个。DCM 的位置在哪?我们以 Spartan3 系列为例。FPGA 看上去就是一个四方形。最边缘是 IO pad 了。除去

5、 IO pad,内部还是一个四方形。四个角上各趴着一个 DCM。上边缘和下边缘中间则各趴着一个全局 Buffer 的 MUX。这样的好处是四个 DCM 的输出可以直接连接到全局 Buffer 的入口。下面是手绘简图,很丑是吧,呵呵。DCM 是全局时钟网络可选的一部分一般,时钟通过一个“全局输入 buffer”和“全局时钟 buffer” 进入全局时钟网络。如下所示GCLK -( IBUFG - BUFG) - low skew global clock network在需要的时候,DCM 也成为全局时钟网络的一环。DCM 内部构成一览1. DLL 延迟锁定环说是延迟锁定环,但是我觉得叫做延迟补

6、偿环更加贴切。因为DLL 的主要功能是消除输入时钟和输出时钟之间的延迟,使得输入输出在外部看来是透明连接。实现这种功能的原理是:DLL 通过输出时钟 CLK0 或者 CLK2X 观察实际的线路延迟,然后在内部进行补偿。一句话,DLL 的核心功能是无延迟。DLL 的输出是 CLK0, CLK90, CLK180, CLK270, CLK2X, CLK2X180, 和 CLKDV。2. DFS 数字频率综合DFS 的主要功能是利用 CLKIN 合成新的频率。合成的参数是:M(multiplier)和 D(divisor)。通过 MD 的组合实现各种倍频和分频。如果不使用 DLL,则 DFS 的合成

7、频率和 CLKIN 就不具有相位关系,因为没有延迟补偿,相位就不再同步。3. PS 相位偏移注意这个相位偏移不是 DLL 中输出 CLK90/180/270 用的。这个PS 可以令 DCM 的所有 9 个输出信号都进行相位的偏移。偏移的单位是 CLKIN 的一个分数。也可以在运行中进行动态偏移调整,调整的单位是时钟的1/256。这个功能我们平时不常用。4. 状态逻辑这个部分由 LOCKED 信号和 STATUS2:0 构成。LOCKED 信号指示输出是否和 CLKIN 同步(同相)。STATUS 则指示 DLL 和 PS的状态。 /DCM_BASE DCM_BASE 是基本数字时钟管理模块的缩

8、写,是相位和频率可配置的数字锁相环电路,常用于 FPGA 系统中复杂的时钟管理。如果需要频率和相位动态重配置,则可以选用 DCM_ADV 原语;如果需要相位动态偏移,可使用 DCM_PS 原语。DCM 系列原语的 RTL 结构如图 3-8 所示。模块接口信号的说明如表 3-8 所列。 DCM_BASE 组件可以通过 Xilinx 的 IP Wizard 向导产生,也可以直接通过下面的例化代码直接使用。其 Verilog 的例化代码模板为: / DCM_BASE: 基本数字时钟管理电路(Base Digital Clock Manager Circuit) / 适用芯片:Virtex-4/5 /

9、 Xilinx HDL 库向导版本,ISE 9.1 DCM_BASE #( .CLKDV_DIVIDE(2.0), / CLKDV 分频比可以设置为: 1.5,2.0,2.5,3.0,3.5,4.0,4.5,5.0,5.5,6.0,6.5 / 7.0,7.5,8.0,9.0,10.0,11.0,12.0,13.0,14.0,15.0 or 16.0 .CLKFX_DIVIDE(1), / Can be any integer from 1 to 32 / CLKFX 信号的分频比,可为 1 到 32 之间的任意整数 .CLKFX_MULTIPLY(4), / CLKFX 信号的倍频比,可为 2

10、 到 32 之间的任意整数 .CLKIN_DIVIDE_BY_2(“FALSE“), / 输入信号 2 分频的使能信号,可设置为 TRUE/FALSE .CLKIN_PERIOD(10.0), / 指定输入时钟的周期,单位为 ns,数值范围为 1.251000.00。 .CLKOUT_PHASE_SHIFT(“NONE“), / 指定移相模式,可设置为 NONE 或 FIXED .CLK_FEEDBACK(“1X“), / 指定反馈时钟的频率,可设置为 NONE、1X 或 2X。相应的频率关系都是针对 CLK0 而言的。 .DCM_PERFORMANCE_MODE(“MAX_SPEED“),

11、/ DCM 模块性能模式,可设置为 MAX_SPEED 或 MAX_RANGE .DESKEW_ADJUST(“SYSTEM_SYNCHRONOUS“), / 抖动调整,可设置为源同步、系统同步或 015 之间的任意整数 .DFS_FREQUENCY_MODE(“LOW“), / 数字频率合成模式,可设置为 LOW 或 HIGH 两种频率模式 .DLL_FREQUENCY_MODE(“LOW“), / DLL 的频率模式,可设置为 LOW、HIGH 或 HIGH_SER .DUTY_CYCLE_CORRECTION(“TRUE“), / 设置是否采用双周期校正,可设为 TRUE 或 FALSE

12、 .FACTORY_JF(16hf0f0), / 16 比特的 JF 因子参数 .PHASE_SHIFT(0), / 固定相移的数值,可设置为 -255 1023 之间的任意整数 .STARTUP_WAIT(“FALSE“) / 等 DCM 锁相后再延迟配置 DONE 管脚,可设置为 TRUE/FALSE ) DCM_BASE_inst ( .CLK0(CLK0), / 0 度移相的 DCM 时钟输出 .CLK180(CLK180), / 180 度移相的 DCM 时钟输出 .CLK270(CLK270), / 270 度移相的 DCM 时钟输出 .CLK2X(CLK2X), / DCM 模块

13、的 2 倍频输出 .CLK2X180(CLK2X180), / 经过 180 度相移的 DCM 模块 2 倍频输出 .CLK90(CLK90), / 90 度移相的 DCM 时钟输出 .CLKDV(CLKDV), / DCM 模块的分频输出,分频比为CLKDV_DIVIDE .CLKFX(CLKFX), / DCM 合成时钟输出,分频比为 (M/D) .CLKFX180(CLKFX180), / 180 度移相的 DCM 合成时钟输出 .LOCKED(LOCKED), / DCM 锁相状态输出信号 .CLKFB(CLKFB), / DCM 模块的反馈时钟信号 .CLKIN(CLKIN), /

14、DCM 模块的时钟输入信号 .RST(RST) / DCM 模块的异步复位信号 ); / 结束 DCM_BASE 模块的例化过程 在综合结果分析时,DCM 系列原语的 RTL 结构如图 3-36 所示。 图 3-36 DCM 模块的 RTL 级结构示意图 Spartan-3 DCM 的兼容性S3 的 DCM 和 Virtex-II 以及 pro 的 DCM 功能基本相同。但是S3 DCM 的技术属于 3 代技术,因此在抗噪性能、相移能力方面有进一步提高。(客观的说,对我们的普通应用,不是特别重要。)但是和 Spartan-2 系列相比,有很大改进。S2 系列不叫 DCM 叫DLL,可见 DFS

15、 和 PS 等功能完全是新加入的,所以 S2 系列其实除了二倍频几乎没有倍频和分频能力。从这点来讲,S3 真的是用起来很爽了。 DCM 输入时钟的限制和所有物理器件一样,DCM 的工作范围也是受限的。由于 DLL和 DFS 的要求各不相同,因此 DCM 的输入频率的限制也视乎是否同时使用 DLL 和 DFS 还是单独使用其中之一。如果同时使用,则取限制较严格者作为整个 DCM 系统的限制。我们来看两者的独立限制。呵呵,这部分内容不用记哦,需要的时候查一下软件或者手册就可以了。只要明白“CLKIN 输入频率有限制,而且 DLL、DFS 同时使用时取其严格者” 这些道理就可以了。除了时钟限制之外,

16、对于时钟的质量也有一定限制,主要有 3 个:1. CLKIN cycle-to-cycle jitter:约束了前后两个 CLKIN 周期的差异;2. CLKIN period jitter:约束了 100 万个 cycle 中最大周期和最小周期之间的差异;3. CLKFB path delay variation:约束了从外部进来的反馈回路的延迟波动,这种延迟波动在概念上其实和 jitter 如出一辙。具体数值请查手册,知道有这么回事就可以了。LOCKED 信号的行为方式LOCKED 信号用于指示整个 DCM 系统已经和 CLKIN 同步,从LOCKED 信号有效开始,输出时钟才可以使用,在

17、此之前,输出时钟可能会处于各种复杂的不稳定状态。我们来看一下 LOCKED 信号的行为状态机。FPGA 配置:if (CLKIN 已经稳定) next_state = 判断同步;else next_state = RST_DCM;判断同步:if (已经同步) next_state = 判断同步;else next_state = 同步失败;同步失败: next_state = RST_DCM;RST_DCM: next_state = FPGA 配置;现在来看看各个状态下的输出。case (state)FPGA 配置: LOCKED = 0;判断同步: LOCKED = 1;同步失败: LOC

18、KED = 0;RST_DCM:LOCKED = 0 ;endcaseRST 信号重启锁定RST 信号用于在时钟不稳定或者失去锁定时,将 DCM 的相关功能重置,从而重新启动锁定追踪。作为一个输入信号,RST 无法被 DCM 自身置位,因此需要我们的应用设计来控制这个 RST 信号,否则需将其接地。置位 RST 会将延迟 tap 的位置置 0,因此可能会产生 glitch 或者是 duty cycle 发生变化,另外相位偏移也会重置回到默认值。DCM 生成向导安装了 ISE 就能得到一系列 accessories。利用其中的 Architecture Wizard 我们可以生成 DCM 模块。

19、生成的 DCM 将产生 3 种输出:1. 一个例化了 DCM 的逻辑综合文件(采用生产商特定格式的 VHDL / Verilog)2. 一个 UCF 文件控制特定实现3. 所有其他用户设置都保存到 XAW(Xilinx Architecture Wizard)文件中。接下来描述一下向导使用步骤。1. 从 ISE 或者 Arch wizard 中启动界面;2. 第一个页面做基本配置:路径、XAW 文件名、VHDL / Verilog 选择、综合工具、FPGA 型号;3. 进行 General setup,一看就明白,不细说,注意一下几点:- CLKIN source 如果选 external 则

20、 DCM 的 CLKIN 会自动连接到 IBUFG。- Feedback 如果选 internal 则反馈来自 BUFG。4. 高级设置- 选择 FPGA 的配置过程是否包含 DCM 的锁定,如果是,则配置完成信号 DONE 将在 LOCKED 信号有效后方能有效。- 选择 CLKIN 是否要除 2。由于 DCM 的输入频率有限,对于过高的输入时钟通过除 2 使之可用。- Deskew 调整,这个选项建议在咨询 xilinx 工程师后再使用。5. 时钟输出口 Buffer 设置- 默认情况下所有输出口都链接 BUFG 全局时钟网络入口- 由于全局时钟网络的入口有限,用户可以定制时钟输出口连接到

21、其他类型的 Buffer- Global Buffer:进入全局时钟网络的入口 Buffer,共有 4 个,简称 BUFG- Enabled Buffer:还是上面的 4 个全局时钟 Buffer,但是配置为有使能信号控制,简称 BUFGCE- Clock MUX:还是上面的 4 个全局时钟 Buffer,但是配置为 2-to-1 MUX 类型,由 S 信号控制选出,简称 BUFGMUX- Low skew line:没有 buffer 了,只能使用 skew 比较小的连线- Local Routing:连到本地, skew 的要求不是很严格- None:禁止输出- 对于 Enabled Buffer 类型和 Clock Mux 类型,需要指定 En 口的名字- 需要为输出时钟信号指定名字或者使用默认6. 设置 DFS- 设置目标输出频率,然后按 calculate,自动生成 M/D 值和 Jitter 值- 或者手动设置 M/D 值,然后按 calculate,自动生成频率和 Jitter 值7. 最后输出所需的 3 种文件。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报