本文转自:https://blog.csdn.net/Reborn_Lee/article/details/80351618

时钟管理器(CMT)

Spartan-6 CMT是一个灵活、高性能的时钟管理模块。它位于芯片中央、垂直的全局时钟网络旁。如图2-17所示,它包含一个PLL和两个DCM。

图2-17 Spartan-6 FPGA CMT片内布局图

一、 DCM

Spartan-6中的DCM与Spartan-3中的类似,如图2-18所示,同样由4部分组成。

图2-18 DCM 功能结构图

(1) 延时锁相环(DLL)。

DLL 延时锁相环可以根据输入时钟去除DCM 的输出时钟歪斜,以完全消除时钟分布延迟。其原理是将时钟输入(CLKIN)与一个反馈输入(CLKFB)进行比较,然后控制延迟线选择器,通过在DLL 路径中加入合适的延迟直到CLKIN 与CLKFB 重合。

DLL 输入时钟是CLKIN 和CLKFB,输出时钟信号是CLK0、CLK90、CLK180、CLK270、CLK2X、CLK2X180 和CLKDV。

(2) 数字频率综合器(DFS)。

DFS有两个用户寄存器,用来设置相对于输入时钟(CLKIN)倍频(CLKFX_MULTIPLY)和分频(CLKFX_DIVID)系数。DFS可以单独使用,还可以和DLL一起配合使用;如果DFS不和DLL一起使用,CLKIN和DFS输出之间没有对应的相位关系。DFS的输出为CLKFX和CLKFX180。

(3) 相移单元(PS)。

相移单元PS的输入信号有PSINCDEC、PSEN和PSCLK,输出信号为PSDONE和STATUS[0]。相移模式包括固定相移和可变相移。

固定相移是指DCM的9个时钟的相位输出,通常是输入时钟周期的若干分之一,固定相移值在设计中设定并在FPGA配置时载入FPGA。

除了固定相移,PS还支持可变相移,根据系统要求,通过数字接口(PSINCDEC、PSEN和PSCLK)动态改变相移。每次动态改变的相移值为DCM_DELAY_STEP,DCM_DELAY_STEP对应的范围可参考《Spartan-6数据手册》。

(4) 状态逻辑。

状态逻辑反映DCM的状态,对应两个输出信号LOCKED和STATUS[0]。

如图2-19所示,主要有2个DCM的原语调用,DCM_SP和DCM_CLKGEN。

图2-19 DCM原语

DCM_SP提供DCM的传统特性:时钟DESKEW、频率综合和固定及可变相移。

DCM_SP所有的属性都是在设计时确定,上电配置的时候编程到FPGA,除了动态相移功能外,所有的属性在运行时是不可以更改的。

DCM_CLKGEN提供了如下更多的DFS性能。

低抖动的CLKFX和CLKFX180输出。提高了输入时钟CLKIN的抖动容限。支持M和D的动态编程,动态设置CLKFX_MULTIPLY和CLKFX_DIVIDE。CLKFX_MULTIPLY和CLKFX_DIVIDE属性值范围更大。当输入时钟丢失时,自激振荡器工作。具有扩频功能。

在设计中特别要注意DCM_SP和DCM_CLKGEN的特性和参数,请参考《Spartan-6 时钟资源用户手册》。

PLL

Spartan-6 器件最多包含6 个CMT,12 个PLL。PLL 的主要用途是作为频率合成器,产生更宽范围的频率输出,在与CMT 中的DCM 连接时,具有良好的滤波功能。

图2-20 所示为PLL 的功能框图。

图2-20 Spartan-6 PLL功能框图

其中包括可编程计数器D、相位/频率检测器(Phase-Frequency Detector,PFD)、电荷泵(Charge Pump ,CP ) 、环路滤波器(Loop Filter , LF) 、压控震荡器(Voltage Controlled Oscillator,VCO)、O0~O5 为6 个可编程计数器。

它的工作原理是,PFD将输入时钟与反馈时钟的相位和频率进行比较,产生的信号驱动CP 和LF,CP和LF 为VCO产生一个参考电压,这个参考电压将影响VCO的输出频率。那么VCO的频率是如何变化的呢?PFD完成2个时钟的比较后,产生CP和LF 的驱动信号,这个信号确定了VCO 应该工作在较高频率还是较低频率。当VCO工作频率过高时,PFD触发一个下降信号,致使控制电压下降,从而降低VCO的工作频率。当VCO工作频率过低时,PFD触发一个上升信号,致使电压上升。VCO 共产生8个输出相位,每个输出相位都可选作输出计数器的参考时钟,如图2-20所示。另外PLL 还提供了一个专用计数器M,用来控制PLL的反馈时钟,以实现大范围频率合成。6个“O”计数器可以独立编程,例如,O0可以编程为进行二分频操作,而O1编程为进行三分频操作。唯一的限制是VCO的工作频率对所有输出计数器来说必须相同,因为VCO驱动所有计数器。使用专用PLL 布线资源,必须将CLK_FEEDBACK设置CLKOUT0,按照图2-21所示使用BUFPLL和BUFIO2FB。

图2-21 带CLKOUT0反馈的PLL

当使用CLKOUT0的专用反馈路径时,输出计数器CLKOUT0_DIVIDE将影响VCO频率,fVCO=FIN×M×CLKOUT0_DIVIDE/D。

图2-22所示为PLL常用的两个模块,PLL_BASE和PLL_ADV。PLL_BASE允许使用独立的PLL 的最常用功能,包括时钟去歪斜、频率合成、粗粒度相移和占空比编程等。

PLL_ADV具备所有PLL_BASE功能,它具有更多的时钟输出。

图2-22 PLL的原语

Spartan-6 PLL是为支持时钟网络去歪斜SKEW、频率合成和减少抖动而设计的混合信号模块。接下来将详细讨论PLL 的这3种作用

(1) PLL 对时钟网络去歪斜SKEW。

在许多情况下,设计人员在其I/O时序预算中不希望有时钟网络的延迟。其实,用PLL/DLL就可以解决这个问题,因为PLL/DLL具有补偿时钟网络的延迟的功能。当然,包括Spartan-6中的PLL。一个与参考时钟CLKIN的频率相匹配的时钟(通常是CLKFBOUT或CLKOUT0)连接到BUFG,并且反馈到PLL的CLKFB引脚。其余输出仍可用来合成更多用户所需频率。这样一来,所有的输出时钟就会与参考时钟之间有一个指定的相位关系。为了精确地降低由于时钟输入布线引起的歪斜,建议采用图2-21 所示的方法,使用BUFIO2FB缓冲器。

(2) PLL 用于频率合成。

PLL还可以用于频率合成。在这种应用中,PLL不能用于时钟网络去歪斜,而是用来为其他模块提供时钟。在这种模式下,PLL反馈通路因为要将所有布线保留为局部布线而应设置成internal反馈模式,以尽量减少抖动。图2-23所示为将PLL配置成频率合成器的示例。

图2-23 仅用于频率合成的PLL

在本例中,输入为100MHz参考时钟,设置M=5,D=1,可使VCO晶振的频率为500MHz(100MHz×5),6个PLL输出中的4个编程提供以下时钟。

250MHz GTP收发器时钟TXUSRCLK和RXUSRCLK。125MHz PCI Express PHY时钟。62.5MHz PCI Express用户接口和BRAM接口时钟。50MHz逻辑时钟。

在此示例中,参考时钟和输出时钟之间没有相位关系,但是各输出时钟之间要求有相位关系。

(3) PLL用作抖动滤波器。

PLL始终可以降低参考时钟上固有的抖动。PLL可以被例化以滤掉外部时钟在驱动另一个逻辑模块前(包括DCM)的抖动。作为抖动滤波器,PLL通常被简单地视为一个缓冲器,在其输出上重新生成输入频率(例如,FIN=100MHz,FOUT=100MHz)。通常,将PLL的BANDWIDTH属性设置为Low,可以实现较强的抖动滤波,但要注意,将BANDWIDTH设置为Low会导致PLL的静态偏差增大。

如何使用PLL呢?通常有如下几种方法。

ISE软件中的PLL向导可以帮助生成各种PLL参数。可以手动将PLL例化成一个组件。将PLL与IP核合并,IP核将包含并管理PLL。

PLL有5种应用模型,下面分别介绍。

(1) 时钟网络去歪斜。

PLL的主要用途之一是时钟网络去歪斜。图2-24所示为这种模式下的PLL。O计数器之一的时钟输出用来驱动片内逻辑或I/O。反馈计数器用来控制输入时钟与输出时钟之间的精确相位关系(例如,当需要90°相移时)。右侧所示相关时钟的波形是输入时钟与输出时钟需要相位对齐的情况。这种PLL的配置方式最灵活,但它需要两个全局时钟网络。

图2-24 PLL使用两个BUFG的时钟去歪斜

这里,对反馈时钟有些限制,也就是PFD的2个输入时钟的频率必须完全相同。因此,必须满足下列关系式:

ƒIN/D=ƒFB=ƒVCO/M

例如,如果ƒIN是166MHz,D=1,M=3,O=1,则VCO的输出时钟频率和PLL的时钟(CLKBOUT)输出的频率都是498MHz。因为反馈通路中的M值是3,所以PFD上的两个输入时钟频率都是166MHz。

另一种更复杂的情况是输入频率为66.66MHz,D=2,M=15,O=2。在这种情况下,VCO的频率是500MHz,而O的输出频率是250MHz。所以,PFD上的反馈频率是500/15,即33.33MHz,与PFD上输入时钟频率的66.66MHz/2相符。

如果PLL用作频率合成器或抖动滤波器,并且PLL输入时钟与PLL输出时钟之间不要求有相位关系,那么PLL反馈可以是PLL的内部反馈。因为反馈时钟根本不通过内核电源供电,所以反馈时钟不受内核电源噪声干扰,因而PLL的性能会有所提升,如图2-25所示。当然,CLKIN信号和BUFG上引入的噪声依然存在。

图2-25 具有内部反馈的PLL

(2) 零延迟缓冲器。

如果系统中只有一个时钟,而这个时钟又需要驱动到所有的器件,为了保证时钟到达各目的器件之间的歪斜尽可能小,该如何实现这个应用呢?这时,就需要用PLL的零延迟缓冲器的应用模式。如图2-26 所示,其中,反馈信号在片外传递,经过了一段PCB板的走线。使用这种配置,可以保证在FPGA的时钟输入引脚和外部器件的时钟输入引脚时钟边沿是对齐的。很显然,在反馈路径中,PCB走线的最大延迟是有限制的。

图2-26 零延迟缓冲器

在某些情况下,由于外部器件输入电容与FPGA反馈路径上的输入电容存在差异,很难实现精准对齐。例如,如果外部器件有1pF~4pF的输入电容,而FPGA 的输入电容是8pF,这样一来,信号斜率就会存在差异,这是基本的时钟歪斜。为了确保时序,设计人员有必要了解这种问题的存在。

(3) DCM 驱动PLL。

DCM提供了一种生成精确相移时钟的好方法,但是,DCM不能降低参考时钟固有的抖动。PLL可用来降低DCM输出时钟抖动。如图2-27所示,将PLL配置成不引入任何相移(通过PLL的零延迟)的模式,框图右侧所示为相关波形。当使用DCM的输出直接驱动PLL时,DCM和PLL必须同处在一个CMT模块内。这种实现方案在局部专用布线上产生的噪声量最小,因此是首选方案。不过,也可以把DCM输出CLK90连接到BUFG,再去驱动PLL的CLKIN输入。

图2-27 DCM 驱动PLL 以降低抖动

(4) PLL 驱动DCM。

减少时钟抖动的另一种可选方案是在输入时钟抖动传入DCM之前用PLL将其清除。这样可以改善所有DCM的输出抖动,但DCM附加的任何抖动都仍会传到时钟输出。PLL和DCM应处在同一个CMT模块中,因为PLL与DCM之间存在用来支持零延迟模式的专用资源。如果PLL和DCM不在同一个CMT中,那么唯一的连接就是通过一个能抑制歪斜可能性的BUFG。只要参考频率可以由一个PLL生成,则一个PLL即可驱动多个DCM。例如,如果将一个33MHz的参考时钟送入PLL,而设计用一个DCM在200MHz频率下工作,同时用另一个在100MHz频率下工作,那么VCO就可以在600MHz(M1=18)频率下工作。可以对VCO的频率进行三分频以生成200MHz的时钟,同时可以对另一个计数器进
行六分频以生成100MHz的时钟。对于图2-28中的示例,一个PLL可以驱动两个DCM。

图2-28 PLL驱动一个DCM

(5) PLL 到PLL 的连接。

可以级联PLL,以便生成更大范围的时钟频率。公式2-1所示为最终输出频率与输入频率之间的关系。图2-29所示为两个PLL的级联,第一个PLL的输出连接到BUFG,再连接到第二个PLL的CLKIN引脚。此路径具有最小的器件抖动。

公式2-1:

图2-29 PLL驱动PLL

Spartan-6的时钟管理 DCM与 PLL详细介绍相关推荐

  1. 统一威胁管理设备代表产品详细介绍(转)

    统一威胁管理设备代表产品详细介绍(转)[@more@] UTM设备代表产品介绍 市场上已经有了那么多的安全产品,为什么UTM设备还能得到用户的青睐呢?因为UTM设备降低了安全产品复杂性.避免了软件安装 ...

  2. java hibernate详细_Java事务管理学习之Hibernate详细介绍

    hibernate是jdbc轻量级的封装,本身不具备事务管理的能力,在事物管理层面,一般是委托于底层的jdbc和jta来完成调度的.下面这篇文章主要给大家介绍了Java事务管理学习之Hibernate ...

  3. 虚拟主机管理器WHM的详细介绍

    WHM是Web Host Manager(虚拟主机管理器)的缩写,是服务提供商向个人客户提供.租赁的一种工具.同一个主机商也会处理所有与服务器有关的问题,让客户自由地管理业务,并期待其增长. 现在已经 ...

  4. Linux常用命令、权限管理和开发工具详细介绍

    转载文章: https://blog.csdn.net/weixin_51983604/category_11259305.html?spm=1001.2014.3001.5482 感谢分享,仅供参考

  5. DCM、PLL、PMCD、MMCM的区别与联系?

    目录 前言也很重要: 简介: 数字时钟管理器(DCM) 相位匹配时钟分频器(PMCD) 前言也很重要: 由于XIlinx FPGA分为很多器件系列,而且不同系列的FPGA包含的时钟管理资源还不一样,于 ...

  6. SOC 时钟源PLL锁相环详细介绍——IC设计时序逻辑的灵魂

    SOC 时钟源PLL详细介绍--IC设计时序逻辑的灵魂 本节介绍SOC设计中时钟的组件PLL部分的介绍,PLL可以认为是IC设计中时序逻辑的灵魂所在,理解和掌握PLL的结构和原理是非常有必要的

  7. FPGA芯片结构(可编程输入输出单元IOB/可配置逻辑块CLB/数字时钟管理模块DCM/ 嵌入式块RAM(BRAM)/丰富的布线资源/ 底层内嵌功能单元/内嵌专用硬核)

    目前主流的FPGA仍是基于查找表技术的,已经远远超出了先前版本的基本性能,并且整合了常用功能(如RAM.时钟管理 和DSP)的硬核(ASIC型)模块.如图1-1所示(注:图1-1只是一个示意图,实际上 ...

  8. FPGA之道(49)DCM与PLL

    文章目录 前言 DCM与PLL PLL模块基本端口简介 时钟输入.输出端口 时钟反馈端口 PLL锁定指示端口 PLL复位端口 PLL配置端口 DCM模块基本端口简介 时钟输入端口 时钟输出端口分类 时 ...

  9. Virtex-6器件的时钟资源、混合模式时钟管理器(MMCM)

    时钟资源 为了更好的控制时钟,Virtex-6器件分成若干个时钟区域,最小器件有6个区域,最大器件有18个区域.每个时钟区域高40个CLB.在时钟设计中,推荐使用片上专用的时钟资源,不推荐使用本地时钟 ...

最新文章

  1. 大话android 进程通信之AIDL
  2. 简易的c语言编译器,实现简易的C语言编译器(part 8)
  3. shopee本土店怎么做,一些运营技巧分享
  4. CTF ---pwndbg 调试常用命令
  5. springboot-异常处理使用与原理解析
  6. GDCM:gdcm::PNMCodec的测试程序
  7. Spring Boot 2 (七):Spring Boot 如何解决项目启动时初始化资源
  8. ubuntu下安装jre的步骤
  9. gradle打包java项目_gradle打包java项目
  10. Taro+react开发(41)封装组件2
  11. DataFountain新上两项CV算法竞赛(文化传承——汉字书法多场景识别、大数据医疗——肝癌影像AI诊断)——50万巨奖等你来拿!
  12. html5网页制作代码_推荐十个好用的HTML5小工具,前端程序员居家必备良品
  13. 3位水仙花数计算pythonoj_简述 取模运算Modulo Operation 及其与 取余运算Complementation 区别联系...
  14. ROS学习记录:基于Python的ROS话题消息编程
  15. al32utf8的日期格式_五分钟学会Oracle数据库字符集
  16. 专访黑石集团CEO苏世民:“我们能见他人所不能见”/巴伦独家
  17. 对饿了么app进行思维导图的分析
  18. Docker运维笔记-Docker端口映射
  19. 水哥王昱珩的教育语录:输不丢人,怕输才丢人
  20. Nginx之proxy_pass详解

热门文章

  1. Android的px与dp相互转换
  2. mathtype获得试用
  3. Oracle 创建视图View 报错“ORA-12704: character set mismatch” 使用union语句
  4. java 下单 锁_JAVA 高并发下单解决方案-分布式锁
  5. 前端目前还是炙手可热吗?
  6. 启动Windows Installer
  7. 歌谣2021|自学转行的程序员的年终总结
  8. 国内做校园信息化的龙头企业公司有哪些?
  9. 软件无线电SDR应用(1):MATLAB信号产生
  10. im2bw函数的用法