Design, development and characterization of different control algorithms on FPGAs

Bachelor's Thesis / Studienarbeit

Status: Assigned
By arrangement


Magnetic Levitating Ball

Many of today's Embedded Systems are used to run multiple control applications, each in charge of stabilizing one closed loop system (plant). Usually, the designer selects, designs and assigns one dedicated controller for each plant - i.e., each plant is managed by one and the same controller all the time.
In contrast to this usual approach, however, the developer might choose to design (and implement) more than one control algorithm per individual plant and switch between them during runtime - depending on the current state of the respective plant. The aim of such a switched system is to improve both the overall control performance (e.g., by temporarily switching to a high-end controller during a disturbance) and the efficiency of the Embedded System (e.g., by avoiding unnecessarily complex control calculations whilst all plants are in steady-state).
To investigate the impact of this approach on "real-world control loops", a test setup based on a Levitating Ball is being developed.


Xilinx Virtex 5 Board with I²C Interface

The goal of this thesis is to evaluate (at least) two different controllers for a Magnetic Levitating Ball (plant) on an FPGA-System (featuring a Xilinx Virtex 5). The plant is already interfaced to the FPGA-System which allows reading the sensor (a light barrier) and writing to the actuator (a magnetic coil). First of all, a simple software PID controller will be implemented (on a Xilinx Microblaze CPU) to familiarize with the FPGA platform and to characterize the plant. Based thereon, additional controllers are implemented and compared against each other. To speed up the implementation, Matlab Coder and HDL Coder can be used. Finally, an evaluation of the "switched controller" approach is performed to identify the up- and downsides of the approach.

Work Packages

  • Familiarization with the FPGA platform and its development tools
  • I/O setup and development of a simple software PID controller
  • Development of additional software controllers, either by
    • using different algorithms (e.g., LQR, state-based, ...) altogether, or by
    • changing the controller's parameterization (e.g., sampling rate, accuracy, ...).
  • Hardware implementation of all previously designed controllers
  • Comparison of all controller implementations and of the switched to a non-switched approach

If time permits the work can be extended as follows:

  • Plant identification/characterization
  • Disturbance modeling and dynamic switching

Required Skills

  • Profound Knowledge of C and VHDL (incl. synthesis to FPGAs)
  • Experience in embedded and hardware programming
  • Knowledge of Control theory and Matlab/Simulink
  • Basic knowledge of Matlab Coder, HDL Coder and I²C is helpful, but not necessarily needed
  • Diligent, independent and well-organized work performance


Feel free to get in touch with Martin Geier.