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

基于 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核(含工程源码) - 第1张

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

使用时钟IP核(含工程源码) - 第2张

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

使用时钟IP核(含工程源码) - 第3张

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

使用时钟IP核(含工程源码) - 第4张

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

使用时钟IP核(含工程源码) - 第5张

弹出对话框,点击OK:

使用时钟IP核(含工程源码) - 第6张

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

使用时钟IP核(含工程源码) - 第7张

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

使用时钟IP核(含工程源码) - 第8张

弹出的对话框点击OK:

使用时钟IP核(含工程源码) - 第9张

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

使用时钟IP核(含工程源码) - 第10张

最后,整个pll_top_top.v文件代码如下:

  1. module pll_clock_top(
  2. output reg [3:0] led, // LED4 --- LED1, 1 on, 0 off
  3. input clk, // FPGA PL clock,input 50 MHz
  4. input rst_n // FPGA reset pin
  5. );
  6. reg [31:0] cnt;
  7. reg [1:0] led_on_number;
  8. wire clk_out1;
  9. parameter CLOCK_FREQ =100000000;
  10. parameter COUNTER_MAX_CNT=CLOCK_FREQ/2-1;//change time 0.5s
  11. //clock pll inst
  12. clk_wiz_0 clk_wiz_0_inst
  13. (
  14. .clk_out1(clk_out1),
  15. .resetn(rst_n),
  16. .locked(),
  17. .clk_in1(clk)
  18. );
  19. always @(posedge clk_out1, negedge rst_n) begin
  20. if(!rst_n) begin
  21. cnt <= 32'd0;
  22. led_on_number <= 2'd0;
  23. end
  24. else begin
  25. cnt <= cnt + 1'b1;
  26. if(cnt == COUNTER_MAX_CNT) begin//计数0.5s
  27. cnt <= 32'd0;
  28. led_on_number <= led_on_number + 1'b1;
  29. end
  30. end
  31. end
  32. always @(led_on_number) begin
  33. case(led_on_number)
  34. 0: led <= 4'b0001;
  35. 1: led <= 4'b0010;
  36. 2: led <= 4'b0100;
  37. 3: led <= 4'b1000;
  38. endcase
  39. end
  40. endmodule

先进行综合,然后绑定管脚,保存管脚约束文件名pll_test_top。最后,综合布局布线 生成比特文件,我们下载到板子上,可以看到,流水灯比我们之前的实验效果要快一倍。因为 我们时钟倍频100M速度,而之前流水灯的时钟直接使用外部晶振,速度是50M。

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

"愿我的文字能带给您一丝美好"

还没有人赞赏,支持一下

评论

A 为本文作者,G 为游客总数:0
加载中…

提交评论

游客,您好,欢迎参与讨论。

我的购物车

购物车为空

优惠券

没有优惠券