Theoretical foundations and practical implementations of Logic Circuits and Microprocessors. Design of dedicated sequential machines. Writing of simple programs in assembly language.
To know how to specify and implement simple synchronous, dedicated sequential machines, using the operating unit/control unit design paradigm. To learn the basic architectural principles behind modern microprocessors and their hardware/software components.
Prerequisites
None. However, it is suggested to have attended the 1st year's course on Foundations of Computer Science and Programming.
Teaching Methods
Teaching: mainly at the blackboard, sometimes with PC+videoprojector. Additional material is suggested for home study. Further discussions and clarifications at student tutoring hours.
The examination includes a written test followed (usually one week later) by an oral test. The written test is usually subdivided into two parts. The first concerns the design of a dedicated sequential machine. In the second part, the student is requested to implement (machine code, operating unit, control unit) a single machine instruction on a CISC-like microprocessor. Alternative exercises focus on the measure/comparison of microprocessor performances, or on writing simple programs in assembly language. The oral test includes theoretical subjects and simple exercises.
Course program
1st PART – Logic Circuits:
Representation of signed/unsigned integers. Propositiona logic. Boolean algebra and canonical forms. Elementary combinatorial circuits: decoder, multiplexer, ROM. Arithmetic through Logic. ALU. Sequential machines: representations using FSM and "single-block" design. Flip-flops, registers. Design of dedicated machine according to the operating unit/control unit methodology.
2nd PART - Microprocessors: From dedicated machines to the universal machine. Technology, architecture, organization. Memory hierarchies. CPU-Memory-I/O transactions. Fetch and execution of machine instructions. Instruction types. Addressing modes. Design of a single machine instruction: coding and implementation (hardware of operating unit, control automaton). Bus, machine and wait cycles. CISC and RISC architectures. Performance. Assembly programming. Assembler, linker, loader.