赞
踩
IP核(知识产权核),是在集成电路的可重用设计方法学中,指某一方提供的、形式为逻辑单元、芯片设计的可重用模组。 IP核通常已经通过了设计验证,设计人员以IP核为基础进行设计,可以缩短设计所需的周期,加速开发进程,降低开发资本。
锁相环 (phase locked loop)是一种利用相位同步产生的电压,去调谐压控振荡器以产生目标频率的负反馈控制系统。根据自动控制原理,这是一种典型的反馈控制电路,利用外部输入的参考信号控制环路内部振荡信号的频率和相位,实现输出信号频率对输入信号频率的自动跟踪,一般用于闭环跟踪电路。
以上是百度百科对PLL的说明。
在FPGA中,PLL属于全局时钟网络资源,PLL可以替我们生成稳定优质的不同频率、不同相位的时钟。同时,PLL作为全局时钟资源可以使时钟信号到达各个触发器的时间相近(我们自己编写分频器产生的时钟质量很差,而且到达各级触发器的时间也不相同,全局时钟网络采用了特殊的线材,因此可以做到时延很低)。
由于博主是物联网出身,电路方面的基础实在是很差,所以结构图就不跟大家细分析了,但需要注意的一点是,PLL是一种反馈电路,通过压控振荡器后,信号会通过分频器与鉴相器中我们设置的时钟信号作对比,二者相同后才会产生输出,因此PLL并不会立即输出我们想要的时钟信号,而是会有一段的延时。
博主所用开发板器件库为Cyclone Ⅳ,芯片型号为EP4CE6F17C8,该开发板的PLL资源如下图:
(点击Quartus菜单栏的TOOLS选项,选中Chip Planner即可调出开发板资源图)
可以看出,该开发板一共有两个PLL资源。同时该开发板的PLL资源为2输入5输出,即可同时输入两路时钟信号,输出五路时钟信号。
打开Quartus,找到IP Catalog选项卡,输入PLL,选择ATLPLL(Altera PLL),如果没有IP Catalog选项卡,可以点击菜单栏中的View,在Utility Windows勾选上IP Catalog或使用快捷键ALT+F7.
创建IP核时一般新建IP核文件夹,并在其中创建一个所用IP核名称的文件夹(一个项目可能调用多个IP),而后保存文件,如下图所示:
博主的FPGA项目文件结构一般如下:
文件保存成功后进入PLL设置选项卡
点击next后按下图选择
点击next按下图进行选择
点击next来到如下界面:
继续点击next
继续next
大家按照自己需求设置即可
继续next
接着next
紧接着我们便可以用编译器打开quartus为我们生成的这些文件
新建test_ip.v文件和tb文件输入如下代码:
module test_ip( input clk , input rst_n , output c0 , output c1 , output c2 , output c3 , output locked ); pll pll_inst ( .areset ( ~rst_n ), .inclk0 ( clk ), .c0 ( c0 ), .c1 ( c1 ), .c2 ( c2 ), .c3 ( c3 ), .locked ( locked ) ); endmodule
`timescale 1ns/1ns module test_tb(); reg tb_clk ; reg tb_rst_n ; wire tb_c0 ; wire tb_c1 ; wire tb_c2 ; wire tb_c3 ; wire tb_locked ; parameter CYCLE = 20; //模块例化 ip_test( .clk (tb_clk ), .rst_n (tb_rst_n ), .c0 (tb_c0 ), .c1 (tb_c1 ), .c2 (tb_c2 ), .c3 (tb_c3 ), .locked (tb_locked ) ); initial begin tb_clk = 1'b1; tb_rst_n = 1'b1; #(CYCLE*2); tb_rst_n = 1'b0; #(CYCLE*10); tb_rst_n = 1'b1; #(100*CYCLE); $stop; end always #(CYCLE/2) tb_clk = ~tb_clk;
进入quartus 编译并进行仿真,仿真结果如下:
(后面为博主RAM IP核的学习,大家不用管,只看前面的时钟信号即可)
可以看出PLL为我们输出了稳定的时钟信号
PLL IP核的调用只是一个步骤的练习,相信大家跟着博主走一遍也就会进行调用了,但是其中的许多细节,博主自己也并未学习到,比如:模式选择,重配置等等,大家可以通过官方文档进行更细致的学习。
本篇博客到此结束,如有错误还请各位指正,谢谢!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。