IP核调用--PLL

yummy 阅读:359 2022-04-19 14:39:59 评论:0

IP核是什么

IP(Intellectual Property)知识产权,在半导体产业将IP核定义为“用于ASIC或FPGA中预先设计好的电路功能模块”。简言之,IP核即电路功能模块。

在数字电路中,将常用的且比较复杂的功能模块设计成参数可修改的模块,让其他用户可以直接调用这些模块。

IP核的存在形式

分类依据:产品交付方式

HDL语言形式--软核

硬件描述语言:可进行参数调整、复用性强;布局、布线灵活;设计周期短、设计投入少。

网表形式--固核

完成了综合功能块,可预布线特定信号或分配特定的布线资源

版图形式--硬核

硬核是完成提供设计的最终阶段产品--掩膜(Mask);缺乏灵活性、可移植性差;更易于实现IP核的保护。

IP核的缺点

IP核往往不能跨平台使用

IP核不透明,看不到内部核心代码

定制IP需额外收费

PLL IP核简介

PLL(Phase Locked Loop)锁相环,是最常用的IP核之一,其性能强大,可以对输入到FPGA的时钟信号进行任意分频、倍频、相位调整、占空比调整,从而输出一个期望时钟。

PLL的基本工作原理

image.png

FD/PD 鉴频鉴相器         LF 环路滤波器       VCO压控振荡器--输入电压越高,输出频率越高

PLL的倍频

image.png

DIV 分频器 

PLL的分频

image.png

PLL  IP核配置

建立文件体系

image.png

image.png

建立实验工程

使用Quartus Prime Standar Edition 软件

在IP Catalog 搜索框内输入pll,选择ALTPLL

image.png

点击.. 在pll工程文件夹内建立pll_ip.v文件,选择OK

image.png

会弹出参数配置界面

image.png

参数设置

image.png

点击next

image.png

点击next直到PLL输出时钟设置界面,clk0实现2倍频

image.png

点击next设置clk1,clk实现2分频

image.png

点击next 设置clk2,相移90度

image.png

点击next设置clk3,占空比为20%

image.png

点击next 到summary界面,输出实例化文件,点击fish。

image.png

点击yes

image.png

打开文件夹,已经生成了一些文件

image.png

回到工程中,编写代码

// Filename﹕ pll.v
// Author﹕YMY
// Description﹕PLL ip核调用
// Calledby﹕/
// RevisionHistory﹕22-04-19
// Revision1.0
// Email﹕
// Company﹕  
// Copyright(c) YMY, All right reserved
module   pll(

    input   wire   sys_clk    , //系统时钟50MHZ
    output  wire   clk_mul_2  , //2倍频
    output  wire   clk_div_2  , //2分频
    output  wire   clk_pha_90 , //相位偏移90度
    output  wire   clk_duc_20 , //占空比为20%
    output  wire   locked       //锁定信号    
);

pll_ip  pll_ip_inst (
    .inclk0 ( sys_clk    ),
    .c0     ( clk_mul_2  ),
    .c1     ( clk_div_2  ),
    .c2     ( clk_pha_90 ),
    .c3     ( clk_duc_20 ),
    .locked ( locked     )
    );

endmodule

仿真代码

// Filename﹕ tb_pll.v
// Author﹕YMY
// Description﹕PLL ip核调用测试
// Calledby﹕/
// RevisionHistory﹕22-04-19
// Revision1.0
// Email﹕
// Company﹕  
// Copyright(c) YMY, All right reserved
`timescale 1ns/1ns
module  tb_pll();
reg    sys_clk    ;

wire   clk_mul_2  ;
wire   clk_div_2  ;
wire   clk_pha_90 ;
wire   clk_duc_20 ;
wire   locked     ;

initial   sys_clk = 1'b1 ;
always #10 sys_clk =~sys_clk ;

pll      pll_inst
(

    . sys_clk             (sys_clk    ), //系统时钟50MHZ
    . clk_mul_2           (clk_mul_2  ), //2倍频
    . clk_div_2           (clk_div_2  ), //2分频
    . clk_pha_90          (clk_pha_90 ), //相位偏移90度
    . clk_duc_20          (clk_duc_20 ), //占空比为20%
    . locked              (locked     )  //锁定信号    
);
endmodule

仿真波形

image.png


本文 zblog模板 原创,转载保留链接!网址:https://xn--zqqs03dbu6a.cn/?id=35

可以去百度分享获取分享代码输入这里。
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。