Main Content

Boost Power Train Operating Point Analysis

This example shows how to analyze the operating point of a power train for a boost switched-mode power supply (SMPS) using behavioral circuit modeling and analysis tools from the Mixed-Signal Blockset™.

One of the first steps in the design of a SMPS is to determine the control duty cycle needed to obtain a desired steady state output under a fixed set of supply and load conditions, referred to as an operating point. This analysis must also create the power train small signal control model needed to design the power supply control loop.

Even before the control loop is designed, some form of operating point analysis is needed to choose the power train circuit topology and the circuit elements to be used in the power train. There are typically many options available, and each combination of options that can produce the required output must be analyzed for efficiency, output ripple, input ripple and cost in order to settle on a power train circuit design.

You can use the cktoperpoint to perform a complete operating point analysis, leading to a detailed power train circuit design and the models needed to design the power supply control loop. The design of the power supply control loop is demonstrated in a separate example, Feedback Amplifier Design for Voltage-Mode Boost Converter.

Power Train Circuit

The power train circuit design used in this example was adapted from a widely used tutorial on feedback loop analysis. Operating point analysis must be capable of providing comprehensive information on very detailed circuit designs, and so the circuit design used in this example includes detailed models of commercially available parts for the switching device, diode and inductor (except that the inductance is the 75uH of the original example instead of the 104uH for the commercial part). A load current source is included to model the powering of semiconductor devices.

Two resistance values are shown for the switching device and the diode - an "on" resistance and an "off" resistance.

The circuit is described by the Simscape™ model TIBoostPowerTrain.slx. The port controlling the gate of Q1 is implemented by the Controlled Voltage Source cQ1. The prefix "c" differentiates it as a control signal (which can only be 1 or 0), while the "Q1" associates it with transistor Q1. The Equivalent Series Resistance (ESR) of the inductor is modeled by RL1 because the behavioral model ignores the Series resistance parameter from the inductor itself.

modelName = "TIBoostPowerTrain";
load_system(modelName);

Analysis of a Single Design Point

The analysis process begins by configuring the analysis of a single set of circuit element values and operating conditions, referred to in this example as a "design point".

Once the analysis has been configured, you can run the analysis using cktoperpoint. This creates a plot of the selected output as a function of control input, along with a struct containing a table of DC results, a set of detailed waveforms, and the control system matrices needed to construct a small signal model of the power train for use in designing the power supply control loop.

Configuration

Call the cktconfig function to parse the diagram and create a circuit configuration.

  • Text to display on the block: the model name (TIBoostPowerTrain)

  • Block name in Simulink: Boost

  • Port order: cQ1, Vg, Iload, Vout, Iout, Ig

  • Input values at which to do the analysis: Vin = 10 V, ILoad = 0 A

cfg = cktconfig(modelName, ...
    CircuitDesignName=modelName, ...
    BlockName='Boost', ...
    Ports={'cQ1','Vg','Iload','Vout','Iout','Ig'}, ...
    InputValues={ ...
    'Vg','Iload'; ... % Row 1: Names
    10,   0});         % Row 2: Values);

In addition to the circuit itself, AC operating point analysis requires the following metadata:

  • Output port to analyze: Vout

  • Output value(s) to find a duty cycle for: 14 V, 18 V, 24 V

  • Control variable type: Duty Cycle

  • Duty cycle range: 10% <= dc <= 90%

  • Frequency of the control signal: 200 kHz

  • Phase: 0

  • Pulse duration variable name: d

  • Samples per switch cycle: 1024

cfg.OutputPort = 'Vout';
cfg.OutputValues = [14,18,24];
cfg.ControlVariable = 'Duty cycle';
cfg.DutyCycle = [0.1 0.9];
cfg.Frequency = 200000;
cfg.PhaseOffsets = '0';
cfg.PulseDuration = 'd';
cfg.WaveSamples = 1024;

[results,plotdata,waves,ssmodels] = cktoperpoint(cfg);

Results Table

results
results =

  3×7 table

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

     0.33461        2e+05      10      0       14     1.4     2.1042
     0.47864        2e+05      10      0       18     1.8     3.4528
     0.60859        2e+05      10      0       24     2.4      6.132

Waveforms

waves{2}(1:10,:)
ans =

  10×23 table

       Time        Vout     Iout_out    Ig_out    State     Iout       Ig       iL1        iVg      icQ1      V1         V2        V3        V4       V5      V6       V7       V8      V9      vdDiode      ivfDiode     vdQ1    ivbdQ1 
    __________    ______    ________    ______    _____    ______    ______    ______    _______    ____    ______    ________    _____    ______    _____    __    ________    __    ______    ________    __________    ____    _______

             0    17.884     1.7884     3.2952      3      1.7884    3.2952    3.2952    -3.2952     0       18.01    0.014169    9.967    17.884    9.967    1     0.047122    10    17.884    0.014169    -1.787e-07     0      -3.2952
    4.8828e-09    17.884     1.7884     3.2959      3      1.7884    3.2959    3.2959    -3.2959     0      18.009    0.014172    9.967    17.884    9.967    1     0.047131    10    17.884    0.014172    -1.787e-07     0      -3.2959
    9.7656e-09    17.884     1.7884     3.2965      3      1.7884    3.2965    3.2965    -3.2965     0      18.009    0.014175    9.967    17.884    9.967    1      0.04714    10    17.884    0.014175    -1.787e-07     0      -3.2965
    1.4648e-08    17.884     1.7884     3.2972      3      1.7884    3.2972    3.2972    -3.2972     0      18.009    0.014178    9.967    17.884    9.967    1     0.047149    10    17.884    0.014178    -1.787e-07     0      -3.2972
    1.9531e-08    17.884     1.7884     3.2978      3      1.7884    3.2978    3.2978    -3.2978     0      18.009    0.014181    9.967    17.884    9.967    1     0.047159    10    17.884    0.014181    -1.787e-07     0      -3.2978
    2.4414e-08    17.884     1.7884     3.2984      3      1.7884    3.2984    3.2984    -3.2984     0      18.009    0.014183    9.967    17.884    9.967    1     0.047168    10    17.884    0.014183    -1.787e-07     0      -3.2984
    2.9297e-08    17.884     1.7884     3.2991      3      1.7884    3.2991    3.2991    -3.2991     0      18.009    0.014186    9.967    17.884    9.967    1     0.047177    10    17.884    0.014186    -1.787e-07     0      -3.2991
     3.418e-08    17.884     1.7884     3.2997      3      1.7884    3.2997    3.2997    -3.2997     0      18.009    0.014189    9.967    17.884    9.967    1     0.047186    10    17.884    0.014189    -1.787e-07     0      -3.2997
    3.9063e-08    17.884     1.7884     3.3004      3      1.7884    3.3004    3.3004    -3.3004     0      18.009    0.014192    9.967    17.884    9.967    1     0.047195    10    17.884    0.014192    -1.787e-07     0      -3.3004
    4.3945e-08    17.884     1.7884      3.301      3      1.7884     3.301     3.301     -3.301     0      18.009    0.014194    9.967    17.884    9.967    1     0.047205    10    17.884    0.014194    -1.787e-07     0       -3.301

The waves continue for 1024 samples. Also note that the state and all of the node values are included in the table.

Small Signal Model

ssmodels(:,:,2)
ans =
 
  A = 
            x1       x2
   x1   0.9957  -0.0344
   x2  0.01173   0.9975
 
  B = 
               Vg       Iload  Duty cycle
   x1     0.06657    0.002615       1.267
   x2   0.0002042    -0.02253    -0.07426
 
  C = 
                x1         x2
   Vout    0.03922     0.9918
   Iout   0.003922    0.09918
   Ig       0.9989  -0.008984
 
  D = 
                 Vg       Iload  Duty cycle
   Vout           0    -0.06951           0
   Iout           0       0.993           0
   Ig             0           0           0
 
Sample time: 5e-06 seconds
Discrete-time state-space model.

Adding Metrics to the Analysis

Given the waveforms in the output struct you can implement your own metrics. The script getPowerTrainMetrics included with this example demonstrates the type of analyses that are possible. This script appends results to the DcResults table show above. It uses the function getCircuitElementPower to perform much of the detailed data access.

Run the getPowerTrainMetrics script, display the power analysis table, the efficiency metrics derived from the power analysis table, and the ripple metrics derived from the waveforms.

results = getPowerTrainMetrics(cfg,waves,results,"V8","Ig","V9","Iout");

Power Analysis Table

results(:,7:18)
ans =

  3×12 table

      Ig       P_Vg      P_Iload      P_R2       P_RL1        P_Rg      P_Rload    P_total    Efficiency    Vin_ripple    Iin_ripple    Vout_ripple
    ______    _______    _______    ________    ________    ________    _______    _______    __________    __________    __________    ___________

    2.1042    -21.049       0       0.068268    0.044345    0.044345      19.6     -1.2912     0.93317          0          0.22182          0.154  
    3.4528    -34.534       0        0.20571     0.11934     0.11934    32.401     -1.6892     0.94147          0          0.31633        0.25104  
     6.132    -61.327       0        0.61808     0.37623     0.37623    57.602     -2.3541     0.94506          0          0.39955        0.44511  

Efficiency and Ripple Metrics

results(:,19:end)
ans =

  3×1 table

    Iout_ripple
    ___________

       0.0154  
     0.025104  
     0.044511