Programme Content
The following themes will be covered: Digital Design and Computer Architecture Basics - foundations of digital logic (boolean algebra) - combinational functions and their implementation. - state machines and their implementation. - computers: Von Neumann and Harvard architectures. Assignments: design of adders, comparators, state-machines Advanced Digital Design Concepts - functional building blocks multiplexors, demultiplexors, arbiters, simple memories - interconnect busses, memories. - architecture of a simple computer. Assignments: - design of a simple computer. - pipelined design of a simple computer. Digital Design Simulation Tools - types of simulation event-driven, cycl-based, timing - Verilog and VHDL RTL concepts - synthesizable subsets of Verilog/VHDL. - testbenches Assignmennts: deion and simulation of simple computer using Verilog/VHDL. Memory and Storage Systems - Static RAM - memory system architecture - SRAM cell - Design considerations. - Test and verification of SRAM - Dynamic RAM - Synchronous DRAM architecture - DRAM cell - Single and dual-data-rate interfaces - Test and verification. - NV RAM - non-volatile FLASH memory - Principles - NOR - NAND - performance optimization (caching) - reliability issues. Interfacing and peripherals - interconnect multi-driver bus e.g. AMBA point-to-point interconnect e.g. AXI - Memory mapped I/O. - Interrupt handlers. - Simple peripherals - UART - SPI - Timers - Drivers (e.g. in Linux) - Test and debug interfaces - JTAG Case studies: - implementation of a serial device (UART) - drivre for serial device. Processor Basics - Instruction set architecture - enhancements: interrupts, I/O, caching, pipelining - single/multiple issue processors - in-order/out-of-order processors - virtual memory - Multi-core processors: cache-coherency and atomic operations. Case studies: RISCV/AJIT processor. Hardware-software codesign - architectural choices - tightly coupled coprocessors - loosely coupled coprocessors - application specific instruction processors. - fpga's. - heterogenous architectures.
