Zynq-7000 PS PLL 配置实战:Vivado 2023.2 中为 PL 生成 100MHz 时钟的 5 个步骤

Zynq-7000 PS PLL 配置实战:Vivado 2023.2 中为 PL 生成 100MHz 时钟的 5 个步骤
Zynq-7000 PS PLL 配置实战Vivado 2023.2 中为 PL 生成 100MHz 时钟的 5 个步骤在 Zynq-7000 系列 SoC 开发中合理配置 PSProcessing System的 PLLPhase-Locked Loop时钟系统是确保 PLProgrammable Logic部分稳定运行的关键。本文将手把手指导您如何在 Vivado 2023.2 环境下通过五个清晰步骤完成 PS PLL 配置为 PL 部分生成精确的 100MHz 时钟信号。1. 创建 Vivado 工程与 Block Design首先启动 Vivado 2023.2创建一个新工程选择Create Project向导指定工程名称如zynq_pl_clock和存储路径在Project Type页面选择RTL Project添加或创建约束文件可暂时跳过在Default Part页面选择您的 Zynq-7000 系列芯片型号工程创建完成后我们需要建立 Block Design# 创建新的 Block Design create_bd_design zynq_system在 Block Design 中添加 Zynq Processing System IP 核右键点击 Diagram 空白处选择Add IP搜索并双击ZYNQ7 Processing System运行 Block Automation保持默认设置2. 配置 PS PLL 时钟输出双击 Zynq IP 核进入配置界面关键配置步骤如下导航至Clock Configuration→PL Fabric Clocks启用FCLK_CLK0并设置频率为 100MHz选择 PLL 源推荐使用 I/O PLL 以获得更精确的时钟参数推荐值说明FCLK_CLK0Enabled主 PL 时钟Source PLLI/O PLL提供更灵活的时钟分频Target Freq100.000目标频率 100MHzBuffer TypeBUFG全局时钟缓冲提示如果无法精确得到 100MHz可尝试调整 PLL 的输入参考时钟或分频系数。I/O PLL 通常比 ARM PLL 提供更灵活的分数分频能力。完成配置后点击OK保存设置。此时 Block Design 中应能看到 FCLK_CLK0 端口自动生成。3. 添加 PL 测试逻辑与时钟连接为了验证时钟配置的正确性我们添加一个简单的 LED 闪烁模块右键 Diagram选择Add Module创建新模块led_blink添加以下 Verilog 代码module led_blink ( input wire clk, output reg led ); reg [27:0] counter; always (posedge clk) begin counter counter 1; if (counter 28d100_000_000) begin // 约1Hz闪烁(100MHz时钟) counter 0; led ~led; end end endmodule将 FCLK_CLK0 连接到 led_blink 的 clk 输入右键 led 端口选择Make External创建顶层端口4. 生成硬件设计与约束文件完成设计后需要执行以下步骤生成顶层 HDL 包装文件make_wrapper -files [get_files *.bd] -top add_files -norecurse [get_files *.v] update_compile_order -fileset sources_1创建约束文件如zynq_constraints.xdc添加引脚约束set_property PACKAGE_PIN K16 [get_ports led] set_property IOSTANDARD LVCMOS33 [get_ports led]生成比特流launch_runs impl_1 -to_step write_bitstream -jobs 4 wait_on_run impl_15. 硬件验证与调试最后一步是在硬件上验证时钟配置导出硬件包含比特流write_hw_platform -fixed -force -file ./output/zynq_system.xsa在 Vitis 中创建空白应用工程仅用于初始化 PS#include xparameters.h int main() { while(1); // 保持PS运行以维持时钟输出 return 0; }编程 FPGA 并运行应用先通过 Vivado Hardware Manager 编程比特流然后在 Vitis 中调试运行空白应用验证时可以使用以下方法逻辑分析仪捕捉 FCLK_CLK0 信号确认频率是否为 100MHz观察 LED 闪烁频率是否符合预期约1Hz在 Vitis 中通过 XSCT 命令行读取时钟寄存器connect targets -set -filter {name ~ APU*} mrd 0xF8000170 # 读取PLL状态寄存器通过这五个步骤您已经成功配置了 Zynq-7000 的 PS PLL 并为 PL 部分生成了稳定的 100MHz 时钟。这种配置方式特别适合没有外部晶振直接连接到 PL 的开发板如 PYNQ-Z2 等充分利用了 Zynq SoC 的灵活时钟架构。