Undergraduate Teaching 2025-26

Not logged in. More information may be available... Login via Raven / direct.

Engineering Tripos Part IIB, 4F14: Computer Systems, 2023-24

Module Leader

Prof Andrew Gee

Lecturers

Prof Andrew Gee and Prof Per Ola Kristensson

Timing and Structure

Lent Term. 12 lectures and 2 examples classes. 75% exam / 25% coursework. Lectures will be recorded.

Prerequisites

Part 1 Digital Circuits and Computing, including an understanding of C++ as taught in the Mars Lander project and the Part 1B Device Programming exercise. Students will be expected to write small programs in C++.

Aims

The aims of the course are to:

  • Describe the computer hardware that underlies modern information processing systems.
  • Explain how to write multithreaded software that runs on such hardware.

Objectives

As specific objectives, by the end of the course students should be able to:

  • Appreciate the basic components needed to construct a computer and the different ways to interconnect these components, including the various ways of exploiting parallelism.
  • Compare the instruction sets, implementation issues and performance of CISC and RISC architectures.
  • Design efficient hardware for computer arithmetic.
  • Understand the operation of pipelined datapaths.
  • Describe memory organisation, addressing schemes and the use of caches; and their effects on performance.
  • Compare the various ways of handling input and output in a computer system.
  • Understand the concept of a memory model.
  • Understand basic concurrency concepts.
  • Design and implement thread-safe algorithms in C++.

Content

Computer Systems (8 lectures and 2 examples classes, Prof Andrew Gee)

  • Computer architecture, historical perspectives.
  • Instruction set architectures, RISC vs CISC.
  • ALU design, datapaths and control, pipelining.
  • Memory hierarchy, caches, virtual memory.
  • Input/output, bus organization, polling and interrupt-driven I/O, DMA.
  • Parallel processing, SIMD and MIMD architectures.

Assessment: examination (75%), candidates to attempt two questions from a choice of three

Parallel Programming (4 lectures, Prof Per Ola Kristensson)

  • C++11/14/17 memory model.
  • Race conditions, mutual exclusion, synchronization, starvation.
  • Thread-safe data structures.
  • C++11/14/17 threading library.

Assessment: coursework (25%)

Coursework

Multithreaded programming using the C++11/14/17 memory model and threading libraries. The programming exercise is an opportunity to experience how theoretical concepts from the lectures translate into actual working code using a state-of-the-art industry standard threading library. Time required: 4-8 hours programming plus 15 minutes demonstrating and discussing your code with an assessor. Please note that coursework assessment is not anonymous.

Coursework Format

Due date

& marks

Multithreaded programming

Learning objectives:

  • To gain practical experience with the C++11/14/17 threading library.
  • To design and implement thread-safe data structures.
  • To practice concurrency control so as to avoid race conditions and starvation.

Individual

Demonstrating your software

Not anonymously marked

Software to be written during Lent Term

Assessment at end of Lent Term [15/60]

 

Booklists

Please refer to the Booklist for Part IIB Courses for references to this module, this can be found on the associated Moodle course.

Examination Guidelines

Please refer to Form & conduct of the examinations.

 
Last modified: 30/05/2023 15:31

Engineering Tripos Part IIB, 4F14: Computer Systems, 2022-23

Module Leader

Prof AH Gee

Lecturers

Prof AH Gee and Prof Per Ola Kristensson

Timing and Structure

Lent Term. 12 lectures and 2 examples classes. 75% exam / 25% coursework. Lectures will be recorded.

Prerequisites

Part 1 Digital Circuits and Computing, including an understanding of C++ as taught in the Mars Lander project and the Part 1B Device Programming exercise. Students will be expected to write small programs in C++.

Aims

The aims of the course are to:

  • Describe the computer hardware that underlies modern information processing systems.
  • Explain how to write multithreaded software that runs on such hardware.

Objectives

As specific objectives, by the end of the course students should be able to:

  • Appreciate the basic components needed to construct a computer and the different ways to interconnect these components, including the various ways of exploiting parallelism.
  • Compare the instruction sets, implementation issues and performance of CISC and RISC architectures.
  • Design efficient hardware for computer arithmetic.
  • Understand the operation of pipelined datapaths.
  • Describe memory organisation, addressing schemes and the use of caches; and their effects on performance.
  • Compare the various ways of handling input and output in a computer system.
  • Understand the concept of a memory model.
  • Understand basic concurrency concepts.
  • Design and implement thread-safe algorithms in C++.

Content

Computer Systems (8 lectures and 2 examples classes, Prof Andrew Gee)

  • Computer architecture, historical perspectives.
  • Instruction set architectures, RISC vs CISC.
  • ALU design, datapaths and control, pipelining.
  • Memory hierarchy, caches, virtual memory.
  • Input/output, bus organization, polling and interrupt-driven I/O, DMA.
  • Parallel processing, SIMD and MIMD architectures.

Assessment: examination (75%), candidates to attempt two questions from a choice of three

Parallel Programming (4 lectures, Prof Per Ola Kristensson)

  • C++11/14/17 memory model.
  • Race conditions, mutual exclusion, synchronization, starvation.
  • Thread-safe data structures.
  • C++11/14/17 threading library.

Assessment: coursework (25%)

Coursework

Multithreaded programming using the C++11/14/17 memory model and threading libraries. The programming exercise is an opportunity to experience how theoretical concepts from the lectures translate into actual working code using a state-of-the-art industry standard threading library. Time required: 4-8 hours programming plus 15 minutes demonstrating and discussing your code with an assessor. Please note that coursework assessment is not anonymous.

Coursework Format

Due date

& marks

Multithreaded programming

Learning objectives:

  • To gain practical experience with the C++11/14/17 threading library.
  • To design and implement thread-safe data structures.
  • To practice concurrency control so as to avoid race conditions and starvation.

Individual

Demonstrating your software

Not anonymously marked

Software to be written during Lent Term

Assessment at end of Lent Term [15/60]

 

Booklists

Please refer to the Booklist for Part IIB Courses for references to this module, this can be found on the associated Moodle course.

Examination Guidelines

Please refer to Form & conduct of the examinations.

 
Last modified: 18/07/2022 17:45

Engineering Tripos Part IIB, 4F14: Computer Systems, 2021-22

Module Leader

Dr AH Gee

Lecturers

Dr AH Gee and Prof Per Ola Kristensson

Timing and Structure

Lent Term. 75% exam / 25% coursework

Prerequisites

Part 1 Digital Circuits and Computing, including an understanding of C++ as taught in the Mars Lander project and the Part 1B Device Programming exercise. Students will be expected to write small programs in C++.

Aims

The aims of the course are to:

  • Describe the computer hardware that underlies modern information processing systems.
  • Explain how to write multithreaded software that runs on such hardware.

Objectives

As specific objectives, by the end of the course students should be able to:

  • Appreciate the basic components needed to construct a computer and the different ways to interconnect these components, including the various ways of exploiting parallelism.
  • Compare the instruction sets, implementation issues and performance of CISC and RISC architectures.
  • Design efficient hardware for computer arithmetic.
  • Understand the operation of pipelined datapaths.
  • Describe memory organisation, addressing schemes and the use of caches; and their effects on performance.
  • Compare the various ways of handling input and output in a computer system.
  • Understand the concept of a memory model.
  • Understand basic concurrency concepts.
  • Design and implement thread-safe algorithms in C++.

Content

Computer Systems (8L + 2 examples classes, Dr Andrew Gee)

  • Computer architecture, historical perspectives.
  • Instruction set architectures, RISC vs CISC.
  • ALU design, datapaths and control, pipelining.
  • Memory hierarchy, caches, virtual memory.
  • Input/output, bus organization, polling and interrupt-driven I/O, DMA.
  • Parallel processing, SIMD and MIMD architectures.

Assessment: examination (75%), candidates to attempt two questions from a choice of three

Parallel Programming (4L, Prof Per Ola Kristensson)

  • C++11/14/17 memory model.
  • Race conditions, mutual exclusion, synchronization, starvation.
  • Thread-safe data structures.
  • C++11/14/17 threading library.

Assessment: coursework (25%)

Coursework

Multithreaded programming using the C++11/14/17 memory model and threading libraries. The programming exercise is an opportunity to experience how theoretical concepts from the lectures translate into actual working code using a state-of-the-art industry standard threading library. Time required: 4-8 hours programming plus 15 minutes demonstrating and discussing your code with an assessor. Please note that coursework assessment is not anonymous.

Coursework Format

Due date

& marks

Multithreaded programming

Learning objectives:

  • To gain practical experience with the C++11/14/17 threading library.
  • To design and implement thread-safe data structures.
  • To practice concurrency control so as to avoid race conditions and starvation.

Individual

Demonstrating your software

Not anonymously marked

Software to be written during Lent Term or Easter vacation

Assessment at start of Easter Term

[15/60]

 

Booklists

Please refer to the Booklist for Part IIB Courses for references to this module, this can be found on the associated Moodle course.

Examination Guidelines

Please refer to Form & conduct of the examinations.

 
Last modified: 21/05/2021 12:07

Engineering Tripos Part IIB, 4F14: Computer Systems, 2020-21

Module Leader

Dr AH Gee

Lecturers

Dr AH Gee and Dr Jason Jacques

Timing and Structure

Lent Term. 75% exam / 25% coursework

Prerequisites

Part 1 Digital Circuits and Computing assumed

Aims

The aims of the course are to:

  • Describe the computer hardware that underlies modern information processing systems.
  • Explain how to write multithreaded software that runs on such hardware.

Objectives

As specific objectives, by the end of the course students should be able to:

  • Appreciate the basic components needed to construct a computer and the different ways to interconnect these components, including the various ways of exploiting parallelism.
  • Compare the instruction sets, implementation issues and performance of CISC and RISC architectures.
  • Design efficient hardware for computer arithmetic.
  • Understand the operation of pipelined datapaths.
  • Describe memory organisation, addressing schemes and the use of caches; and their effects on performance.
  • Compare the various ways of handling input and output in a computer system.
  • Understand the concept of a memory model.
  • Understand basic concurrency concepts.
  • Design and implement thread-safe algorithms in C++.

Content

Computer Systems (8L + 2 examples classes, Dr Andrew Gee)

  • Computer architecture, historical perspectives.
  • Instruction set architectures, RISC vs CISC.
  • ALU design, datapaths and control, pipelining.
  • Memory hierarchy, caches, virtual memory.
  • Input/output, bus organization, polling and interrupt-driven I/O, DMA.
  • Parallel processing, SIMD and MIMD architectures.

Assessment: examination (75%), candidates to attempt two questions from a choice of three

Parallel Programming (4L, Dr Jason Jacques)

  • C++11/14/17 memory model.
  • Race conditions, mutual exclusion, synchronization, starvation.
  • Thread-safe data structures.
  • C++11/14/17 threading library.

Assessment: coursework (25%)

Coursework

Multithreaded programming using the C++11/14/17 memory model and threading libraries. The programming exercise is an opportunity to experience how theoretical concepts from the lectures translate into actual working code using a state-of-the-art industry standard threading library. Time required: 4-8 hours programming plus 15 minutes demonstrating and discussing your code with an assessor. Please note that coursework assessment is not anonymous.

Coursework Format

Due date

& marks

Multithreaded programming

Learning objectives:

  • To gain practical experience with the C++11/14/17 threading library.
  • To design and implement thread-safe data structures.
  • To practice concurrency control so as to avoid race conditions and starvation.

Individual

Demonstrating your software

Not anonymously marked

Software to be written during Lent Term or Easter vacation

Assessment at start of Easter Term

[15/60]

 

Booklists

Please refer to the Booklist for Part IIB Courses for references to this module, this can be found on the associated Moodle course.

Examination Guidelines

Please refer to Form & conduct of the examinations.

 
Last modified: 01/09/2020 10:39

Engineering Tripos Part IIB, 4F14: Computer Systems, 2019-20

Module Leader

Dr AH Gee

Lecturers

Dr AH Gee and Prof PO Kristensson

Timing and Structure

Lent Term. 75% exam / 25% coursework

Prerequisites

Part 1 Digital Circuits and Computing assumed

Aims

The aims of the course are to:

  • Describe the computer hardware that underlies modern information processing systems.
  • Explain how to write multithreaded software that runs on such hardware.

Objectives

As specific objectives, by the end of the course students should be able to:

  • Appreciate the basic components needed to construct a computer and the different ways to interconnect these components, including the various ways of exploiting parallelism.
  • Compare the instruction sets, implementation issues and performance of CISC and RISC architectures.
  • Design efficient hardware for computer arithmetic.
  • Understand the operation of pipelined datapaths.
  • Describe memory organisation, addressing schemes and the use of caches; and their effects on performance.
  • Compare the various ways of handling input and output in a computer system.
  • Understand the concept of a memory model.
  • Understand basic concurrency concepts.
  • Design and implement thread-safe algorithms in C++.

Content

Computer Systems (8L + 2 examples classes, Dr Andrew Gee)

  • Computer architecture, historical perspectives.
  • Instruction set architectures, RISC vs CISC.
  • ALU design, datapaths and control, pipelining.
  • Memory hierarchy, caches, virtual memory.
  • Input/output, bus organization, polling and interrupt-driven I/O, DMA.
  • Parallel processing, SIMD and MIMD architectures.

Assessment: examination (75%), candidates to attempt two questions from a choice of three

Parallel Programming (4L, Prof Per Ola Kristensson)

  • C++11/14/17 memory model.
  • Race conditions, mutual exclusion, synchronization, starvation.
  • Thread-safe data structures.
  • C++11/14/17 threading library.

Assessment: coursework (25%)

Coursework

Multithreaded programming using the C++11/14/17 memory model and threading libraries. The programming exercise is an opportunity to experience how theoretical concepts from the lectures translate into actual working code using a state-of-the-art industry standard threading library. Time required: 4-8 hours programming plus 15 minutes demonstrating and discussing your code with an assessor. Please note that coursework assessment is not anonymous.

Coursework Format

Due date

& marks

Multithreaded programming

Learning objectives:

  • To gain practical experience with the C++11/14/17 threading library.
  • To design and implement thread-safe data structures.
  • To practice concurrency control so as to avoid race conditions and starvation.

Individual

Demonstrating your software

Not anonymously marked

Software to be written during Lent Term or Easter vacation

Assessment at start of Easter Term

[15/60]

 

Booklists

Please see the Booklist for Group F Courses for references for this module.

Examination Guidelines

Please refer to Form & conduct of the examinations.

 
Last modified: 13/08/2019 10:49

Engineering Tripos Part IIB, 4B25: Embedded Systems for the Internet of Things, 2024-25

Module Leader

Prof. P Stanley-Marbell

Module Lecturer

Prof. P Stanley-Marbell

Timing and Structure

Lent term. 100% coursework. The course will be delivered using a combination of three activities: (1) pre-recorded content to be watched before timetabled meeting; (2) in-person lectures; (3) supplementary discussions on Microsoft Teams where specified.

Prerequisites

3B2 useful. Previous familiarity with using command-line tools on Unix required. The course uses an open source set of software tools available on github at https://github.com/f-of-e/f-of-e-tools. You are required to install these yourself on a Linux workstation or virtual machine for use during the course. The course uses a hardware kit that you are required to acquire and assemble yourself. The list of components in the kit is available online at https://f-of-e.org/course-hardware-kit

Aims

The aims of the course are to:

  • Introduce students to the principles and practice of computation and sensing systems that interact with the physical world.
  • Provide students an introduction to a Bayesian view of measurements, measurement uncertainty, sensors, and computing on sensor data that is synergistic with other research and teaching in the Department of Engineering at the University of Cambridge.

Objectives

As specific objectives, by the end of the course students should be able to:

  • Define the role of uncertainty in measurements of physical signals and quantify measurement uncertainty for a given sensing system.
  • Evaluate energy use in an embedded system using in-system current monitors.
  • Define the role of noise in both measurements and displays and identify appropriate metrics to use in quantifying noise for a given design.
  • Derive analytic relations underlying a Bayesian view of measurements, measurement uncertainty, sensors, and computing on sensor data.
  • Design communication subsystems and the required electrical circuit support between a collection of I2C- or SPI-interfaced sensor integrated circuits and an ARM Cortex-M0 microcontroller.
  • Numerically quantify measurement uncertainty and noise in outputs given a system design.
  • Recall and explain the interaction between displays and the human visual system.
  • Design modifications to sensing, communication, and display systems to improve their energy efficiency.
  • Design the logical organization and required firmware for new systems built around an ARM Cortex-M0 microcontroller, and sensors or displays connected via I2C and SPI communication interfaces.

Content

The module will introduce students to the principles underlying sensor operation, signal acquisition, the role of measurement uncertainty and noise, common sensor communication interfaces and how they interact with modern embedded microcontrollers such as the ARM Cortex-M0 family. The module will link these concepts in the signal acquisition and processing chain to a study of output interfaces in embedded systems. This exploration of output systems will be built on a study of the principles of operation of OLED displays and how the flexibility of the human visual system enables interesting circuit- and algorithm-level techniques to reduce display power dissipation.

Syllabus

Lecture 1, Friday, 24th January 2025: System overview of sensing, computation, I/O, and displays in embedded systems; interpreting device and system datasheets. At the end of this lecture, students should be able to: Enumerate the important components in an embedded system design; read and interpret the datasheet for a component in a system or for an entire system; propose and design changes to a system to extend its uses.

Lecture 2, Monday, 27th January 2025: Precision, accuracy, reliability, and measurement uncertainty.  Noise sources in analog and digital systems; role of signal gain and restoring logic. At the end of this lecture, students should be able to: Define precision, accuracy, reliability, and measurement uncertainty; analyze a system design and quantify these properties for a design's components; enumerate the sources of noise and measurement uncertainty in analog and digital systems; propose design changes to improve the robustness of systems to noise.

Lecture 3, Friday, 31st January 2025: Low-level C and assembly language in embedded systems. At the end of this lecture, students should be able to: implement firmware that runs on a microcontroller or microprocessor in the abscence of an operating system and which contains a mixture of C and assembly code.

 Coursework Activity #1 due 16:00, Friday, 7th February 2025.


Lecture 4, Monday, 3rd February 2025: Sensors, embedded I/O interfaces, and noise: Commercial sensor integrated circuits; I2C, SPI (and I2S, I3C, MIPI DSI, and MIPI CSI); noise in integrated circuits (Johnson-Nyquist noise, shot noise, 1/f noise, random telegraph noise).  At the end of this lecture, students should be able to: Enumerate the differences between the common embedded wired communication interfaces; select and substantiate a choice for an interface for a given design problem; enumerate the different potential sources of noise in integrated systems.

Lecture 5, Friday, 7th February 2025: A Bayesian view of measurements, measurement uncertainty, sensors, and computing on sensor data.

Coursework Activity #2 due 16:00, Friday, 21st February 2025.


Lecture 6, Monday, 24th February 2025: Field-programmable gate arrays in low-power embedded systems; Verilog overview.  At the end of this lecture, students should be able to: Describe and explain the basic architecture of FPGAs; use their understanding of the Verilog hardware description language and FPGA synthesis tools to modify an existing Verilog design.

Lecture 7, Friday, 28th February 2025: Human color vision perception and its interaction with OLED displays: Their structure, interfaces, and techniques for energy-efficiency.  At the end of this lecture, students should be able to: Enumerate the properties of OLED displays; propose changes to existing system designs that use OLED displays in order to improve their energy efficiency; enumerate the basic properties of human color vision that have a bearing on the design of displays for embedded systems.  

Lecture 8, Monday, 3rd March 2025: Physical invariants in embedded systems.  At the end of this lecture, students should be able to: Define physical invariants in the context of a sensor-driven system; apply concepts from Lagrangians, Hamiltonians, the Euler-Lagrange Equations, Noether's theorem, and recent research on inferring Lagrangians and Hamiltonians from sensor data to embedded systems designs.

Lecture 9, Friday, 7th March 2025: Wireless communications using Bluetooth, 802.15.4/Zigbee, and LoRa; Bluetooth HCI interface.  At the end of this lecture, students should be able to: Enumerate the differences between the major low-power radio interfaces available for embedded systems; propose energy-efficient choices for a wireless sensing system design given the application's design constraints.

Coursework Activity #3 due 16:00, Friday, 7th March 2025.


Lecture 10, Monday, 10th March 2025: Case study: Designing new embedded systems to solve a specified application need.  At the end of this lecture, students should be able to: Propose an architectural design comprising sensing, computation, communication, and display to address a given application need, with the design implementable within the limitations of schematic capture and printed-circuit-board layout tools such as Eagle.

Lecture 11, Friday, 14th March 2025: Evaluating the efficacy of embedded computing systems: Power, performance, and noise measurements.  At the end of this lecture, students should be able to: Quantify the time-performance, energy-efficiency, power-efficiency, and uncertainty in embedded computing systems. Adapt the design of embedded sensing and computation systems that are Pareto-optimal with respect to alternatives.

Coursework Activity #4 due 16:00, Wednesday, 19th March 2025.

 

Coursework

Coursework Format

Due date

& marks

Coursework activity #1: Embedded processor emulator exercise

Use the GCC and Binutils tools to compile, link, and disassemble binaries and use an open-source embedded system emulator to run a few different programs written in a combination of C and assembly language.

Learning objective:

After successfully completing this exercise, students should be able to:

  • Write simple programs using combination of C and assembler
  • Compile and run programs directly on an embedded processor with no operating system (OS)
  • Create, use, and modify Makefiles and Linker Command Files
  • Use Linker Map Files and differentiate them from Linker Command Files

Individual.

Source files, binaries, and PDF file with answers to questions.

non-anonymously marked

 

16:00, Friday, 7th February 2025

[20%]

Coursework activity #2: OLED display control over SPI exercise

Obtain hands-on experience writing a device driver in C for an SPI peripheral, using the FRDMKL03 ARM board and the OLED display from the course hardware kit.

Learning objective:

After successfully completing this exercise, students should be able to:

  • Read a datasheet for an unfamiliar embedded hardware component such as an SPI peripheral and write a device driver in C to interface with the peripheral.

Individual.

Source files, binaries, picture of working system, wiring diagram, and PDF file with answers to questions.

non-anonymously marked

 16:00,  Friday, 21st February 2025

[20%]

 

Coursework activity #3: Power measurement using TI INA219 I2C device exercise

Obtain hands-on experience writing a device driver in C for an I2C peripheral, using the FRDMKL05 ARM board and the TI INA219 daughterboard from the course hardware kit.

Learning objective:

After successfully completing this exercise, students should be able to:

  • Read a datasheet for an unfamiliar embedded hardware component such as an I2C peripheral and write a device driver in C to interface with the peripheral.

Individual.

Source files, binaries, picture of working system, wiring diagram, and PDF file with answers to questions.

Non-anonymously marked.

16:00,  Friday, 7th March 2025

[20%]

 

Coursework activity #4: Project concept, design, implementation, and final report

Present the problem addressed, approach employed, system implemented, and system evaluation.

Learning objectives:

After successfully completing the final project, students should be able to:

  • Design an embedded computing system that address a specified engineering challenge.
  • Prototype an embedded system design using a combination of sensors, microcontrollers, communication, displays, or FPGAs using the tools provided in the course kit.
  • Quantitatively evaluate an embedded sensing and computation system in terms of its time efficiency (performance), energy efficiency (battery life), and measurement and data processing accuracy.

Individual report, source files, binaries.

Non-anonymously marked.

  16:00, Wednesday, 19th March 2025

[40%]

 

 

Booklists

The following books are relevant to the material in the course and will all be available from the Engineering Library.

  1. An Introduction to Uncertainty in Measurement, ISBN: 978-0521605793
  2. Linkers and Loaders, ISBN: 978-1558604964
  3. The Circuit Designer's Companion, 3rd Edition, ISBN: 978-0080971384
  4. The Art of Electronics, ISBN: 978-0521809269
  5. Color Science: Concepts and Methods, Quantitative Data and Formulae, ISBN: 978-0471399186

Examination Guidelines

Please refer to Form & conduct of the examinations.

 
Last modified: 20/01/2025 14:32

Engineering Tripos Part IIB, 4B25: Embedded Systems for the Internet of Things, 2023-24

Module Leader

Prof. P Stanley-Marbell

Module Lecturer

Prof. P Stanley-Marbell

Timing and Structure

Lent term. 100% coursework. The course will be delivered using a combination of three activities: (1) pre-recorded content to be watched before timetabled meeting; (2) in-person lectures; (3) supplementary discussions on Microsoft Teams where specified.

Prerequisites

3B2 useful. Previous familiarity with using command-line tools on Unix required. The course uses an open source set of software tools available on github at https://github.com/f-of-e/f-of-e-tools. You are required to install these yourself on a Linux workstation or virtual machine for use during the course. The course uses a hardware kit that you are required to acquire and assemble yourself. The list of components in the kit is available online at https://f-of-e.org/course-hardware-kit

Aims

The aims of the course are to:

  • Introduce students to the principles and practice of computation and sensing systems that interact with the physical world.
  • Provide students an introduction to a Bayesian view of measurements, measurement uncertainty, sensors, and computing on sensor data that is synergistic with other research and teaching in the Department of Engineering at the University of Cambridge.

Objectives

As specific objectives, by the end of the course students should be able to:

  • Define the role of uncertainty in measurements of physical signals and quantify measurement uncertainty for a given sensing system.
  • Evaluate energy use in an embedded system using in-system current monitors.
  • Define the role of noise in both measurements and displays and identify appropriate metrics to use in quantifying noise for a given design.
  • Derive analytic relations underlying a Bayesian view of measurements, measurement uncertainty, sensors, and computing on sensor data.
  • Design communication subsystems and the required electrical circuit support between a collection of I2C- or SPI-interfaced sensor integrated circuits and an ARM Cortex-M0 microcontroller.
  • Numerically quantify measurement uncertainty and noise in outputs given a system design.
  • Recall and explain the interaction between displays and the human visual system.
  • Design modifications to sensing, communication, and display systems to improve their energy efficiency.
  • Design the logical organization and required firmware for new systems built around an ARM Cortex-M0 microcontroller, and sensors or displays connected via I2C and SPI communication interfaces.

Content

The module will introduce students to the principles underlying sensor operation, signal acquisition, the role of measurement uncertainty and noise, common sensor communication interfaces and how they interact with modern embedded microcontrollers such as the ARM Cortex-M0 family. The module will link these concepts in the signal acquisition and processing chain to a study of output interfaces in embedded systems. This exploration of output systems will be built on a study of the principles of operation of OLED displays and how the flexibility of the human visual system enables interesting circuit- and algorithm-level techniques to reduce display power dissipation.

Syllabus

Lecture 1, Friday, 26th January 2024: System overview of sensing, computation, I/O, and displays in embedded systems; interpreting device and system datasheets. At the end of this lecture, students should be able to: Enumerate the important components in an embedded system design; read and interpret the datasheet for a component in a system or for an entire system; propose and design changes to a system to extend its uses.

Lecture 2, Friday, 2nd February 2024: Precision, accuracy, reliability, and measurement uncertainty.  Noise sources in analog and digital systems; role of signal gain and restoring logic. At the end of this lecture, students should be able to: Define precision, accuracy, reliability, and measurement uncertainty; analyze a system design and quantify these properties for a design's components; enumerate the sources of noise and measurement uncertainty in analog and digital systems; propose design changes to improve the robustness of systems to noise.

Lecture 3, Wednesday, 7th February 2024: Low-level C and assembly language in embedded systems. At the end of this lecture, students should be able to: implement firmware that runs on a microcontroller or microprocessor in the abscence of an operating system and which contains a mixture of C and assembly code.

 Coursework Activity #1 due 16:00, Friday, 9th February 2024.


Lecture 4, Friday, 9th February 2024: Sensors, embedded I/O interfaces, and noise: Commercial sensor integrated circuits; I2C, SPI (and I2S, I3C, MIPI DSI, and MIPI CSI); noise in integrated circuits (Johnson-Nyquist noise, shot noise, 1/f noise, random telegraph noise).  At the end of this lecture, students should be able to: Enumerate the differences between the common embedded wired communication interfaces; select and substantiate a choice for an interface for a given design problem; enumerate the different potential sources of noise in integrated systems.

Lecture 5, Wednesday, 14th February 2024: A Bayesian view of measurements, measurement uncertainty, sensors, and computing on sensor data.

Lecture 6, Friday, 16th February 2024: Field-programmable gate arrays in low-power embedded systems; Verilog overview.  At the end of this lecture, students should be able to: Describe and explain the basic architecture of FPGAs; use their understanding of the Verilog hardware description language and FPGA synthesis tools to modify an existing Verilog design.

Coursework Activity #2 due 16:00, Friday, 16th February 2024.


Lecture 7, Wednesday, 21st February 2024: Human color vision perception and its interaction with OLED displays: Their structure, interfaces, and techniques for energy-efficiency.  At the end of this lecture, students should be able to: Enumerate the properties of OLED displays; propose changes to existing system designs that use OLED displays in order to improve their energy efficiency; enumerate the basic properties of human color vision that have a bearing on the design of displays for embedded systems.  

Lecture 8, Friday, 23rd February 2024: Physical invariants in embedded systems.  At the end of this lecture, students should be able to: Define physical invariants in the context of a sensor-driven system; apply concepts from Lagrangians, Hamiltonians, the Euler-Lagrange Equations, Noether's theorem, and recent research on inferring Lagrangians and Hamiltonians from sensor data to embedded systems designs.

Lecture 9, Wednesday, 28th February 2024: Wireless communications using Bluetooth, 802.15.4/Zigbee, and LoRa; Bluetooth HCI interface.  At the end of this lecture, students should be able to: Enumerate the differences between the major low-power radio interfaces available for embedded systems; propose energy-efficient choices for a wireless sensing system design given the application's design constraints.

Coursework Activity #3 due 16:00, Friday, 1st March 2024.


Lecture 10, Friday, 1st March 2024: Case study: Designing new embedded systems to solve a specified application need.  At the end of this lecture, students should be able to: Propose an architectural design comprising sensing, computation, communication, and display to address a given application need, with the design implementable within the limitations of schematic capture and printed-circuit-board layout tools such as Eagle.

Lecture 11, Friday, 8th March 2024: Evaluating the efficacy of embedded computing systems: Power, performance, and noise measurements.  At the end of this lecture, students should be able to: Quantify the time-performance, energy-efficiency, power-efficiency, and uncertainty in embedded computing systems. Adapt the design of embedded sensing and computation systems that are Pareto-optimal with respect to alternatives.

Coursework Activity #4 due 16:00, Friday, 15th March 2024.

 

Coursework

Coursework Format

Due date

& marks

Coursework activity #1: Embedded processor emulator exercise

Use the GCC and Binutils tools to compile, link, and disassemble binaries and use an open-source embedded system emulator to run a few different programs written in a combination of C and assembly language.

Learning objective:

After successfully completing this exercise, students should be able to:

  • Write simple programs using combination of C and assembler
  • Compile and run programs directly on an embedded processor with no operating system (OS)
  • Create, use, and modify Makefiles and Linker Command Files
  • Use Linker Map Files and differentiate them from Linker Command Files

Individual.

Source files, binaries, and PDF file with answers to questions.

non-anonymously marked

 

16:00, Friday, 9th February 2024

[20%]

Coursework activity #2: OLED display control over SPI exercise

Obtain hands-on experience writing a device driver in C for an SPI peripheral, using the FRDMKL03 ARM board and the OLED display from the course hardware kit.

Learning objective:

After successfully completing this exercise, students should be able to:

  • Read a datasheet for an unfamiliar embedded hardware component such as an SPI peripheral and write a device driver in C to interface with the peripheral.

Individual.

Source files, binaries, picture of working system, wiring diagram, and PDF file with answers to questions.

non-anonymously marked

 16:00,  Friday, 16th February 2024

[20%]

 

Coursework activity #3: Power measurement using TI INA219 I2C device exercise

Obtain hands-on experience writing a device driver in C for an I2C peripheral, using the FRDMKL05 ARM board and the TI INA219 daughterboard from the course hardware kit.

Learning objective:

After successfully completing this exercise, students should be able to:

  • Read a datasheet for an unfamiliar embedded hardware component such as an I2C peripheral and write a device driver in C to interface with the peripheral.

Individual.

Source files, binaries, picture of working system, wiring diagram, and PDF file with answers to questions.

Non-anonymously marked.

16:00,  Friday, 1st March 2024

[20%]

 

Coursework activity #4: Project concept, design, implementation, and final report

Present the problem addressed, approach employed, system implemented, and system evaluation.

Learning objectives:

After successfully completing the final project, students should be able to:

  • Design an embedded computing system that address a specified engineering challenge.
  • Prototype an embedded system design using a combination of sensors, microcontrollers, communication, displays, or FPGAs using the tools provided in the course kit.
  • Quantitatively evaluate an embedded sensing and computation system in terms of its time efficiency (performance), energy efficiency (battery life), and measurement and data processing accuracy.

Individual report, source files, binaries.

Non-anonymously marked.

  16:00, Friday, 15th March 2024

[40%]

 

 

Booklists

The following books are relevant to the material in the course and will all be available from the Engineering Library.

  1. An Introduction to Uncertainty in Measurement, ISBN: 978-0521605793
  2. Linkers and Loaders, ISBN: 978-1558604964
  3. The Circuit Designer's Companion, 3rd Edition, ISBN: 978-0080971384
  4. The Art of Electronics, ISBN: 978-0521809269
  5. Color Science: Concepts and Methods, Quantitative Data and Formulae, ISBN: 978-0471399186

Examination Guidelines

Please refer to Form & conduct of the examinations.

 
Last modified: 15/01/2024 10:06

Engineering Tripos Part IIB, 4B25: Embedded Systems for the Internet of Things, 2022-23

Module Leader

Prof. P Stanley-Marbell

Module Lecturer

Prof. P Stanley-Marbell

Timing and Structure

Lent term. 100% coursework. The course will be delivered using a combination of three activities: (1) pre-recorded content to be watched before timetabled meeting; (2) in-person lectures; (3) supplementary discussions on Microsoft Teams where specified.

Prerequisites

3B2 useful. Previous familiarity with using command-line tools on Unix required. The course uses an open source set of software tools available on github at https://github.com/f-of-e/f-of-e-tools. You are required to install these yourself on a Linux workstation or virtual machine for use during the course. The course uses a hardware kit that you are required to acquire and assemble yourself. The list of components in the kit is available online at https://f-of-e.org/course-hardware-kit

Aims

The aims of the course are to:

  • Introduce students to the principles and practice of computation and sensing systems that interact with the physical world.
  • Provide students an introduction to a Bayesian view of measurements, measurement uncertainty, sensors, and computing on sensor data that is synergistic with other research and teaching in the Department of Engineering at the University of Cambridge.

Objectives

As specific objectives, by the end of the course students should be able to:

  • Define the role of uncertainty in measurements of physical signals and quantify measurement uncertainty for a given sensing system.
  • Evaluate energy use in an embedded system using in-system current monitors.
  • Define the role of noise in both measurements and displays and identify appropriate metrics to use in quantifying noise for a given design.
  • Derive analytic relations underlying a Bayesian view of measurements, measurement uncertainty, sensors, and computing on sensor data.
  • Design communication subsystems and the required electrical circuit support between a collection of I2C- or SPI-interfaced sensor integrated circuits and an ARM Cortex-M0 microcontroller.
  • Numerically quantify measurement uncertainty and noise in outputs given a system design.
  • Recall and explain the interaction between displays and the human visual system.
  • Design modifications to sensing, communication, and display systems to improve their energy efficiency.
  • Design the logical organization and required firmware for new systems built around an ARM Cortex-M0 microcontroller, and sensors or displays connected via I2C and SPI communication interfaces.

Content

The module will introduce students to the principles underlying sensor operation, signal acquisition, the role of measurement uncertainty and noise, common sensor communication interfaces and how they interact with modern embedded microcontrollers such as the ARM Cortex-M0 family. The module will link these concepts in the signal acquisition and processing chain to a study of output interfaces in embedded systems. This exploration of output systems will be built on a study of the principles of operation of OLED displays and how the flexibility of the human visual system enables interesting circuit- and algorithm-level techniques to reduce display power dissipation.

Syllabus

Lecture 1, Friday, 20th January 2023: System overview of sensing, computation, I/O, and displays in embedded systems; interpreting device and system datasheets. At the end of this lecture, students should be able to: Enumerate the important components in an embedded system design; read and interpret the datasheet for a component in a system or for an entire system; propose and design changes to a system to extend its uses.


Lecture 2, Wednesday, 25th January 2023: Precision, accuracy, reliability, and measurement uncertainty.  Noise sources in analog and digital systems; role of signal gain and restoring logic. At the end of this lecture, students should be able to: Define precision, accuracy, reliability, and measurement uncertainty; analyze a system design and quantify these properties for a design's components; enumerate the sources of noise and measurement uncertainty in analog and digital systems; propose design changes to improve the robustness of systems to noise.

Lecture 3, Friday, 27th January 2023: Low-level C and assembly language in embedded systems. At the end of this lecture, students should be able to: implement firmware that runs on a microcontroller or microprocessor in the abscence of an operating system and which contains a mixture of C and assembly code.


No Lecture During Week of Monday 30th January 2023. Coursework Activity #1 due 16:00, Friday, 3rd February 2023.


Lecture 4, Wednesday, 8th February 2023: Sensors, embedded I/O interfaces, and noise: Commercial sensor integrated circuits; I2C, SPI (and I2S, I3C, MIPI DSI, and MIPI CSI); noise in integrated circuits (Johnson-Nyquist noise, shot noise, 1/f noise, random telegraph noise).  At the end of this lecture, students should be able to: Enumerate the differences between the common embedded wired communication interfaces; select and substantiate a choice for an interface for a given design problem; enumerate the different potential sources of noise in integrated systems. This lecture will be delivered live over Microsoft Teams to allow everyone to participate in an interactive demo from their computers.

Lecture 5, Friday, 10th February 2023: A Bayesian view of measurements, measurement uncertainty, sensors, and computing on sensor data. This lecture will be delivered live over Microsoft Teams to allow everyone to participate in an interactive demo from their computers.


Lecture 6, Wednesday, 15th February 2023: Field-programmable gate arrays in low-power embedded systems; Verilog overview.  At the end of this lecture, students should be able to: Describe and explain the basic architecture of FPGAs; use their understanding of the Verilog hardware description language and FPGA synthesis tools to modify an existing Verilog design.

Coursework Activity #2 due 16:00, Friday, 17th February 2023.

Lecture 7, Friday, 17th February 2023: Human color vision perception and its interaction with OLED displays: Their structure, interfaces, and techniques for energy-efficiency.  At the end of this lecture, students should be able to: Enumerate the properties of OLED displays; propose changes to existing system designs that use OLED displays in order to improve their energy efficiency; enumerate the basic properties of human color vision that have a bearing on the design of displays for embedded systems.  


No Lecture During Week of Monday 20th February 2023.  Coursework Activity #3 due 16:00, Friday, 24th February 2023.


Lecture 8, Wednesday, 1st March 2023: Physical invariants in embedded systems.  At the end of this lecture, students should be able to: Define physical invariants in the context of a sensor-driven system; apply concepts from Lagrangians, Hamiltonians, the Euler-Lagrange Equations, Noether's theorem, and recent research on inferring Lagrangians and Hamiltonians from sensor data to embedded systems designs.

Lecture 9, Friday, 3rd March 2023: Wireless communications using Bluetooth, 802.15.4/Zigbee, and LoRa; Bluetooth HCI interface.  At the end of this lecture, students should be able to: Enumerate the differences between the major low-power radio interfaces available for embedded systems; propose energy-efficient choices for a wireless sensing system design given the application's design constraints.


Lecture 10, Wednesday, 8th March 2023: Case study: Designing new embedded systems to solve a specified application need.  At the end of this lecture, students should be able to: Propose an architectural design comprising sensing, computation, communication, and display to address a given application need, with the design implementable within the limitations of schematic capture and printed-circuit-board layout tools such as Eagle.

Lecture 11, Friday, 10th March 2023: Evaluating the efficacy of embedded computing systems: Power, performance, and noise measurements.  At the end of this lecture, students should be able to: Quantify the time-performance, energy-efficiency, power-efficiency, and uncertainty in embedded computing systems. Adapt the design of embedded sensing and computation systems that are Pareto-optimal with respect to alternatives.

Coursework Activity #4 due 16:00, Friday, 17th March 2023.

 

Coursework

Coursework Format

Due date

& marks

Coursework activity #1: Embedded processor emulator exercise

Use the GCC and Binutils tools to compile, link, and disassemble binaries and use an open-source embedded system emulator to run a few different programs written in a combination of C and assembly language.

Learning objective:

After successfully completing this exercise, students should be able to:

  • Write simple programs using combination of C and assembler
  • Compile and run programs directly on an embedded processor with no OS
  • Create, use, and modify Makefiles and Linker Command Files
  • Use Linker Map Files and differentiate them from Linker Command Files

Individual.

Source files, binaries, and PDF file with answers to questions.

non-anonymously marked

 

16:00, Friday, 3rd February 2023

[20%]

Coursework activity #2: OLED display control over SPI exercise

Obtain hands-on experience writing a device driver in C for an SPI peripheral, using the FRDMKL03 ARM board and the OLED display from the course hardware kit.

Learning objective:

After successfully completing this exercise, students should be able to:

  • Read a datasheet for an unfamiliar embedded hardware component such as an SPI peripheral and write a device driver in C to interface with the peripheral.

Individual.

Source files, binaries, picture of working system, wiring diagram, and PDF file with answers to questions.

non-anonymously marked

 16:00,  Friday, 17th February 2023

[20%]

 

Coursework activity #3: Power measurement using TI INA219 I2C device exercise

Obtain hands-on experience writing a device driver in C for an I2C peripheral, using the FRDMKL05 ARM board and the TI INA219 daughterboard from the course hardware kit.

Learning objective:

After successfully completing this exercise, students should be able to:

  • Read a datasheet for an unfamiliar embedded hardware component such as an I2C peripheral and write a device driver in C to interface with the peripheral.

Individual.

Source files, binaries, picture of working system, wiring diagram, and PDF file with answers to questions.

Non-anonymously marked.

16:00,  Friday, 24th February 2023

[20%]

 

Coursework activity #4: Project concept, design, implementation, and final report

Present the problem addressed, approach employed, system implemented, and system evaluation.

Learning objectives:

After successfully completing the final project, students should be able to:

  • Design an embedded computing system that address a specified engineering challenge.
  • Prototype an embedded system design using a combination of sensors, microcontrollers, communication, displays, or FPGAs using the tools provided in the course kit.
  • Quantitatively evaluate an embedded sensing and computation system in terms of its time efficiency (performance), energy efficiency (battery life), and measurement and data processing accuracy.

Individual report, source files, binaries, video demonstration at final feedback session (Microsoft Teams).

Non-anonymously marked.

  16:00, Friday, 17th March 2023

[40%]

 

 

Booklists

The following books are relevant to the material in the course and will all be available from the Engineering Library.

  1. An Introduction to Uncertainty in Measurement, ISBN: 978-0521605793
  2. Linkers and Loaders, ISBN: 978-1558604964
  3. The Circuit Designer's Companion, 3rd Edition, ISBN: 978-0080971384
  4. The Art of Electronics, ISBN: 978-0521809269
  5. Color Science: Concepts and Methods, Quantitative Data and Formulae, ISBN: 978-0471399186

Examination Guidelines

Please refer to Form & conduct of the examinations.

 
Last modified: 17/01/2023 15:32

Engineering Tripos Part IIB, 4B25: Embedded Systems for the Internet of Things, 2021-22

Module Leader

Prof. P Stanley-Marbell

Module Lecturer

Prof. P Stanley-Marbell

Timing and Structure

Michaelmas term. 100% coursework. The course will be delivered completely online using a combination of two methods: (1) Pre-recorded content to be watched before timetabled meeting. (2) Discussions on Microsoft Teams during the timetabled meeting times.

Prerequisites

3B2 useful. Previous familiarity with using command-line tools on Unix required. The course uses an open source set of software tools available on github at https://github.com/f-of-e/f-of-e-tools. You are required to install these yourself on a Linux workstation or virtual machine for use during the course. The course uses a hardware kit that you are required to acquire and assemble yourself. The list of components in the kit is available online at https://f-of-e.org/course-hardware-kit

Aims

The aims of the course are to:

  • Introduce students to the principles and practice of computation and sensing systems that interact with the physical world.
  • Provide students an introduction to a Bayesian view of measurements, measurement uncertainty, sensors, and computing on sensor data that is synergistic with other research and teaching in the Department of Engineering at the University of Cambridge.

Objectives

As specific objectives, by the end of the course students should be able to:

  • Define the role of uncertainty in measurements of physical signals and quantify measurement uncertainty for a given sensing system.
  • Evaluate energy use in an embedded system using in-system current monitors.
  • Define the role of noise in both measurements and displays and identify appropriate metrics to use in quantifying noise for a given design.
  • Derive analytic relations underlying a Bayesian view of measurements, measurement uncertainty, sensors, and computing on sensor data.
  • Design communication subsystems and the required electrical circuit support between a collection of I2C- or SPI-interfaced sensor integrated circuits and an ARM Cortex-M0 microcontroller.
  • Numerically quantify measurement uncertainty and noise in outputs given a system design.
  • Recall and explain the interaction between displays and the human visual system.
  • Design modifications to sensing, communication, and display systems to improve their energy efficiency.
  • Design the logical organization and required firmware for new systems built around an ARM Cortex-M0 microcontroller, and sensors or displays connected via I2C and SPI communication interfaces.

Content

The module will introduce students to the principles underlying sensor operation, signal acquisition, the role of measurement uncertainty and noise, common sensor communication interfaces and how they interact with modern embedded microcontrollers such as the ARM Cortex-M0 family. The module will link these concepts in the signal acquisition and processing chain to a study of output interfaces in embedded systems. This exploration of output systems will be built on a study of the principles of operation of OLED displays and how the flexibility of the human visual system enables interesting circuit- and algorithm-level techniques to reduce display power dissipation.

Syllabus

Lecture 1: System overview of sensing, computation, I/O, and displays in embedded systems; interpreting device and system datasheets. At the end of this lecture, students should be able to: enumerate the important components in an embedded system design; read and interpret the datasheet for a component in a system or for an entire system; propose and design changes to a system to extend its uses.

Lecture 2: Precision, accuracy, reliability, and measurement uncertainty.  Noise sources in analog and digital systems; role of signal gain and restoring logic. At the end of this lecture, students should be able to: define precision, accuracy, reliability, and measurement uncertainty; analyze a system design and quantify these properties for a design's components; enumerate the sources of noise and measurement uncertainty in analog and digital systems; propose design changes to improve the robustness of systems to noise.

Lecture 3: Low-level C and assembly in embedded systems. At the end of this lecture, students should be able to: implement firmware that runs in the abscence of an operating system and which contains a mixture of C and ARM assembly code.

Lecture 4: Sensors, embedded I/O interfaces, and noise: Commercial sensor integrated circuits; I2C, SPI (and I2S, I3C, MIPI DSI, and MIPI CSI); noise in integrated circuits (Johnson-Nyquist noise, shot noise, 1/f noise, random telegraph noise).  At the end of this lecture, students should be able to: enumerate the differences between the common embedded wired communication interfaces; select and substantiate a choice for an interface for a given design problem; enumerate the different potential sources of noise in integrated systems.

Lecture 5: A Bayesian view of measurements, measurement uncertainty, sensors, and computing on sensor data.

Lecture 6: Field-programmable gate arrays in low-power embedded systems; Verilog overview.  At the end of this lecture, students should be able to: describe and explain the basic architecture of FPGAs; use their understanding of the Verilog hardware description language and FPGA synthesis tools to modify an existing Verilog design.

Lecture 7: Human color vision perception and its interaction with OLED displays: Their structure, interfaces, and techniques for energy-efficiency.  At the end of this lecture, students should be able to: enumerate the properties of OLED displays; propose changes to existing system designs that use OLED displays in order to improve their energy efficiency; enumerate the basic properties of human color vision that have a bearing on the design of displays for embedded systems.

Lecture 8: Physical invariants in embedded systems.  At the end of this lecture, students should be able to: define physical invariants in the context of a sensor-driven system; apply concepts from Lagrangians, Hamiltonians, the Euler-Lagrange Equations, Noether's theorem, and recent research on inferring Lagrangians and Hamiltonians from sensor data to embedded systems designs.

Lecture 9: Wireless communications using Bluetooth, 802.15.4/Zigbee, and LoRa; Bluetooth HCI interface.  At the end of this lecture, students should be able to: enumerate the differences between the major low-power radio interfaces available for embedded or Internet-of-Things systems; propose energy-efficient choices for a wireless sensing system design given the application's design constraints.

Lecture 10: Case study: Designing new embedded systems to solve a specified application need.  At the end of this lecture, students should be able to: propose an architectural design comprising sensing, computation, communication, and display to address a given application need, with the design implementable within the limitations of schematic capture and printed-circuit-board layout tools such as Eagle.

Lecture 11: Evaluating the efficacy of embedded computing systems: Power, performance, and noise measurements.  At the end of this lecture, students should be able to: quantify the time-performance, energy-efficiency, power-efficiency, and uncertainty in embedded computing systems. Adapt the design of embedded sensing and computation systems that are Pareto-optimal with respect to alternatives.

 

Coursework

Coursework Format

Due date

& marks

Coursework activity #1: Embedded processor emulator exercise

Use the GCC and Binutils tools to compile, link, and disassemble binaries and use an open-source embedded system emulator to run a few different programs written in a combination of C and assembly language.

Learning objective:

After successfully completing this exercise, students should be able to:

 

  • Write simple programs using combination of C and assembler
  • Compile and run programs directly on an embedded processor with no OS
  • Create, use, and modify Makefiles and Linker Command Files
  • Use Linker Map Files and differentiate them from Linker Command Files

Individual.

Source files, binaries, and PDF file with answers to questions.

non-anonymously marked

 

16:00, Friday, 22nd October (week 3)

[20%]

Coursework activity #2: OLED display control over SPI exercise

Obtain hands-on experience writing a device driver in C for an SPI peripheral, using the FRDMKL03 ARM board and the OLED display from the course hardware kit.

Learning objective:

After successfully completing this exercise, students should be able to:

 

  • Read a datasheet for an unfamiliar embedded hardware component such as an SPI peripheral and write a device driver in C to interface with the peripheral.

Individual.

Source files, binaries, picture of working system, wiring diagram, and PDF file with answers to questions.

non-anonymously marked

 16:00,  Friday, 5th November (week 5)

[20%]

 

Coursework activity #3: Project proposal one-page report

Identify an interesting engineering problem that can be addressed using an embedded system developed using the concepts, theory, techniques, and tools covered in this course.

Learning objectives:

After successfully completing this exercise, students should be able to:

 

  • Identify an interesting and important engineering challenge that can be solved using a combination of embedded sensing, embedded computation, and possibly displays and communication.
  • Present a clear list of design objectives for solving the engineering challenge using an embedded system.

Individual Report, PDF format.

Non-anonymously marked.

16:00,  Friday, 12th November (week 6)

[5%]

 

Coursework activity #4: Power measurement using TI INA219 I2C device exercise

Obtain hands-on experience writing a device driver in C for an I2C peripheral, using the FRDMKL05 ARM board and the TI INA219 daughterboard from the course hardware kit.

Learning objective:

After successfully completing this exercise, students should be able to:

  • Read a datasheet for an unfamiliar embedded hardware component such as an I2C peripheral and write a device driver in C to interface with the peripheral.

Individual.

Source files, binaries, picture of working system, wiring diagram, and PDF file with answers to questions.

Non-anonymously marked.

16:00,  Friday, 19th November (week 7)

[20%]

 

Coursework activity #5: Project concept, design, implementation, and final report

Present the problem addressed, approach employed, system implemented, and system evaluation.

Learning objectives:

After successfully completing the final project, students should be able to:

  • Identify an interesting and important engineering challenge that can be solved using a combination of embedded sensing, embedded computation, and possibly displays and communication.
  • Design an embedded computing system that address the engineering challenge.
  • Prototype an embedded system design using a combination of sensors, microcontrollers, communication, displays, or FPGAs using the tools provided in the course kit, and potentially design a custom PCB implementing the design.
  • Quantitatively evaluate an embedded sensing and computation system in terms of its time efficiency (performance), energy efficiency (battery life), and measurement and data processing accuracy.

Individual report, source files, binaries, video demonstration at final feedback session (Microsoft Teams).

Non-anonymously marked.

  16:00, Friday, 14th January (Lent Term)

[35%]

 

 

Booklists

The following books are relevant to the material in the course and will all be available from the Engineering Library.

  1. An Introduction to Uncertainty in Measurement, ISBN: 978-0521605793
  2. Linkers and Loaders, ISBN: 978-1558604964
  3. The Circuit Designer's Companion, 3rd Edition, ISBN: 978-0080971384
  4. The Art of Electronics, ISBN: 978-0521809269
  5. Color Science: Concepts and Methods, Quantitative Data and Formulae, ISBN: 978-0471399186

Examination Guidelines

Please refer to Form & conduct of the examinations.

 
Last modified: 24/09/2021 16:11

Engineering Tripos Part IIB, 4B25: Embedded Systems for the Internet of Things, 2020-21

Module Leader

Dr P Stanley-Marbell

Lecturer

Dr P Stanley-Marbell

Timing and Structure

Michaelmas term. 100% coursework

Prerequisites

3B2 useful.

Aims

The aims of the course are to:

  • Introduce students to the principles and practice of computation and sensing systems that interact with the physical world.
  • Provide students an introduction to a Bayesian view of measurements, measurement uncertainty, sensors, and computing on sensor data that is synergistic with other research and teaching in the Department of Engineering at the University of Cambridge.

Objectives

As specific objectives, by the end of the course students should be able to:

  • Define the role of uncertainty in measurements of physical signals and quantify measurement uncertainty for a given sensing system.
  • Evaluate energy use in an embedded system using in-system current monitors.
  • Define the role of noise in both measurements and displays and identify appropriate metrics to use in quantifying noise for a given design.
  • Derive analytic relations underlying a Bayesian view of measurements, measurement uncertainty, sensors, and computing on sensor data.
  • Design communication subsystems and the required electrical circuit support between a collection of I2C- or SPI-interfaced sensor integrated circuits and an ARM Cortex-M0 microcontroller.
  • Numerically quantify measurement uncertainty and noise in outputs given a system design.
  • Recall and explain the interaction between displays and the human visual system.
  • Design modifications to sensing, communication, and display systems to improve their energy efficiency.
  • Design the logical organization and required firmware for new systems built around an ARM Cortex-M0 microcontroller, and sensors or displays connected via I2C and SPI communication interfaces.

Content

The module will introduce students to the principles underlying sensor operation, signal acquisition, the role of measurement uncertainty and noise, common sensor communication interfaces and how they interact with modern embedded microcontrollers such as the ARM Cortex-M0 family. The module will link these concepts in the signal acquisition and processing chain to a study of output interfaces in embedded systems. This exploration of output systems will be built on a study of the principles of operation of OLED displays and how the flexibility of the human visual system enables interesting circuit- and algorithm-level techniques to reduce display power dissipation.

Syllabus

Lecture 1: System overview of sensing, computation, I/O, and displays in embedded systems; interpreting device and system datasheets. At the end of this lecture, students should be able to: enumerate the important components in an embedded system design; read and interpret the datasheet for a component in a system or for an entire system; propose and design changes to a system to extend its uses.

Lecture 2: Precision, accuracy, reliability, and measurement uncertainty.  Noise sources in analog and digital systems; role of signal gain and restoring logic. At the end of this lecture, students should be able to: define precision, accuracy, reliability, and measurement uncertainty; analyze a system design and quantify these properties for a design's components; enumerate the sources of noise and measurement uncertainty in analog and digital systems; propose design changes to improve the robustness of systems to noise.

Lecture 3: Low-level C and assembly in embedded systems. At the end of this lecture, students should be able to: implement firmware that runs in the abscence of an operating system and which contains a mixture of C and ARM assembly code.

Lecture 4: Sensors, embedded I/O interfaces, and noise: Commercial sensor integrated circuits; I2C, SPI (and I2S, I3C, MIPI DSI, and MIPI CSI); noise in integrated circuits (Johnson-Nyquist noise, shot noise, 1/f noise, random telegraph noise).  At the end of this lecture, students should be able to: enumerate the differences between the common embedded wired communication interfaces; select and substantiate a choice for an interface for a given design problem; enumerate the different potential sources of noise in integrated systems.

Lecture 5: A Bayesian view of measurements, measurement uncertainty, sensors, and computing on sensor data.

Lecture 6: Field-programmable gate arrays in low-power embedded systems; Verilog overview.  At the end of this lecture, students should be able to: describe and explain the basic architecture of FPGAs; use their understanding of the Verilog hardware description language and FPGA synthesis tools to modify an existing Verilog design.

Lecture 7: Human color vision perception and its interaction with OLED displays: Their structure, interfaces, and techniques for energy-efficiency.  At the end of this lecture, students should be able to: enumerate the properties of OLED displays; propose changes to existing system designs that use OLED displays in order to improve their energy efficiency; enumerate the basic properties of human color vision that have a bearing on the design of displays for embedded systems.

Lecture 8: Physical invariants in embedded systems.  At the end of this lecture, students should be able to: define physical invariants in the context of a sensor-driven system; apply concepts from Lagrangians, Hamiltonians, the Euler-Lagrange Equations, Noether's theorem, and recent research on inferring Lagrangians and Hamiltonians from sensor data to embedded systems designs.

Lecture 9: Wireless communications using Bluetooth, 802.15.4/Zigbee, and LoRa; Bluetooth HCI interface.  At the end of this lecture, students should be able to: enumerate the differences between the major low-power radio interfaces available for embedded or Internet-of-Things systems; propose energy-efficient choices for a wireless sensing system design given the application's design constraints.

Lecture 10: Case study: Designing new embedded systems to solve a specified application need.  At the end of this lecture, students should be able to: propose an architectural design comprising sensing, computation, communication, and display to address a given application need, with the design implementable within the limitations of schematic capture and printed-circuit-board layout tools such as Eagle.

Lecture 11: Evaluating the efficacy of embedded computing systems: Power, performance, and noise measurements.  At the end of this lecture, students should be able to: quantify the time-performance, energy-efficiency, power-efficiency, and uncertainty in embedded computing systems. Adapt the design of embedded sensing and computation systems that are Pareto-optimal with respect to alternatives.

 

Coursework

Coursework Format

Due date

& marks

Coursework activity #1: Embedded processor emulator exercise

Use the GCC and Binutils tools to compile, link, and disassemble binaries and use an open-source embedded system emulator to run a few different programs written in a combination of C and assembly language.

Learning objective:

After successfully completing this exercise, students should be able to:

 

  • Write simple programs using combination of C and assembler
  • Compile and run programs directly on an embedded processor with no OS
  • Create, use, and modify Makefiles and Linker Command Files
  • Use Linker Map Files and differentiate them from Linker Command Files

Individual.

Source files, binaries, and text file with answers to questions.

non-anonymously marked

 

16:00, Friday, 23rd October (week 3)

[20%]

Coursework activity #2: OLED display control over SPI exercise

Obtain hands-on experience writing a device driver in C for an SPI peripheral, using the FRDMKL03 ARM board and the OLED display from the course hardware kit.

Learning objective:

After successfully completing this exercise, students should be able to:

 

  • Read a datasheet for an unfamiliar embedded hardware component such as an SPI peripheral and write a device driver in C to interface with the peripheral.

Individual.

Source files, binaries, picture of working system, wiring diagram, and text file with answers to questions.

non-anonymously marked

 16:00,  Friday, 6th November (week 5)

[20%]

 

Coursework activity #3: Project proposal one-page report

Identify an interesting engineering problem that can be addressed using an embedded system developed using the concepts, theory, techniques, and tools covered in this course.

Learning objectives:

After successfully completing this exercise, students should be able to:

 

  • Identify an interesting and important engineering challenge that can be solved using a combination of embedded sensing, embedded computation, and possibly displays and communication.
  • Present a clear list of design objectives for solving the engineering challenge using an embedded system.

Individual Report.

Non-anonymously marked.

16:00,  Friday, 13th November (week 6)

[5%]

 

Coursework activity #4: Power measurement using TI INA219 I2C device exercise

Obtain hands-on experience writing a device driver in C for an I2C peripheral, using the FRDMKL05 ARM board and the TI INA219 daughterboard from the course hardware kit.

Learning objective:

After successfully completing this exercise, students should be able to:

  • Read a datasheet for an unfamiliar embedded hardware component such as an I2C peripheral and write a device driver in C to interface with the peripheral.

Individual.

Source files, binaries, picture of working system, wiring diagram, and text file with answers to questions.

Non-anonymously marked.

16:00,  Friday, 20th November (week 7)

[20%]

 

Coursework activity #5: Project concept, design, implementation, and final report

Present the problem addressed, approach employed, system implemented, and system evaluation.

Learning objectives:

After successfully completing the final project, students should be able to:

  • Identify an interesting and important engineering challenge that can be solved using a combination of embedded sensing, embedded computation, and possibly displays and communication.
  • Design an embedded computing system that address the engineering challenge.
  • Prototype an embedded system design using a combination of sensors, microcontrollers, communication, displays, or FPGAs using the tools provided in the course kit, and potentially design a custom PCB implementing the design.
  • Quantitatively evaluate an embedded sensing and computation system in terms of its time efficiency (performance), energy efficiency (battery life), and measurement and data processing accuracy.

Individual report, source files, binaries, in-person demonstration at final feedback session.

Non-anonymously marked.

  16:00, Friday, 15th January (Lent Term)

[35%]

 

 

Booklists

The following books are relevant to the material in the course and will all be available from the Engineering Library.

  1. An Introduction to Uncertainty in Measurement, ISBN: 978-0521605793
  2. Linkers and Loaders, ISBN: 978-1558604964
  3. The Circuit Designer's Companion, 3rd Edition, ISBN: 978-0080971384
  4. The Art of Electronics, ISBN: 978-0521809269
  5. Color Science: Concepts and Methods, Quantitative Data and Formulae, ISBN: 978-0471399186

Examination Guidelines

Please refer to Form & conduct of the examinations.

 
Last modified: 10/09/2020 16:04

Pages

Subscribe to CUED undergraduate teaching site RSS