Digital Architecture - I. Program in Computer Science. Syllabus.

Introduction 
The reference architecture. The execution cycle of an instruction. History of the computer. How to code the information. Binary representation of digital numbers.

Combinatorial logic and algebra
Operations on binary numbers. The fundamental operations: addition and subtraction. Binary representation of floating point numbers. Combinatorial logic. Boole algebra: variables and operators. Circuital implementation (logical gates). From circuit to function. Universal gates. From functions to circuits. The truth tables. From truth tables to circuits: the first canonic form. Implementation of logical functions in PLAs or ROMs. Noticible combinatorial circuits. Exercises.

Arithmetic-logical units
Adder. The carry problem. Hardware multipliers. Design of an ALU with two stages. Adder on 32 bits. Support to the comparison operations. Carry ahead. Introduction to firmware. Firmware circuits for multiplication and division. Arithmetics and adders for floating point numbers.

Sequential logic
Temporization of boolean circuits. Sequential circuits. Transition tables. Eccitation tables. The latch SC and the latch D. Registers and the Register file. Temporization problems. The flip-flops. Finite state machines. From specifications to the project. The state transition graph and the state transition table. Coding the STT. Synthesis of the circuit of a finite state machine. Examples.

Introduction to the CPU
The main design of a simple CPU and of its Control Unit. The format of the different type of instructions. Introduction to machine code and assembly.

Laboratory
The lab course of Computer Architectures I is an introduction to the design of digital circuits. The laboratory involves the construction of simple logic circuits, their simulation and their composition in order to obtain more complex circuits that can perform higher level functionalities. 
In detail, the laboratory workflow is as follows:
•	Exercises on the encoding of numerical information (integers with and without sign, two’s complement, fractional numbers, denormalized and normalized representations of real numbers with the standard IEEE 754).
•	Short tutorial on Logisim with guided design of simple circuits. 
•	Employment of canonical forms for the synthesis and inspection of logic functions in Logisim. 
•	Use of some useful components of Logisim and development of circuits for conducting arithmetic operations. 
•	Project of a simplified ALU. 
•	Sequential circuits, memories, counters and finite state machines.

Bibliography

Main text (in English or Italian)
•	Struttura e progetto dei calcolatori: l'interfaccia hardware-software, D.A. Patterson and J.L. Hennessy, Quarta edizione, Zanichelli, estate 2014 (Nota: la quarta edizione Zanichelli è la traduzione della quinta edizione inglese).
•	“Computer Organization & Design: The Hardware/Software Interface”, D.A. Patterson and J.L. Hennessy, Morgan Kaufmann Publishers, Fifth Edition, 2014. 
•	You can found the text and solution of many exercises at the following URL: http://books.elsevier.com/companions/1558606041/.
•	Lab software tool is Logisim: http://www.cburch.com/logisim/