git-svn-id: http://moon:8086/svn/projects/ltspice@388 fda53097-d464-4ada-af97-ba876c37ca34
68 lines
2.9 KiB
Plaintext
68 lines
2.9 KiB
Plaintext
|
|
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 |