Small signal Forward converter

I am back again on this subject. I found the control to output transfer function (Iout/Vc) of my forward converter (current mode) which is particular as it is without output capacitor. Actually it is more simple as there is only 2 storage elements and the order of the system is less than if there was a capacitor. All of this work have been done thanks to several documents that I found on the web, and particularly those coming from Christophe Basso and Dr. Middlebrook.

To verify that my tranfer function is correct, I decided to simulate it on LTspice and plot it thanks to python.

The transfer function depends on a lot of parameters. Especially it depends on the "artificial ramp compensation (Sa)" and on the "On slope compensation (Sn)"

Here is the transfer function :

$$H(s) = \frac{K_0}{1+Rout*g_0}*\frac{1}{1+\frac{w_n}{Q}s+\frac{s^2}{w_n}}$$

(If you are interested I can write you Q and wn)

where the K_0 and g_0 are equal to (from Christophe Basso (APEC 2014)) :

It seems that I have a problem for setting correctly the "artificial ramp compensation" and the "On slope compensation" as when I set the Sa term to 0, the bode diagramm from python and Ltspice fits perfectly.

Here is the simulation :

I do not think that my Sn term is wrong. It is simply the di/dt given by the ratio between the voltage across the inductor and the value of the inductance.

My compensation is based on this scheme.

In order to find the coefficient "Sa", I decided to simulate the voltage across Rsense with the compensation and the output contribution and to simulate the same voltage without the compensation. Then I took the derivative of each voltage and substract them for having only the slope of the voltage across Rsense in order to get the "Sa" term (the artificial slope). When I got the term I set it on python, and I was so excited to get the correct result ! And then, The gain at s=0 is not correct and it depends on the Sa/Sn term... (g0)

If you have some ideas to help me it will be a pleasure to see it ;)

From my side Sa = 1528000 A/s (My converter is a big converter ^^)

Have a good night !

• Why not use the primary side like PC PSU’s? For lower losses. Jan 24, 2021 at 22:24
• This is an AC simulation and my simulation does not take into account losses as I did in the transfer function.
– Jess
Jan 25, 2021 at 9:56

We can certainly compare the ac response of the forward converter modeled with the CM PWM switch model by running a SIMPLIS simulation. For that purpose, one of the 60+ free templates I posted can be a good candidate for this experiment:

In this example, you see that slope compensation is implemented in a different way than I used to do. With this approach, the added slope matches the theoretical numbers. I transform a 1-V sawtooth affected by a coefficient $$\k_r\$$ into a current that I inject into a 1-$$\\Omega\$$ resistance. This current is added with the inductor current scaled with the sense resistance value used as a coefficient. By adjusting $$\k_r\$$, I can tailor the exact amount of the injected slope. For instance, with a 10-µs period and the 1-V peak value, the artificial slope is 1/10µ = 100 kV/s. If I want a 16.8 kV/s slope, simple set $$\k_r\$$ to 168m and you are all set.

It is easier to do with the SPICE average model as there is a parameter than I can set to 16.8 kV directly. Please note - and this is important - the magnetizing current in a forward converter acts as a free compensation ramp. If you add a 16.8-kV/s slope, the total compensation is the sum of the magnetizing ramp and the external value. If SIMPLIS does it naturally because it is a cycle-by-cycle simulation with a transformer featuring a magnetizing inductance, you have to account for this contribution in the average model:

If you now run both simulation engines without an external compensation ramp (but the magnetizing ramp is always there), then you see the below plots with a good match between SPICE and SIMPLIS:

When I set the external ramp to 16.8 kV/s, as expected, the double poles are damped but matching is still very good:

In a practical realization, the recommended option based on the drive signal is a good and robust way to provide external ramp. However, depending on the loading of the ramp generator, you may end up with a slightly different compensation level which is not a big deal in reality: there is no need for an absolute ramp amplitude precision for a good compensation. Resorting to a more precise implementation with the current source is a possible option when one wants to compare responses between models.

By the way, you can see a magnitude and phase deviation between SIMPLIS and SPICE. This is due to the approximate modeling of the sampling effect in the inner current loop. You can have a look at a recent article I recently released on the subject which explains how this loop has been modeled by Ridley. If you adopt the real sampled equation, then SIMPLIS and SPICE perfectly agree well beyond $$\\frac{F_{sw}}{2}\$$. See here for more details on how to do it.

• Thank you for your comment I will try to exactly control the artificial ramp as you sujest it to me ! Thank you again for you help. I do not know SIMPLIS and I have still a lot of things to learn aboout Ltspice... But I should take a look on it ! About the magnetizing current, I set a perfect transformer so there is no magnetizing inductance in my simulation but I took the information :) Each time I read a post, I learned ;)
– Jess
Jan 25, 2021 at 17:41
• @Jess For proper frequency analysis of a SMPS, SIMPLIS is the way to go. A pity the demo version is so crippled, but with a bit of tweaking, basic stages can be modelled. But, as long as the frequency of interest (in analysis) is less than half or so of the switching frequency, other SPICE simulators can be used successfully. Jan 25, 2021 at 18:42
• Thank you for your comment ! It is really interesting to have all your comments to take the right way !
– Jess
Jan 25, 2021 at 18:46
• Ok I found my error ;) Sa is the slope dv/dt across the rsense resistor and Sn is also the slope dv/dt across the sense resistor. Isn't it ? I was thinking it was about the slope of current through the output inductance in a buck converter for example. I was computing the artificial current through the output inductance...
– Jess
Jan 25, 2021 at 18:59
• I am happy to see that my transfer function fits perfectly the simulation :)
– Jess
Jan 25, 2021 at 19:00