分享

【FPGA】Vivado软件 PLL IP核使用教程

 雪山白凤凰_ 2023-07-19 发布于广东

一、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的复位。

`timescale 1ns/1ps
module pll_test(
    input   clk   ,//20m系统时钟
    input   rst_n ,

    output  clk_out//pll clk output
);

//参数定义
wire    locked;

//ip核例化
 clk_wiz_0 instance_name
   (
    // Clock out ports
    .clk_out1 (clk_out ),       // output clk_out1
    // Status and control signals
    .reset    (~rst_n  ),       // input reset
    .locked   (locked  ),       // output locked
    // Clock in ports
    .clk_in1  (clk     )
    ); 
endmodule

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

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

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

`timescale 1ns / 1ps
//
// Module Name: _led_test_tb
//

module pll_test_tb;
	// Inputs
	reg sys_clk;
	reg rst_n;

	// Outputs
    wire clk_out;

	// Instantiate the Unit Under Test (UUT)
	pll_test u_pll_test (
	.clk(sys_clk),            //system clock 20Mhz on board
    .rst_n(rst_n),             //reset ,low active

    .clk_out(clk_out),           //pll clock output 50Mhz

	);

	initial begin
		// Initialize Inputs
		sys_clk = 0;
		rst_n = 0;

		// Wait 100 ns for global reset to finish
		#100;
          rst_n = 1;        
		// Add stimulus here
		#20000;
      //  $stop;
	 end
   
    always #10 sys_clk = ~ sys_clk;   //5ns一个周期,产生50MHz时钟源
   
endmodule

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

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多