Course focused on computer organisation and embedded systems. Laboratory work is in Nios II. Preceded by ECE241 — Digital Systems.
Why Nios II over ARM? Prof Rose says it’s because 1) there’s a small chance we’ll be programming in straight ARM assembly in our careers and 2) the concept of interrupts isn’t needlessly complicated in Nios. He also mentioned a future iteration of the course would use RISC-V, since the DE1-SoC can load it in as a “soft processor”.
For the processor design portion of the course, Logic and Computer Design Fundamentals (Mano/Kime) is a great resource. For the portion on embedded systems, Assembly language, and cache memory, Computer Organization and Embedded Systems (Hamacher, Vranesic, Zaky, Manjikian) is a good book.
Concepts covered
- DE1-SoC
- Assembly and general programming concepts
- Conditional statement
- Loops
- Function (subroutine, return register)
- Bitwise operator
- Data type and struct
- Processor constructs
- Buffer
- Parallel port (PIT)
- GPIO
- Polling
- Interrupt
- Processor design
- Register
- Register file
- Program counter
- Condition code registers (Z/N)
- Instruction register
- Arithmetic logic unit
- Finite state machine
- Decoder
- Register
- Instruction set architecture
- Endianness
- Load-store architecture
- Instruction encoding
- Memory
- Stack
- Buffer overflow
- FIFO
- Cache memory
- Locality
- Cache mapping (direct, associative)
- Replacement algorithm (LRU)
- Building executable code
- C for embedded applications (
volatile
keyword) - Audio
- Computer graphics
Quick links
- Lecture and laboratory schedule
- Course notes by Prof Moshovos
- CPUlator for the DE1-SoC with Nios II