Note: I've just migrated to a different physical server to run Spivey's Corner,
with a new architecture, a new operating system, a new version of PHP, and an updated version of MediaWiki.
Please let me know if anything needs adjustment! – Mike

Digital Systems: Difference between revisions

Copyright © 2017–2023 J. M. Spivey
Jump to navigation Jump to search
No edit summary
(2 intermediate revisions by the same user not shown)
Line 6: Line 6:
* 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.
* 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.


{{V2box|Most of the materials for the course are written on the assumption that we will be programming the original 'V1' {{microbit}}, with a Cortex-M0 core implementing the Thumb-1 instruction set, in an nRF51822 microcontroller with 16kB of RAM running at 16MHz.  The original {{microbit}} has been superceded by the V2 board, with a Cortex-M4 code implementing the Thumb-2 instruction set, an nRF52833 microcontroller with 128kB of RAM running at 64MHz, and incorporating a floating point unit.  We will be handing out this newer board for use in the lab sessions.  Luckily, the new chip can run programs written for the old chip almost without change, so for simplicity we'll continue to study programs for the old chip, noting differences where they are relevant in text boxes like this one.  The supporting software for the lab has been adjusted to suit the new chip, mostly in ways that will be invisible to participants, with a version for the old chip available alongside.}}
{{V2box|Most of the materials for the course are written on the assumption that we will be programming the original 'V1' {{microbit}}, with a Cortex-M0 core implementing the Thumb-1 instruction set, in an nRF51822 microcontroller with 16kB of RAM running at 16MHz.  The original {{microbit}} has been superceded by the V2 board, with a Cortex-M4 core implementing the Thumb-2 instruction set, an nRF52833 microcontroller with 128kB of RAM running at 64MHz, and incorporating a floating point unit.  We will be handing out this newer board for use in the lab sessions.  Luckily, the new chip can run programs written for the old chip almost without change, so for simplicity we'll continue to study programs for the old chip, noting differences where they are relevant in text boxes like this one.  The supporting software for the lab has been adjusted to suit the new chip, mostly in ways that will be invisible to participants, with a version for the old chip available alongside.}}


==Resources==
==Resources==
Line 22: Line 22:


==Miscellaneous==
==Miscellaneous==
* A page of [[Notes for next year|updates]] to make before next year's performance of the course.
* A literate Haskell version of the [[Thumb simulator]], differing in many details, including the names of control signals.
* A literate Haskell version of the [[Thumb simulator]], differing in many details, including the names of control signals.
* Notes for the project of [[The {{Phos}} project|extending and porting {{Phos}}]].
* Notes for the project of [[The microbian project|extending and porting {{microbian}}]].
* A list of ways of [[Programming the micro:bit|programming the {{microbit}}]].
* A list of ways of [[Programming the micro:bit|programming the {{microbit}}]].
* A check-list of [[preparation tasks]] to negotiate with IT Support.
* A check-list of [[preparation tasks]] to negotiate with IT Support.

Revision as of 11:06, 7 August 2021

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

or, How to read a datasheet.

This is a course about how computers work, starting with logic gates and latches, ending with concurrent processes running under a simple operating system, and spending time on machine-level programming in the middle.

  • 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.

Resources

Information about the course is provided on several other pages.

Miscellaneous

Links



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