CODICE 72345 ANNO ACCADEMICO 2021/2022 CFU 12 cfu anno 1 INGEGNERIA ELETTRONICA E TECNOLOGIE DELL'INFORMAZIONE 9273 (L-8) - GENOVA SETTORE SCIENTIFICO DISCIPLINARE ING-INF/01 LINGUA Italiano SEDE GENOVA PERIODO Annuale MATERIALE DIDATTICO AULAWEB PRESENTAZIONE L'insegnamento fornisce le basi per lo studio e la progettazione dei sistemi digitali. Nella prima parte si inizia dall'algebra booleana e aritmetica binaria, e si arriva al progetto di reti sequenziali, utilizzando le Macchine a Stati Finiti e i diagrammi ASM. Nella seconda parte, l'insegnamento introduce i microcomputer, con particolare riferimento ai sistemi “embedded”, alla programmazione in linguaggio macchina, al loro interfacciamento con tecniche di interruzione e al loro utilizzo come controllori. OBIETTIVI E CONTENUTI OBIETTIVI FORMATIVI Scopo della prima parte dell’insegnamento è fornire agli studenti le basi della progettazione digitale (dall'algebra booleana alle reti sequenziali). La seconda parte introduce i sistemi a microprocessore e la loro programmazione in linguaggio macchina. Il laboratorio consente allo studente di applicare le conoscenze acquisite alla simulazione, progettazione e prototipizzazione di sistemi digitali. L'insegnamento si pone nella direzione di formare una figura professionale capace di progettare dispositivi hardware e software. OBIETTIVI FORMATIVI (DETTAGLIO) E RISULTATI DI APPRENDIMENTO Scopo dell'insegnamento è fornire le basi per lo studio ed il progetto di sistemi elettronici digitali. Nella prima parte, dopo aver esaminato i fondamenti dell'algebra booleana e dell'aritmetica binaria, l'insegnamento introduce le metodologie di analisi e di progetto delle reti digitali combinatorie e sequenziali, utilizzando per queste ultime la tecnica delle Macchine a Stati Finiti, realizzate con l’aiuto dei diagrammi ASM. Nella seconda parte, dopo avere definito gli elementi base della architettura di un microcomputer, l'insegnamento introduce allo sviluppo dei sistemi a microprocessore “embedded”, con particolare riguardo alla programmazione in linguaggio macchina, all'interfacciamento con dispositivi esterni, alle tecniche di interruzione e all'utilizzo del microcomputer come controllore di sistema. Il laboratorio, integrato nei tempi e nei contenuti con le lezioni, consente allo studente di applicare le conoscenze acquisite alla simulazione, progettazione e prototipizzazione di sistemi digitali su schede “FPGA”. L'insegnamento si pone nella direzione di formare una figura professionale capace di analizzare, comprendere e risolvere problemi di progettazione di dispositivi hardware e software. In particolare, lo studente sarà in grado di analizzare il comportamento di sistemi digitali basati su reti combinatorie e sequenziali, descriverne la loro funzionalità in termini di macchine a stati finiti, e di risolvere problemi di progettazione di sistemi di controllo di reti organizzate secondo il modello “controller - datapath”. Sarà in grado di programmare in linguaggio assembly sistemi a microprocessore, in base alle specifiche date. MODALITA' DIDATTICHE L'insegnamento si articola in circa 120 ore in aula, nelle quali lezioni teoriche ed esercitazioni sono alternate a seconda delle necessità. Inoltre sono previste 20 sessioni di esercitazioni di laboratorio dedicate all’analisi, progettazione, simulazione e realizzazione di circuiti digitali. Le esercitazioni di laboratorio possono essere svolte in modo remoto, con il supporto del sito AulaWeb del corso. Per tutta la durata dell'emergenza Coronavirus, le lezioni e le sessioni di laboratorio saranno tenute in modo remoto, tramite la piattaforma "Teams". PROGRAMMA/CONTENUTO Prima parte Introduzione al corso, rappresentazione dell'informazione, funzioni booleane e reti logiche, teorema di espansione di Shannon, circuiti combinatori standard. Minimizzazione di funzioni booleane, mappe di Karnaugh, cenno ai metodi algoritmici. Aritmetica binaria, codici e operazioni, complementi, conversioni, principali architetture aritmetico-logiche, codici a rilevazione di errore, codici alfanumerici. Introduzione alle reti sequenziali, temporizzazioni, Flip-Flop (FF SR, FF D Latch, FF JK, D e E PET), registri, contatori, analisi di reti sequenziali. Introduzione alle Macchine a Stati Finiti (MSF) e ai diagrammi ASM (blocco di stato, blocco condizionale, uscite condizionate). Esempi ed esercizi di progetto di MSF, criteri per l'assegnazione degli stati, cenni alle MSF asincrone. Dispositivi elettronici e componentistica, packaging, dispositivi programmabili (FPGA), panoramica dei dispositivi disponibili, esempi di progetto. Seconda parte Elementi fondamentali di un calcolatore numerico: Unità di Processo, Memoria, Unità di Ingresso/Uscita (architettura di Von Neumann). Sistemi a Bus: indirizzamento, trasferimento dati, segnali di controllo. Dispositivi di memoria a semiconduttore: memorie di lettura/scrittura statiche, memorie a sola lettura. Architettura dei microprocessori: registri, unità di calcolo, sequenziatore. Programmi e istruzioni: fasi di fetch, decode, execute. Linguaggio macchina. Formato mnemonico delle istruzioni e linguaggio assembly. Esempio di esecuzione di una generica istruzione. Temporizzazioni. Distinzione tra processori CISC e RISC. Introduzione alla programmazione assembly. Sintassi del linguaggio. Confronti con i linguaggi ad alto livello. Modi di indirizzamento. Insieme delle istruzioni e loro classificazione funzionale. Istruzioni di trasferimento dati. Istruzioni aritmetiche e logiche. Istruzioni di salto. La struttura a catasta, istruzioni di chiamata e ritorno, sottoprogrammi. Istruzioni di controllo e istruzioni "nascoste". Progetto dell'hardware di un sistema a microprocessore. Generatore di Clock, circuiti di Reset, decodificatore degli indirizzi. Progetto di banchi di memoria. Dispositivi di Ingresso/Uscita. Tecniche base di interfacciamento parallelo e seriale. Handshake tra dispositivi. Introduzione ai dispositivi di ingresso/uscita programmabili. Tecniche di interruzione. Gestione del riconoscimento delle periferiche e delle priorita`. Il controllore delle interruzioni. Il microcomputer come controllore di un sistema digitale. Introduzione ai sistemi "embedded". Introduzione ai microprocessori RISC. TESTI/BIBLIOGRAFIA La prima parte dell'insegnamento è coperta dal libro "Introduzione al progetto di sistemi digitali", Springer, 2018 La seconda parte dell'insegnamento è coperta dal libro "Introduzione al progetto di sistemi a microprocessore", Springer, 2020 DOCENTI E COMMISSIONI GIULIANO DONZELLINI Ricevimento: I docenti saranno disponibili per chiarimenti sugli argomenti del corso, previo appuntamento (da concordare via e-mail). EDOARDO RAGUSA CHRISTIAN GIANOGLIO Commissione d'esame GIULIANO DONZELLINI (Presidente) DAVIDE ANGUITA PAOLO GASTALDO RODOLFO ZUNINO CHRISTIAN GIANOGLIO (Presidente Supplente) LUCA ONETO (Presidente Supplente) EDOARDO RAGUSA (Presidente Supplente) LEZIONI INIZIO LEZIONI https://corsi.unige.it/9273/p/studenti-orario Orari delle lezioni ELETTRONICA DEI SISTEMI DIGITALI ESAMI MODALITA' D'ESAME Modalità modificate a seguito dell'emergenza Covid: Le prove scritte (prima e seconda "prova parziale") sono sospese e non saranno effettuate né in presenza né a distanza. La prova d'esame del corso consiste in due prove orali separate e integrate da un esercizio di progetto che sarà svolto e commentato ai docenti della commissione. La prima prova orale 'integrata' verte sugli argomenti dellla prima parte, la seconda prova orale 'integrata' verte sugli argomenti della seconda parte. Precedenti modalità, al momento sospese a seguito dell'emergenza Covid: La prova d'esame del corso consiste in due prove scritte (prove parziali) ed una prova orale. Nello stesso appello è possibile sostenere una o entrambe le prove scritte parziali. La prima prova parziale consiste nel completamento di un progetto di un sistema digitale controllato da MSF (argomenti della prima parte del corso). La seconda prova parziale verte sulla programmazione in linguaggio assembly di un sistema basato su microcalcolatore (argomenti della seconda parte del corso). Entrambe le prove scritte devono essere svolte senza l'uso di computer. MODALITA' DI ACCERTAMENTO Modalità modificate a seguito dell'emergenza Covid: Le due prove orali saranno sostenute a distanza, tramite la piattaforma Teams, su prenotazione. I docenti informeranno gli studenti sulle modalità di prenotazione attraverso la pagina AulaWeb del corso. Ciascuna prova orale 'integrata' sarà valutata in trentesimi. Il voto finale sarà assegnato alla fine della seconda prova orale e valutato come media dei due punteggi riportati (approssimato all'intero superiore). Le prove orali ‘integrate’ verificano la capacità di analizzare, comprendere e completare sistemi digitali di moderata complessità, basati su reti combinatorie e sequenziali e su microprocessori. In particolare, la prima prova orale ‘integrata’ permette di verificare il corretto utilizzo del modello delle macchine a stati finiti nella progettazione di un sistema organizzato secondo il modello “controller - datapath”. La seconda prova orale ‘integrata’ valuta la conoscenza dell’architettura di un sistema a microprocessore e la capacità di programmarlo in linguaggio assembly. I parametri di valutazione delle prove orali ‘integrate’ includono: la comprensione dei concetti riguardanti l’analisi ed il progetto delle reti digitali, la capacità di analizzare le specifiche date e gli elementi architetturali un sistema digitale, la capacità di ragionamento di esposizione mediante un utilizzo corretto del lessico specialistico. Precedenti modalità, al momento sospese a seguito dell'emergenza Covid: L’esame scritto valuta la capacità di analizzare, comprendere e completare sistemi digitali di moderata complessità, basati su reti combinatorie e sequenziali e su microprocessori. In particolare, la prima prova scritta parziale permette di verificare il corretto utilizzo del modello delle macchine a stati finiti nella progettazione di un sistema organizzato secondo il modello “controller - datapath”. La seconda prova scritta parziale valuta la capacità di programmare in linguaggio assembly un sistema a microprocessore. La prova orale finale permette di verificare la capacità di comprendere, analizzare e programmare sistemi digitali basati su reti combinatorie e sequenziali e su microprocessori. I parametri di valutazione includono: la comprensione dei concetti riguardanti l’analisi ed il progetto delle reti digitali, la capacità di analizzare le specifiche date e gli elementi architetturali un sistema digitale, la capacità di ragionamento di esposizione mediante un utilizzo corretto del lessico specialistico. Il tempo a disposizione per svolgere una prova scritta parziale e' di 1h 30'. A ciascuna delle due prove parziali è aggiunto un punto di "bonus", se svolta e consegnata una sola volta. E' consentito ritirarsi dalla prova scritta parziale, mantenendo il bonus. Il voto finale verra' calcolato come segue: 13 punti max per la prima prova parziale 13 punti max per la seconda prova parziale ± 5 punti per la prova orale + 2 punti totali di bonus. La prova orale è obbligatoria. Per sostenere la prova orale e' necessario aver svolto entrambe le prove parziali, riportando un punteggio totale (escluso il bonus) di almeno 13, con un punteggio minimo di 5 per ciascuna prova. Calendario appelli Data appello Orario Luogo Tipologia Note 11/01/2022 09:30 GENOVA I Scritto Parziale 11/01/2022 11:00 GENOVA II Scritto Parziale 09/02/2022 09:30 GENOVA I Scritto Parziale 09/02/2022 11:00 GENOVA II Scritto Parziale 16/06/2022 09:30 GENOVA I Scritto Parziale 16/06/2022 11:00 GENOVA II Scritto Parziale 11/07/2022 09:30 GENOVA I Scritto Parziale 11/07/2022 11:00 GENOVA II Scritto Parziale 06/09/2022 09:30 GENOVA I Scritto Parziale 06/09/2022 11:00 GENOVA II Scritto Parziale