Elastic Node Hardware
Contact: Alwyn Burger
In the Elastic Nodes project we are developing high-performance adaptive sensor nodes, generally using reconfigurable hardware such as Field Programmable Gate Arrays (FPGA) in combination with traditional 8-bit MCUs.
This project is primarily focussed on the development of high performance heterogenous embedded systems. This generally involves using reconfigurable hardware such as FPGAs as hardware accelerators for MCU-based systems. Since this hardware does not provide an optimised interfacing method, a hardware platform is being developed to simplify the deployment of heteroneous applications. Since the application should be split between the different processing nodes in the system, a middleware is being developed to simplify the exchange of data and control signals between the different components.
The more general goal of this project is to create a platform for developing a complex application that includes multiple hardware accelerations for an embedded system. This will commonly include a sophisticated data management system that is capable of simplifying the usage of the different data sources and sinks required for a heterogeneous system such as this. This will inevitably involve the interfacing of different data standards and protocol, ideally with a universal and convenient way to move data between the applicable components.
The current objective is to develop additional applications to evaluate the usefulness of such a heterogenous platform. In order to leverage the increased performance capabilities, hardware accelerators need to be developed to execute various machine learning and computer vision based tasks. This also involves the development and design of a hardware system that is capable of the computations required as well as data acquisition through cameras and other input devices.
In the following you can find open research projects, that are suitable for students. If you are interested, please contact Alwyn Burger.
(Masters) Heterogeneous Network Visualiser
This project involves the design and implementation of a system visualiser for use in a distributed heterogeneous embedded system. By monitoring MQTT messages, relevant information should be extracted about present devices and their attributes. This then needs to be graphically represented using either a platform independent GUI or a web interface.
The MQTT message format and the linked data representation it uses will be provided, meaning the focus will be on how best to present the data. A basic understanding of Linked Data is also advised.
(Bachelors) Embedded Systems OS Evaluation
The primary task of this project is to evaluate the performance of a number of operating systems designed for embedded systems. It will involve compiling and possibly porting (to a minimal extent) at least two OSs such as RIOT and FreeRTOS to our hardware platform. The evaluation will be based on some basic calculations from an existing library that can provide an impression of the performance overhead of the different OSs.
This will involve predominantly C-based programming, as well as some basic timing techniques using an oscilloscope. Although existing experience and knowledge in embedded systems OSs would be beneficial, it is not required.
(Masters) Skeleton Generation for a Middleware System in FPGAs
The goal of this project is to develop a code generator that can convert a simple IDL (Interface Description Language) into VHDL or Verilog code to be used in an FPGA project that interfaces with an FPGA-based middleware. This will involve developing and evaluating the overhead of a skeleton that accepts generic byte streams and converts them to the data format specified in the IDL. Some specific suggestions will be provided for the IDL format to be used, but a formal definition will need to be developed.
Existing knowledge of middlewares in general is not required to complete this project, but a decent familiarity with VHDL or Verilog design for FPGAs is needed. Some scripting language like Python will doubtlessly be needed for efficiently generating the code base.
(Bachelors) OTA Updates through Bootloader on MCU
Bootloaders can greatly simplify the usage of MCUs by streamlining the task of updating firmware. The objective of this work is to extend the functionality of an existing open source bootloader (DFU) to allow remote updating (OTA). By using our existing communication module over 802.15.4, a message protocol will have to be designed and implemented that sends compiled MCU software to a device and stores it in the device's internal flash memory.
Although the bootloader itself is provided, it will need to be extended and therefore involves mostly MCU programming in C. Embedded Systems would be a useful lecture to have taken.
(Bachelors/Masters) Audio Capture Board Design
Capturing high quality audio on embedded systems can be challenging due to the limited operating frequency of the device. In this project you will have to design and build a daughterboard PCB that contains one or more microphones. The usage of a digital or analogue microphone should be investigated to find the best option for this application, in order to achieve the best capture possible.
This involves the design and assembly (not manufacturing) of a circuit that can connect to an existing MCU-based motherboard. It also involves at least basic embedded programming in C to capture the audio from the microphone and return it using an available USB connection.
(Bachelor) Power and Energy Monitoring for a Wireless Sensor Node
Power efficiency in battery-operated microcontrollers is essential for the design of the IoT. Being able to monitor this in real-time during deployment allows for much clearer insight into a system's performance. To achieve this, this project will aim to extend the design of our wireless node to include battery and power monitoring. An existing Motherboard node exists that can be extended using a daughterboard that includes this functionality.
This project involves mostly PCB design, after which the board will be manufactured by us. It will then need to be tested and a small piece of software should be developed to allow the application to query this information. Therefore, PCB design and some C programming will be essential skills for this project.