IP核锁相环调用及验证

前言

        在 FPGA(现场可编程门阵列)中,IP(Intellectual Property,知识产权)指的是预设计的模块或组件,这些模块可以直接集成到 FPGA 设计中,以加速开发过程并提高设计的可靠性。这些 IP 核通常由 FPGA 制造商或第三方提供,涵盖了各种功能,比如:通信接口:如 Ethernet、USB、PCIe。处理器核心:如 ARM 处理器、RISC 处理器。存储器控制器:如 DDR、SRAM 控制器。加密和解密模块:如 AES、SHA。图像处理:如图像处理单元、视频编码/解码器。使用 IP 核可以让设计工程师避免从零开始设计复杂的系统组件,节省时间并减少设计错误。FPGA 制造商通常会提供一个 IP 核库,通过图形化的工具可以将这些 IP 核集成到设计中,快速构建功能丰富的系统。

        本文介绍IP 核中的锁相环(Phase-Locked Loop,简称 PLL),锁相环是一种用于生成、稳定和调节时钟信号的电路。锁相环常用于 FPGA 设计中,以实现以下功能:时钟倍频:通过 PLL,可以从一个输入时钟信号生成更高频率的时钟信号。比如,输入时钟频率为 100 MHz,PLL 可以生成 200 MHz 或更高频率的时钟。时钟分频:PLL 也可以将输入时钟信号的频率降低。例如,输入时钟频率为 100 MHz,PLL 可以生成 50 MHz 或更低频率的时钟。时钟相位对齐:PLL 可以调整输出时钟的相位,使其与输入时钟同步,这在时钟域交互或需要时钟对齐的应用中非常重要。抑制时钟抖动:PLL 有助于减少时钟信号的抖动,提供更稳定的时钟源,从而提高系统的性能和可靠性。

正文

一、 IP核锁相环调用及验证

        1.项目需求

        在调用时弹出的设置界面里,IP核锁相环输入的端口信息包含inclk0,areset,其中inclk0默认频率为100MHZ,复位信号areset高电平复位;输出端口信息包含:c0,locked,c0表示默认产生一个目标时钟信号,其频率需要在后面的设置,locked表示在其为高电平时,锁相环产生的目标信号c0才能够稳定输出。

       调用一次锁相环能够产生五个目标信号,分别为:c0到c4;所产生的目标信号频率范围是多少,能够产生的目标时钟频率最大为:1.3GHZ,最小目标时钟频率为:1.2KHZ;

        2.技术介绍

        调用ip核,在工具栏找到tools 点击其目录下megawizard plug-ln manager (创建ip核向导)

勾选create a new custom ...

点击next ,跳出一个新页面

上图左边installed plug ins目录下是该版本软件支持的ip核目录,本项目选择在IO目录下的ALTPLL,后选择使用的语言,这里勾选verilog HDL ,路径放在prj文件夹下,(也可以在prj中新建ip文件夹),命名IP名字,这里用my_pll.

点击next,进入ip核配置界面,首先更改输入时钟频率,这里使用50Mhz

左上角模块显示配置,输入时钟50Mhz,c0/clk0=1,输出占空比50%,locked确保输出时钟信号有效,为1时输出时钟可用,0时不可用。点击inputs,该界面显示输入信号的一些控制,

输入时钟信号的复位端,输出时钟信号的锁定端都可通过该串口添加。点击next,

这里可以对输出时钟信号的带宽进行设置,保持默认,点击next

该界面是一时钟切换配置界面,从这里可以设置多时钟输入的锁相环,保持默认,next

到ip重构设置,进行一些ip核的数据初始化配置,我们这里用到的锁相环不需要重构,点击next

到锁相环输出设置,这里最多可以配置5个时钟(在器件资源足够的情况下),单独选择一个clk,勾选其下use this clock,即可使用该端口,,在requested settinqs中填写目标时钟,这里使用c0,c1,c2,分别产生5Mhz,100Mhz,150Mhz时钟(倍频)

这里可以配置其初始相位和占空比,配置完成后点击next,EDA 配置,网表文件生成

点击next,勾选生成my_pll_inst.v

移除工程不需要的文件

        3.顶层架构

调用ip核产生3个不同的时钟。

        4.端口描述

clk系统时钟
rst_n复位按键
clk0输出时钟
clk1输出时钟
clk2输出时钟

二、代码验证

pll_test:调用生成的ip核

module pll_test(

	input clk,
	input rst_n,
	
	output clk0,//70
	output clk1,//90
	output clk2//20
);

wire locked;

my_pll	my_pll_inst (
	.areset ( ~rst_n ),
	.inclk0 ( clk ),
	.c0 ( clk0 ),
	.c1 ( clk1 ),
	.c2 ( clk2 ),
	.locked ( locked )
	);

endmodule 

仿真文件:

`timescale 1ns/1ps
module pll_test_tb;

	reg clk;
	reg rst_n;
	
	wire clk0;
	wire clk1;
	wire clk2;

pll_test pll_test_inst(

			.clk(clk),
			.rst_n(rst_n),
			
			.clk0(clk0),//70
			.clk1(clk1),//90
			.clk2(clk2)//20
);

initial clk = 1;
always #10 clk = ~clk;

initial begin
	rst_n = 0;
	#200
	rst_n = 1;
	#1000
	$stop;
end 

endmodule 

三、仿真验证

观察输出波形

系统时钟一个周期20000ps,

clk0一个周期200000ps,是基础时钟的10倍,占空比50%

clk1一个周期10000ps,是基础时钟的1/2倍,占空比20%

clk2一个周期6667ps,是基础时钟的2/3倍,占空比75%

参考资料

ip核

Quartus II

  • 12
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张明阳.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值