Specialization area (dt.: Studienmodell)
Diplomstudiengang: "Informationsverarbeitung"
Master of Sc. Program: "Embedded Systems"
An embedded system is a special purpose computer-controlled system. The core of any embedded system is a microprocessor ormicrocontroller programmed to perform a few tasks (often just one task). This is to be compared to other computer systems with general purpose hardware and externally loaded software. Embedded systems are often designed for mass production. Typical examples of embedded systems are automotive systems or the control systems in factories.
The computing components of an embedded system, typically, do not rely on classical user interfaces like keyboards and monitors. Instead, they communicate with the system environment through "unvisible" sensors and actuators. The evolution of embedded systems is driven by microelectronics providing the technological platform for powerful, inexpensive computing and wireless communication.
This specialization area creates a link between microelectronics and computer science. Today's hardware/software systems contain hundreds of millions of transistors and run programs with hundreds of thousands of lines of code. In order to understand how this complexity is handled you will study hardware and software architectures of modern processors as well as embedded systems, and you will become familiar with the design methodology for systems-on-chip.
Digital systems can be described as a hierarchy of components and sub-components ranging from individual logic gates to complete processors. If you choose to specialize in this area during your Master's studies you will focus on
- architecture of processors and embedded systems
- design methodology and algorithms
As an example, Figure 1 shows a digital system consisting of several components. The system contains a general purpose processor core, memory, an input/output unit (I/O) and an IP block. IP stands for "intellectual property" and refers to a block that may have been designed by another party and which needs to be integrated into the system. The step of integrating all blocks into a single chip is called system integration. Protocol standards exist for the interfaces between blocks.
In order to understand how such a system works you will study processor architectures in the course:
- Architecture of Digital Systems I (Processor Architecture)
This course gives an introduction into modern RISC processors and other important processor architectures as they are widely used in today's computers. Since a processor is only one of several components in a digital system you will participate in the course
- Architecture of Digital Systems II (Embedded System Architecture)
Here, the processor is considered as an embedded component ("embedded system") and the communication between components is studied, both at the hardware and the software level.
There are several ways to physically implement a large digital system. Figure 1 shows two possibilities. On the left side, the system is integrated on a single chip ("system-on-chip"). System-on-chips (SoCs) can be found in cell phones, cars and many other applications where high integration is needed. Alternatively, the system can be implemented on a circuit board. The board on the right side of Figure 1 is actually the board that you will use in the laboratory
- Digital Design Laboratory II
In this lab, you will practice the hardware description language VHDL and use CAD (computer-aided design) tools to design a system consisting of a processor and additional components. The board contains an FPGA (field programmable gate array). By programming the FPGA a whole system can be integrated into a single chip.
System-on-chips are usually designed by means of CAD tools. The design is described at various levels of abstraction using languages like VHDL, Verilog, SystemC or SystemVerilog. The software tools are used to automatically refine the design from abstract behavioral to increasingly detailed structural descriptions. This process is called "synthesis". Figure 2 shows a typical design flow for SoCs. It is daily practice for SoC designers to work with synthesis tools. Therefore, it is important to understand how these tools work and what algorithms they use to synthesize a design. This is the topic of the lectures:
- Synthesis and Optimization of Microelectronic Systems I
- Synthesis and Optimization of Microelectronic Systems II
The initial specification of a design is usually represented in an informal way and is translated manually into a first formal specification. This process is extremely prone to errors. Just like software programmers can never completely avoid bugs hardware designers make mistakes when coding the specification. Therefore, it is very important to check the functional correctness of a design before it is manufactured in silicon and shipped to the customer. This process is called "verification". Verification dominates the total design costs. In fact, industry needs just as many verification engineers as hardware designers. Therefore, the course
introduces into new methods and algorithms for design verification. The focus is on so called formal methods - a new and growing field of activity for verification engineers.
Embedded system engineering is more than just hardware design. As we move from the components of the system to understanding the system as a whole we need to deal with the software as well. First of all, it is important to understand how a program is executed by the hardware and how the programmed system interacts with its environment. A basic introduction into assembler programming is given in
- Assembler Programming
This course is optional and only part of the curriculum if no experience with programming of microcomputers using assembly language has been gathered before.
Embedded systems, in general, are even larger and more complex than the hardware/software system of Figure 3. In fact, they consist of many such systems that are connected through system buses. This is shown in Figure 4. The courses
- Architecture of digital systems II
- Real-Time Systems I and II
study such large systems. The courses present an introduction how large systems can be structured and how system software distributes tasks and organizes correct communication between all components.
As systems become more complex both in hardware and software, timing becomes an issue. Conflicts to use resources, for example, have to be resolved which may impact when data is provided. Many systems are designed with average behavior in mind, which is appropriate for desktop computers. In many embedded computing systems, however, timing and the ability to guarantee that data and actions will be provided in time is essential.
Issues to be resolved range from managing cache, memory bandwidth or bus accesses to operating aspects such as scheduling or execution time of programs.
Real-time technology ensures that computer results are not only correctly calculated, but also delivered at the correct times. A traffic light should be green, but at the time of passing.
This is essential in applications ranging from safety critical systems, such as airplanes and cars, to a wide range of everyday devices, notably of consumer electronics in the home, such as satellite receivers, DVD players, TVs, etc..
The predominant approach of standard computer systems, to focus on minimizing average delays are inappropriate for such systems, otherwise planes and cars may crash, phone calls may be lost, or movies be disturbed. Fast, or timely on average behavior is not acceptable, rather the worst case situations have to be handled. Compare to crossing a river: not the average depth determines safe passage, but the deepest one.
As boundaries between hardware and software become less distinct, real-time methodology becomes increasingly important in hardware design, e.g., for caches, to manage contention on buses or the bandwidth of memory accesses. On the other hand, hardware aspects become more relevant for real-time system design.
will provide understanding in the nature of embedded real-time systems and why and how they differ from standard computing systems. They give an overview of the major types of resource allocation schemes, including offline and online, and addresses issues in QoS management.
The above courses are mandatory if you chose to study embedded systems. The complete list is:
Mandatory Courses in Embedded Systems
Electronic Design Automation
- Synthesis and Optimization of Microelectronic Systems I 4 credit points
- Synthesis and Optimization of Microelectronic Systems II 3 credit points
- Verification of Digital Systems (with lab) 5 credit points
Hardware/Software Architecture
- Architecture of Digital Systems I 4 credit points
- Architecture of digital systems II 4 credit points
- Operating Systems (with lab) 4 credit points
- Real-Time Systems I 4 credit points
- Real-Time Systems II 4 credit points
Laboratories
- Automation and Microelectronics 5 credit points
- Digital Design Laboratory II 5 credit points
- Communication Systems 4 credit points
This course list may vary slightly depending on whether you are enrolled in the Dipl.-Ing. program or the Master of Science Program. This curriculum is supplemented by optional courses so that 30 credit points are earned in every semester. Possible choices are presented in the list of courses.
A detailed study plan will be elaborated with every student who can choose from a large list of optional courses in Computer Engineering and Computer Science. Every student is advised individually in selecting additional courses to further specialize his/her knowledge in embedded systems. Additionally, courses have to be selected to broaden the general knowledge of electrical & computer engineering. Every study plan in embedded systems will therefore also include courses from other areas like automation and control, microelectronics or communication systems. For additional information about lectures currently offered, see http://www.kis.uni-kl.de.