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电压温度获取的方法,以及获取后将数据进行解析的公式,以上内容都是实际工程中验证过的,可放心使用,如有问题可私信博主,知无不言。

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

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

相关文章

深度学习中测量GPU性能的方式

在深度学习中&#xff0c;测量GPU性能是至关重要的步骤&#xff0c;尤其是在训练和推理过程中。以下是一些常见的测量GPU性能的方式和详细解释&#xff1a; 1. 运行时间&#xff08;Runtime&#xff09;测量 描述&#xff1a;运行时间测量是评估GPU性能的最直接方式&#xff…

es的总结

es的collapse es的collapse只能针对一个字段聚合&#xff08;针对大数据量去重&#xff09;&#xff0c;如果以age为聚合字段&#xff0c;则会展示第一条数据&#xff0c;如果需要展示多个字段&#xff0c;需要创建新的字段&#xff0c;如下 POST testleh/_update_by_query {…

信息与未来2015真题笔记

[信息与未来 2015] 加数 题目描述 给出一个正整数 n n n&#xff0c;在 n n n 的右边加入 ⌊ n 2 ⌋ \left\lfloor\dfrac n2\right\rfloor ⌊2n​⌋&#xff0c;然后在新数的右边 再加入 ⌊ ⌊ n 2 ⌋ 2 ⌋ \left\lfloor\dfrac{\left\lfloor\dfrac n2\right\rfloor}2\rig…

MyBatis:PostGreSQL的jsonb类型处理器

接前一篇《MyBatis Plus:自定义typeHandler类型处理器》,这里介绍PostGreSQL数据库的jsonb数据类型,以及如何实现jsonb类型处理器。 PostGreSQL:jsonb数据类型 json和jsonb之间的区别 PostgreSQL 提供存储JSON数据的两种类型:json 和 jsonb,两者之间的区别在于: js…

JVM学习-详解类加载器(一)

类加载器 类加载器是JVM执行类加载机制的前提 ClassLoader的作用 ClassLoader是Java的核心组件&#xff0c;所有的Class都是由ClassLoader进行加载的&#xff0c;ClassLoader负责通过各种方式将Class信息的二进制数据流读入JVM内部&#xff0c;转换为一个与目标类型对应的ja…

Java学习【String类详解】

Java学习【String类详解】 String的介绍及定义方式String类型的比较String类型的查找charAt()访问字符indexOf()查找下标 转化和替换数值和字符串转化大小写的转换字符串转数组格式化替换 字符串的拆分和截取split()拆分substring()截取trim()去除两边空格 StringBuilder和Stri…

苏州金龙客车为新疆哪吒车队提供车辆交车

2024年旅游旺季提前到来、时间延长&#xff0c;新疆旅游市场有望延续去年火爆态势。 近期&#xff0c;新疆哪吒运输服务有限公司&#xff08;以下简称“哪吒车队”&#xff09;订购的最新一批10辆苏州金龙海格高端旅游大巴在苏州金龙厂区正式交付。哪吒车队负责人伍亚丽笑容满…

SpringCloud学习笔记万字整理(无广版在博客)

在此感谢黑马程序员的SpringCloud课程 所有笔记、生活分享首发于个人博客 想要获得最佳的阅读体验&#xff08;无广告且清爽&#xff09;&#xff0c;请访问本篇笔记 认识微服务 随着互联网行业的发展&#xff0c;对服务的要求也越来越高&#xff0c;服务架构也从单体架构逐渐…

python的元组

元组与列表的区别 元组和列表非常相似。不同之处在于&#xff0c;外观上&#xff1a;列表是被 方括号 包裹起来的&#xff0c;而元组是被 圆括号 包裹起来的。本质上&#xff1a;列表里的元素可修改&#xff0c;元组里的元素是 不可以“增删改” 。 还有一个微妙的地方要注意…

数据分析——Excel篇

1*学习碎片知识点记录&#xff1a; CtrlshiftL 筛选 UV&#xff08;Unique visitor&#xff09;&#xff1a;是指通过互联网访问、浏览这个网页的自然人。访问网站的一台电脑客户端为一个访客。00&#xff1a;00-24&#xff1a;00相同的客户端只被计算一次&#xff0c;一天内…

MK SD NAND(贴片式SD卡)在电力AI模块中的应用案例

近期一位客户&#xff0c;在网上了解到我们SD NAND后联系到我们&#xff0c;经过一系列了解对比后&#xff0c;下单了我们的SD NAND产品。 这位客户是做电力AI模块的&#xff0c;他们的产品主要应用在电力行业。 电力AI模块是集成了人工智能技术的系统&#xff0c;专门设计用于…

fpga控制dsp6657上电启动配置

1 Verilog代码 dspboot_config.v timescale 1ns / 1ps //dsp上电启动配置 module dspboot_config (///时钟和复位input SYS_CLK_50MHz,input SYS_RST_n,//DSP启动配置output DSP_POR,output DSP_RESETFULL,output DSP_RESET,inout [12:…

微信小程序注册流程及APPID,APPSecret获取

1.注册微信小程序 注册链接&#xff1a;公众号 (qq.com) 1.1填写邮箱、密码、验证码 1.2邮箱登录点击邮件中链接激活&#xff0c;即可完成注册 1.3用户信息登记 接下来步骤&#xff0c;将用个人主题类型来进行演示 填写主体登记信息&#xff0c;使用管理员本人微信扫描二维码…

6.11 Libbpf-bootstrap(二,Minimal)

写在前面 minimal是一个很好的入门示例。可以将其视为一个简单的POC,用于尝试BPF功能。它不使用BPF CO-RE,因此可以使用较旧的内核,并且只需包含系统内核头文件即可获取内核类型定义。这不是构建生产就绪应用程序和工具的最佳方法,但对于本地实验来说已经足够了。 一,BP…

离线环境下安装NVIDIA驱动、CUDA(HUAWEI Kunpeng 920 + NVIDIA A100 + Ubuntu 20.04 LTS)

文章目录 前言 一、基础环境 1.1、处理器型号 1.2、英伟达显卡型号 1.3、操作系统 1.4、软件环境 二、取消内核自动升级 2.1、查看正在使用的内核版本 2.2、查看正在使用的内核包 2.3、禁止内核更新 三、配置本地apt源 3.1、挂载iso镜像文件 3.2、配置apt源 3.3、…

防止重复调用

前段防重 在前段设置状态在响应时进入遮罩层或给按钮一个状态 后端防重 //获取setNX锁if (redisTemplate.opsForValue().setIfAbsent("lock", orderId)) {//获取锁成功try {//Redission 获取锁RLock lock redissonClient.getLock("lock");boolean acqui…

python分别保存聚类分析结果+KeyError: ‘CustomerID‘报错

如何在完成聚类分析后按聚类编号保存数据并且带上原数据所属ID # 将每个聚类的数据保存到不同的文件中 for cluster_id in range(6): # 假设共有6个聚类cluster_data data[data[cluster] cluster_id]cluster_data_with_customer_id cluster_data.copy()cluster_data_with_…

图文并茂带你理解Java的代理模式

目录 Java的代理模式1、什么是代理模式&#xff1f;2、静态代理和动态代理3、JDK动态代理的局限性4、使用CGLIB代理机制完成未实现接口的类的代理5、JDK动态代理和CGLIB动态代理对比6、JDK动态代理为什么只能代理实现接口的类&#xff1f; Java的代理模式 1、什么是代理模式&a…

vue3使用vue3-print-nb打印

打印效果 1.下载插件 Vue2.0版本安装方法 npm install vue-print-nb --saveVue3.0版本安装方法&#xff1a; npm install vue3-print-nb --save2.main.js引入 vue2引入 import Print from vue-print-nb Vue.use(Print)vue3引入 import print from vue3-print-nb // 打印…

idm究竟有哪些优势?

IDM&#xff08;Internet Download Manager&#xff09;作为一款知名的下载管理软件&#xff0c;拥有许多优势&#xff0c;让用户在下载文件时体验更加高效和便捷。以下是IDM的一些主要优势&#xff1a; 首先&#xff0c;IDM具有加速下载的功能。通过多线程技术&#xff0c;ID…