Motivation

Unless one only deals with passive rectifiers, i.e., diode rectifiers, control is an essential part of power electronic converter development. Obviously, pure hardware developers working in companies with dedicated control software developers can avoid learning converter control and its implementation, but generally everyone who is studying power electronics and planning to make a career in power electronic converter development should know the basics, and preferably having successfully implemented and tested a power converter prototype with digital closed-loop control at least once.

Experience

I personally started getting into the topic during my Master’s Thesis project in 2003 when I had to develop and implement a digital control system for my four-wire active power filter prototype using the Motorola MPC555 microcontroller whose low clock frequency of 40 MHz forced some restriction on the implementation. That is, I had to use 16-bit integers and fixed-point arithmetic operarations, and I coded everything using a combination of the C and Assembly languages. Still, I was not able to run the control at 20 kHz sampling rate and reach 10 kHz switching frequency but had to live with 16 kHz and 8 kHz respective frequencies. Later, when a new control board based on the Freescale MPC563 microcontroller with a higher clock frequency was developed, I was able to reach the desired frequencies. This was also the control board I used throughout my doctoral studies.

After joining ABB Corporate Research in 2008, I started using CPUs from the Texas Instruments C2000 real-time microcontroller series. This made my life much easier as these CPUs operate at clock frequencies of 150 MHz or higher and comprise a fast floating-point arithmetic unit. Thus, one can simply use 32-bit floating-point variables and still reach fast control update rates for complex control algorithms.

After working closely with an FPGA logic developer in a technology development project in 2016, I decided to extend my knowledge on embedded systems and started learning VHDL and logic development for CPLDs and FPGAs. After programming microcontrollers with sequential execution principle for 13 years, understanding that everything is executed in parallel by default on programmable logic devices takes some time to grasp properly. This, and the fact that one needs to pay more attention to how the code is written due to the contraints (the speed class, the number of lookup tables and logic elements, etc.) of the hardware, makes the development of synthesizable logic more challenging than programming microcontrollers, at least in my opinion. Nowadays, I really enjoy logic development for power converters and experimentally verifying the performance of the implementations with power converter hardware in the lab. Similar to software development for microcontrollers, experimental verification is very important also for synthesizable logic because it doesn’t mean if something works perfectly in simulations that the situation is the same when the implementation is running on a hardware platform.

In power converter systems containing both a CPU and a programmable logic device, the converter control related algorithms are typically executed on the CPU, whereas the logic device handles other functions, especially the time-critical ones. These include, e.g., the short-circuit and overcurrent protection, the gate control of power semiconductor devices, and the measurement sampling. However, in the case of multilevel converter systems and/or high switching frequencies, it may be necessary to move at least part of the closed-loop control to the logic device to achieve control stability and/or to reach the desired converter dynamic performance. This will become a more common approach in the future due to the fact that more and more power converters will be using SiC or GaN based power semiconductor devices allowing efficient operation at high switching frequencies.

Additional challenges arise when one deals with modular power converter systems with distributed control. Such systems may have lots of controllers which need to exchange data and be synchronized with each other. Therefore, topics such as communication interfaces, protocols, error detection, bit encoding, and clock recovery become a significant part of the control system and the control software/logic development.

The devices, software/libraries, programming/scripting languages, and communication related protocols/methods I use or have used earlier are listed below.

Microcontrollers and MPSoCs

  • Motorola MPC555
  • Freescale MPC563
  • Texas Instruments TMS320F28335
  • Texas Instruments TMS320C28346
  • Texas Instruments TMS320F2837x
  • CG devices of the Xilinx Zynq UltraScale+ MPSoC series

FPGAs and CPLDs

  • Lattice MachXO2 series
  • Lattice XP2 series
  • Lattice ECP5U series
  • Intel Cyclone IV series

Development and Simulation Software for Embedded Systems

  • Texas Instruments Code Composer Studio
  • Xilinx Vivado & Vitis
  • Mentor Graphics (Siemens) ModelSim
  • Aldec Active-HDL
  • Lattice Diamond
  • Intel Quartus

General Development Software

  • Microsoft Visual Studio
  • Microsoft Visual Studio Code

Programming/Scripting Languages and Libraries

  • C/C++
  • JavaScript
  • HTML
  • CSS
  • PHP
  • Qt
  • Python
  • OpenGL
  • LaTeX
  • VHDL
  • RS-232
  • RS-485
  • ModBus
  • I2C
  • (Q)SPI
  • Controller Area Network (CAN)
  • Cyclic Redundancy Check (CRC)
  • 8b/10b Encoding
  • Wikipedia article on CPLDs
  • Wikipedia article on FPGAs
  • Wikipedia article on SoCs