DCM、PLL、PMCD、MMCM相关
摘自网上 : http://xilinx.eetop.cn/viewnews-1482
The DCM is a Digital Clock Manager - at its heart it is a Delay Locked Loop. This has the ability to deskew a clock, generate different phases of the clock, dynamically change the phase of a clock, generate related (2x) clocks, do clock division, and even generate clocks with harmonic relationships to the incoming clock. It was the only clock management block that existed in older technologies (up to Spartan-3 and Virtex-4).
DCM主要用在SP3和V4中。
In Virtex-5 and Spartan-6 the Phase Locked Loop (PLL) was introduced along with the DCM. The PLL is an analog clock management cell that can do almost everything the DCM can do with the exception of dynamic and fine phase shifting. However, it can do more precise frequency generation and can generate multiple different frequencies at the same time. It also has significantly better jitter performance than the DCM - particularly when doing frequency synthesis with large multipliers/dividers.
在V5和SP6中将PLL引入DCM,PLL是模拟的时钟管理单元。
In Virtex-6 the MMCM - Mixed Mode Clock Manager - was introduced. This is a PLL with some small part of a DCM tacked on to do fine phase shifting (that's why its mixed mode - the PLL is analog, but the phase shift is digital). Thus the MMCM can do everything the PLL can do plus the phase shifting from the DCM. The V6 only had MMCMs.
在V6中用的是混合时钟管理,PLL是模拟的,但是相移是数字的。
In the 7 series, they have a combination of PLLs and MMCMs. Mostly this is so that there are more cells available for use (the PLLs are smaller, so they take less room on the FPGA die). Furthermore the PLLs are tightly bound to the I/O structures that are used for DDRx-SDRAM memory controllers (via the MIG).
As for the number of them, that is determined by the size of the device. Look at the Product Table for the device you are using - it will tell you what is in the CMT (Clock Management Tile) and how many of them are available in your device.
1、DCM实际上就是一个DLL,可以对输入时钟进行相位移动,补偿,产生倍频和分频时钟,但是5以及以后的产品不用了。
2、PLL相对于DCM,除了不能相移时钟,其它的都一样,但是PLL产生时钟的频率比DCM更加精准,而且时钟的jitter也更好。
3、MMCM实际上就是PLL+DCM相移功能的结合体。7系列的FPGA还会在临近I/O部分放置一些PLL,专门给MIG来产生DDR时钟。
如何把握赛灵思FPGA中的主要时钟资源?
DCM:数字时钟管理器
PLL:锁相环
PMCD:时钟资源相位匹配时钟分频器
MMCM:混合模式时钟管理器
这四大类中的每一种都针对特定的应用。
例如,数字时钟管理器(DCM)适用于实现延迟锁相环(DLL)、数字频率综合器、数字移相器或数字频谱扩展器。DCM 还是镜像、发送或再缓冲时钟信号的理想选择。
另一种时钟资源相位匹配时钟分频器(PMCD) 可用于实现相位匹配分配时钟或相位匹配延迟时钟。
锁相环(PLL)和混合模式时钟管理器(MMCM)处理的工作有许多是相同的,比如频率综合、内外部时钟抖动滤波、时钟去歪斜等。这两种资源也可用于镜像、发送或再缓冲时钟信号。
在深思设计实现细节时,把这些通常用法记在心里,有助于理清时钟选择的思路。对于长期产品发展规划而言,在制定合适的时钟策略时,应考虑各个器件系列之间的兼容性。下面让我们深入了解一下这些时钟资源。
数字时钟管理器
数字时钟管理器(DCM)是一种用于管理时钟架构并有助于时钟信号成形和操控的模块。DCM 内含一个延迟锁相环(DLL),可根据输入时钟信号,去除DCM 输出时钟信号的歪斜,从而避免时钟分配延迟。
DLL 内含一个延迟元件和控制逻辑链路。延迟元件的输出是输入时钟延迟所得。延迟时间取决于延迟元件在延迟链路中的位置。这种延迟体现为针对原始时钟的相位改变或相移,这就是所谓的 “数字相移”。图1 所示的即为Virtex-4 器件中的典型DCM 模块。根据Virtex-4 FPGA 用户指南(UG070,2.6版本)的介绍,Virtex-4 中有三种不同的DCM 原语。
一般来说,DLL 与PLL 类似。但与PLL 不同的是DLL 不含压控振荡器(VCO)。PLL 会一直存储相位和频率信息,而DLL 只存储相位信息。因此,DLL 略比PLL 稳定。DLL 和PLL 这两种类型都可以使用模拟和数字技术设计,或者混合两种技术设计。但赛灵思器件中的DCM 采用全数字化设计。
由于DCM 可以在时钟路径上引入延迟,比如您就可使用DCM 可以精确地为DRAM 生成行和列访问选通信号的时序。与此类似,数据总线上的各个数据位可以在不同的时间到达。为了正确对数据位采样,接收端的时钟信号必须适当地与所有数据位的到达保持同步。如果接收器使用发射时钟,可能会要求延迟从发送端到接收端的时钟信号。
有时设计可能需要一个更高的时钟频率来运行FPGA 上的逻辑。但是,只有低频率输出的时钟源可以用。此时可以使用DCM 将时钟源的输入时钟信号相乘,生成高频率时钟信号。与此类似,可以将来自高频率时钟源的输入时钟信号相除,生成低频率时钟信号。这种技术称为“数字频率综合”。
设计人员使用扩频时钟并通过调制时钟信号来降低时钟信号的峰值电磁辐射。未经调制的时钟信号的峰值会产生高电磁辐射。但经调制后,电磁辐射被扩展到一系列时钟频率上,从而降低了所有频点的辐射。一般来说,如果需要满足一定的最大电磁辐射要求和在FPGA 上执行高速处理的时候(比如说通信系统中接收器使用的解串器),就需要使用扩频时钟。因此,FPGA 中的DCM 将乘以输入扩频时钟信号,在内部生成高频时钟信号。DCM 的输出必须准确地跟随扩频时钟,以保持相位和频率对齐并更新去歪斜和相移。DCM 相位和频率对齐的恶化会降低接收器的歪斜裕量。
建立时钟的镜像需要将时钟信号送出FPGA 器件,然后又将它接收回来。可以使用这种方法为多种器件的板级时钟信号去歪斜。DCM 能够把时钟信号从FPGA 发送到另一个器件。这是因为FPGA 的输入时钟信号不能直接路由到输出引脚,没有这样的路由路径可用。如果仅需要发送时钟信号,那么使用DCM 将时钟信号发送到输出引脚,可以确保信号的保真度。另外也可选择在时钟信号发送之前,将DCM 输出连接到ODDR 触发器。当然也可以选择不使用DCM,仅使用ODDR 来发送时钟信号。往往时钟驱动器需要将时钟信号驱动到设计的多个组件。这会增大时钟驱动器的负荷,导致出现时钟歪斜及其它问题。在这种情况下,需要采用时钟缓冲来平衡负载。
时钟可以连接到FPGA 上的一系列逻辑块上。为确保时钟信号在远离时钟源的寄存器上有合适的上升和下降时间(从而将输入输出时延控制在允许的范围内),需要在时钟驱动器和负载之间插入时钟缓冲器。DCM 可用作时钟输入引脚和逻辑块之间的时钟缓冲器。
最后,还可以使用DCM 将输入时钟信号转换为差分I/O 标准信号。例如,DCM 可以将输入的LVTTL 时钟信号转换为LVDS 时钟信号发送出去。
相位匹配时钟分频器
设计人员可使用相位匹配时钟分频器(PMCD)来生成相位匹配的分频输入时钟信号。这与分频时钟的DCM 频率综合相似。PMCD 还能生成设计中相位匹配但有延迟的时钟信号。在后一种情况下,PCMD 能够在输入时钟信号和其它PMCD 输入时钟信号之间保持边缘对齐、相位关系和歪斜。与DCM 不同的是,在分频器的值可配置的情况下,赛灵思器件中现有的PMCD 生成的时钟信号仅按2、4 和8 分频。这意味着PMCD 生成的时钟信号的频率是输入时钟信号的1/2、1/4 和1/8。在如Virtex-4FPGA 这样的赛灵思器件中,PMCD 紧邻DCM 并与其位于同一列上。每一列有两个PMCD-DCM 对。因此DCM 的输出可以驱动PMCD 的输入。
由于DCM 还负责处理去歪斜,因此只要不需要去歪斜时钟,设计人员就可以使用不带DCM 的PMCD。通过专用引脚,还可以把一列中的两个PMCD连接起来。图2 是Virtex-4 器件中的PMCD 原语。详细内容请参阅Virtex-4FPGA 用户指南(UG070,2.6 版本)。
混合模式时钟管理器
另一种类型的时钟资源——混合模式时钟管理器(MMCM),用于在与给定输入时钟有设定的相位和频率关系的情况下,生成不同的时钟信号。不过与DCM 不同是,MMCM 使用PLL 来完成这一工作。Virtex-6 FPGA 中的时钟管理模块(CMT) 有两个MMCM, 而Virtex-7 中的CMT 有一个MMCM 和一个PLL。Virtex-6 器件中的MMCM 没有扩频功能,因此输入时钟信号上的扩频不会被滤波,将直接被传送给MMCM输出时钟。但Virtex-7 FPGA 的MMCM却有扩频功能。
Virtex-6 FPGA 中的MMCM 要求插入一个校准电路,以便在用户复位或用户断电后确保MMCM 正确运行。赛灵思ISE 设计套件11.5 版本及更高版本能够在设计的MAP 阶段自动插入必要的校准电路。若使用赛灵思ISE 的更早版本,则需要使用赛灵思技术支持部提供的设计文件手动插入校准电路。最后需要注意的是,在本移植该设计,以便用ISE11.5 版本或更高版本实现时,必须手动移除校准电路,或通过适当设置每个MMCM 上的综合属性,禁用自动插入功能。详细介绍请参阅赛灵思答复记录AR#33849。
对7 系列器件中的MMCM 就不存在这样的问题,因为这些FPGA 只得到ISE 13.1 版本和更高版本以及新型Vivado 设计套件的支持。Virtex-6 系列中提供的MMCM 间专用走线可便于用户将全局时钟资源用于设计的其余部分。
图3 显示了Virtex-6 FPGA 中的MMCM 原语。各个端口的详细介绍请参阅Virtex-6 FPGA 时钟资源用户指南(UG362,2.1 版本)。图4 显示了赛灵思7 系列FPGA 中的MMCM 原语,有关详细介绍请参阅7 系列FPGA 时钟资源用户指南(UG472,1.5 版本)。
锁相环
设计人员使用锁相环(PLL)主要用于频率综合。使用一个PLL 可以从一个输入时钟信号生成多个时钟信号。结合DCM 使用,还可以用作抖动滤波器。Spartan-6、Virtex-5 和7 系列FPGA 中都提供有PLL。Spartan-6 和Virtex-5 中
均有专门的“DCM 到PLL”和“PLL 到DCM”走线。Spartan-6 和Virtex-5 中的PLL 输出是非扩频的。对这两种器件而言,如果设计使用多个不同时钟,都可以用PLL 替代DCM。PLL 时钟输出具有宽范的配置范围,而DCM 的输出是预定的,不可配置。PLL 和DCM 的选择还是取决于设计的要求。不过如果相移是必需的, 就应该明确地选择DCM。
同时,7 系列器件中的PLL 所实现的功能没有MMCM 所实现的多。因此虽然MMCM 是建立在PLL 架构之上,但7 系列器件中也有独立的PLL。图5显示了Virtex-5 FPGA 中的PLL 原语。各个端口的详细介绍请参阅Virtex-5 用户指南(UG190,5.4 版本)。
设计移植
掌握四种主要的时钟资源之间的差异及其在不同器件系列中的可用性非常重要。同时,在不同的系列中,相似的资源(比如DCM)可能在功能上并不完全相同。例如,Spartan-6 FPGA 中的DCM 支持扩频时钟, 但Virtex-5 和Virtex-5 器件中的DCM 就不支持。
在规划未来设计向更高端系列移植时,除了确保功能,为给定设计选择正确的时钟资源也很重要。如表1 所示,Virtex-6 和7 系列中的MMCM 能够与之前系列中的DCM 向后兼容。但需要判断在多大程度上支持向后兼容性,因为所有这些时钟资源都具有多功能性,提供与时钟相关的多种不同功能。在制定产品长期发展规划时,必须对兼容性了如指掌。
DCM、PLL、PMCD、MMCM相关的更多相关文章
- 58.xilinx原语DCM,PLL的使用
DCM_BASE 基本数字时钟管理模块的缩写,是相伴和频率可配置的数字锁相环电路,常用于FPGA系统中复杂的时钟管理.如需要频率和相位动态配置,则可以选用DCM_ADV原语,如需要相位动态偏移,可使用 ...
- Xilinx FPGA编程技巧之常用时序约束详解
1. 基本的约束方法 为了保证成功的设计,所有路径的时序要求必须能够让执行工具获取.最普遍的三种路径为: 输入路径(Input Path),使用输入约束 寄存器到寄存器路径(Register-to ...
- DCMTK开源库的学习笔记4:利用ini配置文件对dcm影像进行归档
转:http://blog.csdn.net/zssureqh/article/details/8846337 背景介绍: 医学影像PACS工作站的服务端需要对大量的dcm文件进行归档,写入数据库处理 ...
- 用FPGA对ASIC进行原型验证的过程(转)
用FPGA对ASIC进行原型验证的过程 reference:http://xilinx.eetrend.com/d6-xilinx/article/2018-10/13736.html 鉴 ...
- Vivado Design Suite用户指南之约束的使用第二部分(约束方法论)
Constraints Methodology(约束方法论) 关于约束方法论 设计约束定义了编译流程必须满足的要求,以使设计在板上起作用. 并非所有步骤都使用所有约束在编译流程中. 例如,物理约束仅在 ...
- 218- VPX主板 基于5VFX70T的3U VPX 光纤数据采集存储板
基于5VFX70T的3U VPX 光纤数据采集存储板 1.板卡概述 本板卡是基于3U VPX架构,符合VITA46标准,实现了多种图形图像接口的采集与转换.图像数据的处理.宽带数据缓存.SATA存储主 ...
- Xilinx约束学习笔记(二)—— 定义时钟
2. 定义时钟 2.1 关于时钟 为了获得最佳精度路径覆盖信息,必须正确定义时钟. 时钟要定义在时钟树的根 pin 或 port 上,称为 source point. 时钟的边缘应该由周期和波形进行组 ...
- DICOM医学图像处理:DIMSE消息发送与接收“大同小异”之DCMTK fo-dicom mDCM
背景: 从DICOM网络传输一文开始,相继介绍了C-ECHO.C-FIND.C-STORE.C-MOVE等DIMSE-C服务的简单实现,博文中的代码给出的实例都是基于fo-dicom库来实现的,原因只 ...
- 嵌入式单片机STM32应用技术(课本)
目录SAIU R20 1 6 第1页第1 章. 初识STM32..................................................................... ...
随机推荐
- Strem_01
import 'package:flutter/material.dart';import 'dart:async';import 'dart:ui'; void main()=>runApp( ...
- MD5加密加盐
Java实现MD5的随机加盐加密,这样以来就很难解密了,必须使用原密码才能正常的登录系统了,以下为Java实现的MD5随机加盐加密,以及使用Apache的Hex类实现Hex(16进制字符串和)和字节数 ...
- 基于 WebGL 3D 的 HTML5 档案馆可视化管理系统
前言 档案管理系统是通过建立统一的标准以规范整个文件管理,包括规范各业务系统的文件管理的完整的档案资源信息共享服务平台,主要实现档案流水化采集功能.为企事业单位的档案现代化管理,提供完整的解决方案,档 ...
- mybatis乱码
单个字段 <property name="url" value="jdbc:mysql://127.0.0.1:3306/db?characterEncoding= ...
- Shell命令-文件压缩解压缩之gzip、zip
文件及内容处理 - gzip.zip 1.gzip:gzip压缩工具 gzip命令的功能说明 gzip 命令用于压缩文件.gzip 是个使用广泛的压缩程序,文件经它压缩过后,其名称后面会多出 .gz ...
- css---遮罩层
<div id="body"> 显示页面的全部内容 <div id="open">打开弹框</div> </div&g ...
- DRF初识与序列化
一.Django的序列化方法 1.为什么要用序列化组件 做前后端分离的项目,我们前后端数据交互一般都选择JSON,JSON是一个轻量级的数据交互格式.那么我们给前端数据的时候都要转成json格式,那就 ...
- kubernetes 将pod运行在某些特定的节点上,给节点打标签
给节点打上标签: kubectl label node <node_name> GPU=true #打上标签 GPU=true 在创建pod的yaml文件时: 添加 nodeSel ...
- python 10道面试陷阱题目
- 神经网络6_CNN(卷积神经网络)、RNN(循环神经网络)、DNN(深度神经网络)概念区分理解
sklearn实战-乳腺癌细胞数据挖掘(博客主亲自录制视频教程,QQ:231469242) https://study.163.com/course/introduction.htm?courseId ...