Digital Systems

Copyright © 2024 J. M. Spivey
Jump to navigation Jump to search

Digital systems is a course about how computers work, from logic gates and latches at the bottom, to concurrent processes at the top (running under a simple operating system), with time spent on machine-level programming in the middle. For an easy start, we will begin in the middle with small programs written in machine code.

  • In Hilary Term, we will study low-level programming with the help of a tiny computer, the BBC micro:bit, which includes an ARM-based microcontroller as its processor. Starting in assembly language and moving on to C, we will learn about the instructions that make up machine code, including arithmetic, branching, memory access, and subroutines. We will also (vitally for embedded systems) learn about controlling I/O devices, such as the buttons and lights on the micro:bit and the serial interface that allows it to talk to a host computer. Once a program reaches a certain degree of complexity, it is no longer sufficient to wait in a tight loop for an event to happen, and we will study the hardware and software aspects of solutions to this problem: using interrupts to respond to external events, and an operating system to structure the program as a family of concurrent processes, each responsible for one part of the task.
  • In Trinity Term, we will study the elements of computer hardware, building up from gates and latches to architectural elements such as registers, adders and decoders, and finally a paper model of a processor able to execute a selection of ARM instructions, supported by an architectural simulator.

The material you see here is as I last presented it at Oxford, possibly with future corrections and improvements. If others continue to use the material in the future, for a course at Oxford or elsewhere, you should look on the relevant official website for information about what content is to be covered, and the detailed conventions that apply.

In particular, the information here pertains only to the Version 1 micro:bit, and may need updating for subsequent versions. My own version of the software for the Version 2 micro:bit will be incorporated in the book project Bare Metal micro:bit that is linked below.


Information about the course is provided on several other pages.

The micro:bit (or electronic teabag[1])

And last of all:

  • There's a website for my book Bare Metal micro:bit, containing expanded versions of the lab materials for the course, with explanations appended.



  1. So called because the board dangles from its USB cable like a teabag dangling from its string.