This 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.
Total contact hours: 76
Private study hours: 74
Total study hours: 150
Workshop Assessments - 40%
Examination - 60%
• Martin, T. (2013) The Designers Guide to the Cortex-M Processor Family. Elsevier (Newnes) ISBN: 978-0-08-098296-0
• Yiu, J. (2010) The Definitive Guide to the ARM Cortex-M3. Elsevier (Newnes). ISBN: 978-1-85617-963-8
• Kochan, S. G. (2005) Programming in C: A Complete Introduction to the C Programming Language. Developers Library. ISBN: 978-0672326660
• Peckol, J. K. (2008) Embedded Systems: A Contemporary Design Tool. John Wiley ISBN: 978-0-471-72180-2
• Oshana, R and Kraeling, M. (2013) Software Engineering for Embedded Systems: Methods, Practical Techniques and Applications Elsevier (Newnes) ISBN: 978-0-12-415917-4
• Harris, David Money and Harris, Sarah L., 2012. Digital Design and Computer Architecture. San Francisco, Calif: Morgan Kaufmann. ISBN 9780123944245
• Hennessy, John L., Patterson, David A. and Asanovic´, Krste, Computer Architecture: A Quantitative Approach. Waltham, MA: Morgan Kaufmann/Elsevier. ISBN 012383872X
• Keller, Rainer, Kramer, David and Weiss, Jan-Philipp, 2010. Facing the Multicore-Challenge: Aspects of New Paradigms and Technologies in Parallel Computing. Berlin, Heidelberg: s.n. ISBN 9783642162329
• Nisan, Noam and Schocken, Shimon, 2008. The Elements of Computing Systems: Building a Modern Computer from First Principles. Cambridge, Mass: MIT. ISBN 9780262640688
• Patterson, David A. and Hennessy, John L., Computer Organization and Design: The Hardware/Software Interface. Amsterdam: Morgan Kaufmann. ISBN 9780123747501
• Stallings, William, Computer Organization and Architecture: Designing for Performance. Upper Saddle River, NJ: Prentice Hall. ISBN 0135064171
See the library reading list for this module (Canterbury)
On successfully completing the module students will be able to:
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.
University of Kent makes every effort to ensure that module information is accurate for the relevant academic session and to provide educational services as described. However, courses, services and other matters may be subject to change. Please read our full disclaimer.