Sistemi di calcolo
Corso di Laurea in Ingegneria Informatica e Automatica
Docenti
Canale 1:
Canale 2:
Tutor:
Informazioni sul corso
Sito del corso: https://season-lab.github.io/SC
Bonus esercitazioni
In ricordo di Camil Demetrescu
“Il corso è molto impegnativo, ma la nostra missione è che nessuno rimanga indietro.”�
Camil Demetrescu�Docente che ha creato e seguito il corso per otto edizioni
Prerequisito fondamentale
Sistemi di calcolo
Capitolo 1
Corso di Laurea in Ingegneria Informatica e Automatica
Sistemi di calcolo moderni
Perché studiare i sistemi di calcolo?
Macchina di Von Neumann
Macchina di Von Neumann, più in dettaglio
Macchina di Von Neumann, più in dettaglio
Regola fondamentale USB…
Struttura della memoria
Obiettivi di questa settimana
Vogliamo capire, almeno in principio, come si realizzano in hardware:�
�Il nostro è un accenno. Cercheremo di capire l’idea, senza definire sempre e comunque tutti i dettagli.��Per saperne di più, vi rimandiamo ai corsi:�
Da dove partiamo?
Supponiamo di voler veramente realizzare questi componenti, andando ad implementare i loro circuiti al minimo costo possibile e puntando alla massima semplicità.��Ci servirà avere/conoscere:
Come recuperare questi componenti elettrici?
Potete facilmente comprare un kit �“Arduino” su un qualsiasi ecommerce per una decina di euro.��Non programmeremo la board Arduino. Essa verrà usata solo per alimentare a 5V i nostri circuiti.
Componenti
Resistenza
Transistor
Diodo LED
Interruttore
Partiamo da un semplice circuito
Assumiamo di lavorare ad una tensione di 5V:
Domanda: perché abbiamo messo una resistenza dal valore di 220 Ohm?
Il nostro circuito integra un diodo LED
Un'eccessiva corrente/tensione può bruciare il LED. Per questo dobbiamo introdurre una resistenza. Il loro datasheet ci fornisce dettagli sulle loro specifiche caratteristiche tecniche.��Semplificando, LED comuni possono lavorare con una corrente compresa tra:�
[10 mA, 30 mA]��Come calcoliamo la resistenza che ci serve supponendo di lavorare con 5V?
Catodo�(-)
Anodo�(+)
Elementi di elettronica: resistenze e legge di Ohm
La legge di Ohm esprime una relazione tra:
V = R x I��che può essere riscritta:
R = V / I
Nel nostro circuito
R = 5 / [0.01, 0.03] = [166, 500]
Quindi ci serve una resistenza con un valore tra 166 Ohm e 500 Ohm per funzionare correttamente il LED (poca corrente: non si accede, troppa corrente: si brucia).��Supponiamo di aver a disposizione una resistenza come questa:
Che valore di Ohm ha?
Quanti Ohm ha una resistenza? [Approccio #1]
= 0.2 ± 5% Ohm
= 220 ± 1% Ohm
2
0
10-2
5%
Quanti Ohm ha una resistenza? [Approccio #2]
Quanti Ohm ha una resistenza? [Approccio #3]
Realizziamo il nostro primo circuito
Per evitare di dover saldare i componenti, useremo una breadboard:
Realizziamo il nostro primo circuito
Per evitare di dover saldare i componenti, useremo una breadboard:
Useremo un Arduino �UNO come “batteria” �a 5V.
Realizziamo il nostro primo circuito
Come la breadboard potenzialmente interconnette i punti:
...e così via….
...e così via….
Esempio di semplice circuito + DEMO
Transistor
Principali usi di un transistor:
Tipologie
BJT PNP
BJT NPN
Tre poli:
Transistor
Transistor come interruttore
Consideriamo un BJT NPN come il 2N3904 o BC337
Semplificando, possiamo dire che se sulla base B arriva una corrente, allora il collettore C e l’emettitore E sono tra loro collegati. Altrimenti sono scollegati.
La corrente che deve arrivare su B può essere anche�molto piccola: 0.5 mA nei nostri esempi.
Se lavoriamo a 5V, per la legge di Ohm, ci servirà�mettere una resistenza da 10kOhm sulla base tra�la batteria e la base per generare una corrente da�0.5 mA.
Circuito semplice con transistor
A cosa ci può servire in pratica usare un transistor?��PORTE LOGICHE
Porte logiche elementari
Grazie alle porte logiche, riusciremo a realizzare un addizionatore ed una memoria registro da 1 bit.
Tavola di verità porta AND
Circuito porta AND
Porta AND su breadboard
Tavola di verità porta OR
Circuito porta OR
Porta OR su breadboard
Tavola di verità porta NOT
Circuito porta NOT
Porta NOT su breadboard
Tavola di verità porta XOR
Porta XOR realizzata con porte AND, OR e NOT
X XOR Y = ((NOT X) AND Y) OR (X AND (NOT Y))
Esercizio per casa
Ma le CPU integrano davvero queste porte?
Dal punto di vista concettuale, sì. In pratica, l’industria riesce a produrle in scala molto minore rispetto ai nostri esempi.����
Surface-mount technology:
Resistenza SMD
Questa scala non è più adeguata per le CPU/SoC moderni….
Circuiti integrati VLSI + DEMO
Logica combinatoria
La porta XOR l’abbiamo realizzata come la combinazione di porte AND, OR, e NOT. Per tale motivo, tale circuito viene detto combinatorio.��E’ possibile realizzare funzione booleane arbitrarie attraverso circuiti combinatori.��Vediamo come realizzare finalmente un addizionatore...
Circuiti combinatori: es. addizionatore parziale
Somma(X, Y) = X XOR Y
Riporto(X, Y) = X AND Y
Tabella verità addizionatore completo
Addizionatore completo
Addizionatore�parziale #2
Addizionatore�parziale #1
Addizionatore a 4 bit
Logica sequenziale
Flip-flop
SET
RESET
Q = NOT Q’
Un flip-flop ha due uscite. Per implementare un registro, potremmo osservare solo Q.
DUE USCITE:
DUE INPUT:
FORBIDDEN:
Per implementare un flip-flop: porta NOR
Flip-flop (SR Latch)
1
1
0
0
0
1
0
1
0
0
1
0
NOR
NOR
ESEMPIO:
Design alternativi
Gated SR Latch
Segnale�di clock
Problema: metastabilità, capacità di un circuito di rimanere in uno stato “instabile” per un tempo indefinito, es. se R=1 S=1 e poi si cambia ingressi in modo valido (es. S=0 R=0) avrò stato stabile ma difficile valutare dopo quanto e con quale output. Tecniche di sincronizzazione possono limitare effetti di metastabilità.��Usando il segnale di clock, un circuito può controllare quando i segnali di ingresso devono essere letti dal flip-flop. Infatti, i segnali in ingresso potrebbero richiedere un tempo di convergenza prima di raggiungere un valore stabile. Il clock sincronizza diversi componenti.