Course Description:
This course introduces students with the internal architecture, Assembly Language programming concepts and I/O interfaces using ARM microprocessors. Students will develop comprehensive understanding of the computer software programming model and instruction set architecture. Course will focus on ARM assembly programming techniques with a brief introduction to other ISAs. Students will also learn microarchitecture techniques to understand how an ISA is implemented in hardware. They will learn about pipelining, memory hierarchy, cache organization and interfacing with the I/O devices.

Course Learning Outcomes:
CLO:1 Express the basic concepts of computer architecture and I/O devices interfacing with emphasis on ARM processor microarchitecture.
CLO:2 Apply concepts related to computer memory hierarchy and organization, interfacing of I/O devices with the microprocessor and direct memory access (DMA).
CLO:3 Develop programs in ARM assembly, using various instructions types and addressing modes of ARM architecture and translate simple C code to assembly.

Course Contents:

1. Overview of Computer Architecture-Four Lectures
• Introduction to microprocessors and microcontrollers
• Types of microprocessor architectures

2. ARM Microprocessors Software Architecture- Four Lectures
• Programming Model of ARM Microprocessors
• Overview of STM32F4 Board and I/O Interfaces
• ARM Registers, Data Registers & Status Register
• Memory Address Space and Stack

3. ARM Assembly Language Programming- Four Lectures
• High Level vs. Low Level Programming Paradigm
• Overview of STM32F4 Programming Environment
• ARM Addressing Modes

4. ARM Instruction Set- Six Lectures
• Data Transfer Instructions
• Arithmetic, Logical and Shift Instructions
• Control Flow and Jump Instructions
• Subroutines, Call and return

5. Input Output Interfaces – Four Lectures
• Keypad interface with the STM32F4
• Liquid Crystal Interface with the STM32F4
• Analog to Digital Conversion and A/D Interface with the STM32F4

6. Memory Types and DMA Interface – Four Lectures
• Primary and Secondary Memory
• Types of Memory Devices
• Memory Controllers
• Direct Memory Interface (DMA)

7. Timers and Interrupts – Four Lectures
• Timers and Counters
• Interrupts and Interrupt Execution
• Overview of Timers and Interrupts in STM32F4
• PWM Generation in STM32F4

8. Peripheral Interfaces-Two Lectures
• Serial and Parallel Communication Interface
• Overview of Serial Interface on STM32F4 board