Qualora le condizioni contingenti lo dovessero richiedere, si farà uso della didattica a distanza.
Parte I – Progettazione di sistemi digitali
1.1 Progetto di reti combinatorie
Algebra di commutazione. Espressioni booleane minime. Minimizzazione mediate il metodo delle mappe di Karnaugh e di Quine-McCluckey.
1.2 Progetto di reti sequenziali sincrone
Introduzione alle macchine sequenziali. Gli elementi di memoria: i bistabili. Sintesi di reti sequenziali sincrone. Minimizzazione delle macchine a stati finiti.
Parte II – Il calcolatore
2.1 Il calcolatore: astrazione e tecnologie
I tipi di calcolatori e le loro caratteristiche. I componenti di un calcolatore elettronico e loro organizzazione. Valutazione delle prestazioni di un calcolatore. Legge di Amdhal.
2.2 Il linguaggio del calcolatore: l’Assembly
Architettura del Set di Istruzione dei processori. Instruction Set Architecture Intel x386. Traduzione e avvio di un programma: Assembler, linker e loader. Configurazione dell’ambiente di sviluppo per Linux. Istruzioni x386, chiamate a Subroutine e System Call. Accesso alla memoria. Array. Stringhe. Gestione dello Stack.
2.3 Organizzazione del calcolatore
Organizzazione sequenziale di un processore. Datapath di un processore sequenziale. Unità di Controllo di un processore sequenziale. Organizzazione pipeline di un processore.
2.4 Il Sottosistema di memoria.
Memorie RAM statiche e dinamiche. Memorie asincrone e sincrone. Organizzazione della memoria. Memorie cache. Politiche di Block placement, block identification, block replacement e di scrittura. Valutazione delle prestazioni della memoria. Tecniche per il miglioramento delle prestazioni della cache.
2.5. Il sottosistema di Input/Output:
Polling. Interruzioni. Interruzioni vettorizzate. Gestione delle priorità. Accesso diretto alla memoria.
2.6 I microcontrollori
Microprocessori e Microcontrollori (MCU): differenze e confronti. Caratteristiche generali di un MCU. Diagramma a blocchi e periferiche integrate on-chip. Embedded Core. Memoria. General Purpose IO (GPIO). Timers e Contatori. Interfacce e periferiche di comunicazione seriale. Ambiente di sviluppo dei microcontrollori – scrittura di semplici programmi per la gestione dei GPIO e delle periferiche.
[T1] Fummi, Sami, Silvano, “Progettazione digitale”, 2/ed McGraw-Hill
[T2] Patterson, Hennessy, “Struttura e progetto dei calcolatori”, Zanichelli
[T3] Bucci, “Architettura e organizzazione dei calcolatori elettronici: fondamenti”, McGraw-Hill
[T4] Materiale fornito del docente on line
| Argomenti | Riferimenti testi | |
|---|---|---|
| 1 | Progetto di reti combinatori. Algebra di commutazione. Espressioni booleane minime. Minimizzazione mediante il metodo delle mappe di Karnaugh e di Quine-McCluckey. | T1 capitoli 3 e 4, T4 |
| 2 | Progetto di reti sequenziali sincrone. Introduzione alle macchine sequenziali. Gli elementi di memoria: i bistabili. Sintesi di reti sequenziali sincrone. Minimizzazione delle macchine a stati finiti. | T1 capitoli 5 e 6, T4 |
| 3 | Componenti di un sistema digitale. Multiplexer, Decoder, Encoder, Comparatore, Registri, Register file. | T1 capitoli 7 e 8, T2 capitolo 3, T4 |
| 4 | Sommatore a propagazione del riporto e Sommatore ad anticipo di riporto. Moltiplicatore e divisore. Progetto di un ALU | T1 capitoli 7 e 8, T2 capitolo 3, T4 |
| 5 | I tipi di calcolatori e le loro caratteristiche. I componenti di un calcolatore. Organizzazione dei calcolatori elettronici. | T2 capitolo 1, T3 capitolo 5 T4 |
| 6 | Architettura del Set di Istruzioni dei processori | T2 capitolo 2, T3 capitolo 5, T4 |
| 7 | Organizzazione sequenziale di un processore. Datapath di un processore sequenziale. Unità di Controllo di un processore sequenziale: realizzazione cablata e microprogrammata. | T2 capitolo 4, T3 capitolo 7, T4 |
| 8 | Organizzazione Pipeline di un processore. | T2 capitolo 4, T4 |
| 9 | Instruction Set Architecture Intel x386. Registri generali, registri puntatori, registri di segmento, e flag. Il modello della memoria a 32 bit. Interazione CPU RAM. Compatibilità con processori Intel 64 bit. | T4 |
| 10 | Programmazione ASM: Assembler, Linker e Loader. Configurazione ambiente di sviluppo per Linux. Schema di un programma Assembler x386 in ambiente Linux. | T4 |
| 11 | Istruzioni aritmetiche e logiche. Istruzioni di indirizzamento. Controllo di flusso: salti condizionati e incondizionati. LODS, STOS, MOVS – esercizi. I servizi Linux – int 80h. I File in Linux (STDIN, STDOUT e STDERR). Esercizi | T4 |
| 12 | Lo Stack: PUSH-POP, CALL-RET, INT-IRET. Applicazioni da riga di comando e passaggio dei parametri. Dal C all’Assembly con gcc e nasm. Passaggio dei parametri tramite lo stack. Esempi applicativi. | T4 |
| 13 | Il Sottosistema di memoria. Classificazione delle memorie. Ram Statica e RAM dinamica. Cicli di lettura e di scrittura. DRAM asincrona e sincrona. Organizzazione della memoria. Decodifica degli indirizzi. | T2 capitolo 5, T3 capitolo 8, T4 |
| 14 | Memorie cache. Valutazione delle prestazioni delle memorie cache. Politiche di Block placement, block identification, block replacement e di scrittura. | T2 capitolo 5, T3 capitolo 8, T4 |
| 15 | Tecniche per il miglioramento delle prestazioni della cache. | T2 capitolo 5, T3 capitolo 8, T4 |
| 16 | Il sottosistema di Input/Output: Polling. Interruzioni. Interruzioni vettorizzate. Gestione delle priorità. Accesso diretto alla memoria. | T3 capitolo 13, T4 |
| 17 | Struttura di un MCU: un computer in un singolo chip. Caratteristiche generali. Applicazioni tipiche. Core. Memoria. GPIO. Periferiche di comunicazione seriali. Confronti con i microprocessori. Mercato MCU. | T4 |
| 18 | Applicazioni per MCU. Esercizi con Arduino o STM32 | T4 |
La prova d’esame consiste in un'unica prova scritta e al calcolatore.
Prima parte (11 punti)
Seconda parte (21 punti)
Per superare la prova è necessario ottenere un punteggio minimo pari a 18, con almeno 6/11 punti per i quesiti sulle reti logiche e almeno 12/21 punti nel resto del compito.
La verifica dell’apprendimento potrà essere effettuata anche per via telematica, qualora le condizioni lo dovessero richiedere.