PLL(Phase Locked Loop): 为锁相回路或锁相环,用来统一整合时脉讯号,使内存能正确的存取资料。PLL用于振荡器中的反馈技术。 许多电子设备要正常工作,通常需要外部的输入信号与内部的振荡信号同步,利 用锁相环路就可以实现这个目的。

功能:VCO有一个初始的振荡频率,通过设置两个DIV的分频系数可以达到PLL分频或倍频的效果。

FPGA的PLL IP核配置步骤如下

在IP核中查找pll,选择

FINISH结束PLL的设置。

50HZ分频为25,75,100;

控制led程序;此段程序为顶层;

module PLL_LED(
Clk,
Rst_n,
LED
); input Clk;
input Rst_n;
output [:]LED; wire c0; //25M
wire c1; //75M
wire c2; //100M wire locked; pll pll(
.rst(~Rst_n),
.refclk(Clk),
.outclk_0(c0),
.outclk_1(c1),
.outclk_2(c2),
.locked(locked)
); counter
#(
.CNT_MAX('d24_999_999)
)
counter0(
.Clk(c0),
.Rst_n(Rst_n),
.led(LED[])
); counter
#(
.CNT_MAX('d24_999_999)
)
counter1(
.Clk(c1),
.Rst_n(Rst_n),
.led(LED[])
); counter
#(
.CNT_MAX('d24_999_999)
)
counter2(
.Clk(c2),
.Rst_n(Rst_n),
.led(LED[])
); counter
#(
.CNT_MAX('d24_999_999)
)
counter3(
.Clk(Clk),
.Rst_n(Rst_n),
.led(LED[])
); endmodule
计数器程序
module counter(
Clk,
Rst_n,
led
); input Clk; //系统时钟
input Rst_n; //全局复位,低电平复位 output reg led; //led输出 reg [:]cnt; //定义计数器寄存器 parameter CNT_MAX = 'd24_999_999; //计数器计数进程
always@(posedge Clk or negedge Rst_n)
if(Rst_n == 'b0)
cnt <= 'd0;
else if(cnt == CNT_MAX)
cnt <= 'd0;
else
cnt <= cnt + 'b1; //led输出控制进程
always@(posedge Clk or negedge Rst_n)
if(Rst_n == 'b0)
led <= 'b1;
else if(cnt == CNT_MAX)
led <= ~led;
else
led <= led; endmodule 编写正确的testbench
`timescale 1ns/1ps
`define clk_period module pll_tb; //source define
reg areset;
reg Clk; //probe define
wire c0;
wire c1;
wire c2;
wire locked; //instant user module pll pll(
.rst(areset),
.refclk(Clk),
.outclk_0(c0),
.outclk_1(c1),
.outclk_2(c2),
.locked(locked)
);
//generater clock
initial Clk = ;
always #(`clk_period/)Clk = ~Clk; initial begin
areset = 'b1;
#(`clk_period * + );
areset = 'b0;
#(`clk_period * + );
$stop;
end endmodule

图中可以看出PLL设置成功;

观察led程序

`timescale 1ns/1ps
`define clk_period module PLL_LED_tb; //source define reg Clk;
reg Rst_n; //probe define wire [:]LED; //instant user module
PLL_LED PLL_LED(
.Clk(Clk),
.Rst_n(Rst_n),
.LED(LED)
); defparam PLL_LED.counter0.CNT_MAX = ;
defparam PLL_LED.counter1.CNT_MAX = ;
defparam PLL_LED.counter2.CNT_MAX = ;
defparam PLL_LED.counter3.CNT_MAX = ; //generater clock
initial Clk = ;
always #(`clk_period/)Clk = ~Clk; initial begin
Rst_n = 'b0;
#(`clk_period * + );
Rst_n = 'b1;
#(`clk_period * );
$stop;
end endmodule

分配引脚

锁相环相关知识可参考博客:

具体讲解:

http://blog.sina.com.cn/s/blog_7656589b01016cfz.html

https://wenku.baidu.com/view/c404cfdbbceb19e8b9f6ba35.html

PLL的更多相关文章

  1. [Xilinx]Modelsim独立仿真Vivado生成的PLL核

    EDA Tools: 1.Vivado 2015.1(64-bit) 2.Modelsim SE-64 10.1c Time: 2016.05.26 ------------------------- ...

  2. [Altera]PLL仿真

    EDA Tools: 1.Quartus II 13.1(64-bit) 2.Modelsim SE-64 10.1c Time: 2016.05.05 ----------------------- ...

  3. PLL失锁

    2016-07-05 现象:在低温(-30度以下)下,射频锁定信号出现周(大约20ms)期性高低电平的变化,由于MCU检测一次需要的时间很长(大于500ms), 大概总是检测不到失锁状态,所以不会出现 ...

  4. pll及其modesim仿真

    100mhz输入时钟,pll层40mhz和200zhm 进入quartus,建立工程,新建图形文件,导入pll模块,设定pll相关参数.   完成pll模块的建立,并生成pll.v文件 建立modes ...

  5. Quartus 软件的使用之PLL的使用

    练习使用Altera FPGA 内的 PLL IP核: 思路:将clk_50M倍频到clk_100M,然后观察100M时钟. 1.生成PLL的核例化文件,然后调用. 点击NEXT之后,等一会会跳出如下 ...

  6. clock gating and PLL

    一个gating的clock是指:clock network除了包含inverter和buffer外,还有其他logic. PrimeTime会自动的对gating input进行setup和hold ...

  7. Form_通过Custom.pll新增菜单项(案例)

    2014-05-31 Created By BaoXinjian

  8. 58.xilinx原语DCM,PLL的使用

    DCM_BASE 基本数字时钟管理模块的缩写,是相伴和频率可配置的数字锁相环电路,常用于FPGA系统中复杂的时钟管理.如需要频率和相位动态配置,则可以选用DCM_ADV原语,如需要相位动态偏移,可使用 ...

  9. 52.ISE中的PLL时钟输入

    在manaul mode中选择PLL PLL的输入时钟可以是全局时钟,也可以是普通IO引脚. 1.PLL的输入时钟是全局时钟的情况. pll_xx pll_xx ( .clkin ( clkin ), ...

  10. xilinx FPGA普通IO作PLL时钟输入

    本帖转自于 :http://www.cnblogs.com/jamesnt/p/3535073.html 在xilinx ZC7020的片子上做的实验; [结论] 普通IO不能直接作PLL的时钟输入, ...

随机推荐

  1. 使用pip安装Python库超时解决办法

    如果在国内安装Python库,强烈推荐使用豆瓣的源http://pypi.douban.com/simple/ 可以这样使用 pip install -i http://pypi.douban.com ...

  2. 剑指offer-面试题11-旋转数组的最小数字-二分法

    /* 题目: 把一个数组最开始的若干个元素搬到数组末尾,我们称之为数组的旋转. 输入一个递增排序的数组的旋转,输出旋转数组中的最小元素. */ /* 思路: 采用二分的方法,旋转数组实质上是上左半部分 ...

  3. Codeforces Round #613 (Div. 2) (A-E)

    A略 直接求和最大的子序列即可(注意不能全部选中整个子序列) or #include<bits/stdc++.h> using namespace std; void solve(){ i ...

  4. gulp常用插件之gulp-rev-format使用

    更多gulp常用插件使用请访问:gulp常用插件汇总 gulp-rev-format这是一款提供静态资产的哈希格式选项(前缀,后缀,最后扩展名). 更多使用文档请点击访问gulp-rev-format ...

  5. gulp常用插件之gulp-rev-outdated使用

    更多gulp常用插件使用请访问:gulp常用插件汇总 gulp-rev-outdated这是一款旧的静态资产修订文件过滤器. 我们可以使用gulp rev来缓存一些资产.源文件的每次修改都会导致新的修 ...

  6. Win10如何设置休眠选项(关于睡眠、休眠、快速启动这几个伪关机功能如何设置更适合笔记本电脑?)

    · Win10如何设置休眠选项(关于睡眠.休眠.快速启动这几个伪关机功能如何设置更适合笔记本电脑?) 应用场景 升级正式版win10以后,发现竟然没有休眠选项,从电源管理器里面也没有找到,有时候有些重 ...

  7. 专访|高思教育创始人须佶成(上)【UncleW】

    大家好,我是校长运营圈专栏作者UncleW. 2017年9月,高思教育发布董事会公告,宣布完成5.5亿元人民币融资.成立于2009年的高思教育到今天刚刚8岁,员工人数已突破2000人,2017年共有5 ...

  8. Wannafly Winter Camp 2020 Day 5I Practice for KD Tree - 二维线段树

    给定一个 \(n \times n\) 矩阵,先进行 \(m_1 \leq 5e4\) 次区间加,再进行 \(m_2 \leq 5e5\) 次询问,每次询问要求输出矩形区间内的最大数.\(n \leq ...

  9. 题解 AT4164 【[ABC102A] Multiple of 2 and N】

    首先我们先来回忆一下小学一年级就学过的知识:任何一个偶数都是 \(2\) 的倍数,那么我们就可以分成两种情况考虑:奇数和偶数. 对于偶数,我们可以直接将其输出,因为它必定能被 \(2\) 与它自己整除 ...

  10. koa文档笔记

    请求 get ctx.request.query // 查询对象 ctx.request.querystring // 查询字符串 ctx.query // 查询对象 ctx.querystring ...