当前位置: 首页 > news >正文

Vivado 比特流编译时间获取以及FPGA电压温度获取(实用)

Vivado 比特流编译时间获取以及FPGA电压温度获取

语言 :Verilg HDL 、VHDL
EDA工具:ISE、Vivado

      • Vivado 比特流编译时间获取以及FPGA电压温度获取
        • 一、引言
        • 二、 获取FPGA 当前程序的编译时间
          • verilog中直接调用下面源语
          • 2. FPGA电压温度获取
          • (1)使用源语调用
          • (2)温度和电压解析
          • 温度解析公式
          • 电压解析公式
          • 测到的一组值:
          • (2)调用xadc ip核
        • 三、结尾

  • 关键词: 调用,Vivado,
一、引言

在FPGA开发中,经常需要对整个系统进行健康信息监控以及版本信息管脚,这时,需要知道FPGA 当前程序的编译时间以及FPGA实时的温度电压信息,本文对这两个部分进行总结说明,方便诸君不时之需,直接调用便可,不需要多在这上面耗费时间和精力。

二、 获取FPGA 当前程序的编译时间
verilog中直接调用下面源语
reg[31:0] DATA ;USR_ACCESSE2 USR_ACCESSE2_inst (.CFGCLK( ),       // 1-bit output: Configuration Clock output.DATA(DATA),           // 32-bit output: Configuration Data output.DATAVALID( )  // 1-bit output: Active high data valid output);

因为USR_ACCESSE2 为源语,所以直接在调用上面的模块,便可以得到32-bit 输出DATA,这便是当前bit(比特流)的详细编译时间,该数据的解析格式如下:

在这里插入图片描述
只需要把DATA中对应的位数取出来,即可解析出当前bit的编译时间年月日时分秒。

下面是 VHDL的调用。

inst_usr_access2: USR_ACCESSE2
port map (CFGCLK                  => open,DATA                    => bit_stream_info,DATAVALID               => open
);
2. FPGA电压温度获取
(1)使用源语调用
reg[15:0] vccint_doutxadc_test xadc_test_inst (.clk_100mhz(clk_50M), .rst_n(FPGA3_RST), .temperature_dout(temperature_dout), .vccint_dout(vccint_dout), .vccaux_dout(vccaux_dout), .vccbram_dout(vccbram_dout));

可以在下面链接中直接下载该模块,然后直接用上面的例化调用即可。
7系列以上xlinx FPGA +xadc模块+获取FPGA的温度电压+使用源语 直接调用模块

(2)温度和电压解析
温度解析公式
Temp()=(MEASURED_TEMP[15:4]* 503.975)/4096-273.15
电压解析公式
VCCINT=  (MEASURED_VCCINT[15:4]* 3)/4096
测到的一组值:

Tem: 16’hA534;

VCCINT: 16’h5478;
VCCAUX: 16’h988F;
VCCBRAM: 16’h535F;
([15:4]就是高12位,去掉低四位便是有效值。即:Tem有效值等于16’hA53)

(2)调用xadc ip核

调用ip核与使用xadc源语本质是一样的,只是稍微有些繁琐。

IP核的主要设置如下:
(1)
在这里插入图片描述
(2)
在这里插入图片描述
(3)在这里插入图片描述
(3)
在这里插入图片描述

IP的定层模块我也附上:

`timescale 1ns / 1psmodule xadc_test(
input                 clk_100mhz,
input                 rst_n ,
output	reg[15:0]    temp_dout , //Data
output	reg	[15:0]    vccint_dout ,
output	reg	[15:0]    vccaux_dout ,
output	reg	[15:0]    vccbram_dout );wire    clk;reg[15:0]    temperature_dout;//-------------------------------------//---- XADC IP INST ------------- wire [15:0]	di_in;wire [6:0]	daddr_in;wire			den_in;wire			dwe_in;wire			drdy_out;wire [15:0]	do_out;wire [4:0]	channel_out;wire			eoc_out;wire			eos_out;wire			busy_out;assign clk = clk_100mhz;//XADC IP (Mode:Channel Sequencer)xadc_wiz_0 xadc_ip_inst (.di_in(di_in),                              // input wire [15 : 0] di_in.daddr_in(daddr_in),                        // input wire [6 : 0] daddr_in.den_in(den_in),                            // input wire den_in.dwe_in(dwe_in),                            // input wire dwe_in.drdy_out(drdy_out),                        // output wire drdy_out.do_out(do_out),                            // output wire [15 : 0] do_out.dclk_in(clk),                          // input wire dclk_in.reset_in(!rst_n),                        // input wire reset_in.vp_in(1'b0),                              // input wire vp_in.vn_in(1'b0),                              // input wire vn_in.user_temp_alarm_out(),  // output wire user_temp_alarm_out.vccint_alarm_out(),        // output wire vccint_alarm_out.vccaux_alarm_out(),        // output wire vccaux_alarm_out.ot_out(),                            // output wire ot_out.channel_out(channel_out),                  // output wire [4 : 0] channel_out.eoc_out(eoc_out),                          // output wire eoc_out.alarm_out(),                      // output wire alarm_out.eos_out(eos_out),                          // output wire eos_out.busy_out(busy_out)                        // output wire busy_out);//only Readassign di_in = 16'd0;   //not usedassign dwe_in = 1'b0;   //not usedassign den_in = eoc_out;assign daddr_in = {2'd0,channel_out};//-------------------------------------//Read Temperature Datareg    temperature_dout_en ;reg    vccint_dout_en ;reg    vccaux_dout_en ;reg    vccbram__dout_en ;always @(posedge clk or negedge rst_n)beginif(!rst_n) begintemperature_dout <= 16'd0;vccint_dout <= 16'd0;vccaux_dout <= 16'd0;vccbram_dout <= 16'd0;temperature_dout_en <= 1'b0;vccint_dout_en <= 1'b0;vccaux_dout_en <= 1'b0;vccbram__dout_en <= 1'b0;endelse beginif((drdy_out) &&(channel_out == 5'd0))     // Latch ADCcode of On-chip-temperaturebegintemperature_dout <= (drdy_out==1'b1)?do_out:16'd0;temperature_dout_en <= drdy_out;endelse if((drdy_out) &&(channel_out == 5'd1))     // Latch ADCcode of VCCINTbeginvccint_dout <= (drdy_out==1'b1)?do_out:16'd0;vccint_dout_en <= drdy_out;endelse if((drdy_out) &&(channel_out == 5'd2))     // Latch ADCcode of VCCAUXbeginvccaux_dout <= (drdy_out==1'b1)?do_out:16'd0;vccaux_dout_en <= drdy_out;endelse if((drdy_out) &&(channel_out == 5'd6))        // Latch ADCcode of VCCBRAMbeginvccbram_dout <= (drdy_out==1'b1)?do_out:16'd0;vccbram__dout_en <= drdy_out;endelsebegintemperature_dout_en <= 1'b0;vccint_dout_en <= 1'b0;vccaux_dout_en <= 1'b0;vccbram__dout_en <= 1'b0;endendendwire[20:0] p;mult_x504 m504 (.CLK(clk),  // input wire CLK.A(temperature_dout[15:4]),      // input wire [11 : 0] A.P(p)      // output wire [20 : 0] P
);  always@( posedge clk)  temp_dout = p[20:12] - 273 ; endmodule

其中mult_x504 是一个乘法器ip,输入值乘无符号数504,然后再减去273,就是结果temp_dout 就是真实的温度结果了。

三、结尾

本文总结了Vivado 比特流编译时间获取以及FPGA电压温度获取的方法,以及获取后将数据进行解析的公式,以上内容都是实际工程中验证过的,可放心使用,如有问题可私信博主,知无不言。

相关文章:

Vivado 比特流编译时间获取以及FPGA电压温度获取(实用)

Vivado 比特流编译时间获取以及FPGA电压温度获取 语言 &#xff1a;Verilg HDL 、VHDL EDA工具&#xff1a;ISE、Vivado Vivado 比特流编译时间获取以及FPGA电压温度获取一、引言二、 获取FPGA 当前程序的编译时间verilog中直接调用下面源语2. FPGA电压温度获取&#xff08;1&a…...

Window下VS2019编译WebRTC通关版

这段时间需要实现这样一个功能&#xff0c;使用WebRTC实现语音通话功能&#xff0c;第一步要做的事情就是编译WebRTC源码&#xff0c;也是很多码友会遇到的问题。 经过我很多天的踩坑终于踩出来一条通往胜利的大路&#xff0c;下面就为大家详细介绍&#xff0c;编译步骤以及踩…...

【云原生 | 60】Docker中通过docker-compose部署kafka集群

&#x1f341;博主简介&#xff1a; &#x1f3c5;云计算领域优质创作者 &#x1f3c5;2022年CSDN新星计划python赛道第一名 &#x1f3c5;2022年CSDN原力计划优质作者 &#x1f3c5;阿里云ACE认证高级工程师 &#x1f3c5;阿里云开发者社区专…...

allure测试报告用例数和 pytest执行用例数不相同问题

我出现的奇怪问题&#xff1a; pytest执行了9条用例&#xff0c;但是测试报告确只显示3条用例 我将其中的一个代码删除后&#xff0c;发现allure测试报告又正常了 我觉得很奇怪这个代码只是删除了二维数组的第一列&#xff0c;我检查了半天都找不到问题&#xff0c;只有降低版本…...

Ubuntu 离线安装 gcc、g++、make 等依赖包

前言 项目现场的服务器无法连接互联网&#xff0c;需要提前获取 gcc、g、make 等依赖包。 一、如何获取依赖包 需要准备一台可以连接互联网的电脑&#xff08;如&#xff1a;个人电脑上的虚拟机安装一个与服务器一样的系统&#xff09;&#xff0c;用于下载依赖包。之后把通过…...

Vxe UI vxe-upload 上传组件,显示进度条的方法

vxe-upload 上传组件 查看官网 https://vxeui.com 显示进度条很简单&#xff0c;需要后台支持进度就可以了&#xff0c;后台实现逻辑具体可以百度&#xff0c;这里只介绍前端逻辑。 上传附件 相关参数说明&#xff0c;具体可以看文档&#xff1a; multiple 是否允许多选 li…...

探索API接口:技术深度解析与应用实践

在当今的软件开发和数据交换领域&#xff0c;API&#xff08;应用程序编程接口&#xff09;已经成为了一个不可或缺的工具。它允许不同的软件应用程序或组件之间进行交互和通信&#xff0c;从而实现了数据的共享和功能的扩展。本文将深入探讨API接口的技术原理、设计原则以及在…...

ARM-V9 RME(Realm Management Extension)系统架构之系统安全能力的系统隔离属性

安全之安全(security)博客目录导读 目录 一、系统隔离属性 1、系统配置完整性 1.1、时间隔离 2、关键错误的报告 一、系统隔离属性 1、系统配置完整性 MSD必须确保任何可能危及其安全保证的系统寄存器的正确性和完整性。例如&#xff0c;MSD必须确认内存控制器配置是一致…...

一个班有n个学生,需要把每个学生的简单材料(姓名和学号)输入计算机保存。然后可以通过输入某一学生的姓名查找其有关资料。

当输入一个姓名后&#xff0c;程序就查找该班中有无此学生&#xff0c;如果有&#xff0c;则输出他的姓名和学号&#xff0c;如果查不到&#xff0c;则输出"本班无此人"。 为解此问题&#xff0c;可以分别编写两个函数&#xff0c;函数input_data用来输人n个…...

python的range() 函数

range() 函数 《红楼梦》&#xff0c;又名《石头记》&#xff0c;实际上是一颗神石在人间游历的故事。而这块石头&#xff0c;就是我们的主人公贾宝玉。神石在投胎成宝玉前&#xff0c;向茫茫大士和渺渺真人讲起了自己的故事&#xff1a; 女娲氏炼石补天之时&#xff0c;于大…...

ClickHouse数据管理与同步的关键技术

2024年 5 月 18 日&#xff0c;ClickHouse官方首届杭州 Meetup 活动成功举行。本次活动由 ClickHouse 和阿里云主办&#xff0c;NineData 和云数据库技术社区协办。围绕ClickHouse的核心技术、应用案例、最佳实践、数据管理、以及迁移同步等方面&#xff0c;和行业专家展开交流…...

【一竞技DOTA2】东南亚Bleed战队官宣Emo正式加盟

1、近日东南亚Bleed战队正式发布公告官宣&#xff0c;中国选手Emo以及来自蒙古选手Se加盟战队。 【公告内容如下】 我们很高兴宣布&#xff0c;战队DOTA2名单中添加了两位新成员&#xff0c;请和我们一起欢迎来自中国经验丰富的老将Emo以及来自蒙古的后起之秀Se 一号位&#…...

算法学习笔记(7.3)-贪心算法(最大切分乘问题)

目录 ##问题描述 ##问题思考 ##贪心策略确定 ##代码实现 ##时间复杂度 ##正确性验证 ##问题描述 给定一个正整数 &#x1d45b; &#xff0c;将其切分为至少两个正整数的和&#xff0c;求切分后所有整数的乘积最大是多少 ##问题思考 假设我们将 &#x1d45b; 切分为 &…...

大型企业用什么文件加密软件,五款适合企业的文件加密软件

大型企业在选择文件加密软件时&#xff0c;通常会倾向于那些能够提供全面数据保护、具有高度可定制性、易于管理且能适应复杂组织结构的解决方案。以下是一些适合大型企业使用的文件加密软件&#xff1a; 1.域智盾软件&#xff1a; 作为一款企业级文件加密软件&#xff0c;支持…...

【数据结构】二叉树运用及相关例题

文章目录 前言查第K层的节点个数判断该二叉树是否为完全二叉树例题一 - Leetcode - 226反转二叉树例题一 - Leetcode - 110平衡二叉树 前言 在笔者的前几篇篇博客中介绍了二叉树的基本概念及基本实现方法&#xff0c;有兴趣的朋友自己移步看看。 这篇文章主要介绍一下二叉树的…...

Java基础知识点(反射、注解、JDBC、TCP/UDP/URL)

文章目录 反射反射的定义class对象反射的操作 注解注解的定义注解的应用注解的分类基准注解元注解 自定义注解自定义规则自定义demo JDBCTCP/UDP/URLTCPUDPURL 反射 反射的定义 Java Reflection是Java被视为动态语言的基础啊&#xff0c; 反射机制允许程序在执行期间接入Refl…...

postgressql——Tuple学习(2)

Tuple含义 作用 PG并没有像Oracle那样的undo来存放旧数据&#xff0c;而且PG没有真正意义上的delete&#xff0c;而是将旧版本直接存放于relation文件中&#xff0c;也就是成为了dead tuple。我们可以理解成“过期的数据”含义 tuple就相当于一个存储数据的小容器&#xff0c;…...

Linux日志管理

文章目录 一、日志管理概述1.1、日志管理介绍1.2、日志管理的重要性1.3、日志管理的组件1.4、日志管理的流程1.5、日志管理的挑战 二、日志分类介绍2.1、windows日志类别2.1.1、Application Log2.1.2、Security Log2.1.3、System Log2.1.4、Setup Log2.1.5、ForwardedEvents Lo…...

【社区投稿】给 NdArray 装上 CUDA 的轮子

Ndarry是Rust编程语言中的一个高性能多维、多类型数组库。它提供了类似 numpy 的多种多维数组的算子。与 Python 相比 Rust 生态缺乏类似 CuPy, Jax 这样利用CUDA 进行加速的开源项目。虽然 Hugging Face 开源的 candle 可以使用 CUDA backend 但是 candle 项瞄准的是大模型的相…...

Linux|Linux常用命令合集(一)

想记录一下个人会用到的一些linux命令&#xff0c;持续更新中… chmod\chown 之前如果文件权限不足&#xff0c;直接就是 chmod 777 filename/dirname &#xff0c;这并不是一个好习惯。 r&#xff08;读权限&#xff09;&#xff1a;值为4w&#xff08;写权限&#xff09;&a…...

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…...

idea大量爆红问题解决

问题描述 在学习和工作中&#xff0c;idea是程序员不可缺少的一个工具&#xff0c;但是突然在有些时候就会出现大量爆红的问题&#xff0c;发现无法跳转&#xff0c;无论是关机重启或者是替换root都无法解决 就是如上所展示的问题&#xff0c;但是程序依然可以启动。 问题解决…...

Linux链表操作全解析

Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表&#xff1f;1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...

css实现圆环展示百分比,根据值动态展示所占比例

代码如下 <view class""><view class"circle-chart"><view v-if"!!num" class"pie-item" :style"{background: conic-gradient(var(--one-color) 0%,#E9E6F1 ${num}%),}"></view><view v-else …...

YSYX学习记录(八)

C语言&#xff0c;练习0&#xff1a; 先创建一个文件夹&#xff0c;我用的是物理机&#xff1a; 安装build-essential 练习1&#xff1a; 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件&#xff0c;随机修改或删除一部分&#xff0c;之后…...

如何将联系人从 iPhone 转移到 Android

从 iPhone 换到 Android 手机时&#xff0c;你可能需要保留重要的数据&#xff0c;例如通讯录。好在&#xff0c;将通讯录从 iPhone 转移到 Android 手机非常简单&#xff0c;你可以从本文中学习 6 种可靠的方法&#xff0c;确保随时保持连接&#xff0c;不错过任何信息。 第 1…...

深度学习习题2

1.如果增加神经网络的宽度&#xff0c;精确度会增加到一个特定阈值后&#xff0c;便开始降低。造成这一现象的可能原因是什么&#xff1f; A、即使增加卷积核的数量&#xff0c;只有少部分的核会被用作预测 B、当卷积核数量增加时&#xff0c;神经网络的预测能力会降低 C、当卷…...

初探Service服务发现机制

1.Service简介 Service是将运行在一组Pod上的应用程序发布为网络服务的抽象方法。 主要功能&#xff1a;服务发现和负载均衡。 Service类型的包括ClusterIP类型、NodePort类型、LoadBalancer类型、ExternalName类型 2.Endpoints简介 Endpoints是一种Kubernetes资源&#xf…...

Git 3天2K星标:Datawhale 的 Happy-LLM 项目介绍(附教程)

引言 在人工智能飞速发展的今天&#xff0c;大语言模型&#xff08;Large Language Models, LLMs&#xff09;已成为技术领域的焦点。从智能写作到代码生成&#xff0c;LLM 的应用场景不断扩展&#xff0c;深刻改变了我们的工作和生活方式。然而&#xff0c;理解这些模型的内部…...

wpf在image控件上快速显示内存图像

wpf在image控件上快速显示内存图像https://www.cnblogs.com/haodafeng/p/10431387.html 如果你在寻找能够快速在image控件刷新大图像&#xff08;比如分辨率3000*3000的图像&#xff09;的办法&#xff0c;尤其是想把内存中的裸数据&#xff08;只有图像的数据&#xff0c;不包…...