PLL说明,quartus和vivado两款软件的pll IP核使用说明
下面详细说明PLL的原理以及在Quartus和Vivado中的使用方法。
PLL 基本概念与原理
PLL 的作用
verilog
// PLL 主要功能: 1. 时钟倍频:生成比输入时钟频率更高的时钟 2. 时钟分频:生成比输入时钟频率更低的时钟 3. 时钟去抖:减少时钟抖动,提高时钟质量 4. 相位调整:生成不同相位的时钟 5. 时钟切换:在不同时钟源之间切换
PLL 基本结构
text
输入时钟 → 相位检测器 → 环路滤波器 → VCO → 分频器 → 输出时钟↑ ↓└────────── 反馈分频器 ──────────┘
Quartus 中 PLL 使用详解
1. 打开 IP Catalog
tcl
# 方法1:通过菜单 Tools -> IP Catalog# 方法2:通过Qsys(现在叫Platform Designer) Tools -> Platform Designer
2. 搜索并创建 PLL IP
tcl
# 在IP Catalog中搜索: "ALTPLL" # 对于传统器件 "PLL" # 对于新系列器件
3. 配置 PLL 参数
基本配置页面:
verilog
// 参数说明: - 输入时钟频率 (inclk0):如 50MHz - 操作模式:正常模式/源同步模式 - 带宽设置:高速/低带宽
输出时钟配置:
verilog
// 输出时钟c0配置示例: - 时钟倍频因子:1-512 - 时钟分频因子:1-512 - 相位偏移:-360° 到 +360° - 占空比:50% (通常保持默认)// 实际计算: 输出频率 = (输入频率 × 倍频因子) / 分频因子
4. 锁定检测配置
verilog
// 重要信号: output locked; // PLL锁定指示信号// 使用建议: always @(posedge clk_out) beginif (!locked) // 复位逻辑或等待锁定else// 正常操作 end
5. 生成实例化代码
verilog
// 生成的PLL实例化模板 pll_ip u0 (.areset (1'b0), // 异步复位,高有效.inclk0 (clk_50m), // 输入时钟 (50 MHz).c0 (clk_100m), // 输出时钟0 (100 MHz).c1 (clk_25m), // 输出时钟1 (25 MHz) .c2 (clk_50m_90),// 输出时钟2 (50 MHz, 90°相位偏移).locked (pll_locked) // PLL锁定信号 );
Vivado 中 PLL 使用详解
1. 创建 Clocking Wizard IP
tcl
# 方法1:IP Catalog IP Catalog -> FPGA Features and Design -> Clocking -> Clocking Wizard# 方法2:Tcl命令 create_ip -name clk_wiz -vendor xilinx.com -library ip -version 6.0
2. 配置 Clocking Wizard
第一页:基本配置
tcl
# 主要参数: - Component Name: clk_wiz_0 - Primitive: PLL # 或者 MMCM - Input Clock Frequency: 50 MHz
第二页:输出时钟配置
tcl
# 配置多个输出时钟示例: Output Clocks Tab: - clk_out1: 100.000 MHz, Phase: 0.0, Duty Cycle: 50% - clk_out2: 25.000 MHz, Phase: 0.0, Duty Cycle: 50% - clk_out3: 50.000 MHz, Phase: 90.0, Duty Cycle: 50% - clk_out4: 200.000 MHz, Phase: 0.0, Duty Cycle: 50%
第三页:端口配置
tcl
# 可选端口: ☑ reset # 复位信号 ☑ locked # 锁定指示信号 ☑ clk_in1 # 主输入时钟 ☑ clk_in2 # 备用输入时钟(用于时钟切换)
3. 生成并实例化
verilog
// Vivado生成的PLL实例化代码 clk_wiz_0 clk_wiz_inst (.clk_out1(clk_100m), // 输出 100MHz.clk_out2(clk_25m), // 输出 25MHz .clk_out3(clk_50m_90), // 输出 50MHz, 90°相位偏移.clk_out4(clk_200m), // 输出 200MHz.reset(pll_reset), // 复位信号,高有效.locked(pll_locked), // 锁定指示.clk_in1(clk_50m) // 输入 50MHz );
总结
PLL是FPGA设计中不可或缺的时钟管理工具,掌握其在Quartus和Vivado中的使用方法对于设计高性能数字系统至关重要。关键要点:
正确配置:根据需求合理设置倍频、分频和相位参数
妥善处理锁定信号:确保系统在时钟稳定后开始工作
添加适当约束:帮助时序分析工具正确分析时序
考虑可靠性:添加时钟监控和错误处理机制
通过合理使用PLL,可以显著提高系统的性能和稳定性。
