---
title: 使用时钟IP核（含工程源码）
url: "https://www.fpgalearn.com/9298.html"
kind: article
id: 9298
excerpt: 基于 ZYNQ MINI开发板 一、文档实现功能介绍 本文档实现在 VIVADO 下面新建一个 FPGA 开发工程，然后调用时钟锁相环IP通过输入的50M时 …
published_at: 2025-05-18
author: 二牛学FPGA
tags: ECO开发板, fpga入门, FPGA工程
word_count: 2909
source: "https://www.fpgalearn.com"
---

# 使用时钟IP核（含工程源码）

> 标签：ECO开发板、fpga入门、FPGA工程
> 基于 ZYNQ MINI开发板 一、文档实现功能介绍 本文档实现在 VIVADO 下面新建一个 FPGA 开发工程，然后调用时钟锁相环IP通过输入的50M时 …

> 基于 ZYNQ MINI开发板 一、文档实现功能介绍 本文档实现在 VIVADO 下面新建一个 FPGA 开发工程，然后调用时钟锁相环IP通过输入的50M时 …

基于 ZYNQ MINI开发板
## 一、文档实现功能介绍
本文档实现在 VIVADO 下面新建一个 FPGA 开发工程，然后调用时钟锁相环IP通过输入的50M时  钟产生100M甚至更高的时钟源，在学习7系列的始终锁相环IP的使用的同时，学会如何在VIVADO下使 调用IP核。实现效果：锁相环时钟输出，最后驱动流水灯模块。 工程新建方法请参考文档《开发软 件安装和介绍/VIVADO简介及软件下新建ZYNQ工程教程》。
## 二、ZYNQ 工程建立
| 起始页（或file->Project->New） | 创建新工程(CreateNew Project) |
| --- | --- |
| 向导起始页面 | 点击 Next- > |
| ProjectName(工程名) | 工程名：fpga_04_pll_clock工程路径： (自己选择，尽量不要有中文路径)勾选Create ProjectSubdirectory,点击Next- > |
| AddSource(添加设计源文件) | 点击 Next- > |
| AddExsixtingIP(添加已有的 IP) | 点击 Next- > |
| AddConstraints(添加已有约束文件) | 点击 Next- > |
| DefaultPart(默认配置，芯片选型) | Family->Zynq-7000Package- >clg400Speed->7010选-1,7020选-27010版本选择目标器件:xc7z010clg400-17020版本选择目标器件:xc7z020clg400-2 点击 Next- > |
| NewProjectSummary(新建工程概况) | 确认工程信息，选型等，点击 Finish 完成 |
## 三、时钟模块IP调用及实现
工程管理栏点击 Add Sources 添加新建文件：pll_clock_top.v，模块名pll_clock_top，添加新建完成 之后点击工程管理栏的PROJECT MANAGER下的IP Catalog：
![图片](https://admin.shaonianxue.cn/wp-content/uploads/2025/05/图片1-2.png)
调用IP核 。我们调整下窗口布局，并且将新弹出的IP Catalog窗口最大化。读者在 使用VIVADO的时候，多多熟悉一下软件界面，很多时候界面布局和工具栏，功能导航界面 都跟传统的有些区别，在使用的时候多多摸索，多多熟悉，毕竟软件很强大，使用上也有些 新颖之处，多多使用就好。我们在IP Catalog输入clock，下拉界面找到clocking wizard并  且双击，打开IP配置界面：
![图片](https://admin.shaonianxue.cn/wp-content/uploads/2025/05/image-82.png)
修改配置与下图保持一致：
![图片](https://admin.shaonianxue.cn/wp-content/uploads/2025/05/image-83.png)
输出时钟配置如下，只输出一路时钟， 100M频率：
![图片](https://admin.shaonianxue.cn/wp-content/uploads/2025/05/image-84.png)
右边下拉界面，最下面设置reset信号为低有效，最后点击OK完成配置：
![图片](https://admin.shaonianxue.cn/wp-content/uploads/2025/05/图片15.png)
弹出对话框，点击OK：
![图片](https://admin.shaonianxue.cn/wp-content/uploads/2025/05/image-85.png)
最后，生成输出文件对话框，我们点击Generate
![图片](https://admin.shaonianxue.cn/wp-content/uploads/2025/05/image-86.png)
我们回到Sources界面，可以看到， Design Sources出现了clk_wiz_0的IP核添加进来了。点 击左边IP核的箭头，打开IP的架构。
![图片](https://admin.shaonianxue.cn/wp-content/uploads/2025/05/图片16.png)
弹出的对话框点击OK：
![图片](https://admin.shaonianxue.cn/wp-content/uploads/2025/05/image-87.png)
Sources下的Design Sources的IP核下出现了一个时钟模块的顶层.v文件。我们双击打 开他，可以看到模块的名称和接口信号。我们将这个时钟模块例化到pll_clock_top.v里面。
![图片](https://admin.shaonianxue.cn/wp-content/uploads/2025/05/image-88.png)
最后，整个pll_top_top.v文件代码如下：
```
module pll_clock_top(
  output reg [3:0] led,  // LED4 --- LED1, 1  on, 0 off
  input           clk, // FPGA PL clock,input 50 MHz
  input           rst_n // FPGA reset pin
 );

  reg [31:0] cnt;
  reg [1:0]  led_on_number;

  wire clk_out1;
  parameter CLOCK_FREQ  =100000000;
  parameter COUNTER_MAX_CNT=CLOCK_FREQ/2-1;//change time 0.5s

  //clock pll inst
    clk_wiz_0 clk_wiz_0_inst
    (
    .clk_out1(clk_out1),
    .resetn(rst_n),
    .locked(),
    .clk_in1(clk)
    );
    always @(posedge clk_out1, negedge rst_n) begin
      if(!rst_n) begin
      cnt <= 32'd0;
      led_on_number <= 2'd0;
    end
    else begin
      cnt <= cnt + 1'b1;
      if(cnt == COUNTER_MAX_CNT) begin//计数0.5s
        cnt <= 32'd0;
        led_on_number <= led_on_number + 1'b1;
      end
    end
  end
  always @(led_on_number) begin
    case(led_on_number)
      0: led <= 4'b0001;
      1: led <= 4'b0010;
      2: led <= 4'b0100;
      3: led <= 4'b1000;
    endcase
  end
endmodule
```
先进行综合，然后绑定管脚，保存管脚约束文件名pll_test_top。最后，综合布局布线 生成比特文件，我们下载到板子上，可以看到，流水灯比我们之前的实验效果要快一倍。因为 我们时钟倍频100M速度，而之前流水灯的时钟直接使用外部晶振，速度是50M。
