Main Content

Buck Power Train Design Workflow

This example shows how to use the MathWorks® switched mode power supply (SMPS) workflow to design a power supply with a buck power train.

The buck power train circuit topology is one of the most basic SMPS power train topologies, used to convert an input DC voltage to a lower DC output voltage with the same polarity. You can use the MathWorks SMPS workflow to design the buck power train for a specified operating point or range of operating points, design a proportional-integral-derivative (PID) compensator to control the output voltage, and simulate the power supply's behavior in dynamic conditions.

This example uses the buck power train circuit shown in the schematic diagram below and described in the netlist file BuckPowerTrain.sp.

Operating Point Analysis

You can use operating point analysis to design the power train and analyze its performance under steady state operating conditions. For more information, see Boost Power Train Operating Point Analysis.

If you use the configuration file BuckPowerTrain_Cfg1 included with this example to configure and run the operating point analysis, you will obtain the data contained in the file BuckPowerTrain_Cfg1Out. The DcResults table in this file also contains the metrics added through the post-processing script getPowerTrainMetrics included as part of the operating point analysis example.

DC Results Table

ans =

  1x7 table

    Duty Cycle    Frequency    Vg    Iload    Vout    Iout      Ig   
    __________    _________    __    _____    ____    ____    _______

     0.55245        1e+05      28      0       15      5      -2.7626

Power Analysis Table

ans =

  1x11 table

    P_Vcntl     P_Vg       P_Rsw      P_Vd      P_Rd       P_Rl        P_Rc       P_Vsense    P_Rload    P_Iload    P_total 
    _______    _______    _______    ______    _______    _______    _________    ________    _______    _______    ________

       0       -77.296    0.43242    1.5681    0.11701    0.25173    0.0016496       0          75          0       0.075021

Efficiency and Ripple Metrics

ans =

  1x5 table

    Efficiency    Vin_ripple    Iin_ripple    Vout_ripple    Iout_ripple
    __________    __________    __________    ___________    ___________

      0.9703          0           5.7074       0.014105       0.0047018 

The Waves table in the BuckPowerTrain_Cfg1Out file provides access to all of the steady state voltage and current waveforms in the power train circuit, and you can use these waveforms to gain insights into the way the circuit operates. For example, the waveform at the switching node (node 3) of the circuit demonstrates the effect of the switching device and diode on the input voltage of the inductor. When the switching device is turned on, it draws current from the input supply, through the inductor and into the decoupling capacitor and load. During this period, the switching node is at a higher voltage than the output, causing the current in the inductor to increase. However when the switching device is turned off, the only current path available to the inductor is the diode to the return node. Since the current must continue to flow, the inductor drives the diode's negative terminal below the return voltage. This causes the inductor current to decrease, but it continues to flow unless/until the current in the diode reaches zero, turning the diode off.

Switching Node Waveforms

t       = BuckPowerTrain_Cfg1Out.Waves{1}.Time;
vswitch = BuckPowerTrain_Cfg1Out.Waves{1}.('3');
iL1     = BuckPowerTrain_Cfg1Out.Waves{1}.iL1;
% Inductor output voltage
title('Buck Power Train Switching Node Waveform');
% Inductor current
title('Buck Power Train Inductor Current');

From the operating point analysis and the configuration file BuckPowerTrain_Cfg1 you can also build a Simulink® block that can be used to model the power train in a time domain simulation ("Build block" from the Linear Circuit Wizard mask). The Power Train block in the BuckPowerSupply Simulink model was constructed this way.

Compensator Design

Reference [1] explains how to design a PID controller to control a buck power train. The PID compensator circuit shown in the schematic below and described in the file PIDCompensator.sp was designed using the method given in [1].

You can obtain the poles, zeros and symbolic model of this circuit and optimize its design by applying the configuration in the file PIDCompensator_Cfg1 to the method described in the Feedback Amplifier Design for Voltage-Mode Boost Converter example. You can find the results obtained for the starting configuration in the file PIDCompensator_Cfg1Out attached to this example.

PIDCompensator_Cfg1PoleZero = 

  struct with fields:

              Poles: [2x1 double]
              Zeros: {[2x1 double]  [2x1 double]}
              Gains: [-329.5526 1.0000e+03]
     InputPortNames: {'Vload'  'Vref'}
    OutputPortNames: {'Vcomp'}

PIDCompensator_Cfg1SymbolicModel = 

  struct with fields:

      As: {2x2 cell}
      Bs: {2x2 cell}
      Cs: {1x2 cell}
      Ds: {'-333.3333*R1^-1'  '333.3333*R1^-1'}
    e11s: {'3e-08*C3'}
    f22s: {'333.6667*R3^-1 + 0.33333*R4^-1 + 0.33333*R1^-1'}

You can also build a Simulink block for the compensator, either from the configuration in PIDCompensator_Cfg1 or for an optimized compensator that you have designed ("Build block" from the Linear Circuit Wizard mask). The Compensator block in the BuckPowerSupply Simulink model was constructed this way.

Time Domain Simulation

You can combine the power train Simulink block from the operating point analysis with the compensator Simulink block from the controller design and a pulse width modulator (PWM) to be discussed in this section to create a time domain simulation of the closed loop behavior of the power supply.

The PWM interacts with ripple at the output of the compensator, making details of the PWM design/definition important. While most analyses ignore any ripple that passes from the output of the power train to the output of the compensator, there can be ripple at the output of the compensator that significantly affects the closed loop behavior of the power supply. Power train output ripple is inherently synchronous with the control signal provided by the PWM, and so any delay between the time the PWM derives the width of the next pulse from the compensator output and the time the PWM outputs that pulse will increase the delay in the control loop and reduce the phase margin. Ripple at the compensator output also appears to affect the small signal behavior of the control loop in other ways that should be evaluated through analysis of time domain simulation results.

The model BuckPowerSupply enables you to switch between two different PWMs.


The first choice offered is the Simulink PWM block, which reads the output pulse width from the control input on the rising edge of the output pulse. To use this PWM, set the manual switches Switch 1 and Switch 2 in the model to their upper positions. Run this model and compare the steady state outputs of the power train output and the compensator to the output of the PWM. Note that the steady state duty cycle of 0.5524 occurs near the beginning of the ripple cycle and that the ripple voltage increases from there.

Many texts on SMPS specify the PWM circuit shown below explicitly and in detail for voltage controlled operation. Note that in this circuit the falling edge of the PWM output occurs essentially as soon as the sawtooth ramp has become higher than the compensator output.

The other PWM choice in the model BuckPowerSupply uses a MATLAB® function block and several unit delay blocks to closely approximate the behavior of this circuit. To use this PWM, set the manual switches Switch 1 and Switch 2 in the model to their lower positions. Run BuckPowerSupply and note that the falling edge of the PWM output occurs at the peak of the compensator output ripple waveform, and that the value at that point is equal to the steady state output duty cycle.


1. R. W. Erickson and D. Maksimovic, Fundementals of Power Electronics, 3rd, Ed., Cham, Switzerland: Springer Nature, 2020.