ECE243 - “SPRING” 2008

Andreas Moshovos (*)

 

** Warning **

 

There may be errors or omissions in the notes that follow and of course I’m responsible for them. If you do spot an error please let me know. There no intentional errors in the notes. Irrespective of any typos and other errors, you are responsible for the “correct answer” to questions and problems.

 

How these relate to the recommended book: In our lectures we will use a slightly different order than the book and also emphasize some topics more than others. Accordingly, there may not always be a direct correspondence between a lecture and a book section. Where possible I will be noting the book sections each lecture corresponds to.

 

If you want to experiment with NIOS II programs outside of the labs I recommend purchasing a DE-1 board.

 

Chapter 8 from Altera’s NIOS II Processor Reference: NIOS II Instruction Reference

The complete NIOS II Processor Reference: NIOS II Processor Reference Handbook

 

THEMATIC SECTION #1: Understanding what computers do at the low level:

What you need to know to successfully program a computer

 

Week of January 7

 

1. Introduction, course goals, digital systems and why they are useful.

(book chapter 1 except 1.6 & 1.7)

2. Using Binary Quantities to Represent Other Things.

(book 2.1)

**** Practice questions Answers

* More information about floating point numbers – we will not cover or discuss any of this material.

3. Behavioral Model of Memory.

(book 2.2 – 2.3)

* if there is time we will cover this in the lectures:

       - The DE1 SRAM memory chip interface: lecture slides, datasheet

**** Practice questions

 

Week of January 14

 

4. Introduction to the NIOS II programming model.

(book 3.8 and some of 3.9 and 2.4)

Updated on 16/1/2008. Updates shown in red.

5. Using Assembly to Write NIOS II programs.

      (book 2.6, 3.10 and Ultragizmo manual 2.1)

   Added 16/1/2008: Step-by-Step Examples of loads and stores

 

Week of January 21

 

6. Simple Control Flow (non straight-line sequencing).

      (book 2.4.5, 2.4.6, 3.11.1, 3.11.2)

7. For loops, arrays and do-while loops.

      (not as-is in the book related sections 2.11 and 3.15)

8. Subroutines – Requirements – Calling and Returning

 

Week of January 28

 

9. Subroutines – Passing Arguments

      Corrections on Jan. 31

      Examples of functions using strings as arguments

      Strings are zero-terminated in C. So “lala” is stored in memory as five bytes: ‘l’, ‘a’, ‘l’, ‘a’, 0.

      You can think of strings as arrays of bytes where the last element is always zero.

      See lecture 2 for more information.

 

10. A Recursive Subroutine

 

Week of February 4

 

11. Structures and recursive datatypes

 

12. Introduction to I/O Devices: The Parallel Port Interface (PIT)

      Please ignore the digital design of the PIT interface and the circuits for address decoding. We will discuss these later in the course.

 

13. The Timer Device

      Fixed typos and rewrote the introduction on Feb 6 and Feb 10.

 

Week of February 11

 

14. The Serial Port / Universal Asynchronous Receiver Transmitter (UART)

 

15. Introduction to Interrupts / UART

 

Week of February 18 is reading week

 

Week of February 25

 

16. Instruction Encoding

 

THEMATIC SECTION #2: Building Processors:

What you need to know to build a computer

 

17. A Single-Cycle Processor

 

(*) Permission is given to reproduce these notes provided that a notice of their origin is clearly given. All rights reserved just in case :)

 

Week of March 10

 

18. Modifying the single-cycle processor

 

19. Multi-cycle implementation: General principle and the datapath

      Datapath drawing

      **** Notes formatted for better printing

 

20. Multi-cycle implementation: The control

      Control drawing

 

21. Modifying the multi-cycle implementation

 

22. Multi-programmed Control

 

Week of March 17, 2008

 

23. Bus-based datapath/control implementation

 

24. Memory Interface: Connecting to Memory and Devices

 

25. Memory-Mapped I/O: Physical Implementation

 

Week of March 24, 2008

 

26. Synthesizing Large Memory from Existing Components

 

27. Caches (Prof. Steffan) – We will be going over this material over several lectures

    **** Additional Notes on Caches

      Correction on April 9, 2008. Shown in red.

    **** Examples on Caches and Execution Time

 

Week of March 31, 2008

 

29. The C Switch Statement

 

30. Binary Manipulation Instructions and Multiplication as a series of sum or differences of multiplication with powers of 2 / Booth’s Algorithm

 

Week of April 7, 2008

31. Instruction Set Classification

 

32. Emulating instructions in software

 

33. Virtual Memory and Pipelining Concept (no notes – not part of the material that will be tested in the final)