Digital Systems: Difference between revisions
(24 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
[[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>)]] | [[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>)]] | ||
{{smallcaps|This is a course}} about how computers work, | {{smallcaps|This 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 [[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. | * 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. | ||
* 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. | ||
Line 12: | Line 8: | ||
==Schedule== | ==Schedule== | ||
===Hilary Term=== | ===Hilary Term=== | ||
====Lectures==== | |||
* 16 lectures: TBA. | |||
* | |||
<b>Although some elements of the lectures will be automatically recorded, the dynamic blend of slides, calculations on the whiteboard, software demonstrations, computer hardware shown via live video and online instrumentation, and problems solved by the lecturer and class working together means that not all elements will be captured, and the recordings may therefore be almost useless. In addition, the content of each lecture may change in response to questions from the audience. Participants who cannot attend lectures in person may find it best to follow the course by reading the extensive [[lecture notes]] available on this site, together with copies of the slides, and joining the weekly consultation sessions.</b> | <b>Although some elements of the lectures will be automatically recorded, the dynamic blend of slides, calculations on the whiteboard, software demonstrations, computer hardware shown via live video and online instrumentation, and problems solved by the lecturer and class working together means that not all elements will be captured, and the recordings may therefore be almost useless. In addition, the content of each lecture may change in response to questions from the audience. Participants who cannot attend lectures in person may find it best to follow the course by reading the extensive [[lecture notes]] available on this site, together with copies of the slides, and joining the weekly consultation sessions.</b> | ||
====Lab sessions==== | |||
In the Thom Building, Department of Engineering Science. In addition to the official lab times noted above, the lecturer will be available at the same time and in the same place in weeks 3 and 4 to help those who want to get an early start with assembly language programming. | |||
* Informal sessions: TBA, weeks 3 and 4. | |||
* Official sessions: TBA, weeks 5–8. | |||
There will be no lab sessions in Trinity Term. | |||
====Tutorials==== | |||
Your college will organise tutorials in this subject, as in others. To support them, there are four [[problem sheets]] this term, two on machine-level programming, one on I/O devices, and one on embedded operating systems. | |||
===Trinity Term=== | ===Trinity Term=== | ||
====Lectures==== | |||
* 8 lectures, TBA. | |||
====Tutorials==== | |||
Two more tutorials are suggested, with a problem sheet on digital design, and another on processor architecture. | |||
==Resources== | ==Resources== | ||
Line 39: | Line 38: | ||
* Information about the [[laboratory exercises]]. | * Information about the [[laboratory exercises]]. | ||
* A [[reading list]]. | * A [[reading list]]. | ||
* A [[C – 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 [[Microbian|{{Microbian}}]] operating system. | * A page about the [[Microbian|{{Microbian}}]] operating system. | ||
Line 44: | Line 44: | ||
* A [[glossary]], defining terms used in the course. | * A [[glossary]], defining terms used in the course. | ||
* A useful page listing the [[Thumb instructions by lecture|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== |
Revision as of 14:42, 1 October 2022
This 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.
Schedule
Hilary Term
Lectures
- 16 lectures: TBA.
Although some elements of the lectures will be automatically recorded, the dynamic blend of slides, calculations on the whiteboard, software demonstrations, computer hardware shown via live video and online instrumentation, and problems solved by the lecturer and class working together means that not all elements will be captured, and the recordings may therefore be almost useless. In addition, the content of each lecture may change in response to questions from the audience. Participants who cannot attend lectures in person may find it best to follow the course by reading the extensive lecture notes available on this site, together with copies of the slides, and joining the weekly consultation sessions.
Lab sessions
In the Thom Building, Department of Engineering Science. In addition to the official lab times noted above, the lecturer will be available at the same time and in the same place in weeks 3 and 4 to help those who want to get an early start with assembly language programming.
- Informal sessions: TBA, weeks 3 and 4.
- Official sessions: TBA, weeks 5–8.
There will be no lab sessions in Trinity Term.
Tutorials
Your college will organise tutorials in this subject, as in others. To support them, there are four problem sheets this term, two on machine-level programming, one on I/O devices, and one on embedded operating systems.
Trinity Term
Lectures
- 8 lectures, TBA.
Tutorials
Two more tutorials are suggested, with a problem sheet on digital design, and another on processor architecture.
Resources
Information about the course is provided on several other pages.
- Syllabus and synopsis.
- Notes for each lecture.
- Problem sheets.
- Information about the laboratory exercises.
- A reading list.
- A very quick quide to programming in C.
- A page about the BBC micro:bit, including links to online resources.
- A page about the micro:bian operating system.
- A page of frequently asked questions.
- A glossary, defining terms used in the course.
- A useful page listing the Thumb instructions introduced in each lecture.
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
- A literate Haskell version of the Thumb simulator, differing in many details, including the names of control signals.
- Notes for the project of extending and porting micro:bian.
- A list of ways of programming the micro:bit.
- A check-list of preparation tasks to negotiate with IT Support.
Links
- Jay Carlson reviews dozens of different microcontrollers costing $1 or less.
- More than you could possibly need to know about bit-twiddling hacks.
- ↑ So called because the board dangles from its USB cable like a teabag dangling from its string.