2.2 基于ultrascale 架构FPGA的system manager wizard使用(温压监测)

2.2 基于ultrascale 架构FPGA的system manager wizard使用(温压监测)

Reference: 《PG185》《UG580》

部分文案源于网友博客,AIGC和个人理解,如有雷同纯属抄袭

一、介绍

简述:

Xilinx System Management Wizard 是 Vivado 和 Vitis 工具中的一个图形化配置工具,主要用于为 FPGA 设计生成与系统监控和管理相关的 IP 核。这个工具帮助用户配置和集成诸如温度监控、电压监控、时钟监控、外部模拟输入等功能到 FPGA 设计中。它支持AXI4-Lite 与 DRP 接口

主要功能:
  • 温度和电压监测
    • 内建传感器:支持 FPGA 内部温度、VCCINT(核心电压)、VCCAUX(辅助电压)、VCCBRAM(BRAM 电压)等电压和温度监测。通过 SYSMON 进行实时数据采集。
    • 外部模拟输入:可通过 XADCSYSMON 配置外部传感器的数据采集,支持多通道模拟输入,进行温度、电压、压力等数据监测。
  • 警报系统
    • 设置不同的警报阈值(如温度、电压等)以确保系统在出现异常时触发警报。
    • 支持对温度、电压等信号设置高低阈值,并在超出预定阈值时触发警报(如 Over Temperature AlarmUser Temperature Alarm)。
最大时钟频率:

二、原理

(1)架构框图
1. System Management Wizard(启用AXI Lite 接口时)

此模块框图展示了AXI-Lite接口控制管理模块SYSMON硬件核心模块(含ADC)SYSMON硬件宏(Hard Macro) 是指在硬件设计中,特别是在 FPGA 或 ASIC 设计中,作为一个已实现的、封装好的功能模块,通常是经过优化的硬件单元或模块。

2. SYSMON 架构框图
    • 模拟输入源 与MUX
    • ADC功能模块 与VREF
    • 寄存器空间 含measurement data
    • DRP接口
3. SYSMON Register Space
  • DRP允许访问多达256个16位寄存器(DADDR[7:0] = 00h至FFh)。
  • 接入位置DADDR[7:0] = 00h至3Fh和DADDR[7:0] = 80h至FFh为只读位置,包含ADC测量数据,这些寄存器是状态寄存器
  • 控制寄存器位于地址40h至7Fh,可通过DRP读取或写入。
(2)端口说明
1. 控制和状态通道(Control and Status Channels)
  • s_axi_aclk:AXI 时钟信号,用于同步所有 AXI 操作。
  • s_axi_aresetn:异步复位信号,通常是低有效信号。
2. AXI写操作通道(Write Channel)
  • s_axi_awaddr[12:0]: 写操作的地址信号,指示要写入的寄存器地址。
  • s_axi_awvalid: 指示写地址是否有效。
  • s_axi_awready: 响应信号,表示写地址是否准备好。
  • s_axi_wdata[31:0]: 写数据信号,包含待写入的 32 位数据。
  • s_axi_wstrb[3:0]: 字节使能信号,指示哪些字节有效。
  • s_axi_wvalid: 写数据有效信号,指示写数据是否有效。
  • s_axi_wready: 响应信号,表示写数据是否准备好。
  • s_axi_bresp[1:0]: 写响应信号,指示写操作的结果,如成功或失败。
              • 它可以指示成功(例如 OKAY)或错误状态(例如 SLVERR)。
  • s_axi_bvalid: 写响应有效信号,指示写响应是否有效。
  • s_axi_bready: 从设备准备好接收写响应信号。
3. AXI读操作通道(Read Channel)
  • s_axi_araddr[12:0]: 读操作的地址信号,指示要读取的寄存器地址。
  • s_axi_arvalid: 读地址有效信号,指示读地址是否有效。
  • s_axi_arready: 响应信号,表示读地址是否准备好。
  • s_axi_rdata[31:0]: 读数据通道,返回读取的数据。
  • s_axi_rresp[1:0]: 读响应信号,指示读取操作的结果。
  • s_axi_rvalid: 读数据有效信号,指示读数据是否有效。
  • s_axi_rready: 从设备准备好接收读数据的信号。
4. 其他flag信号(External Signals and Inputs)
  • vpvn:外部模拟信号输入,通常与 XADC 或 SYSMON 模块结合使用,读取模拟传感器数据。
  • user_temp_alarm_outvcint_alarm_outvccaux_alarm_out 等:报警信号输出端口,指示温度、电压等传感器的警报状态。
  • eoc_outalarm_outeos_out:系统监控信号,指示 ADC 转换结束、报警状态或序列结束等。
  • busy_out:忙碌信号,指示系统是否正在进行数据采集或处理。

详见PG185 table 2-1

  • channel_out:单通道或外部多路复用器工作模式下,表示所选ADC输入通道

详见UG580 table 3-6

(3)地址寄存器
1. AXI4-Lite address (13 bits)映射至SYSMON (8 bits):

SYSMON 寄存器地址左移2位,地址值放大了4倍(PG185 table 2-3)

2.SYSMON Registers Address
(4)读时序图

三、IP核配置(例:监测温度电压 AXI4lite输出)

(1)Basic
1. Startup Channel Selection
  • Single Channel:如果您只需要监测单个通道的模拟输入,可以选择这个选项。适合简单的应用,例如只监测芯片的温度或者单一电压。
  • Channel Sequencer:如果您需要同时监测多个通道,并按顺序采样,可以选择这个选项。对于更复杂的应用,如监测多个电压或传感器的数据,使用 Channel Sequencer 会更合适。

选择Channel Sequencer,按顺序采样不同通道

2. Sequencer Mode
  • Continuous:如果您希望 ADC 连续不断地进行采样(例如,在监测过程中不断更新数据),可以选择 Continuous 模式。这适合于实时数据监测应用。
  • Event:如果您只希望在特定的事件发生时采样数据,可以选择 Event 模式。这适用于事件驱动的应用,采样仅在特定事件发生时才会启动。

选择Continuous

3. Channel Averaging
  • None:如果不需要对采样结果进行平均,可以选择 None。这种配置将每次采样的值直接输出。
  • Averaging:如果您希望减少噪声并提高测量的稳定性,可以启用通道平均功能。这对于高噪声环境中的信号采集很有用。

建议开启,可选择16(内部存在寄存器表示采样数量 UG580)

4. DRP Timing Options
  • DCLK Frequency:设置动态时钟频率,这个值控制数据转换的时钟频率,影响 ADC 的响应速度。您可以选择100 MHz,或者根据您的需求调整。
  • ADC Conversion Rate (KSPS):设置 ADC 的转换速率,单位是千样本每秒 (KSPS)。200 KSPS 是一个适中的值,适合许多应用。
  • Acquisition Time (CLK):这是每个采样周期的时钟周期数,可以根据您的采样精度要求来调整。值为 4 表示每次采样需要 4 个时钟周期。

默认即可

(2)片上模拟信号源选取(系统),及警报阈值配置
1. Reference Used by SYSMON 基准电压选取
  • Internal 选择 FPGA 内部的参考电源。
  • External 选择 外部电压源作为参考。

选择Internal即可!注:该基准电压的选择会影响ADC测算的性能精度,详见UG580 - Reference Inputs (VREFP and VREFN)

2. 温度警报的 Trigger 和 Reset
  • Trigger 是温度达到或超过指定阈值时激活警报。
  • Reset 是温度降低到一定水平时警报被重置或关闭。
3. 电压的警报阈值配置
  • Lower:低于该值时会触发警报。
  • Upper:超过该值时会触发警报。
(3)片上模拟信号源选取(用户)

配置方式类似于(2)此页不做额外配置

(4)外部通道功能选择
  • External Multiplexer:如果需要从外部模拟源获取信号,可以启用此项,并选择 VP VN 或其他外部输入信号作为通道。
  • Channel Enable:根据需要启用相应的通道。如果只需要采集 vp/vn,则启用对应的通道。
  • Average Enable:如果需要对采样值进行平均,启用此选项。如果不需要平滑数据,则不启用。
  • Bipolar:仅在您需要采集正负电压信号时启用该选项。
  • Acquisition Time:设置适当的采样时间,根据您的应用需求选择合适的时钟周期。

默认即可

(5)仿真设置

不详,暂不配置使用

四、输出数据处理

(1)数据精度:
1.SYSMON数据寄存器输出

ADC转换结果以16bits精度存储于寄存器中

2.数据输出映射 32 bits DRP 寄存器

由于这些寄存器宽 16 位,但处理器数据总线宽 32 位,因此硬宏寄存器数据驻留在 32 位数据总线的较低 16 位上

(2)转换公式选取:
1.Temperature ADC
    1. 确定FPGA架构(ultrascale)选取(SYSMONE1)
    2. 确定ADC的参考电压源为 external OR on-chip (IP 配置过程选择)
    3. 根据ADC输出数据精度 10 位精度 OR 16 位精度 >> 确定公式中2^bits
    4. 选取转换公式2-7
2.Voltage ADC
    1. 确定所测电压衰减系数为3,(衰减系数为6时为特殊情况,详见下文)
    2. 确定ADC输出数据精度 10 位精度 OR 16 位精度 >> 确定公式中2^bits
    3. 选取转换公式2-15

五、仿真

配置完IP后,即可右键IP打开示例工程,直接进行仿真查看选定通道的ADC转换结果依次输出

六、Debug

(1)dashboard

xlinx官方自带sys_mon系统监测功能无需下板,连接设备后,右键选择器件启动dashboard ,即可实时查看芯片内部数据可将处理后的输出数据与此对照检测

(2)上板验证ILA抓取温度数据

输入读地址通道为 'h0400 温度寄存器地址待复位完毕后,读出valid时刻数据经转换公式结果计算得温度为26.94°C与dashboard结果几乎一致

Read more

AI辅助编程的边界探索:当Copilot学会写测试

AI辅助编程的边界探索:当Copilot学会写测试

👋 大家好,欢迎来到我的技术博客! 📚 在这里,我会分享学习笔记、实战经验与技术思考,力求用简单的方式讲清楚复杂的问题。 🎯 本文将围绕人工智能这个话题展开,希望能为你带来一些启发或实用的参考。 🌱 无论你是刚入门的新手,还是正在进阶的开发者,希望你都能有所收获! 文章目录 * AI辅助编程的边界探索:当Copilot学会写测试 🚀 * 1. 从“写代码”到“验代码”:AI的新战场 ⚔️ * 场景设定:一个简单的支付网关模拟器 💳 * 2. 初级实验:AI能写出“Happy Path”吗? ✅ * 3. 进阶实验:Mocking 与 外部依赖 🎭 * 4. 陷阱与幻觉:AI写测试时犯的那些错 🤪 * 案例 A:永远不会错的测试 * 案例 B:永远跑不通的断言 * 案例 C:复杂集成测试的无力 * 5. 人机协作:重新定义测试工作流 🤝 * 实践技巧:如何高效地让AI写测试?

解决 Rust 中 whisper-rs-sys 编译报错:Unable to find libclang(Windows 环境)

在使用 Rust 开发涉及 whisper-rs 相关项目时,执行 cargo run 或 cargo build 经常会遇到 whisper-rs-sys 编译失败的问题,核心报错为 “Unable to find libclang”。本文将详细拆解报错原因,并提供一步到位的解决方案,帮助 Windows 环境下的 Rust 开发者快速解决该问题。 一、问题复现:编译报错完整日志 首先明确问题场景:当项目依赖 whisper-rs 或 whisper-rs-sys 时,执行编译命令后出现如下错误(关键信息已标红): cargo run Blocking waiting for file lock on build directory Compiling bindgen v0.

别瞎改了!直接抄DeepSeek这5大降AIGC指令,搭配3款超有效工具,亲测98%暴降至5%!

别瞎改了!直接抄DeepSeek这5大降AIGC指令,搭配3款超有效工具,亲测98%暴降至5%!

毕业季最让人崩溃的瞬间,莫过于信心满满地把DeepSeek辅助写的论文传上去,结果查重报告一片红,AIGC检测率飙到90%以上。 别慌!作为过来人,学姐告诉大家:AI生成的痕迹其实是有解决办法的。 只要你懂得如何指挥DeepSeek自己净化自己,或者用对专业的辅助工具,把AI率降到5%以下真的不是梦。 今天这篇文章,直接上干货。前半部分是5条经过实测的DeepSeek专属降AI指令,后半部分推荐3款确实能把AI率降下来的工具。 建议先收藏,改论文时直接复制使用。 一、【硬核实操】DeepSeek五大深度降AI指令 这部分是核心干货。为了让DeepSeek更好地执行,我将所有复杂的降AI技巧整合成了一段完整、连续的指令。你只需要把论文分段,然后配合下面的指令发送即可,记得要开深度思考和联网搜索哦~ 💡 指令1:针对假大空特征 【原理解析】 AI生成内容最容易被判定为机器痕迹的原因,是大量使用高频、通俗的万能词。根据同义词替换策略,我们需要强制模型调用学术语料库。 📋 复制这段Prompt发送给DeepSeek: 请针对这段文字进行深度学术化重写,重点在于提升词汇的

从零到一:Ubuntu上llama.cpp的编译艺术与性能调优实战

从零到一:Ubuntu上llama.cpp的编译艺术与性能调优实战 在人工智能技术快速发展的今天,大型语言模型(LLM)已成为开发者工具箱中不可或缺的一部分。而llama.cpp作为一款高效、轻量级的LLM推理框架,因其出色的性能和跨平台支持,越来越受到开发者的青睐。本文将带您深入探索在Ubuntu环境下编译和优化llama.cpp的全过程,从基础环境搭建到高级性能调优,为您呈现一套完整的解决方案。 1. 环境准备与基础编译 在开始编译llama.cpp之前,我们需要确保系统环境满足基本要求。Ubuntu 22.04 LTS是最推荐的系统版本,它提供了稳定的软件包支持和良好的兼容性。 首先更新系统并安装必要的开发工具: sudo apt update && sudo apt upgrade -y sudo apt install -y build-essential cmake git curl libcurl4-openssl-dev 对于希望使用CUDA加速的用户,还需要安装NVIDIA驱动和CUDA工具包: sudo apt install