Xilinx 7系列中的MMCM原语

        7系列FPGA的MMCM的原语有两种,分别是MMCME2_BASEMMCME2_ADV

一、MMCME2_BASE


MMCME2_BASE是基本的混合模式时钟管理器,它提供了基本的时钟管理功能,如分频、倍频和相位调整等

        它适用于大多数常见的时钟管理需求,并且相对简单易用
通过配置相应的端口和参数,可以实现输入时钟的相位锁定、频率转换以及占空比调整

        入时钟经过PFD(phase-frequency detector),CP(charge pump),LF(loop filter)后产生一定幅度的电压输入到VCO,VCO产生频率与输入电压幅度成比例的高频时钟,再被除以M倍并反馈到PFD。
        因此VCO的输出频率是一个稳定的、输入频率M倍的高频时钟,该时钟除以不同的倍数(用户可调)即可输出时钟clkout0 clkout6
另外第0路输出和反馈输出是可以被分数除法,且第0路第3路提供反相180度的输出,VCO的输出还可以精确调整相位

        任何使用MMCM电路的,其输入时钟都要VCO,然后再统一分配出去
输出的计算公式
VCO Frequency
= (Input Clock Frequency) * (CLKFBOUT_MULT)/DIVCLK_DIVIDE
所以输出的频率clkout_freq = VCO_freq / DIV

CLKFBIN : Feedback clock pin to the MMCM.
CLKFBOUT :Dedicated MMCM Feedback clock output.
        在MMCM中,反馈时钟是指从MMCM的输出时钟信号中重新引导一个时钟信号作为MMCM的输入信号的一种配置方式;
        通常MMCM的输出时钟可以通过分频或者倍频操作取得所需的时钟频率,而当需要使用输出时钟信号多为输入时钟信号的一部分时,即需要将输出时钟信号再次输入到MMCM中进行进一步的时钟操作时,就需要使用到反馈时钟;
        使用反馈时钟可以在MMCM中实现复杂的时钟操作,比如多级分频、倍频或者相位调整等,通过将输出时钟信号反馈到MMCM的输入端,可以将其作为新的时钟信号进行进一步的时钟控制和操作

1.MMCME2_BASE源程序


// MMCME2_BASE : In order to incorporate this function into the design,
//   Verilog   : the following instance declaration needs to be placed
//  instance   : in the body of the design code.  The instance name
// declaration : (MMCME2_BASE_inst) and/or the port declarations within the
//    code     : parenthesis may be changed to properly reference and
//             : connect this function to the design.  All inputs
//             : and outputs must be connected.

//  <-----Cut code below this line---->

   // MMCME2_BASE: Base Mixed Mode Clock Manager
   //              Artix-7
   // Xilinx HDL Language Template, version 2022.1

   MMCME2_BASE #(
      .BANDWIDTH("OPTIMIZED"),   // 指定抖动的算法 (OPTIMIZED, HIGH, LOW)
      .CLKFBOUT_MULT_F(5.0),     // 所有时钟的乘数 (2.000-64.000).
      .CLKFBOUT_PHASE(0.0),      // CLKFB的相位偏移度 (-360.000-360.000).
      .CLKIN1_PERIOD(0.0),       // 输入时钟的周期 小数点后三位(i.e. 33.333 is 30 MHz).
      // CLKOUT0_DIVIDE - CLKOUT6_DIVIDE: Divide amount for each CLKOUT (1-128)
      .CLKOUT1_DIVIDE(1),
      .CLKOUT2_DIVIDE(1),
      .CLKOUT3_DIVIDE(1),
      .CLKOUT4_DIVIDE(1),
      .CLKOUT5_DIVIDE(1),
      .CLKOUT6_DIVIDE(1),
      .CLKOUT0_DIVIDE_F(1.0),    // Divide amount for CLKOUT0 (1.000-128.000).
      // CLKOUT0_DUTY_CYCLE - CLKOUT6_DUTY_CYCLE:占空比(0.01-0.99).
      .CLKOUT0_DUTY_CYCLE(0.5),
      .CLKOUT1_DUTY_CYCLE(0.5),
      .CLKOUT2_DUTY_CYCLE(0.5),
      .CLKOUT3_DUTY_CYCLE(0.5),
      .CLKOUT4_DUTY_CYCLE(0.5),
      .CLKOUT5_DUTY_CYCLE(0.5),
      .CLKOUT6_DUTY_CYCLE(0.5),
      // CLKOUT0_PHASE - CLKOUT6_PHASE: 输出时钟的偏移(-360.000-360.000).
      .CLKOUT0_PHASE(0.0),
      .CLKOUT1_PHASE(0.0),
      .CLKOUT2_PHASE(0.0),
      .CLKOUT3_PHASE(0.0),
      .CLKOUT4_PHASE(0.0),
      .CLKOUT5_PHASE(0.0),
      .CLKOUT6_PHASE(0.0),
      .CLKOUT4_CASCADE("FALSE"), // Cascade CLKOUT4 counter with CLKOUT6 (FALSE, TRUE)
      .DIVCLK_DIVIDE(1),         // 输出时钟相对于输入时钟的分频比(1-106)
      .REF_JITTER1(0.0),         // Reference input jitter in UI (0.000-0.999).
      .STARTUP_WAIT("FALSE")     // Delays DONE until MMCM is locked (FALSE, TRUE)
   )
   MMCME2_BASE_inst (
      // Clock Outputs: 1-bit (each)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

江鸟的坚持

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

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

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

打赏作者

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

抵扣说明:

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

余额充值