25771: Microprocessor Systems Design
Course Name: Microprocessor Systems Design
Course Number: 25771
Prerequisite(s): 25754 (Computer Structure and Microprocessor and Lab)
Co-requisite(s): -
Units: 3
Level: Undergraduate
Last Revision: Spring 2019

Description
In this course, the design of microprocessor systems is examined. This review includes the study of hardware, software and the connection of peripheral hardware. AVR and PIC microcontrollers and ARM microprocessors and X86 family microprocessors are studied. First, the hardware structure of the ATMEGA32 microcontroller processor and the relevant assembly language instructions, and then the internal peripheral hardware around the processor are studied in detail. The PIC18F458 microcontroller is also reviewed as another example of widely used microcontrollers and its major structural differences with AVR are shown. Today, ARM microprocessors are used as one of the most important microprocessors in advanced microcontrollers. Therefore, the structure of these microprocessors and its working modes along with the relevant instructions in assembly language are examined in the next section. Intel's X86 family of microprocessors is the most important processor used in today's computers. In the final part of the course, these microprocessors and how to evolve in the details of their structure and function are examined.
 
Syllabus:
  • Computers
    • The internal structure of the computer and its components
    • Types of semiconductor memory and memory connection to the central processor
    • Central processor components and how it works
    • The difference between Harvard and von Neumann structures and their suitability for microcontrollers and microprocessors
    • The difference between microcontrollers and microprocessors
  • AVR microcontrollers
    • Getting to know AVR microcontrollers and their families
    • The structure of AVR microcontrollers and their assembly programming
    • General registers and registers related to I/O, machine cycles and instruction execution time
    • Calculation instructions and program flow control instructions
    • Commands related to I/O ports and addressing types to access data
    • Connecting ATMEGA32 microcontroller bases, fuses and microcontroller programming methods
    • Peripheral parts of ATMEGA32 microcontroller, how they work, use and programming related to them:
      • Timers and Counters
      • Interrupts and their advantage
      • RS232 serial communication
      • How to connect the keyboard and external LCD display to the microcontroller and how to use them
      • Microcontroller's internal analog-to-digital converter and use it to connect the microcontroller's input to the sensors
      • External tool for connecting microcontroller output to controlled industrial devices
      • Creating pulses with variable width (PWM) to control industrial devices
      • Internal hardware and SPI communication protocol and connection to MAX7221 for display control
      • Internal hardware and I2C communication protocol and connection to DS1307 timer
  • PIC microcontrollers
    • Familiarity with PIC microcontrollers and their families
    • Internal structure of PIC microcontrollers and assembly language
    • PIC18F458 microcontroller and its internal structure
      • Role of WREG register and destination of processed data compared to AVR microcontrollers
      • STACK memory and its difference with AVR microcontroller
      • Using a smaller Data Address Space to reduce instruction bits
      • Using the memory bank switch (Register Bank Switching) and the role of the BSR register
      • Indirect Data Addressing
  • ARM microprocessors
    • Familiarity with ARM microprocessors and its history
    • Three processor states (ARM, Thumb, Jazelle States) and the difference in instructions and their sizes
    • Checking the processor performance (and comparing with the processor performance in the AVR microcontroller)
      • Processor registers
      • Seven operation modes of the processor, Privilege and accessible registers in each mode
      • Check flags and CPSR and SPSR registers
      • The operation of the processor when an exception occurs (Exception Handling) including interrupts
      • The ability to control the conditional execution of all commands by the programmer
      • The ability to control the updating of flags (Flags Update) during the execution of commands by the programmer
      • Branch & Call command with return and no return
      • Data processing instructions and role of Barrel Shifter in second operand and immediate value
      • Addressing and accessing data in memory (Data Memory Access)
      • Software Interrupts
      • Checking branches with nested subroutine calls
      • Getting to know the Thumb instruction set
  • Intel X86 family microprocessors
    • Familiarity with X86 microprocessors and its history
    • Available memory sizes for various processor families, from 8086 to Pentium and Real Mode
    • Application of different parts of memory for a computer based on 8086 processor and DOS operating system
    • Examining the structure and operation of processors from 8086 to 80486 (and comparing with the operation of the processor in the AVR microcontroller)
      • General purpose registers of the processor and parts of their special applications
      • Special purpose registers include Flags, SP, IP
      • Check the flags in the Flags register
      • Segment Registers and how to address memory in Real Mode
      • Checking the Protected Mode of the processor and how to address the memory using the segment definition table
      • Introduction of Program Invisible registers to increase memory access speed in Protected mode
      • Memory paging for more flexible addressing
      • Methods of addressing data memory and using the MOVE command, for example (register, direct, ...)
      • Addressing code memory with branch instructions (JMP, CALL)
      • Stack memory access with PUSH and POP commands
      • Check how to convert commands to machine language for MOVE command for example
      • Checking various commands like..., MOVZX, POP, LEA for easy data transfer
      • String Data Transfer Instructions, D flag and pointers
      • Further review of assembly language for X86 processors
      • Examining multiplication and division instructions in X86 processors and referring to simple logical arithmetic instructions
      • Review of Bit Scan commands and string comparisons (String Comparisons)
      • Review of program flow control, Call, Jump and interrupts commands
      • Checking the processor performance (and comparing with the processor performance in the AVR microcontroller)
    • Examining the structure and function of Pentium and Pentium Pro processors
      • Memory structure and I/O
      • Branch Prediction
      • Cache memory structure
      • Superscalar architecture structure
      • Special registers
      • Features of the Pentium Pro processor
    • Investigating the structure and function of Pentium II, III, 4 and Core2 processors
      • Memory structure and I/O
      • Set of registers
      • Hyper Threading technology
      • Multi Core Technology
      • CPUID
      • Model-Specific Registers
      • Performance-Monitoring Registers
      • 64 bit technology

References:
  • M. Mazidi, S. Naimi, S. Naimi, AVR Microcontroller and Embedded Systems, Prentice Hall, 2010
  • M. Mazidi, R. McKinlay, D. Causey, PIC Microcontroller and Embedded Systems, Pearson Education, 2008
  • A. Sloss, D. Symes, C. Wright, ARM System Developer's Guide, Morgan Kaufmann, 2004
  • B. B. Brey, The Intel Microprocessors, 8th Edition, Prentice Hall, 2008


 
Last Update: 2024-06-09