FPGA学习笔记(三):PLL 锁相环

news2024/9/24 1:16:34

在 FPGA 芯片内部集成了 PLL(phase-locked loop,锁相环),可以倍频分频,产生其它时钟类型。PLL 是 FPGA 中的重要资源,因为一个复杂的 FPGA 系统需要不同频率、相位的时钟信号,一个 FPGA 芯片中 PLL 的数量是衡量 FPGA 芯片能力的重要指标。

Ultrascale+ 系列的 FPGA 使用了专用的全局(Global)和区域(Regional)IO和时钟资源来管理设计中各种时钟需求。Clock Management Tiles(CMT) 提供了时钟合成(Clock frequency synthesis)、倾斜校正(deskew)、过滤抖动(jitter filtering)功能。

每个 CMT 包含一个 MMCM(Mixed-mode clock manager,混合模式时钟管理器,根据一定的相位和频率产生不同的时钟信号) 和一个 PLL(可以从一个输入信号产生多个时钟信号,不能进行时钟倾斜校正,不具备高级相位调整、倍频器和分频器可调范围较小),CMT 的输入可以是 BUFR、IBUFG、BUFG、GT、BUFH、本地布线,输出需要接到 BUFG、BUFH 后再使用。

更多的时钟资源帮助文档:https://docs.xilinx.com/v/u/en-US/ug472_7Series_Clocking

使用 Xilinx 提供的 PLL IP 核产生不同频率的时钟。

在 Project Manager 界面下的 IP Catalog。

在这里插入图片描述

在这里插入图片描述
双击 Clocking Wizard

在这里插入图片描述
默认的时钟约束名称是 clk_wiz_0,在 Clocking Options 中,输入的时钟频率为 200MHz,并选择 Differential clock capable pin。

在这里插入图片描述
在 Output Clocks 界面里选择 clk_out1~clk_out4 四个时钟的输出,频率分别为 200MHz、100MHz、50MHz、25MHz,这里还可以设置时钟输出的相位,点击 OK 完成。
在这里插入图片描述
在弹出的对话框中点击 Generate 按钮生成 PLL IP 的设计文件。
在这里插入图片描述
选择 IP Sources 页,然后双击打开 clk_wiz_0.veo 文件 —— 提供了该 IP 的实例化模板。我们需要编写一个顶层设计文件来实例化这个 PLL IP,编写 pll_test.v 代码。

PLL的复位是高电平有效,复位一直为高电平,PLL 就不会工作。
在这里插入图片描述
创建 pll_test.v。

`timescale 1ns / 1ps
module pll_test(
input      sys_clk_p,            //system clock 200Mhz on board
input      sys_clk_n,            //system clock 200Mhz on board
input       rst_n,             //reset ,low active
output      clk_out           //pll clock output 

    );
    
wire        locked;
    
clk_wiz_0 clk_wiz_0_inst
       (
        // Clock out ports
        .clk_out1(),     // output clk_out1
        .clk_out2(),     // output clk_out2
        .clk_out3(),     // output clk_out3
        .clk_out4(clk_out),     // output clk_out4
        // Status and control signals
        .reset(~rst_n), // input reset
        .locked(locked),       // output locked
       // Clock in ports
        .clk_in1_p(sys_clk_p),    // input clk_in1_p
        .clk_in1_n(sys_clk_n));    // input clk_in1_n

endmodule

程序中先用实例化 clk_wiz_0, 把差分 200MHz 时钟信号输入到 clk_wiz_0 的 clk_in1_p 和 clk_in1_n,把 clk_out4 的输出付给 clk_out。例化的目的是在上一级模块中调用例化的模块完成代码功能,在 Verilog 里例化信号的格式如下:模块名必须和要例化的模块名一致,比如程序中的 clk_wiz_0,包括模块信号名也必须一致,比如 clk_in1,clk_out1,clk_out2 …。连接信号为 TOP 程序(保存后,pll_test 自动成为了 top 文件,clk_wiz_0 成为 pll_test 文件的子模块)跟模块之间传递的信号,模块与模块之间的连接信号不能相互冲突。

添加 xdc 管脚约束文件 pll.xdc:

##################Compress Bitstream############################
set_property BITSTREAM.GENERAL.COMPRESS TRUE [current_design]

set_property PACKAGE_PIN AE5 [get_ports sys_clk_p]
set_property IOSTANDARD DIFF_SSTL12 [get_ports sys_clk_p]

create_clock -period 5.000 -name sys_clk_p -waveform {0.000 2.500} [get_ports sys_clk_p]

set_property PACKAGE_PIN AF12 [get_ports rst_n]
set_property IOSTANDARD LVCMOS33 [get_ports rst_n]

set_property PACKAGE_PIN AG11 [get_ports clk_out]
set_property IOSTANDARD LVCMOS33 [get_ports clk_out]

编写仿真文件 vtf_pll_test.v:

`timescale 1ns / 1ps
//
// Module Name: vtf_pll_test
//

module vtf_pll_test;
// Inputs
reg sys_clk_p;
wire sys_clk_n;
reg rst_n;

// Outputs
wire clk_out;

// Instantiate the Unit Under Test (UUT)
pll_test uut (
	.sys_clk_p(sys_clk_p), 		
	.sys_clk_n(sys_clk_n), 		
	.rst_n(rst_n), 
	.clk_out(clk_out)
);

initial begin
	// Initialize Inputs
	sys_clk_p = 0;
	rst_n = 0;

	// Wait 100 ns for global reset to finish
	#100;
      rst_n = 1;      

 end

always #2.5 sys_clk_p = ~ sys_clk_p;   //5ns一个周期,产生200MHz时钟源

assign sys_clk_n = ~ sys_clk_p;
   
endmodule

在这里插入图片描述
编译工程,然后将 bit 文件下载到 FPGA 开发板上,使用示波器测量输出时钟的波形。

如果想输出其它频率的波形,可以修改时钟的输出为 clk_wiz_0 的 clk_out2 或 clk_out3 或 clk_out4,也可以修改 clk_wiz_0 为想要的频率。由于时钟的输出是通过 PLL 对输入时钟信号的倍频和分频系数得到的,所以并不是所有的时钟频率都可以用 PLL 能够精确产生,PLL 会自动计算实际输出接近的时钟频率。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/452594.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CAN总线网络中为什么需要安装终端电阻?

摘要: 为什么CAN总线网络中为什么需要安装终端电阻? ​在详解CAN总线:高速CAN总线和低速CAN总线的特性​文章中,高速CAN网络和低速CAN网络都需要安装终端电阻。 详解CAN总线:高速CAN总线和低速CAN总线的特性 高速CA…

HTB_Netmon CVE-2018-9276 RCE漏洞复现

文章目录 信息收集解题创建用户exppowershell脚本 信息收集 扫描结果还是很丰富的 nmap -sC -sV -p- -T4 ip ftp服务直接允许匿名登录了,直接连接,翻目录,在 Users/Public/里就看到了 user flag,get命令保存到本地查看&#xff0…

Vue3父组件向子组件传值之ArticleItem组件的封装与使用

组件概念 官方文档:组件基础 本节核心内容:组件的封装与传值 组件允许我们将 UI 划分为独立的、可重用的部分,并且可以对每个部分进行单独的思考。在实际应用中,组件常常被组织成层层嵌套的树状结构: 这和我们嵌套 HTML 元素的方式类似,Vue 实现了自己的组件模型,使我们…

易点易动固定资产管理平台如何帮助高校精准管理海量固定资产

高校拥有大量的固定资产,如教室、实验室、办公设备、体育设备等,这些资产数量庞大,分布广泛,管理难度大。传统的管理方式效率低下,难以实现精准和动态管理。易点易动固定资产管理平台利用现代信息技术,为高校提供一套智能化的资产管理解决方案,实现固定资产全流程的精准管理。 …

马云上三路和下三路

马云的上三路、下三路,马云最牛搭档总结 马云刚最牛搭档:蔡崇信,关明生 《关乎天下》是关明生写的一本书 趣讲大白话:没有方法走不远 【趣讲信息科技143期】 **************************** 马云上三路:使命&#xff0c…

为什么要选择付费SSL证书?免费和付费SSL证书的区别是什么?

近几年,由于互联网的发展与新冠疫情的影响,线上教育、线上办公、线上学习等逐渐融入我们的生活。但与此同时,信息数据泄露等网络安全问题也日益突出,为了保护企业与用户的隐私信息,越来越多的公司选择安装SSL证书来保护…

渲染02-内置Uniform

参考: CesiumJS 源码杂谈 - 从光到 Uniform 渲染02-内置Uniform 1 Unifrom 的接口 路径: pacaages/engin/Source/Renderer/AutomaticUniforms.js AutomaticUniforms 实际上是 Cesium 暴露给着色使用的接口集合。 AutomaticUniforms┖ AutomaticUniform(czm_projection/czm…

【Maven】Maven的打包方式和执行jar

Maven的打包方式和执行jar 1. Jar1.1 Pom.xml1.2 Run1.3 自动执行方法 2. Assembl1y2.1 Pom.xml2.2 Run2.3 要执行的方法 3. Awakening 1. Jar 1.1 Pom.xml <plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-co…

2024年浙大MBA提面申请细则及条件详解

中文MBA项目申请 浙江大学MBA招生分提前批和常规批两类。其中&#xff0c;提前批是针对工作年限较长、管理经验较丰富的考生&#xff0c;需要在正式报名参加MBA全国联考前向浙江大学MBA教育中心提出申请并在通过审核后参加相应的面试&#xff08;具体申请和面试安排请登录浙江…

【英语】100个句子记完5500个考研单词

文章目录 Sentence 01Sentence 02Sentence 03Sentence 04Sentence 05Sentence 06Sentence 07Sentence 08Sentence 09Sentence 10Sentence 11Sentence 12Sentence 13Sentence 14Sentence 15Sentence 16Sentence 17Sentence 18Sentence 19Sentence 20Sentence 21Sentence 22Sente…

力扣sql中等篇练习(十一)

力扣sql中等篇练习(十一) 1 好友申请|| :谁有最多的好友 1.1 题目内容 1.1.1 基本题目信息 1.1.2 示例输入输出 1.2 示例sql语句 # 出现数字次数越多,就代表它的好友越多 # 对两列数据合并时 不取出合并数据,采用UNION ALL SELECT t1.id,count(*) num FROM (SELECT request…

低功耗设计方法学——篇Ⅰ

引言 低功耗设计关乎ASIC芯片的性能稳定。对ASIC 特别是一些Soc芯片的设计有着重要的影响&#xff0c;随着集成规模的大幅度增加&#xff0c;芯片自身的功耗问题暴露也越来越明显。低功耗设计的需求和必要性也越来越值得关注。本文就《Low Power Methodology Manual For Syste…

【开发日志】2023.04 ZENO----Composite----CompNormalMap

NormalMap-Online (cpetry.github.io)https://cpetry.github.io/NormalMap-Online/ CompNormalMap 将灰度图像转换为法线贴图 将灰度图像转换为法线贴图是一种常见的技术&#xff0c;用于在实时图形渲染中增加表面细节。下面是一个简单的方法来将灰度图像转换为法线贴图&…

文件 与 IO操作

前言 本篇介绍文件的基本操作&#xff0c;认识文本文件与二进制文件的区别&#xff0c;什么是绝对路径与相对路径&#xff0c;java标志库中又是如何进行文件操作的&#xff1b;认识流对象进行简单的文件读取操作&#xff1b;如有错误&#xff0c;请在评论区指正&#xff0c;让…

全网最详细,Pytest自动化测试框架关联/参数化实战,及拿即用...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 Pytest自动化测试框…

从C出发 27 --- 深入理解指针与地址

指针是什么? 指针是变量&#xff0c;这种变量有一点特殊&#xff0c;它特殊在保存的值是内存地址&#xff0c;并且我们还可以通过指针所保存的内存地址来直接访问相应内存中的数据。 每一种指针类型的变量只保存对应类型变量的地址 比如这个类型的指针变量&#xff0c;只保…

计及源荷不确定性的综合能源生产单元运行调度与容量配置随机优化模型(matlab代码)

目录 1 主要内容 1.1 风光场景聚类 1.2 主模型程序结果 1.3 随机模型和确定性模型对比 1.4 有无储气对比 1.5 煤价灵敏性分析 1.6 甲烷价格灵敏性分析 2 部分程序 3 程序链接 1 主要内容 本程序复现《计及源荷不确定性的综合能源生产单元运行调度与容量配置两阶段随机…

Cloud Kernel SIG月度动态:发布 Anolis 8.8 镜像、kABI 社区共建流程

Cloud Kernel SIG&#xff08;Special Interest Group&#xff09;&#xff1a;支撑龙蜥内核版本的研发、发布和服务&#xff0c;提供生产可用的高性价比内核产品。 01 SIG 整体进展 Anolis 8.8 镜像发布&#xff0c;默认搭载 ANCK 5.10-013 版本。 Anolis 23 滚动内核更新至…

4月更新!EasyOps®全平台27项新功能一口气来袭~

又到了每月产品盘点时刻&#xff0c;27大新功能上线和升级优化&#xff0c;设计Hyperlnsight超融合持续观测平台、DevOps持续交付平台、AutoOps自动化运维平台、ITSM服务平台、公共服务&#xff0c;在不断的技术创新过程中&#xff0c;进一步加速IT运维效率升级。 下面和小编一…

Vue监视数据的学习笔记

Vue监测数据变化的更新 <div id"monitor"><h2>人员列表</h2><button click"updateMei">更新马冬梅信息</button><ul><li v-for"(p,index) of persons" :key"index">{{p.name}}--{{p.age}}…