I am trying to implement a voltage controller for a buck-boost converter using FPGA. The control method I'm trying to use is in this paper:


The control diagram for the converter (plant) is below:

Control scheme in paper

Plant and compensator equations from the paper:

enter image description here

The basic idea is that if the converter's transfer function is given by Gvd(s), then the compensator's transfer function is given by G1(s) - Gvd(s) so that in the result, which is their sum, the plant's transfer function (which is unstable and hard to compensate in series) is cancelled, leaving a conveniently stable transfer function.

As I plan to implement the parallel compensator within the FPGA, I think I can enter the feedback output voltage through an ADC, arrange the reference signal internally and output the control signal from Kp through a DAC. My doubt is about the right addition block in the figure.I'm not sure about how to add the compensator's output to that of the converter.

A friend of mine suggested that the sum of plant and compensator outputs would be needed only as input to the feedback block and that the output quantity(here, voltage) would be simply the plant's output. I'm tempted to believe this is right, but it would certainly change the control diagram..

Can someone explain how the this system should be implemented? Do I have to do something like give the compensator's output (from within FPGA) to a DAC and add that with the plant's output voltage, or is my friend's way more correct?

  • \$\begingroup\$ The output voltage is what goes to the compensator. If you don't send this, then you will see larger variations in the line. The compensator is there to compensate based on previous feedback from Vout. \$\endgroup\$
    – mcmiln
    Feb 5, 2016 at 17:26
  • \$\begingroup\$ You show a picture then you mention terms that do not appear to be on this picture - that confuses me. \$\endgroup\$
    – Andy aka
    Feb 5, 2016 at 17:27
  • \$\begingroup\$ @Andy aka I've added a picture of the equations, does that help? \$\endgroup\$ Feb 6, 2016 at 12:46
  • \$\begingroup\$ @mcmiln I understand - but how do I implement the block which adds the converter's and compensator's output voltages? \$\endgroup\$ Feb 6, 2016 at 13:00

1 Answer 1


Don't output from the DAC until you have added in the compensator. Input the output from the buck boost through another ADC and add internally. Then output through the DAC. Make sure to take care in noise compensation when dealing with the buck boost. Properly decouple and smooth the switching noise then route the secondary ADC and addition block on the opposite side of the FPGA(this is precautionary and will depend on the FPGA tool you are using).


Your Answer

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

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