Digital Systems: Difference between revisions

Copyright © 2017–2023 J. M. Spivey
Jump to navigation Jump to search
No edit summary
(Undo revision 1679 by Mike (talk))
Tags: Removed redirect Undo
 
(78 intermediate revisions by the same user not shown)
Line 1: Line 1:
{{smallcaps|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.
{{Intro}}
* In Hilary Term, we will study low-level programming with the help of a tiny computer, the [[The BBC micro:bit|BBC {{Microbit}}]], 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 {{Microbit}} 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.
[[Image:Microbit.gif|thumb|right|300px|The {{Microbit}} (or electronic teabag<ref>So called because the board dangles from its USB cable like a teabag dangling from its string.</ref>)]]
* 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.
 
==Timetable==
===Hilary Term===
;Lectures: Tuesday in LTA and Friday in LTB at 12:00, weeks 1--8. ''Not recorded!''
;Practicals: Wednesday 10:00 to 12:00 in the Thom Building Lab, unofficially in weeks 2--3, officially in weeks 4--8.
;Tutorials: In college, four problem sheets this term.
 
Here is the plan in the event that the planned strike takes place and runs its full term:
{|class = "wikitable"
!!!Monday!!Tuesday!!Wednesday!!Thursday!!Friday
|-
|Week 5||||Lecture||Lab||{{span|style="color: red"|Strike}}||{{span|style="color: red"|Strike}}
|-
|Week 6||{{span|style="color: red"|Strike}}||{{span|style="color: red"|Strike}}||Lab / {{span|style="color: red"|Strike}}||||Lecture
|-
|Week 7||{{span|style="color: red"|Strike}}||{{span|style="color: red"|Strike}}||Lab / {{span|style="color: red"|Strike}}||{{span|style="color: red"|Strike}}||Lecture
|-
|Week 8||{{span|style="color: red"|Strike}}||{{span|style="color: red"|Strike}}||Lab / {{span|style="color: red"|Strike}}||{{span|style="color: red"|Strike}}||{{span|style="color: red"|Strike}}
|}
 
===Trinity Term===
;Lectures: TBA, weeks 1--4, Location TBA.
;Practicals: None, but some utterly optional materials are provided.
;Tutorials: Two more problem sheets.


==Resources==
==Resources==
Information about the course is provided on several other pages.
Information about the course is provided on several other pages.
* [[Syllabus and synopsis]].
* [[Syllabus and synopsis]].
* [[Lecture notes|Course outline]] with lecture handouts.
* [[Lecture notes|Notes]] for each lecture.
* [[Problem sheets]].
* [[Problem sheets]].
* Information about the [[laboratory exercises]].
* Information about the [[laboratory exercises]].
* A [[reading list]].
* A [[reading list]].
* A [[C &ndash; a very quick guide|very quick quide]] to programming in C.
* A page about the [[The BBC micro:bit|BBC {{Microbit}}]], including links to online resources.
* A page about the [[The BBC micro:bit|BBC {{Microbit}}]], including links to online resources.
* A page about the [[Phōs]] operating system.
* A page about the [[Microbian|{{Microbian}}]] operating system.
* A page of [[frequently asked questions]].
* A page of [[frequently asked questions]].
* A [[glossary]], defining terms used in the course.
* A [[glossary]], defining terms used in the course.
* A [[Thumb instructions by lecture|useful page]] lists the Thumb instructions introduced in each lecture.
* A useful page listing the [[Thumb instructions by lecture|Thumb instructions]] introduced in each lecture.
And last of all:
* There's a website for my book [https://spivey.oriel.ox.ac.uk/baremetal Bare Metal {{microbit}}], containing expanded versions of the lab materials for the course, with explanations appended.


==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}}]].
* Copies of any special [[handouts]].


==Links==
==Links==

Latest revision as of 14:56, 9 March 2024

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

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.

Resources

Information about the course is provided on several other pages.

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.

Miscellaneous

Links



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