Voltage Scaling on Xilinx Zynq

Goal Voltage scaling on Zynq
Approach Using PMBus protocol to change the value on voltage rails
Benefits Power and energey reduction
Credit  This work has been done under the ENPOWER project (funded by EPSRC) at University of Bristol.

The power monitoring library contains a few functions to determine the value of voltage on a given voltage rail available on the ZC702 Evaluation Board.

The two function to scale the voltage rails VCCINT and VCCPINT are

int set_VCCINT_voltage(float target_voltage);

int set_VCCPINT_voltage(float target_voltage);

in which target_voltage is a value less than 1.0.

Example:

#include "stdio.h"
#include <stdlib.h>
#include "measurement.h"

int main(int argc, char *argv[]) {
float target_value;
if (argc == 2) {
target_value = atof(argv[1]);
if (target_value < 0.7 || target_value > 1) {
printf("target voltage should be less than 1 v and greater than 0.7 v\n");
return -1;
}
} else {
printf("The command had no other arguments.\n");
return -1;
}
printf("target voltage would be = %f v\n", target_value);
set_VCCINT_voltage(target_value);
return 0;
}

The monitoring library can be found at here.

 

Please use this citation to refer to this work.

  • Hosseinabady, M & Nunez-Yanez, JL, 2014, ‘Run-time power gating in hybrid ARM-FPGA devices’. in: Conference Digest – 24th International Conference on Field Programmable Logic and Applications, FPL 2014. Institute of Electrical and Electronics Engineers (IEEE)

 

Recommended Articles

6 Comments

  1. is this application to be used on standalone or linux system?

    1. This is for Linux OS.

      1. Thank you for the answer, can I adapt it for a standalone application? which are the changes that I have to do?

    2. Yes, you can modify that for standalone.

      The main file that perform the voltage scaling is power_monitor.c.
      If you look at the file, it is based on the Xilinx code. You can find the equivalent file in the Xilinx Wiki website (maybe at http://www.wiki.xilinx.com/Zynq-7000+AP+SoC+Low+Power+Techniques+part+1+-+Installing+and+Running+the+Power+Demo+Tech+Tip or other parts)

      Just you need to modify and add the function

      float scale_voltage(int iic_fd, unsigned char device_address, unsigned char page, float desired_voltage)

      from my library to that.

    3. Use this reference to get the idea behind the scale_voltage function

      Hosseinabady, M & Nunez-Yanez, JL, 2014, ‘Run-time power gating in hybrid ARM-FPGA devices’. in: Conference Digest – 24th International Conference on Field Programmable Logic and Applications, FPL 2014. Institute of Electrical and Electronics Engineers (IEEE)

  2. thanks for the useful links

Leave a Reply

Sale on now | Up to 80% OFF on All HLS Courses

2 day left!

X
%d bloggers like this: