Skip to content

CasperKristiansson/Computer-Hardware-Engineering-IS1200

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

IS1200 Computer Hardware Engineering

Content and learning outcomes

Course contents

The course gives basic knowledge of how a computer functions and is built-up both from a hardware and from a software perspective The course is divided into six different modules, which for example include the following basic concepts:

  1. C-programming and assembler language: pointers, functions, stack, assembly language, machine language, instruction encoding and processor registers.
  2. I/O system: timers, interrupts and memory mapped I/O.
  3. Digital design: truth tables, gates, boolean algebra, multiplexers, decoders, adders, combinatorial nets, sequential networks and registers.
  4. Processor construction: arithmetic-logic unit, data path, control unit and pipeline.
  5. Memory architectures: instruction cache, data cache and virtual memory.
  6. Parallel processors and programs: Amdahl's law, different variants of parallelism as well as multicore.

Intended learning outcomes

After passing the course, the student shall be able to

  • Implement low-level programs in the C programming language and in an assembly language
  • Implement low-level programs with input-output, timers, and interrupts
  • Analyse processor microarchitectures, with and without a pipeline,
  • Analyse memory hierarchies, including cache-structures.
  • Compare fundamental concepts about multiprocessor computers.
  • Explain and describe technical solutions both orally and in writing.

Lab 1 Assembly Programming

  1. analyze MIPS assembly code by using a simulator.
  2. write short assembly code functions in MIPS assembler.
  3. execute and test a compiled program on a PIC32 microcontroller.

Lab 2 C Programming

  1. construct shorter C programs that includes for-loops, if-statements, arrays, and pointers.
  2. analyze C programs and understand how a compiled program is laid out in memory.

Lab 3 I/O Programming

  1. Write code for general-purpose input/output (GPIO) ports.
  2. Write code to initialize and use simple input/output devices, such as buttons and LEDs.
  3. Write code to initialize and use devices with handshaking, such as a programmable timer.
  4. Write code to initialize and handle interrupts.
  5. Have a general understand for how to read non-trivial technical manuals, data sheets, and header files.

Lab 4 Processor Design

  1. Construct a simple single-cycle processor that executes a real assembly program.
  2. Explain how bit selection and instruction decoding works.
  3. Explain the basic principles of the data path and the control unit.