SSD: ING-INF/05
CFU: 9
Insegnamenti propedeutici (se previsti dall'Ordinamento del CdS)
Eventuali prerequisiti
Conoscenza base di linguaggi di programmazione e di algoritmi fondamentali per gestire strutture dati elementari
Obiettivi formativi
Fornire gli strumenti metodologici per l’analisi e la sintesi di macchine elementari per la elaborazione delle informazioni (reti logiche combinatorie e sequenziali). Progettare macchine elementari fondamentali. Presentare i fondamenti dell’architettura dei calcolatori elettronici di tipo von Neumann, il repertorio dei codici operativi e la programmazione in linguaggio assemblativo.
Risultati di apprendimento attesi
Conoscenza e capacità di comprensione
Lo studente deve dimostrare di conoscere e comprendere le problematiche relative al progetto di macchine elementari con particolare riferimento alle macchine elementari per applicazioni elementari e aritmetiche, alle macchine sequenziali (registri, contatori, flip flop). Deve inoltre dimostrare di conoscere le architetture dei calcolatori e dei relativi sottosistemi, incluso il funzionamento del processore, le modalità di comunicazione con la memoria, il dimensionamento delle memorie e il collegamento con i vari dispositivi di input e output.
Capacità di applicare conoscenza e comprensione
Lo studente deve dimostrare di essere in grado di progettare e sviluppare reti combinatorie elementari, reti combinatorie aritmetiche, resti sequenziali. Deve inoltre essere in grado di sviluppare semplici programmi in linguaggio assembler per la gestione di strutture dati elementari (vettori, pile,…).
Programma - Syllabus
Analisi e sintesi di reti combinatorie. Minimizzazione di funzioni booleane completamente e incompletamente specificate. Mappe di Karnaugh. Metodo di Quine-McCluskey. Sintesi di reti combinatorie in logica NAND e NOR. Ritardi e problemi di alea nelle reti combinatorie.
Reti combinatorie elementari. Multiplexer e de-multiplexer. Encoder e decoder. Controllori di parità.
Macchine aritmetiche elementari: addizionatori, sottrattori, comparatori.
Analisi e sintesi di reti sequenziali. Modelli per la tempificazione e struttura delle reti sequenziali sincrone e asincrone. Flip-flop: generalità, Flip-flop RS a porte NOR. Flip-flop latch ed edge-triggered. Flip-flop D. Flip-flop a commutazione. Flip-flop T e JK. Registri. Caricamento seriale e parallelo. Registri a scorrimento.
Metodologia di progetto delle reti sincrone. Contatori sincroni e asincroni. Collegamento di contatori. Riconoscitori di sequenza. Bus e trasferimenti tra registri.
Il calcolatore elettronico: sottosistemi e architettura.
Il processore. Algoritmo del processore. Il ruolo dell’unità di controllo. Processori ad accumulatore e processori a registri generali. Tecniche di indirizzamento. Codifica delle istruzioni.
La memoria centrale. Interfacciamento processore-memoria. Organizzazione del sistema memoria.
Collegamento di moduli di memoria. Memorie RAM statiche e dinamiche. Sistemi di interconnessione e bus. Meccanismo delle interruzioni. Protezioni e controlli del processore. Gestione dell’I/O mediante polling e interruzioni. Il sottosistema di I/O.
Linguaggio macchina e linguaggio assembler. Corrispondenza tra linguaggi di alto livello e linguaggio macchina. Linguaggio assembler del processore Motorola 68000. Direttive di assemblaggio.
Allocazione in memoria dei programmi.
Simulatore di processore MC68000. Assemblaggio ed esecuzione di programmi in linguaggio assembler. Sottoprogrammi in linguaggio assembler. Tecniche di passaggio dei parametri a procedure in linguaggio macchina.
Materiale didattico
Si veda sito web del docente della materia.
Modalità di svolgimento dell'insegnamento
Il corso prevede circa il 70% di lezioni frontali in cui vengono affrontati gli argomenti teorici, mentre il restante 30% è riservato a lezioni pratiche ed esercitazioni riguardanti lo sviluppo di macchine combinatorie, macchine sincrone e sviluppo di programmi in linguaggio assembler.
Verifica di apprendimento e criteri di valutazione
Modalità di esame
L’esame prevede una prova scritta propedeutica che include esercizi su analisi e progetto di reti combinatorie, reti sequenziali, sviluppo di un programma assembler.
L'esame si articola in prova scritta e orale. In caso di prova scritta i quesiti sono: A risposta libera, Esercizi numerici.