Xilinx 7系列MMCM/PLL端口简介

在FPGA设计中,MMCM和PLL的端口允许设计者进行各种配置,包括设置时钟源的选择、分频系数、相位偏移等参数。此外,这些端口还可以提供时钟信号的状态信息,如是否锁定、频率误差等,以便设计者进行监控和调试。
具体的端口包括:

1、CLKIN1 - 主参考时钟输入

可以由同一局部时钟域内的SRCC或MRCC I/O直接驱动,也可以通过CMT主干线由垂直相邻时钟区域内的SRCC或MRCC I/O驱动,或者由BUFG、BUFR、BUFH或直接由高速串行收发器驱动。当时钟输入来自另一个用于级联CMT功能的CMT块时,只能使用CLKOUT[0:3]。

2、CLKIN2 - 次级时钟输入

用于动态切换MMCM/PLL的参考时钟。可以由同一局部时钟域内的SRCC或MRCC I/O直接驱动,也可以通过CMT主干线由垂直相邻时钟区域内的SRCC或MRCC I/O驱动,或者由BUFG、BUFR、BUFH或直接由高速串行收发器驱动。

3、CLKFBIN – 时钟反馈的输入端

直接连接到CLKFBOUT以实现内部反馈,或者通过IBUFG(通过时钟功能的引脚用于去除外部偏斜)、BUFG、BUFH。
当需要外部时钟对齐时,反馈路径的时钟缓冲器类型应该与正向时钟缓冲器类型相匹配,但BUFR除外。BUFR无法被补偿。

4、CLKFBOUT – MMCM和PLL专用的反馈输出

5、CLKFBOUTB – CLKFBOUT的反转信号

不应用于反馈,但它提供了一个额外的、反转的CLKFBOUT输出时钟。在PLL中不可用。

6、CLKINSEL – 控制时钟输入多路复用器的状态

当CLKINSEL为高时,选择CLKIN1作为输入;当为低时,选择CLKIN2作为输入。
在时钟切换期间,MMCM/PLL必须保持在RESET状态。

7、RST – 异步复位信号

当RST信号被激活时,MMCM/PLL将被异步复位。当RST信号被撤销(deasserted)时,MMCM/PLL将同步地重新启用。

8、PWRDWN – 电源关闭

用于关闭实例化但当前未使用的MMCMs/PLLs。可用于节省设计中暂时不活动部分或特定系统配置中未激活的MMCMs/PLLs的功耗,

9、DADDR[6:0] – 动态重构地址

总线上的地址值指定了将在下一个DCLK周期中写入或读取的16个配置位。如果不使用,所有位都必须赋值为零。

10、DI[15:0] – 动态重构数据输入

总线上的值将写入配置单元。数据在DEN和DWE激活的周期中呈现。数据首先被捕获到影子寄存器中,然后在稍后的时间写入。DRDY指示DRP端口何时准备好接受另一次写入。如果不使用,所有位都必须设置为零。

11、DWE – 动态重构写使能

提供了写入/读取使能控制信号,用于将DI数据写入或从DADDR地址读取DO数据。如果不使用,DWE必须接低电平。

12、DEN – 动态重构使能脉冲

提供了访问动态重构功能的使能控制信号,并启用所有DRP(动态重构端口)操作。当不使用动态重构功能时,DEN必须接低电平。

13、DCLK – 动态重构参考时钟

这个信号的上升边沿是所有其他端口信号的定时参考。对于其他输入信号,相对于DCLK的上升边沿没有保持时间要求。这个引脚可以由IBUF、IBUFG、BUFG、BUFR或BUFH驱动。

14、PSCLK – 相位调整时钟

为动态相位调整接口提供源时钟。所有其他输入都是同步到这个时钟的正边沿的。这个引脚可以由IBUF、IBUFG、BUFG、BUFR或BUFH驱动。
注意:该时钟在PLL中不可用。

15、PSEN – 相位调整使能

通过同步地激活这个信号,可以启动动态(可变)相位调整操作。它必须在PSCLK的一个周期内被激活。
启动相位调整后,相位会逐渐改变,直到PSDONE上的高电平脉冲指示操作完成。在操作过程中,不会出现抖动或随机变化。从操作的开始到结束,相位是以连续的模拟方式改变的。
注意:该使能信号在PLL中不可用。

16、PSINCDEC – 相位调整增加/减少控制

这个输入信号同步地指示动态相位调整是增加操作(正相位调整)还是减少操作(负相位调整)。
PSINCDEC信号高电平表示增加,低电平表示减少。动态相位调整操作没有相位溢出的问题。如果相位调整超过360°或多圈,相位将从原始相位开始循环。
注意:该控制信号在PLL中不可用。

17、CLKOUT[0:6] – 输出时钟

这些用户可配置的时钟输出(对于MMCM是CLKOUT0到CLKOUT6,对于PLL是CLKOUT0到CLKOUT5)可以是VCO相位输出的分频版本(用户可控),分频系数从1(直通)到128。
输入时钟和输出时钟可以相位对齐。当与BUFR或BUFIO一起使用时,只有MMCM可以直接通过时钟输出CLKOUT0到CLKOUT3连接到HPC(高性能时钟)。
此外,CLKOUT0到CLKOUT3可以连接到CMT(时钟管理模块)骨干网络,用于级联MMCMs和PLLs。
与从CCIO引脚驱动MMCMs和PLLs到相邻区域类似,级联使用CMT骨干网络中有限的资源将时钟资源直接连接在相邻区域。在同一列内的级联元素之间也会产生相位偏移。
在MMCM中,CLKOUT0和CLKFBOUT可以在分数分频模式下使用。所有CLKOUT输出都可以在非分数模式下使用,以提供静态或动态相位调整。在分数模式下,只允许固定相位调整。

18、CLKOUT[0:3]B – 反转输出时钟

CLKOUT[0:3]B是CLKOUT[0:3]的反转(180°相位偏移)版本。
注意:该时钟在PLL中不可用。

19、CLKINSTOPPED – 输入时钟状态

这是一个状态引脚,用于指示输入时钟已停止。当时钟停止时,该信号会在一个时钟周期内被激活。当时钟重新启动并锁定,或者时钟切换到备用时钟输入并且MMCM重新锁定后,该信号将被取消激活。
注意:该时钟在PLL中不可用。

20、CLKFBSTOPPED – 反馈时钟状态

这是一个状态引脚,用于指示反馈时钟已停止。当时钟停止时,该信号会在一个时钟周期内被激活。当反馈时钟重新启动并且MMCM重新锁定后,该信号将被取消激活。
注意:该时钟在PLL中不可用。

21、LOCKED

MMCM/PLL的一个输出信号用于指示MMCM/PLL何时已经实现了参考时钟和输入引脚上的反馈时钟的相位和频率对齐。相位对齐是在预定的窗口内实现的,而频率匹配则是在预定的PPM(百万分之一)范围内完成的。MMCM在开机后会自动锁定,无需额外的复位操作。
如果输入时钟停止,相位对齐被破坏(例如,输入时钟相位发生偏移),或者频率发生变化,那么LOCKED信号将在一个PFD(相位频率检测器)时钟周期内被取消激活。当LOCKED信号被取消激活时,必须重置MMCM/PLL。在LOCKED信号被激活之前,不应使用时钟输出。

在FPGA设计中使用MMCM/PLL时,需要监测LOCKED信号以确保时钟信号是稳定和可靠的。在LOCKED信号被激活之前,任何依赖于MMCM/PLL输出的逻辑或模块都不应开始工作,以避免潜在的时序错误或不稳定行为。一旦LOCKED信号被激活,表示MMCM/PLL已经成功地对齐和匹配了参考时钟和反馈时钟,此时可以安全地使用时钟输出来驱动系统的其他部分。

22、DO[15:0] – 动态重配置输出总线

在使用动态重配置时提供MMCM数据输出。
如果DWE在DCLK的上升沿不活跃,而DEN活跃,则该总线将保持由DADDR寻址的配置单元的内容。
当DRDY活跃时,必须在DCLK的上升沿捕获DO总线。DO总线的值将保持到下一个DRP操作。

23、DRDY – 动态重配置就绪

是对MMCM动态重配置功能中的DEN信号的响应,表示一个DEN/DCLK操作已经完成。当DEN信号被激活并且与DCLK同步的时钟边沿到达时,MMCM会开始一个动态重配置操作。当这个操作完成时,DRDY信号会被激活,指示设计者可以进行下一个动态重配置操作或读取DO总线上的数据。
通过监控DRDY信号,设计者可以确保在读取或写入配置数据之前,MMCM已经完成了之前的操作。

24、PSDONE – 相位调整完成

是与PSCLK(相位调整时钟)同步的。
当当前的相位调整操作完成时,PSDONE信号会在一个时钟周期内被激活,表示可以开始一个新的相位调整周期。
这个信号对于需要精确控制时钟相位的应用来说非常有用,例如在需要同步多个时钟源或进行精确的时钟延迟调整时。通过监控PSDONE信号,设计者可以确保在下一个相位调整操作开始之前,当前的调整已经完成。
注意:这个信号在PLL(相位锁定环)中是不可用的,因为PLL通常具有不同的相位调整机制和控制方式。

  • 46
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 28
    评论
在赛灵思FPGA中,可以使用PLL(Phase Locked Loop)原语来实现时钟频率的锁定和倍频。下面是一个简单的示例代码: ``` (* use_dsp48 = "no" *) // 禁用DSP48原语,可选 module pll_example ( input clk_in, output clk_out ); wire locked; wire bypass; // 实例化PLL原语 // 这里使用了一个名为PLL_ADV的原语 // 参数说明: // - CLKIN1_PERIOD:输入时钟周期,单位ps // - CLKFBOUT_MULT_F:反馈时钟倍频因子,范围为2~64 // - CLKOUT0_DIVIDE_F:输出时钟分频因子,范围为1~128 // - CLKOUT0_DUTY_CYCLE:输出时钟占空比,范围为0.01~0.99 // - CLKOUT0_PHASE:输出时钟相位偏移,单位度 // - CLKFBOUT_PHASE:反馈时钟相位偏移,单位度 // - CLKINSEL:输入时钟选择,0表示使用外部输入时钟,1表示使用反馈时钟 // - CLKFBIN:反馈时钟输入 // - CLKOUT0:输出时钟 // - LOCKED:输出时钟锁定信号 // - BYPASS:旁路控制信号 PLL_ADV my_pll ( .CLKIN1 (clk_in), .CLKFBIN (clk_out), .CLKOUT0 (clk_out), .CLKFBOUT (), .LOCKED (locked), .BYPASS (bypass), .CLKINSEL (1'b0), .CLKFBOUT_MULT_F(4), .CLKOUT0_DIVIDE_F(2), .CLKOUT0_DUTY_CYCLE(0.5), .CLKOUT0_PHASE (0), .CLKFBOUT_PHASE (0) ); endmodule ``` 在这个例子中,我们实例化了一个名为`my_pll`的PLL_ADV原语。我们使用了一个外部输入时钟`clk_in`,并将输出时钟`clk_out`的倍频因子设置为4,分频因子设置为2,占空比设置为50%。最后,我们可以通过`locked`信号判断输出时钟是否已经锁定,通过`bypass`信号来控制是否旁路。
评论 28
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值