在FPGA设计中,时钟信号是整个系统的灵魂,它控制着数据传输、处理速度以及系统稳定性。而锁相环(PLL)作为FPGA中常用的时钟生成与倍频模块,其配置的合理与否直接影响到系统的性能。本文将深入探讨PLL的配置技巧,并通过实例解析帮助读者更好地理解和应用PLL。
一、PLL的基本原理
锁相环(PLL)是一种电子电路,它能够将一个输入信号(称为参考信号)与一个输出信号(称为锁相信号)进行锁定,使得这两个信号的频率和相位保持一致。在FPGA中,PLL主要用于时钟生成、频率转换和分频等功能。
1.1 PLL的主要组成部分
PLL主要由以下几部分组成:
- 参考时钟源:提供参考信号,通常是系统中的基准时钟。
- 分频器:将参考时钟源的频率降低到PLL内部振荡器的频率范围。
- 压控振荡器(VCO):根据分频器的输出和相位比较器的反馈信号产生振荡信号。
- 相位比较器:比较VCO的输出信号与参考信号的相位,产生误差信号。
- 低通滤波器:滤除误差信号中的高频成分,得到平滑的控制电压。
1.2 PLL的工作原理
PLL的工作原理可以概括为以下步骤:
- 参考时钟源提供参考信号。
- 分频器将参考信号分频,得到VCO所需的频率。
- VCO产生振荡信号。
- 相位比较器比较VCO的输出信号与参考信号的相位,产生误差信号。
- 低通滤波器滤除误差信号中的高频成分,得到平滑的控制电压。
- 控制电压调节VCO的频率,使得VCO的输出信号与参考信号的相位保持一致。
二、PLL配置技巧
2.1 选择合适的PLL
FPGA中通常包含多个PLL,选择合适的PLL对于系统性能至关重要。以下是一些选择PLL的技巧:
- 频率范围:根据系统需求选择频率范围合适的PLL。
- 输出时钟数量:根据系统需求选择输出时钟数量合适的PLL。
- 相位偏移:根据系统需求选择相位偏移合适的PLL。
2.2 设置分频器
分频器的作用是将参考时钟源的频率降低到VCO的频率范围。以下是一些设置分频器的技巧:
- 分频比:根据VCO的频率范围和参考时钟源的频率选择合适的分频比。
- 分频器类型:根据系统需求选择合适的分频器类型,如整数分频或分数分频。
2.3 设置VCO
VCO是PLL的核心部分,以下是一些设置VCO的技巧:
- 频率范围:根据系统需求选择合适的频率范围。
- 占空比:根据系统需求选择合适的占空比。
- 线性度:根据系统需求选择合适的线性度。
2.4 设置相位比较器和低通滤波器
相位比较器和低通滤波器是PLL的控制部分,以下是一些设置它们的技巧:
- 相位比较器:根据系统需求选择合适的相位比较器类型,如正交比较器或差分比较器。
- 低通滤波器:根据系统需求选择合适的低通滤波器类型,如一阶或二阶滤波器。
三、实例解析
以下是一个使用Xilinx FPGA中的PLL生成100MHz时钟信号的实例:
”`verilog module pll_100mhz(
input clk_in,
output reg clk_100mhz
);
// 设置PLL localparam PLLCFG = {
14'd0, // N div
13'd0, // M div
2'd0, // DCP
2'd0, // DCM
2'd0, // DCP out
2'd0, // DCM out
2'd0, // Phase offset
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0, // Phase offset out
2'd0,