PLLE2_ADV、MMCME2_ADV源语详解

上图红色部分为PLLE2_ADV源语功能,其余部件为人为添加的电路,包括输入缓冲输出缓冲反馈方式

// CLKOUT0 = CLKIN1 / DIVCLK_DIVIDE * CLKFBOUT_MULT / CLKOUT0_DIVIDE
// CLKFBOUT 由 CLKIN1锁定输出,经过缓冲区后进入 PLL CLKFBIN,PLL 对 CLKFBIN 经过 CLKFBOUT_MULT 倍频然后分频得到每个通道的时钟进行输出
PLLE2_ADV #(
      	.BANDWIDTH				("OPTIMIZED"			),
      	.CLKFBOUT_MULT			(7*MMCM_MODE			),	// CLKFBOUT_MULT 为 CLKFBIN 时钟的倍频系数
      	.CLKFBOUT_PHASE			(0.0					),	// 反馈时钟相位偏移
      	.CLKIN1_PERIOD			(CLKIN_PERIOD			),	// 输入时钟1约束(ns)
      	.CLKIN2_PERIOD			(CLKIN_PERIOD			),	// 输入时钟2约束(ns)
      	.CLKOUT0_DIVIDE			(1*MMCM_MODE			),	// 0通道分频、占空比、相位参数
      	.CLKOUT0_DUTY_CYCLE		(0.5					),
      	.CLKOUT0_PHASE			(0.0					),
      	.CLKOUT1_DIVIDE			(4*MMCM_MODE			),	// 1通道分频、占空比、相位参数
      	.CLKOUT1_DUTY_CYCLE		(0.5					),
      	.CLKOUT1_PHASE			(22.5					),
      	.CLKOUT2_DIVIDE			(7*MMCM_MODE			),	// 2通道分频、占空比、相位参数
      	.CLKOUT2_DUTY_CYCLE		(0.5					),
      	.CLKOUT2_PHASE			(0.0					),
      	.CLKOUT3_DIVIDE			(7						),	// 3通道分频、占空比、相位参数
      	.CLKOUT3_DUTY_CYCLE		(0.5					),
      	.CLKOUT3_PHASE			(0.0					),
      	.CLKOUT4_DIVIDE			(7						),	// 4通道分频、占空比、相位参数
      	.CLKOUT4_DUTY_CYCLE		(0.5					),
      	.CLKOUT4_PHASE			(0.0					),
      	.CLKOUT5_DIVIDE			(7						),	// 5通道分频、占空比、相位参数
      	.CLKOUT5_DUTY_CYCLE		(0.5					),
      	.CLKOUT5_PHASE			(0.0					),
      	.COMPENSATION			("ZHOLD"				),	// 时钟输入补偿
      	.DIVCLK_DIVIDE			(1						),	// 对输入时钟的分频系数
      	.REF_JITTER1			(0.100					)	// 输入时钟抖动精度(0.000 to 0.999)
	)
rx_plle2_adv_inst (
      	.CLKFBOUT				(rx_mmcmout_x1			),	// CLKFBOUT 由 CLKIN1锁定输出,经过缓冲区后进入 PLL CLKFBIN
      	.CLKOUT0				(rx_mmcmout_xs			),	// CLKOUT0 输出时钟
      	.CLKOUT1				(						),	// CLKOUT1 输出时钟
      	.CLKOUT2				(						),  // CLKOUT2 输出时钟
      	.CLKOUT3				(						),  // CLKOUT3 输出时钟
      	.CLKOUT4				(						),  // CLKOUT4 输出时钟
      	.CLKOUT5				(						),  // CLKOUT5 输出时钟
      	.DO						(						),	// 动态调整用,输出
      	.DRDY					(						),	// 动态调整用,输出
      	.PWRDWN					(1'b0					),	// 1:PLL断电 0:PLL正常工作
      	.LOCKED					(mmcm_locked			),	// PLL所有时钟相位对齐且频率匹配后,锁定标志被置位
      	.CLKFBIN				(rxclk_div				),	// CLKFBOUT 由 CLKIN1锁定输出,经过缓冲区后进入 PLL CLKFBIN
      	.CLKIN1					(rx_clkin_p_d			),	// PLL 输出时钟1
      	.CLKIN2					(1'b0					),	// PLL 输出时钟2
      	.CLKINSEL				(1'b1					),	// PLL 输出时钟选择,1:CLKIN1,0:CLKIN2
      	.DADDR					(7'h00					),	// 动态调整用,输入
      	.DCLK					(1'b0					),	// 动态调整用,输入
      	.DEN					(1'b0					),	// 动态调整用,输入
      	.DI						(16'h0000				),	// 动态调整用,输入
      	.DWE					(1'b0					),	// 动态调整用,输入
      	.RST					(reset					)	// PLL复位
	) ;

​​​​​​​


1.本文部分素材来源网络,版权归原作者所有,如涉及作品版权问题,请与我联系删除。

2.未经原作者允许不得转载本文内容,否则将视为侵权;

3.转载或者引用本文内容请注明来源及原作者;

4.对于不遵守此声明或者其他违法使用本文内容者,本人依法保留追究权等。

关注【一个早起的程序员】精彩系列文章每天不断。