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. Selenium-浏览器兼容性测试自动化

    Selenium 使浏览器兼容性测试自动化成为可能,但是在不同的浏览器上依然有细微的差别 测试浏览器的兼容性--测试你的应用程序看是否能够很好得工作在不同浏览器和操作系统之上. 测试系统功能--创建回 ...

  2. 剑指offer-面试题18-删除链表的节点-链表

    /* 题目:给定单向链表的头指针和一个节点指针,定义一个函数在O(1)时间内删除该节点. */ /* 思路: 将要删除的节点的下一个节点的value和next复制过来,删除下一个节点. 考虑两种特殊情 ...

  3. KiKi's K-Number HDU - 2852 树状数组+二分

    #include<iostream> #include<cstring> using namespace std; ; int tr[N]; int lowbit(int x) ...

  4. Edit页面返回ViewBag json字符串与前端js交互

    很多时候,在打开一个新页面的时候,后端需要同时传一个json字符串给前端页面,但是我们又不能把action的返回值改为string,这时候我们就需要用到ViewBag将json字符串传回到前端,前端j ...

  5. PHPStorm使用XDebug调试

    (一)php安装xdebug扩展,PHPStorm+XDebug单步调试 (二)PHPStorm配置XDebug (三)PHPStorm使用XDebug调试 (四)PhpStorm+Xdebug配置单 ...

  6. git flow开发分支管理模型

    Git Flow 是什么 Git Flow是构建在Git之上的一个组织软件开发活动的模型,是在Git之上构建的一项软件开发最佳实践.Git Flow是一套使用Git进行源代码管理时的一套行为规范和简化 ...

  7. 堆之*bin理解

    在程序运行中,使用bins结构对释放的堆块进行管理,以减少向系统申请内存的开销,提高效率. chunk数据结构 从内存申请的所有堆块,都使用相同的数据结构——malloc_chunk,但在inuse和 ...

  8. 字符串hash补充(模数情况下)

    字符串模板,在模数意义下的,比较好用 #include<stdio.h> typedef long long LL; /*[字符串哈希算法] 字符串哈希算法的提出,涉及到如何快速地求两个字 ...

  9. JS将一个数组切分为多个数组

    function group(array, subGroupLength) { let index = 0; let newArray = []; while(index < array.len ...

  10. IDEA全局搜索

    搜索文件名:连续按两下Shift键 搜索字符串:Ctrl + Shift +F