Xilinx 7系列中clock IP核通过AXI4-Lite接口实现动态重新配置

当选择了动态重配置(Dynamic Reconfiguration)选项时,AXI4-Lite接口将默认被选中用于重新配置时钟组件。动态重新配置可以通过AXI4-Lite接口实现了Clocking Wizard IP核的时钟组件MMCM/PLL的动态重新配置。

如果需要直接访问MMCM/PLL的DRP寄存器,可以选择使用DRP接口。DRP接口提供了一种更为直接的方式来访问和控制MMCM/PLL等原语的内部寄存器。通过DRP接口,可以精确地控制原语的每个参数,以实现更高级别的配置和优化。然而,使用DRP接口可能需要更多的编程和调试工作,因为它涉及到对底层硬件的直接操作。

在选择使用AXI4-Lite接口还是DRP接口时,需要根据具体的应用需求进行权衡。如果需要快速、灵活地调整时钟组件的参数,并且不希望涉及过多的底层编程工作,那么AXI4-Lite接口可能是一个更好的选择。而如果需要更精确地控制组件的每一个参数,或者需要进行更复杂的配置和优化,那么DRP接口可能更适合。

当启用Dynamic Reconfig并且所选接口为AXI4-Lite时,此接口将被激活。但是,当启用扩频(Spread Spectrum)时,此功能不受支持。当使用AXI4-Lite接口时,该IP 核将提供混合语言的RTL(寄存器传输级)代码。
在这里插入图片描述
在实际应用中,通过AXI4-Lite接口进行动态配置可以使得时钟设置更加灵活和适应不同需求。例如,在需要频繁更改时钟配置的场景中,可以通过AXI4-Lite接口在运行时重新配置MMCM/PLL,而无需重启系统或重新加载配置。这对于需要快速响应变化的系统或需要动态调整性能的场景非常有用。

此外,AXI4-Lite接口的配置通常涉及到写地址总线、写数据总线以及相应的控制信号。通过这些接口,用户可以将新的配置数据写入到MMCM/PLL的控制寄存器中,从而实现动态配置。在配置过程中,还需要注意时钟的稳定性以及配置的正确性,以避免对系统造成不良影响。

1 重新配置相位和占空比

如果Phase Duty Cycle Config未启用,clocking wizard将仅调用与频率相关的函数。为了动态更改相位和占空比,必须启用此选项。然后,clocking wizard会调用与相位和占空比相关的函数,但这会消耗资源。如果资源无法使用,可以在IP生成期间使用clocking wizard调用这些功能,并编写一个包含直接DRP数据的不同地址集。在此过程中,clocking wizard不会进行任何计算,而是指导用户将所需的值写入寄存器。要启用此功能,必须选择“Write DRP registers”。

在实际应用中,动态调整相位和占空比对于优化信号质量、降低功耗或实现更复杂的时序控制至关重要。通过启用Phase Duty Cycle Config,并结合使用clocking wizard生成的代码和DRP数据,可以实现对FPGA时钟信号的精确控制。

2 动态重新配置的步骤

要进行动态重新配置,请按照以下步骤操作:

①写入所有时钟配置寄存器,然后检查状态寄存器。

②在向C_BASEADDR + 0x200寄存器写入之前,确保这些值能够产生MMCM/PLL的有效VCO频率范围。VCO频率通过以下公式计算得出:

VCO频率 = (输入时钟频率) * (CLKFBOUT_MULT) / DIVCLK_DIVIDE

③如果状态寄存器值为0x1,则通过向时钟配置寄存器23写入0x3来启动重新配置。
注意!只有在时钟FBOUT MULT的值不是整数时,才应启用时钟配置寄存器0中的小数使能位。同样,只有在CLKOUT0_DIVISE的值不是整数时,才应启用时钟配置寄存器2中的小数使能位。

遵循这些步骤,就可以安全有效地对FPGA中的MMCM或PLL进行动态重新配置。在重新配置过程中,确保仔细检查和验证所有输入值,以避免超出设备的规格或造成不稳定情况。

3 Write DRP registers

此功能的主要优势在于避免在clock IP核中使用DSP。该选项可以在动态重新配置模式下选择,并且仅对AXI4-Lite接口有效。此功能允许通过AXI直接写入基本寄存器。当选择此功能时,IDE中将启用一个选项卡,其中列出了寄存器地址和需要写入的值。
在这里插入图片描述
要执行此功能,请按照以下步骤操作:

①生成Clocking Wizard IP。启用动态重新配置选项,并选择“Write DRP registers”功能。

②使用相同的输入时钟和所需的功能打开另一个Clocking Wizard。

③根据动态重新配置的需要,在Vivado IDE的“输出时钟”选项卡中更改输出时钟功能。

④写入DRP寄存器选项卡中的表格会根据所需的时钟进行更新。使用这些寄存器集值来动态重新配置初始的Clocking Wizard。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++ 头文件/宏冲突问题解决?如何解决?

🏆本文收录于「Bug调优」专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&…

SpringBoot + kotlin 协程小记

前言: Kotlin 协程是基于 Coroutine 实现的,其设计目的是简化异步编程。协程提供了一种方式,可以在一个线程上写起来像是在多个线程中执行。 协程的基本概念: 协程是轻量级的,不会创建新的线程。 协程会挂起当前的协…

【软件】ERETCAD-Env:在轨空间环境3D动态仿真软件

文章介绍了Extreme-environment Radiation Effect Technology Computer-Aided Design – Environment (ERETCAD-Env)软件,文章的介绍和展示了ERETCAD-Env软件的功能和特点,这是一款用于动态模拟在轨卫星所处空间环境的计算机辅助设计软件。强调了该软件在…

如何在CentOS本地搭建DataEase数据分析服务并实现远程查看数据分析

文章目录 前言1. 安装DataEase2. 本地访问测试3. 安装 cpolar内网穿透软件4. 配置DataEase公网访问地址5. 公网远程访问Data Ease6. 固定Data Ease公网地址 前言 DataEase 是开源的数据可视化分析工具,帮助用户快速分析数据并洞察业务趋势,从而实现业务…

pycharm远程连接server

1.工具–部署–配置 2.部署完成后,将现有的项目的解释器设置为ssh 解释器。实现在远端开发 解释器可以使用/usr/bin/python3

怎么排查K8S容器当中的Java程序内存泄露问题

今天早上发现生产线其中的一个服务在凌晨的时候突然重启了,内存突然从1G升到1.8G,CPU使用量从0.1升到了0.28,说明在这个时间点,内存突增达到了限额以上,服务重启了。因为这个服务布署了多节点,这次重启对业…

12 c++版本的坦克大战

前言 呵呵 这大概是 大学里面的 c 贪吃蛇了吧 有一些 面向对象的理解, 但是不多 这里 具体的实现 就不赘述, 仅仅是 发一下代码 以及 具体的使用 坦克大战 #include<iostream> #include<windows.h> #include<conio.h> #include<ctime> #include…

jvm(JVM快速入门、stack栈、堆、GC垃圾回收、Arthas)

文章目录 1. JVM快速入门1.1. 结构图1.2. 类加载器ClassLoader1.3. 执行引擎Execution Engine1.4. 本地接口Native Interface1.5. Native Method Stack1.6. PC寄存器(程序计数器)1.7. Method Area方法区 2. stack栈3. 堆3.1. 堆体系概述3.1.1. 新生区3.1.2. 老年代3.1.3. 永久代…

分类预测 | Matlab实现CNN-GRU-SAM-Attention卷积门控循环单元融合空间注意力机制的数据分类预测

分类预测 | Matlab实现CNN-GRU-SAM-Attention卷积门控循环单元融合空间注意力机制的数据分类预测 目录 分类预测 | Matlab实现CNN-GRU-SAM-Attention卷积门控循环单元融合空间注意力机制的数据分类预测分类效果基本描述程序设计参考资料 分类效果 基本描述 1.Matlab实现CNN-GRU…

Visual Studio 对 C++ 头文件和模块的支持

在 C 编程领域&#xff0c;头文件和模块的管理有时候确实比较令人头疼。但是&#xff0c;有许多工具和功能可以简化此过程&#xff0c;提高效率并减少出错的可能性。下面是我们为 C 头文件和模块提供的几种工具的介绍。 构建明细 通过菜单栏 Build > Run Build Insights&a…

基于Rust的多线程 Web 服务器

构建多线程 Web 服务器 在 socket 上监听 TCP 连接解析少量的 HTTP 请求创建一个合适的 HTTP 响应使用线程池改进服务器的吞吐量优雅的停机和清理注意&#xff1a;并不是最佳实践 创建项目 ~/rust ➜ cargo new helloCreated binary (application) hello package~/rust ➜ma…

maven-依赖管理

依赖配置 https://mvnrepository.com/?__cf_chl_rt_tkvRzDsumjmJ_HF95MK4otu9XluVRHGqAY5Wv4UQYETR8-1714103058-0.0.1.1-1557 <dependencies><dependency><groupId></groupId><artifactId></artifactId><version></version>…

Day4 商品管理

Day4 商品管理 这里会总结构建项目过程中遇到的问题&#xff0c;以及一些个人思考&#xff01;&#xff01; 学习方法&#xff1a; 1 github源码 文档 官网 2 内容复现 &#xff0c;实际操作 项目源码同步更新到github 欢迎大家star~ 后期会更新并上传前端项目 编写品牌服务 …

Java集合相关的List、Set、Map基础知识

目录 一、集合介绍 二、List 三、Map HashMap的数据结构 如何理解红黑树 四、set 一、集合介绍 在Java中&#xff0c;集合是一种用于存储对象的数据结构&#xff0c;它提供了一种更加灵活和强大的方式来处理和操作数据。Java集合框架提供了一系列接口和类&#xff0c;用…

表格的单元格合并和表头的合并——vxe-table

vxe-table的官网&#xff1a;https://vxetable.cn/#/table/advanced/mergeCell在你的项目中下载安装完成后&#xff0c;先在main.js文件中引入&#xff1a; import VXETable from vxe-table import vxe-table/lib/style.css Vue.use(VXETable)一、单元格合并 效果图&#xff…

Linux驱动开发——(七)Linux阻塞和非阻塞IO

目录 一、阻塞和非阻塞IO简介 二、等待队列 2.1 等待队列头 2.2 等待队列项 2.3 将队列项添加/移除等待队列头 2.4 等待唤醒 2.5 等待事件 三、轮询 四、驱动代码 4.1 阻塞IO 4.2 非阻塞IO 一、阻塞和非阻塞IO简介 IO指的是Input/Output&#xff0c;也就是输入/输…

JavaWeb--06Vue组件库Element

Element 1 Element组件的快速入门1.1 Table表格 1 Element组件的快速入门 https://element.eleme.cn/#/zh-CN Element是饿了么团队开发的 接下来我们来学习一下ElementUI的常用组件&#xff0c;对于组件的学习比较简单&#xff0c;我们只需要参考官方提供的代码&#xff0c;然…

SSH新功能揭秘:远程工作提升指南【AI写作】

首先&#xff0c;这篇文章是基于笔尖AI写作进行文章创作的&#xff0c;喜欢的宝子&#xff0c;也可以去体验下&#xff0c;解放双手&#xff0c;上班直接摸鱼~ 按照惯例&#xff0c;先介绍下这款笔尖AI写作&#xff0c;宝子也可以直接下滑跳过看正文~ 笔尖Ai写作&#xff1a;…

同态加密原理解析

目录 1.数学介绍2.使用多项式环进行加密2.1 私钥和公钥的产生2.2 加密2.3 解密 3.同态计算3.1 同态加法3.2 同态乘法 1.数学介绍 同态加密方案基于一个难以计算的问题Ring Learning with Errorsred。这些方案中的数据在加密和未加密时都用多项式表示。 这里举一个简单的多项式…

什么是IIoT?

什么是IIoT? IIoT&#xff0c;即工业物联网&#xff08;Industrial Internet of Things&#xff09;&#xff0c;是指将物联网技术应用到工业领域&#xff0c;通过微型低成本传感器、高带宽无线网络等技术手段&#xff0c;实现工业设备、系统和服务的互联互通&#xff0c;从而…