I have a simple boost converter, and from multiple papers I've read through, a Type 3 Compensator is recommended. I designed one in Matlab/Simulink, and it reacts very quickly. The problem is, when I solve for the poles of the transfer function, there is the one at the origin and then two imaginary poles. According to TI report SLVA662 (on page 9) the equation for a Type 3 Compensator is

enter image description here

Obviously, the roots of this transfer function are always going to be real (unless there's a way to implement imaginary resistor or capacitor values I'm unaware of!)

I don't necessarily need a Type 3 if I can implement my other two-zero three-pole compensator system, but I'm a bit stuck on how to do this without digitizing the control loop.



Ok, for more clarification, the transfer function of the compensator I designed is:

enter image description here

The poles are at 0 and - 1.6e5 +/- j9.2e4. The zeros are at -7.9e3 +/- j3.4e3.

I cannot get the numerator/denominator of this transfer function to match the numerator/denominator of H(s) above with real resistor and capacitor values.

So my overall question is: how do I implement two complex conjugate imaginary poles or zeros in a compensator transfer function with an analog circuit, if even possible?

Here's the comparison of the simulation results between my Type 3 compensator and the ADRC compensator I designed in Simulink. You can see it's far superior to the Type 3 compensator.

enter image description here

  • \$\begingroup\$ I do not understand the problem here. The boost converter operated in voltage-mode control (VM) requires indeed a type-3 compensator. You will find all the design details in this APEC seminar (cbasso.pagesperso-orange.fr/Downloads/PPTs/…). The poles at resonance in the control-to-output transfer function are compensated by a pair of zeroes judiciously organized while poles will compensate for the ESR contribution and high-frequency roll-off for noise immunity. \$\endgroup\$ Commented Mar 20, 2019 at 14:08
  • \$\begingroup\$ You have a complete design example in this more recent seminar also: cbasso.pagesperso-orange.fr/Downloads/PPTs/… \$\endgroup\$ Commented Mar 20, 2019 at 14:10
  • 1
    \$\begingroup\$ Do you not understand that imaginary poles can be due to real resistors and real capacitors? \$\endgroup\$
    – Andy aka
    Commented Mar 20, 2019 at 14:12
  • \$\begingroup\$ @NIcku Ask a specific question, its unclear what your problem is. You'll get better answers \$\endgroup\$
    – Voltage Spike
    Commented Mar 20, 2019 at 14:40
  • 1
    \$\begingroup\$ C is not imaginary. s is complex, and has an imaginary part, so your poles can be imaginary. \$\endgroup\$ Commented Mar 20, 2019 at 14:52

1 Answer 1


A real transfer function (from the reals into the reals) must have either real poles or sets of (2) complex conjugate poles. There are no other options.

You can always combine such sets of complex conjugate poles into a real second-order polynomial. Which can thus be implemented with real physical components. This does require that the chosen circuit topology does not assume a priori that the poles are real.

In your example: \$s(s+j18000)(s-j18000)\$ can be simply combined to obtain: \$s(s^2+18000^2)\$ note that this is not physically realizable not because of it being complex, but because it has infinite Q as the poles are on the imaginary axis. It has no energy loss thus it cannot be implemented in a circuit with resistors. At least not with actual physical positive-valued resistors, if you include negative-valued resistors (which can be implemented with active components) then the dissipative terms can be cancelled out.

However, if you have ideal inductors and ideal capacitors, this is just an LC circuit like this one:


simulate this circuit – Schematic created using CircuitLab

(Note that I only bothered implementing the poles, the (complex) zeros and scaling factors are wherever they happened to fall.)

Although it should be possible to find a passive element arrangement that would do what you want, the most straightforward route to implement generalized second order sections with somewhat arbitrary poles and zeros is to use either a biquad topology or a state-space filter. That is decompose the problem into a set of active integrators with appropriate feedbacks. In your case, a biquad might be the easiest route.

Biquadratic transfer function

Biquadratic topology

(Images taken from Dr. Elizabeth Tuttle's class website)

  • \$\begingroup\$ Thank you for the reply - please see the updated transfer function. I neglected to include the real part of the poles. Though it seems like this doesn't change the overall answer that it's not possible to create imaginary components of the roots with physical parts? \$\endgroup\$
    – Nick U.
    Commented Mar 20, 2019 at 16:43
  • \$\begingroup\$ You misunderstood the answer. It is always possible to do so. You just have to use the proper circuit topology, one that does not assume a priori that all of the poles are real. \$\endgroup\$ Commented Mar 20, 2019 at 16:45
  • \$\begingroup\$ Sorry, miswording, I understand what you're saying - I can't use the Type 3 compensator to implement roots with imaginary components. So then I guess my question then becomes how to implement my designed transfer function into a feedback loop. \$\endgroup\$
    – Nick U.
    Commented Mar 20, 2019 at 16:51
  • \$\begingroup\$ @NickU. I updated the answer. A biquad might be what you are looking for. \$\endgroup\$ Commented Mar 20, 2019 at 17:10
  • \$\begingroup\$ I vaguely remember this circuit from a class I took in college years ago - thank you so much! I will definitely investigate this. \$\endgroup\$
    – Nick U.
    Commented Mar 20, 2019 at 17:30

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.