FPGA线上课程平台|最全栈的FPGA学习平台|FPGA工程师认证培训
登录
首页-技术文章/快讯-工程案例-正文

使用时钟IP核(含工程源码)

二牛学FPGA二牛学FPGA
工程案例
11个月前
0
0
364

基于 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:

调用IP核 。我们调整下窗口布局,并且将新弹出的IP Catalog窗口最大化。读者在 使用VIVADO的时候,多多熟悉一下软件界面,很多时候界面布局和工具栏,功能导航界面 都跟传统的有些区别,在使用的时候多多摸索,多多熟悉,毕竟软件很强大,使用上也有些 新颖之处,多多使用就好。我们在IP Catalog输入clock,下拉界面找到clocking wizard并  且双击,打开IP配置界面:

修改配置与下图保持一致:

输出时钟配置如下,只输出一路时钟, 100M频率:

右边下拉界面,最下面设置reset信号为低有效,最后点击OK完成配置:

弹出对话框,点击OK:

最后,生成输出文件对话框,我们点击Generate

我们回到Sources界面,可以看到, Design Sources出现了clk_wiz_0的IP核添加进来了。点 击左边IP核的箭头,打开IP的架构。

弹出的对话框点击OK:

Sources下的Design Sources的IP核下出现了一个时钟模块的顶层.v文件。我们双击打 开他,可以看到模块的名称和接口信号。我们将这个时钟模块例化到pll_clock_top.v里面。

最后,整个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。

标签:
本文原创,作者:二牛学FPGA,其版权均为FPGA线上课程平台|最全栈的FPGA学习平台|FPGA工程师认证培训所有。
如需转载,请注明出处:https://z.shaonianxue.cn/9298.html
二牛学FPGA

二牛学FPGA

初级工程师
这家伙真懒,几个字都不愿写!
74517.88W3.94W3.67W
分享:
成电国芯FPGA赛事课即将上线
使用SDK固化FLASH代码固化(含工程源码)
使用SDK固化FLASH代码固化(含工程源码)上一篇
面试官亲测:FPGA常问的面试题下一篇
面试官亲测:FPGA常问的面试题
相关文章
总数:42
使用HLS进行基于FPGA的边缘检测

使用HLS进行基于FPGA的边缘检测

利用HLS函数创建图像处理解决方案,在可编程逻辑中实现边缘检测(Sobe…
工程案例
1年前
0
0
474
2
基于ZYNQ ECO开发板的呼吸灯实验

基于ZYNQ ECO开发板的呼吸灯实验

一、简介呼吸灯常见于我们的手机指示灯上,本实验将会教会大家利用F…
工程案例
4年前
6
0
1.31K
1
🔥FPGA学习新风尚,从入门到进阶全攻略!🚀

🔥FPGA学习新风尚,从入门到进阶全攻略!🚀

🎉成电国芯集团携最强FPGA课程来袭!面试录播+双板卡实操+专属线上辅导…
工程案例
1年前
0
0
651
0
评论表单游客 您好,欢迎参与讨论。
加载中…
评论列表
总数:0
FPGA线上课程平台|最全栈的FPGA学习平台|FPGA工程师认证培训
没有相关内容