This page gives an overview of sysmonpsu driver which is available as part of the Xilinx Vivado and SDK distribution.

A Zynq® UltraScale+™ MPSoC has one system monitoring (SYSMON) block in both the PS and the PL. The SYSMON block has a register interface that can be used to configure the
block and provide a capability of monitoring on and off chip voltages as well as junction temperature. The SYSMON block also has a built-in alarm generation logic that can be used
to interrupt the processor based on certain alarm conditions. For example, shutting down the system, based on an over-temperature (OT) alarm generated from the SYSMON block.
The PL SYSMON block has DRP, JTAG and I2C interfaces to enable monitoring from the external master and the capability to interface with an external power management bus
(PMBus) device. The PS SYSMON block has a built-in logic that enable access to the PS and PL SYSMON blocks.

Source path for the driver:

Driver source code is organized into different folders. Below diagram shows the sysmonpsu driver source organization

-- Doc - Provides the API and data structure details
- Examples - Reference application to show how to use the driver APIs and calling sequence
- Source - Driver source files

PS SYSMON Features

The PS-SYSMON block, provides the following features.
  • Remote temperature sensor capability
  • ADC supports 10-bit resolution with 1 MSPS sampling frequency
    • 1v range with a common-mode, unipolar and bipolar
    • One, dedicated, low input resistance differential channel
    • 16 auxiliary differential channels.
  • Supply monitor, multiple input channels
  • Stand-alone measurement control system including sequencing, alarms, averaging and min/max
  • Multi-rate sequencing capability operational on power-up in default mode
  • Internal reference options
  • Support for low power sleep mode.

Test Cases

  • xsysmon_polled_example.c – This is a polled mode example in which shows the usage of the driver/device in polled mode to check the on-chip temperature and voltages.
  • xsysmon_intr_example.c – This is an interrupt mode example in which shows the usage of the driver/device in interrupt mode to handle on-chip temperature and voltage alarm interrupts.
  • xsysmon_low_level_example.c – This example shows the usage of the basic functions driver in polled mode to check the on-chip temperature and voltages.
  • xsysmon_single_ch_intr_example.c – This example shows the usage of the driver/device in single channel interrupt mode to handle End of Conversion (EOC) and VCCINT alarm interrupts
  • xsysmonpsu_ams_example.c - This example is used to measure AMS control block voltages via single channel sequencer off mode



  • Modified the driver code for MISRA-C 2012 compliance.
  • Add support for enabling the SEQ_CH2_REG and SEQ_AVG2_REG
  • Add support for configuring sequential input mode2 and acquisition2 registers.


  • None.


  • Fixed compilation warnings.
  • Added voltage conversion macro for Vcco_psio
  • Add PL reset check before PL sysmon reset


  • Corrected temperature conversion formulas


  • None.


  • None.


  • Add missing closing bracket in xsysmonpsu.h
  • Add conversion support for Voltages having range of 1 volt
  • Correct the AMS block channel numbers in BSP
  • Add example for testing AMS block voltage measurement
  • Add support to extract frequency information
  • Update Sysmon clock divisor to the proper value
  • Update examples to use higher clock frequency
  • Remove looping check for PL accessible bit
  • Remove usleeps from AMS CTRL example


  • None


  • Added initializer macro for Input Clock MHz


  • Misra C changes


  • Added IAR support to the examples

Related Links

  • NA