FPGA基础 --【Altera】IP核(1)---PLL锁相环

本节文章主打Intel FPGA 开发工具Quartus中PLL IP核的调用方法

系列文章目录

【Altera】IP核(1)—PLL锁相环
【Altera】IP核(2)—RAM随机存取存储器
【Altera】IP核(3)—FIFO先进先出存储器



前言

IP核

“IP”是指“知识产权(Intellectual Property)”,在现代社会中,所有企业以及个人都看重知识产权的保护。
“IP核”是指在一些数字电路中使用的比较复杂的功能块,这些功能块可以运用在日常开发中,从而减少设计的工作量,大大缩短开发周期。

IP核分类

IP核有三种不同的存在形式:HDL语言、网表文件、版图形式。分别对应日常所说的:软核、固核、硬核。

软核

软核是指用HDL语言描述的功能块,通常以硬件描述语言的形式出现。主要的优点是设计周期短,设计投入少,且部分功能可以由用户自行修改,灵活度高,但安全度也是最低的。

硬核

硬核可以提供设计阶段的最后产品—掩膜。以经过完全布局布线的网表文件形式提供。硬核的灵活性不如软核和固核,但由于无法提供RTL文件,安全性非常可靠。

固核

固核是软核和硬核的折中。指带有平面规划信息的网表,在设计中看作带有布局规划的软核,将RTL 描述结合具体标准单元库进行综合优化设计,形成门级网表,再通过布局布线工具即可使用。和软核相比固核缺少灵活性,但安全性高。目前·也是市场上主流的IP核形式。

一、PLL是什么

PLL(Phase Locked Loop),锁相环,是一种反馈控制电路。主要功能是时钟倍频、分频、相位偏移和编程占空比
PLL
在FPGA中,PLL属于全局时钟网络资源,PLL可以替我们生成稳定的、优质的、不同频率相位的时钟。如果我们自己用代码编写的分频器产生的时钟质量很差,不稳定,而PLL生成的时钟可以非常完美的运用在多时钟的设计中。

二、使用方法

本节文章以Quartus为例,展示调用PLL的方法。

1.调取IP

接下来用图片和文字来描述流程:

(1)创建工程

创建一个PLL文件,并且在prj中创建一个quartus的工程。(芯片类型自己选,我用的EP4CE6F17C8,芯片无所谓,本工程没用到开发板。)
文件夹设置

(2)调用IP

创建好quartus工程后,在IP Catalog 中输入“PLL”搜索IP核。双击“ALTPLL”。
调用PLL

这是将此IP核放在哪个文件夹里。点击“…”手动设置。
修改路径

将IP设置在文档里的ip文件夹里并且将文件改名。
放入文件夹
改名

改名完成后点击OK进入配置IP核界面
配置IP核

(3)配置IP核

如下图,是配置PLL的初始界面,分别解释一下这些框:
1、速度等级,由芯片型号决定,不用更改。
2、输入时钟频率,此处修改为50MHz,与开发板匹配。
3、PLL的类型,默认不用修改。
4、PLL的四种输出模式,选择普通模式(In normal mode)即可。
5、补偿输出时钟,不用改。
6、这些改动完后就点击“NEXT”继续配置。
初始界面

如下图:
1、输入信号,选择创建异步复位信号“areset”来对PLL IP核复位。
2、输出信号,锁定信号locked,当输出时钟达到想要的时钟频率时,locked才为高。
3、默认不勾选。
点击“NEXT”。
复位

本页面主要是扩展频谱时钟和带宽等参数,不用修改。点击NEXT后下一页依然不用配置,再次点击NEXT。
在这里插入图片描述

直接进入时钟clk c0配置界面
1、2方框指哪个“Use This Clock”点亮就是生成哪个时钟。
3、主要配置clk c0 的频率,可以直接修改,也可以通过修改分频(division)、倍频(multiplication)的系数来改变频率。(如果在倍频将1变成2,时钟频率就变成了100MHz。分频将1变成2,时钟频率就变成了25MHz)
4、Clock Phase Shift 是配置相位偏移。
5、配置占空比。
时钟配置
clk c0 配置完成,其他就不再演示。直接按照下边的要求来配置:
clk c0 频率 25MHz,其他不改;
clk c1 频率50MHz,时钟相位偏移90;
clk c2 频率100MHz,其他不改;
clk c3 频率50MHz ,时钟占空比改为75%,其他不改;
clk c4 不用。

配置完成后将inst选项勾选上,最后点击“Finish”。
完成配置

点击Yes,彻底完成配置。
在这里插入图片描述
完成配置后就该编写代码了,通过仿真看一下IP核调用的如何。

2.代码

inst将inst文件例化进代码中,注意复位信号要取反。代码如下:

/*
 * @Proj: PLL_test
 * @Module: test
 * @Author: Yang.
 * @Date: 2023-12-11 15:26:12
 * @LastEditors: Yang.
 * @LastEditTime: 2023-12-11 15:30:09
 */
//---------<模块及端口声名>-------------------------------------------------
module test( 
    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

将代码文件加入quartus工程中,并且设置为顶层top并且进行编译。

3.仿真

下面是仿真代码:

`timescale 1ns/1ns

module tb_pll();

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 ;

test test_inst( 
    /*input      */.clk    (tb_clk    ) ,
    /*input      */.rst_n  (tb_rst_n  ) ,
    /*output     */.c0     (tb_c0     ) ,
    /*output     */.c1     (tb_c1     ) ,
    /*output     */.c2     (tb_c2     ) ,
    /*output     */.c3     (tb_c3     ) ,
    /*output     */.locked (tb_locked )  
);

always #(CYCLE/2) tb_clk = ~tb_clk ;

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 ;
    #1000;
    $stop;
end


endmodule

都准备完以后将仿真代码加入工程进行仿真。然后观察波形。


总结

整体仿真图
在这里插入图片描述
解释一下,clk(绿色) 就是FPGA本身的时钟,频率是50MHz

c0 (蓝色)刚才配置的是25MHz,所以时钟周期是40ns。
c0和clk

c1(紫色)刚才设置的是频率不变,相位偏移90。如图所示。
c1和clk

c2(红色)设置的频率是100MHz,时钟周期是10ns。
c2和clk

c3(我也不知道啥色-_- ')刚才设置的是占空比75%,看图能看出c3由高电平变成低电平的时间比clk滞后。高电平/时钟周期=75%。
在这里插入图片描述

这就是Quartus PLL IP核的调用流程,整体也不难。记住怎么调用的就行。接下来就是其他的IP核的调用方法以及Vivado的IP核的调用方法。点赞收藏加关注,有问题网站发私信,就是网站回复可能不及时,或者加qq:35二4291零六5 qq回复及时。

具体工程百度网盘:

链接:https://pan.baidu.com/s/1lQqqWZXfb3i6XHwkKf52zg
提取码:yang

压缩包和具体工程都有,资源里就是一些万能代码。
加油学习吧家人们。

  • 12
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值