OverviewThis module focuses on the basic principles of modern computer architecture and how they are mapped onto modern (32-bit) microcontrollers. The course uses the ARM processor core as an exemplar of a modern processor architecture that is now ubiquitous in embedded systems. The course will cover classic topics in architecture (CPU and ALU structure, Instruction sets, memory and memory) and performance metrics for evaluating the relative performance of different architectures such as RISC vs CISC and also VLIW, SIMD, MIMD, ASSP and DSP devices.
The NXP 1786 (mbed) microcontroller is used as an example microcontroller development platform and industry standard IDE's from Keil/IAR are used to program, test and debug them. The course includes a comprehensive presentation of typical microcontroller peripherals: ADCs and DACs, Timers and Input Capture, communication using IIC, SPI, UART. Displays. Interrupts and Interrupt Service Routines (ISRs).
The course also provides an introduction to the C and C++ programming languages and their use with microcontroller based systems. This material will include: Variables, data-types and arithmetic expressions. Strings, Loops, Arrays. Functions, Structures, Pointers, bit operators. The pre-processor. I/O operations in C. Debugging Programs. Object-Oriented Programming. The Standard C Library.
Issues such as software testing and testing strategies are discussed. Compiling and downloading code onto the mbed using commercial Integrated Development Environments such as Keil® and IAR®. GNU based toolchains for Microcontroller development.
This module appears in:
Total contact hours: 76
Private study hours: 74
Total study hours: 150
Method of assessment
1) Systematically and comprehensively understand of fundamental computer architectures and the basic building blocks (i.e. ALU, CPU, Registers, Program and Data memory) used to build them.
2) Appreciate and critically appraise alternative processor architectures such as RISC, CISC, VLIW, SIMD, MIMD and DSP. Application Specific Signal Processing (ASSP) and Multi-Core Processors.
3) Comprehensively understand the structure of a typical microcontroller and associated peripherals. An ability to make an informed decision about the choice of microcontroller for a particular application(s).
4) Compile and download code onto a microcontroller using commercial Integrated Development Environments
5) Systematically and comprehensively understand Microcontroller Peripherals: ADCs and DACs, Timers and Input Capture. Communication using the IIC, SPI, UART, Displays. Interrupts and Interrupt Service Routines.
6) Program microcontrollers using C and C++ Programming.
7) Critically appraise software development and Software testing techniques.