
                       Frequency Response Analysis

These examples show to how to extract the small-signal, AC open-loop
gain from time-domain, closed-loop simulations.  The technique is a
subset of the method shown in ../LoopGain.asc and ../LoopGain2.asc.
The method assumes that the input impedance of the error amplifier is
infinite so that the loop gain can be computed solely by the voltage
loop gain.

The open-loop gain is computed from the closed-loop system by inserting
a perturbing voltage source in the loop and measuring how well the
perturbation is servoed out of the the loop via the feedback.  The
open-loop gain is given by the ratio of complex voltages at either side
of the perturbing voltage source.

But since the SMPS macromodels are implemented as time-domain models
that include detailed switching information but don't include
continuous-time(average) equivalents, the complex voltage is determined
from Fourier analysis of a time-domain sine wave perturbation.

A script of .measure statements is used to perform the Fourier analysis
and computer the open-loop response.  To use this script into your own
SMPS design, follow these steps:

1.  Place these .measure statements on your circuit as a SPICE
    directive:

     .measure Aavg avg V(a)
     .measure Bavg avg V(b)
     .measure Are avg  (V(a)-Aavg)*cos(360*time*Freq)
     .measure Aim avg -(V(a)-Aavg)*sin(360*time*Freq)
     .measure Bre avg  (V(b)-Bavg)*cos(360*time*Freq)
     .measure Bim avg -(V(b)-Bavg)*sin(360*time*Freq)
     .measure GainMag param 20*log10(hypot(Are,Aim) / hypot(Bre,Bim))
     .measure GainPhi param mod(atan2(Aim,Are)-atan2(Bim,Bre)+180,360)-180

2.  Insert a voltage source in the feedback loop under analysis.  Give
    this voltage sourse the value SINE(0 5m {Freq})

3.  Place a SPICE directive on the schmatic that defines Freq:

     .param Freq=10K
 
4.  Run a .tran command to see how long it takes your circuit to come to
    steady state and then edit the .tran command so that data isn't saved
    until this time.

5.  Rerun the .tran command to do the analysis at the frequency defined
    with the .param statement of step 3.

6.  Execute menu command View=>SPICE Error Log to see the results of this
    analysis.  The open-loop response magnitude is given by GainMag[dB]
    and the phase is given by  GainPhi[°].

You can iterate the param Freq to zero dB.  That frequency is the loop
crossover frequency and phase margin will be reported as GainPhi in the
error log.

You can set up a .step statement to sweep the parameter Freq.  Then you
can plot the open-loop response be executing menu command
View=>SPICE Error Log, and then right mouse clicking and executing menu
command "Plot .step'ed .meas data"  Answer yes to the dialog that asks
if LTspice should combine the real .meas data to complex data.  Then you
can plot the quanity gain to get a Bode plot the open-loop response of
the system.

--Mike