【Xilinx】MMCM时钟频率合成、相位调整和时钟管理IP核参数的定义及计算方法

前言

MMCM是Xilinx FPGA中用于时钟频率合成、相位调整和时钟管理的IP核。有些参数是用于配置和管理Xilinx FPGA中的MMCM(Mixed-Mode Clock Manager)时钟管理模块的参数。

比如有如下参数

    parameter         CLKIN_PERIOD_MMCM        = 10000,
    parameter         CLKFBOUT_MULT_MMCM       = 10,
    parameter         DIVCLK_DIVIDE_MMCM       = 1,
    parameter         CLKOUT0_DIVIDE_MMCM      = 3,
    parameter         CLKOUT1_DIVIDE_MMCM      = 37,
    parameter         CLKOUT2_DIVIDE_MMCM      = 40,
    parameter         CLKOUT3_DIVIDE_MMCM      = 3,
    parameter         CLKOUT4_DIVIDE_MMCM      = 3,
    parameter         CLKOUT6_DIVIDE_MMCM      = 6,
    parameter         CLKOUTPHY_MODE           = "VCO_2X",
    parameter         C_FAMILY                 = "virtexuplusHBM",

参数定义

以下是每个参数的含义及其应用方式:

  1. CLKIN_PERIOD_MMCM: 这个参数定义了输入时钟的周期,单位是皮秒(ps)。例如,如果输入时钟频率为100 MHz,则其周期为10,000 ps。

  2. CLKFBOUT_MULT_MMCM: 这是反馈时钟乘数,用于确定MMCM内部反馈路径的频率。反馈时钟是MMCM输出时钟经过分频后反馈到输入端的时钟。

  3. DIVCLK_DIVIDE_MMCM: 这个参数定义了输入时钟分频器的分频因子。输入时钟通过这个分频器后,将用于控制MMCM内部的时钟频率。

  4. CLKOUT0_DIVIDE_MMCM: 这是输出时钟0的分频因子。根据这个参数,MMCM将调整CLKOUT0的频率。

  5. CLKOUT1_DIVIDE_MMCM: 这是输出时钟1的分频因子。与CLKOUT0类似,这个参数决定了CLKOUT1的频率。

  6. CLKOUT2_DIVIDE_MMCM: 这是输出时钟2的分频因子。每个CLKOUTx_DIVIDE参数允许对每个输出时钟进行独立的频率控制。

  7. CLKOUT3_DIVIDE_MMCM: 这是输出时钟3的分频因子。

  8. CLKOUT4_DIVIDE_MMCM: 这是输出时钟4的分频因子。

  9. CLKOUT6_DIVIDE_MMCM: 这是输出时钟6的分频因子。注意,没有CLKOUT5_DIVIDE参数,因为通常每个MMCM最多有6个输出。

  10. CLKOUTPHY_MODE: 这个参数定义了时钟输出的模式。"VCO_2X"模式意味着时钟输出频率是VCO(压控振荡器)频率的两倍。

  11. C_FAMILY: 这个参数定义了目标FPGA系列。"virtexuplusHBM"表示这是针对Virtex UltraPlus系列的HBM(高带宽存储器)版本。

 应用方式

在Xilinx FPGA设计中,这些参数通常在MMCM的配置文件或约束文件中设置。例如,在Vivado设计套件中,你可以在MMCM的配置界面中设置这些参数,或者在xdc约束文件中指定它们。

配置文件示例 

create_clock -period 10000 -name clk_in [get_ports {clk_in_pin}]

set_property -dict { \
  {CLKIN_PERIOD {10000}} \
  {CLKFBOUT_MULT {10}} \
  {DIVCLK_DIVIDE {1}} \
  {CLKOUT0_DIVIDE {3}} \
  {CLKOUT1_DIVIDE {37}} \
  {CLKOUT2_DIVIDE {40}} \
  {CLKOUT3_DIVIDE {3}} \
  {CLKOUT4_DIVIDE {3}} \
  {CLKOUT6_DIVIDE {6}} \
  {CLKOUTPHY_MODE {VCO_2X}} \
  {C_FAMILY {virtexuplusHBM}} \
} [get_cells inst_name_of_mmcm]

 约束文件(XDC)示例

set_property -dict [list \
  CONFIG.CLKIN_PERIOD_MMCM {10000} \
  CONFIG.CLKFBOUT_MULT_MMCM {10} \
  CONFIG.DIVCLK_DIVIDE_MMCM {1} \
  CONFIG.CLKOUT0_DIVIDE_MMCM {3} \
  CONFIG.CLKOUT1_DIVIDE_MMCM {37} \
  CONFIG.CLKOUT2_DIVIDE_MMCM {40} \
  CONFIG.CLKOUT3_DIVIDE_MMCM {3} \
  CONFIG.CLKOUT4_DIVIDE_MMCM {3} \
  CONFIG.CLKOUT6_DIVIDE_MMCM {6} \
  CONFIG.CLKOUTPHY_MODE {VCO_2X} \
  CONFIG.C_FAMILY {virtexuplusHBM} \
] [get_ips your_mmcm_instance_name]

         在这些示例中,你需要将inst_name_of_mmcm替换为MMCM实例的实际名称,your_mmcm_instance_name替换为约束文件中MMCM实例的名称。

        通过正确设置这些参数,你可以精确控制FPGA设计中的时钟频率、相位和时钟树结构,以满足特定应用的时序和性能要求。

时钟计算

 

        要计算所有CLKOUT的时钟频率,我们需要从输入时钟频率出发,并应用每个CLKOUT特定的分频因子。以下是如何根据提供的参数计算每个CLKOUT的频率:

已知参数:

  • 输入时钟周期 CLKIN_PERIOD_MMCM = 10000 ps(10 ns)
  • 输入时钟频率 = 1 / CLKIN_PERIOD_MMCM = 1 / 10 ns = 100 MHz
  • 反馈时钟乘数 CLKFBOUT_MULT_MMCM = 10

计算步骤:

  1. 计算反馈时钟频率 (CLKFBOUT): \text{CLKFBOUT} = \text{输入时钟频率} \times \text{CLKFBOUT_MULT_MMCM} CLKFBOUT=100 MHz×10=1000 MHzCLKFBOUT=100 MHz×10=1000 MHz

  2. 计算每个CLKOUT的频率: 对于每个CLKOUT,我们使用相应的分频因子 CLKOUTx_DIVIDE_MMCM 来计算频率。

计算每个CLKOUT的频率:

  • CLKOUT0: \text{CLKOUT0} = \frac{\text{CLKFBOUT}}{\text{CLKOUT0_DIVIDE_MMCM}} CLKOUT0=1000 MHz3≈333.33 MHzCLKOUT0=31000 MHz​≈333.33 MHz

  • CLKOUT1: \text{CLKOUT1} = \frac{\text{CLKFBOUT}}{\text{CLKOUT1_DIVIDE_MMCM}} CLKOUT1=1000 MHz37≈27.03 MHzCLKOUT1=371000 MHz​≈27.03 MHz

  • CLKOUT2: \text{CLKOUT2} = \frac{\text{CLKFBOUT}}{\text{CLKOUT2_DIVIDE_MMCM}} CLKOUT2=1000 MHz40=25 MHzCLKOUT2=401000 MHz​=25 MHz

  • CLKOUT3: \text{CLKOUT3} = \frac{\text{CLKFBOUT}}{\text{CLKOUT3_DIVIDE_MMCM}} CLKOUT3=1000 MHz3≈333.33 MHzCLKOUT3=31000 MHz​≈333.33 MHz

  • CLKOUT4: \text{CLKOUT4} = \frac{\text{CLKFBOUT}}{\text{CLKOUT4_DIVIDE_MMCM}} CLKOUT4=1000 MHz3≈333.33 MHzCLKOUT4=31000 MHz​≈333.33 MHz

  • CLKOUT6: \text{CLKOUT6} = \frac{\text{CLKFBOUT}}{\text{CLKOUT6_DIVIDE_MMCM}} CLKOUT6=1000 MHz6≈166.67 MHzCLKOUT6=61000 MHz​≈166.67 MHz

注意事项:

  • 上述计算假设了输入时钟频率为100 MHz,如果输入时钟频率不同,需要相应地调整计算。
  • 分频因子是MMCM参数中定义的,确保这些参数值与设计要求一致。
  • 计算结果是基于理想条件的,实际频率可能受到FPGA内部时钟树和布线延迟的影响
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

神仙约架

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值