FPGA实战(54):基于XADC的FPGA温度电压双通道监控模块
一、引言在FPGA系统设计中,实时监测芯片结温与内核供电电压是保障设备长期可靠运行的基本要求。Xilinx 7系列及Zynq-7000系列FPGA内部集成的XADC(Xilinx Analog-to-Digital Converter)硬核模块提供了片上温度传感器与电压传感器,开发者可通过DRP(Dynamic Reconfiguration Port)接口读取测量结果。本文介绍一种实现方案,在不使用状态机的情况下,利用XADC自身的握手信号完成温度与电压数据的自动轮询读取。该设计代码精简、逻辑清晰,适合作为FPGA系统监控子系统的入门参考。二、XADC DRP接口简述XADC的DRP接口用于FPGA逻辑与内部状态寄存器之间的数据交换,本设计涉及的核心信号如下:端口方向功能描述DCLK输入DRP接口时钟DEN输入DRP读/写使能DWE输入0为读操作,1为写操作DADDR[6:0]输入寄存器目标地址DI[15:0]输入写数据总线DO[15:0]输出读数据总线DRDY输出读数据有效标志EOC输出转换结束标志CHANNEL[4:0]输出当前采样通道编号温度测量结果存放于DRP地址0x00,VCCINT电压测量结果存放于地址0x01。当XADC配置为连续采样模式并使能通道序列器时,各使能通道将被自动轮询采样。三、核心设计思路3.1 EOC触发式DRP读取XADC完成一次采样后,EOC信号自动拉高,同时CHANNEL输出当前通道编号。本设计直接将EOC作为DRP读操作的启动条件:当EOC有效时拉高DEN,并将CHANNEL值映射为DADDR。由此避免了传统方案中手动编写状态机控制DEN时序的复杂性。3.2 三级同步复位链XADC IP核的复位输入虽为异步特性,但官方建议进行同步处理。本设计采用三级寄存器逐级打拍,有效降低亚稳态风险,确保复位释放时刻的确定性。3.3 通道数据锁存通过判断DRDY有效且CHANNEL匹配目标通道(温度通道号为0x00,VCCINT通道号为0x01),将DO总线上的数据锁存至对应的输出寄存器。四、模块实现4.1 顶层端口定义