锁相环(PLL)的IP核调取及应用详解

写在前面的话

梦翼师兄经常告诉大家FPGA最明显的优势就是它的速度。那么本节,梦翼师兄和大家一起来学习FPGA片内时钟管理单元PLL(锁相环)的应用。利用锁相环,我们可以在一个很宽广的范围内实现任意的分频和倍频。使用锁相环,可以有效的减少我们在时钟发生部分的代码量,同时更重要的,利用锁相环的“全局时钟树”,可以保证很好的时钟质量。

项目需求

我们使用锁相环生成两路时钟,一路为25MHz,另外一路为100MHz。通过这种方式我们可以学会利用锁相环实现分频和倍频的基本操作。

操作步骤

启动Quartus15.0在界面的右侧的IP Catalog的搜索中键入pll,然后双击【ALTPLL】

选择语言为Verilog,给IP起一个名字,这里把它叫做my_pll

点击【ok】以后,界面将会进入pll设置向导中,键入我们的输入时钟频率(晶振或者外部时钟),然后点击【NEXT

我们把【areset】【locked】打勾(areset:锁相环的高电平复位信号。locked:当锁相环的输出稳定之后,locked会变成高电平),然后点击【NEXT】

一直点击【NEXT】,直到出现如下界面

 

 

 选择【Enter output clock freqquency】键入我们想要输出的时钟频率,然后点击NEXT

选择使用第二个时钟,键入我们想要的时钟频率。

一直点击【NEXT】,直到出现如下界面,然后选择my_pll_inst.v(这个文件中是调用IP核的端口),点击【Finish

顶层架构设计

 

ip核的设置向导中,我们了解了锁相环的端口,绘制出如下的架构图:

 

端口描述

 

端口名

端口说明

clk

输入时钟

areset

高电平有效的复位

Clk_25M

25MHz的时钟输出

Clk_100M

100MHz的时钟输出

locked

时钟稳定信号

代码解释


调用锁相环模块的代码:

/****************************************************          

*   Engineer        :   梦翼师兄

*   QQ               :   761664056

*   The module function:  锁相环的应用

*****************************************************/

01  module pll (

02                  clk,         //输入时钟

03                  areset,     //复位信号

04                  clk_25M,   //25M的时钟输出

05                  clk_100M,  //100M的时钟输出

06                  locked      //时钟稳定信号

07              );

08  //系统输入

09  input clk;          //输入时钟

10  input areset;       //复位信号

11  //系统输出

12  output clk_25M; //25M的时钟输出

13  output clk_100M;    //100M的时钟输出

14  output locked;      //时钟稳定信号

15  // 调用IP

16      my_pll  my_pll_inst (

17          .areset ( areset ), //复位信号

18          .inclk0 ( clk ),        //系统时钟输入

19          .c0 ( clk_100M ),       //100M的时钟输出

20          .c1 ( clk_25M ),        //25M的时钟输出

21          .locked ( locked )  //时钟稳定信号

22      );

23

24  endmodule 

本模块中只是简单的调用了pllIP核,主要目的是让大家学会如何调用IP核。

 

仿真代码如下:

/****************************************************          

*   Engineer        :   梦翼师兄

*   QQ               :   761664056

*   The module function:  锁相环模块的测试

*****************************************************/

01  `timescale 1ns/1ps  //时间单位和精度定义

02

03  module pll_tb;

04

05  //系统输入

06  reg clk;            //输入时钟

07  reg areset;     //复位信号

08  //系统输出

09  wire clk_25M;   //25M的时钟输出

10  wire clk_100M;  //100M的时钟输出

11  wire locked;        //时钟稳定信号

12

13  initial begin

14  clk = 1;

15  areset = 0;

16  end

17

18  always # 10 clk = ~clk;     //50MHz时钟

19

20  pll pll(

21                  .clk(clk),          //输入时钟

22                  .areset(areset),        //复位信号

23                  .clk_25M(clk_25M),      //25M的时钟输出

24                  .clk_100M(clk_100M),    //100M的时钟输出

25                  .locked(locked)     //时钟稳定信号

26              );

27

28

29  endmodule 

仿真结果分析

当输出的时钟稳定之后,locked(时钟稳定信号)信号由低变高。输出的两路时钟中,一路为20MHz,一路为100MHz,与我们的设计要求一样,证明我们的操作和代码都是正确的。

 


 

 

转载于:https://www.cnblogs.com/mengyi1989/p/11517720.html

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PLL (Phase-Locked Loop) 是一种常用的电路设计技术,它可以生成高稳定性和可控频率的时钟信号。PLL 锁相环 IP 核是一个可编程的硬件模块,用于在集成电路中实现 PLL 功能。 使用 PLL 锁相环 IP 核的步骤如下: 1. 确定设计要求:首先,需要确定所需的时钟频率范围、精度要求、输入输出时钟信号的频率和相位关系等设计要求。 2. 找到合适的 IP 核:在选择 PLL 锁相环 IP 核时,需要考虑其提供的功能和性能是否满足设计要求。可以在 IP 核库中寻找并评估不同供应商提供的 IP 核。 3. IP 核配置:根据设计要求,配置 PLL 锁相环 IP 核的参数,如输入时钟频率、输出时钟频率、锁定时间、带宽等。这些参数可以通过配置寄存器或者使用专门的软件工具来实现。 4. 进行仿真和验证:使用电路设计工具对设计进行仿真和验证,确保 PLL 锁相环 IP 核按照预期工作,并满足设计要求。 5. 集成到设计中:将经过验证的 PLL 锁相环 IP 核集成到整个集成电路设计中,并与其他模块进行连接。 6. 布局和布线:根据设计规则和约束,进行布局和布线,确保信号传输的可靠性和稳定性。 7. 验证和试:对整个设计进行验证和试,确保 PLL 锁相环在实际应用中正常工作。 需要注意的是,不同供应商的 PLL 锁相环 IP 核可能有不同的配置方法和特性,具体的使用方法和步骤可能会有所差异。因此,在使用之前,建议参考供应商提供的文档和技术支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值