Development of a Microprocessor System (HW/SW) linking an Inverted Pendulum to an FPGA-System (Xilinx Virtex 5)

Bachelor's Thesis / Studienarbeit

Status: Assigned
By arrangement


Inverted Pendulum

Many of today's Embedded Systems integrate multiple control applications with various properties and requirements (e.g., processing demands, periods and deadlines). To ensure stability of all attached plants the runtime environment of the Embedded System has to take all these aspects into consideration and assign its resources in an optimal manner.
This becomes especially challenging if the underlying hardware platform can be modified during runtime (Polymorphic Cyber-Physical System) as different compute resources (e.g., CPU, GPUs, FPGAs, ...) expose different characteristics (e.g., computational bandwidth, latency, cost of "process" switching, ...).
To investigate these challenges, three (identical) Inverted Pendula are being used as test setup.


Interface Board (Example)

The goal of this thesis is to develop a Microprocessor System that links an Inverted Pendulum to an FPGA-System (featuring a Xilinx Virtex 5). An Inverted Pendulum consists of the following components:

  • The Pendulum itself
  • A geared motor driving the pendulum
  • A rotary encoder measuring the (relative) shaft position
  • A DC motor driver

The Inverted Pendulum will be connected to the FPGA system using I²C (a serial bus interface). This connection shall be implemented by a dedicated Microcontroller System. The FPGA-related circuitry (voltage decoupling and shifting) has already been developed.

Work Packages

  • Selection of an appropriate microcontroller (and a prototyping board)
  • Familiarization with the controller and its development tools
  • I/O link-up (e.g., on a breadboard)
  • Generation of an analog signal to regulate the DC motor driver
  • Decoding the signal from the rotary encoder (Gray-Code)
  • Implementation of an I²C slave (so that the microcontroller can be queried by the FPGA)

If time permits the work can be extended as follows:

  • Design of a board (PCB) hosting the resulting circuit
  • Implementation of a simple (software-based) controller on the FPGA-System

Required Skills

  • Knowledge of C
  • Experience in embedded programming and circuit design
  • Basic knowledge of I²C is helpful, but not necessarily needed
  • Diligent, independent and well-organized work performance


Feel free to get in touch with Martin Geier.