# TPS54160: Question about equation in design example of worksheet Page 37 Equation 47.

Part Number: TPS54160

I wrote a C++ Program to try to calculate the equation 47  the data sheet

Can't paste the data sheet equation in but I will give you the C++ code and Output to show what the computer calculates.

Below are inputs to the equation:

// set RLOAD to 10 ohms
R_LOAD = 3.3 / .33; // tenth the current
cout << "fc = " << fc << endl;
cout << "COUT = " << COUT << endl;
cout << "pi = " << pi << endl;
COUT_Resr = 10.0e-3;
cout << "COUT_Resr = " << COUT_Resr << endl;

values printed out by the C Program:

COUT = 4.7e-05 after derating
fp_MOD = 1539.22
pi = 3.14159
COUT = 4.7e-05
fz_MOD = 338628
fc_max = 45353.6
fc_min = 7696.08
fc = 45000
fc = 45000
COUT = 4.7e-05
pi = 3.14159
COUT_Resr = 0.01

G_MOD_fc = 67.773   value come back

C++ Equation

G_MOD_fc_numerator = gm_ps * R_LOAD * ( (2.0 * pi * fc * COUT * COUT_Resr ) + 1.0);
G_MOD_fc_denominator = ( 2.0 * pi * COUT * (R_LOAD + COUT_Resr ) ) + 1.0;
G_MOD_fc = G_MOD_fc_numerator / G_MOD_fc_denominator;
//
cout << "G_MOD_fc = " << G_MOD_fc << endl;

G_MOD_fc = 67.773   // Calculated output from C++ Program

Expected answer in the data sheet is

For the example problem, the gain of the modulator at the crossover frequency is 0.542. Next

This is on page   37 of the data sheet.

Thanks for any help on this

• gm_ps = 6

The gm_ps is 6.0 Amps/Volt
• fc is missing from the denominator.

TI Wide Vin Buck Converter & Controller Applications Engineer

Thank You Yang,

I would like to go to another equation in the app note:

Equation 51 and 48 calculate a R_C value.  When I plug in the values into the equation the numbers for Equation 51 seem to be wrong here is the

C code I am using:

// 51

double R_C;
double gm_EA;
double VREF;
fz_MOD = 338.0e3;
gm_EA = 97.0e-6;
VREF = 0.8;
G_MOD_fc = 0.542;
cout << "fz_MOD = " << fz_MOD << endl;
cout << "gm_EA = " << gm_EA << endl;
cout << "VREF = " << VREF << endl;
cout << "VOUT = " << VOUT << endl;
cout << "G_MOD_fc = " << G_MOD_fc << endl;
//R_C = ( VOUT ) / ( G_MOD_fc * fc * gm_EA * VREF ); // 51 fz_MOD
//cout << ( G_MOD_fc * fz_MOD * gm_EA * VREF ) << endl;
R_C = VOUT / ( G_MOD_fc * fz_MOD * gm_EA * VREF ); // 51 fz_MOD
cout << "R_C = " << R_C << endl;
R_C = ( VOUT ) / ( G_MOD_fc * gm_EA * VREF ); // 48
cout << "R_C = " << R_C << endl;

And the output or values I used in the equations:

fz_MOD = 338000
gm_EA = 9.7e-05
VREF = 0.8
VOUT = 3.3
G_MOD_fc = 0.542
R_C = 0.232133
R_C = 78460.8

expected value is

• RC = 76.2 kΩ

Not that for equation 51 it is very small:

Equation 48 seems reasonable.  The app note suggests need to use equation 51 for this example:

Expected values:

For the example problem, the ESR zero is located at a higher frequency compared to the crossover frequency so
Equation 50 through Equation 53 are used to calculate the compensation components. In this example, the
calculated components values are:
• RC = 76.2 kΩ
• CC = 2710 pF
• Cƒ = 6.17 pF

This is on page 38 of TPS54160.pdf data sheet.

Thanks.

• In reply to Gary Olson:

This equation appears to be wrong: from the above post

R_C = VOUT / ( G_MOD_fc * fz_MOD * gm_EA * VREF );

The output value that comes out of the program is
R_C = 0.232133
• In reply to Gary Olson:

App note SLVS9492.pdf   (heading at the top   TPS54620.  Entitled

TPS54620 4.5 to 17V input 6-A Synchronout Ste Downt Swift Converter

Calculating the Type 2 compensation resistor R4 in this app note

had an equation on page  28    equation number 35

R4_num = 2.0 * pi * fc * VOUT * COUT;
R4_denom = ( gm_ps * gm_EA * VREF );

R4 = R4_num / R4_denom;

I can get a resistance in the ball park especially if I change the fc = 36500

leaving all the other parameters the same.

double R4_num;
double R4_denom;
//double R4;

//fc = 0.1 * f_sw_hz;
fc = 36500.0;

R4_num = 2.0 * pi * fc * VOUT * COUT;
R4_denom = ( gm_ps * gm_EA * VREF );

R4 = R4_num / R4_denom;

cout << endl << endl << endl;

cout << "fc = " << fc << endl;
cout << "VOUT = " << VOUT << endl;
cout << "COUT = " << COUT << endl;
cout << "gm_ps = " << gm_ps << endl;
cout << "gm_EA = " << gm_EA << endl;
cout << "VREF = " << VREF << endl;
cout << endl;

cout << "R4_num = " << R4_num << endl;
cout << "R4_denom = " << R4_denom << endl;
cout << "R4 = " << R4 << endl;

Results of C++ output

fc = 36500
VOUT = 3.3
COUT = 4.7e-05
gm_ps = 6
gm_EA = 9.7e-05
VREF = 0.8

R4_num = 35.5701
R4_denom = 0.0004656
R4 = 76396.2

when fc is left at 45000

R4_num = 43.8535
R4_denom = 0.0004656
R4 = 94187.1