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 the Linear Circuit Wizard block from the Mixed-Signal Blockset™.

One of the first steps in the design of an 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.

However 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 Linear Circuit Wizard 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, and the switching cycle control signal (Vcntl) is included as well.

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 SPICE netlist TIBoostPowerTrain.sp, written in the Linear Circuit Wizard dialect and included with this example.

### 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 the Analyze operating point button on the Operating Point Analysis tab of the user interface. This creates a plot of the selected output as a function of control input, along with a base workspace 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. The name of the base workspace struct is the string 'Out' appended to the name of the configuration.

The steps to configure the analysis for a boost power train are described in the next subsection, followed by subsections on each of the outputs.

Configuration

The most convenient approach is to load one of the example configuration files and then modify the contents of the Linear Circuit Wizard block mask to meet your requirements.

The `Operating Point Wizard` block in the `OperatingPointWizard` model has been pre-loaded with the analysis configuration TIBoostCfg1.

```modelName = 'OperatingPointWizard'; load_system(modelName); lcwBlock = [modelName,'/Operating Point Wizard']; open_system(lcwBlock); ConfigurationName = 'TIBoostCfg1'; ```

You can load a different configuration by setting the `ConfigurationName` parameter in the `Operating Point Wizard` mask to the name of the desired configuration file and either activating `Load configuration` in the block mask or using the loadConfiguration function included with this example.

You can also configure the analysis from empty mask using the following steps:

1. Load the circuit netlist.

Use the netlist Browse button to select a netlist and then use the Parse netlist file and start new configuration button to parse the netlist and set up the remaining mask tabs.

2. Choose the input and output ports.

In this configuration all of the ports were set up by the circuit netlist. The Delete port button was then used to delete the Vd and Vsense ports that were not needed.

3. Set the number of switch states. and then define the role ("Type") each circuit element plays in the analysis.

In this example the Vcntl Type was set to Timed input, indicating that this is the port where the precisely timed control waveform must be applied. Also, the values for the circuit elements Rsw, Vd, and Rd are a function of the switch state, and these values must be entered for each switch state.

5. Define the switch state transition rules.

In this example there are three transition states. The circuit enters state 1 when the control input goes high and state 2 when the control input goes low. However when the diode current goes negative (iVd <= 0) the circuit enters discontinuous conduction mode, which is state 3.

6. Define the desired operating point(s) and control signal configuration.

The desired output(s) and the timing of the control signal are defined on the Operating point analysis tab. Choose the output port that you want to have controlled and then enter one or more desired output values. In this example voltages of 14, 18 or 24 volts at output port Vout are specified.

7. Save the analysis configuration.

Once you've finished configuring the analysis you should go back to the Circuit definition tab to give the configuration a name, add some notes to remind you what the goal of the configuration was, and then use the Save configuration button to save a configuration file for later use.

8. Launch the analysis.

Use the Analyze operating point button to launch the analysis or use the mask callbacks directly.

```msblks.Circuit.manageCircuitElementList(lcwBlock); msblks.Circuit.packageCircuitAnalysis(lcwBlock,'Operating point analysis'); ```

Results Table

```TIBoostCfg1Out.DcResults ```
```ans = 3x6 table Duty Cycle Frequency Vin Iload Vout Iout __________ _________ ___ _____ ____ ____ 0.35872 1e+05 10 0 14 7 0.51172 1e+05 10 0 18 9 0.65419 1e+05 10 0 24 12 ```

Waveforms

```TIBoostCfg1Out.Waves{2}(1:10,:) ```
```ans = 10x18 table Time Vout Iout State V5 V1 V2 V3 V4 V6 V7 V8 V9 iL1 iVcntl iVin iVd iVsense __________ ______ ______ _____ __ __ ______ _______ ________ ________ ______ ______ ______ ______ ______ _______ ___________ _______ 0 17.488 8.744 1 1 10 9.8189 0.25718 0.076067 0.076067 17.488 18.1 17.488 18.111 0 -18.111 -0.00015738 8.744 9.7656e-09 17.488 8.7439 1 1 10 9.8189 0.2572 0.076073 0.076073 17.488 18.1 17.488 18.112 0 -18.112 -0.00015737 8.7439 1.9531e-08 17.487 8.7437 1 1 10 9.8189 0.25721 0.076078 0.076078 17.487 18.099 17.487 18.114 0 -18.114 -0.00015737 8.7437 2.9297e-08 17.487 8.7435 1 1 10 9.8189 0.25723 0.076083 0.076083 17.487 18.099 17.487 18.115 0 -18.115 -0.00015737 8.7435 3.9063e-08 17.487 8.7433 1 1 10 9.8188 0.25725 0.076088 0.076088 17.487 18.099 17.487 18.116 0 -18.116 -0.00015736 8.7433 4.8828e-08 17.486 8.7431 1 1 10 9.8188 0.25727 0.076093 0.076093 17.486 18.098 17.486 18.117 0 -18.117 -0.00015736 8.7431 5.8594e-08 17.486 8.7429 1 1 10 9.8188 0.25728 0.076099 0.076099 17.486 18.098 17.486 18.119 0 -18.119 -0.00015736 8.7429 6.8359e-08 17.485 8.7427 1 1 10 9.8188 0.2573 0.076104 0.076104 17.485 18.097 17.485 18.12 0 -18.12 -0.00015735 8.7427 7.8125e-08 17.485 8.7425 1 1 10 9.8188 0.25732 0.076109 0.076109 17.485 18.097 17.485 18.121 0 -18.121 -0.00015735 8.7425 8.7891e-08 17.485 8.7424 1 1 10 9.8188 0.25734 0.076114 0.076114 17.485 18.097 17.485 18.122 0 -18.122 -0.00015735 8.7424 ```

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

```TIBoostCfg1Out.SSModels(2) ```
```ans = struct with fields: A: [4x4 double] B: [4x3 double] C: [2x4 double] D: [2x3 double] tau: 1.0000e-05 InputPorts: {'Vin' 'Iload' 'Duty cycle'} OutputPorts: {'Vout' 'Iout'} ```

### 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.

```getPowerTrainMetrics; ```

Power Analysis Table

```TIBoostCfg1Out.DcResults(:,7:18) ```
```ans = 3x12 table P_Vcntl P_Vin P_R6 P_RL1 P_Rsw P_Vd P_Rd P_R2 P_Vsense P_Rload P_Iload P_total _______ _______ ______ ______ _______ ______ _______ ______ __________ _______ _______ _________ 0 -109.19 1.1925 1.1925 0.18606 6.298 0.43624 1.7937 3.6849e-15 98.057 0 -0.03801 0 -184.37 3.3997 3.3997 0.73998 8.0853 0.9457 5.5502 2.6608e-15 162.17 0 -0.084399 0 -347.1 12.048 12.048 3.3226 10.79 2.3754 17.8 3.1193e-14 288.6 0 -0.11501 ```

Efficiency and Ripple Metrics

```TIBoostCfg1Out.DcResults(:,19:end) ```
```ans = 3x5 table Efficiency Vin_ripple Iin_ripple Vout_ripple Iout_ripple __________ __________ __________ ___________ ___________ 0.90792 0.0046524 0.46524 0.82912 0.41456 0.89609 0.0065185 0.65185 1.4201 0.71003 0.86136 0.0079875 0.79875 2.6524 1.3262 ```