当前位置:   article > 正文

【FPGA】Vivado软件 PLL IP核使用教程_vivado看ip核例化

vivado看ip核例化

一、PLL简介

        PLL (Phase Locked Loop),锁相环,是一种反馈控制电路。其功能主要是时钟倍频、分频、相位偏移和可编程占空比。

 二、Vivado软件PLL创建

1、新建pll_test工程,点击Project Manager界面下的IP Catalog。

 2、再在IP Catalog界面里搜索框搜索Clocking,找到下面的Clocking Wizard,双击打开配置界面。

3、进入配置界面。默认这个Clocking Wizard的名字为clk_wiz_0, 可以修改。在第一个界面Clocking Options里,输入的时钟名字可以修改。输入的时钟频率也可以修改,这里我设置为20Mhz。

 4、在Output Clocks界面里可以选择clk_out1~clk_out4四个时钟的输出,这里我只选择一个时钟clk_out1,频率我设置为50Mhz。这里还可以设置时钟输出的相位,我没有设置。

5、在弹出的对话框中点击Generate按钮生成PLL IP的设计文件。

 pll_test工程中自动生成一个clk_wiz_0.xci,双击可以修改IP的配置。

三、pll ip实例化

1、在IP Sources界面找到clk_wiz_0.veo文件,文件中是IP的例化模板。我们只需要将文件中内容复制粘贴到我们verilog程序中,对IP进行实例化。

 2、我们在创建一个顶层设计文件来实例化这个PLL IP, 编写pll_test.v代码如下。注意PLL的复位是高电平有效,也就是高电平时一直在复位状态,PLL不会工作。而rst_n是低电平复位,因此需要反向连接到PLL的复位。

  1. `timescale 1ns/1ps
  2. module pll_test(
  3. input clk ,//20m系统时钟
  4. input rst_n ,
  5. output clk_out//pll clk output
  6. );
  7. //参数定义
  8. wire locked;
  9. //ip核例化
  10. clk_wiz_0 instance_name
  11. (
  12. // Clock out ports
  13. .clk_out1 (clk_out ), // output clk_out1
  14. // Status and control signals
  15. .reset (~rst_n ), // input reset
  16. .locked (locked ), // output locked
  17. // Clock in ports
  18. .clk_in1 (clk )
  19. );
  20. endmodule

3、保存工程后,pll_test自动成为了top文件,clk_wiz_0成为Pll_test文件的子模块。

四、对实例化顶层文件仿真

1、我们在创建一个仿真激励文件来仿真这个pll_test顶层文件, 编写pll_test_tb.v代码如下。 

  1. `timescale 1ns / 1ps
  2. //
  3. // Module Name: _led_test_tb
  4. //
  5. module pll_test_tb;
  6. // Inputs
  7. reg sys_clk;
  8. reg rst_n;
  9. // Outputs
  10. wire clk_out;
  11. // Instantiate the Unit Under Test (UUT)
  12. pll_test u_pll_test (
  13. .clk(sys_clk), //system clock 20Mhz on board
  14. .rst_n(rst_n), //reset ,low active
  15. .clk_out(clk_out), //pll clock output 50Mhz
  16. );
  17. initial begin
  18. // Initialize Inputs
  19. sys_clk = 0;
  20. rst_n = 0;
  21. // Wait 100 ns for global reset to finish
  22. #100;
  23. rst_n = 1;
  24. // Add stimulus here
  25. #20000;
  26. // $stop;
  27. end
  28. always #10 sys_clk = ~ sys_clk; //5ns一个周期,产生50MHz时钟源
  29. endmodule

2、运行后PLL的lock信号会变高,说明PLL IP锁相环已经初始化完成。clk_out有时钟信号输出,输出的频率为输入时钟频率20Mhz的5/2, 为50Mhz。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/秋刀鱼在做梦/article/detail/876437
推荐阅读
相关标签
  

闽ICP备14008679号