Rappresentazione dell'informazione in forma digitale. Algebra booleana. Fondamenti sulle reti logiche combinatorie e sequenziali, sincrone e asincrone. Introduzione alle memorie a stato solido. Struttura del microcontrollore e programmazione in linguaggio macchina.
The course aims to provide the basic tools to understand and describe the architecture of integrated electronic systems. In particular Boolean algebra is presented and its application to the synthesis of logic networks. Provides understanding of the operation and synthesis of combinational and sequential circuits and memories. Shows a complex sequential network, exemplifying the issues referring to a simple real microcontroller
Esame orale e, in parte, richieste aperte in esercizi presenti nella prova scritta.
In the written exam (2 hours), the student must demonstrate his/her knowledge of the course material and to organise an effective and correctly written reply. During the oral exam the student must be able to demonstrate his/her knowledge of the course material and be able to discuss the reading matter thoughtfully and with propriety of expression. It is necessary to pass the written exam to be admitted to the oral exam.
Methods:
Gestione delle rappresentazioni numeriche dell'informazione. Dimostrazione di teoremi dell'algebra di Boole. Svolgimento di espressioni booleane. Sintesi di reti combinatorie. Sintesi di reti sequenziali sincrone (secondo modelli di Moore e Mealy) e semplici reti asincrone. Sintesi di sistemi digitali con tecniche ad hoc. Uso del linguaggio assembly (codifica, simulazione, programmazione) e capacita di gestione di periferiche.
Prova scritta e, parzialmente, con svolgimento di semplici esercizi durante l'esame orale.
Frequenza assidua delle lezioni. Approfondimento autonomo delle tematiche presentate a lezione, anche con la consultazione dei testi di riferimento. Svolgimento di numerosi esercizi tra quelli reperibili sul sito del corso (testi degli esami precedenti). Ascolto di sessioni di prove orali e uso del ricevimento con il docente per la soluzione dei dubbi rimasti.
Non è prevista una verifica specifica. Non è prevista la registrazione delle presenze. In genere un comportamento non corretto comporta maggiori difficoltà nel superamento sia della prova scritta sia dell'esame orale.
Corsi di matematica e fisica di base, fondamenti di informatica, teoria dei sistemi.
Il corso, che attiene a fondamenti della disciplina, viene svolto in modo tradizionale, con lezioni frontali ed esercitazioni proposte dal docente alla lavagna. Il conseguimento degli obiettivi formativi si ottiene con la partecipazione attiva dello studente, al quale è richiesta una buona dose di studio e riflessione autonoma. In generale la struttura della verifica cerca di stimolare la capacità di sviluppare strategie di "problem solving" in situazioni con standardizzate, combinando l'applicazione di diverse procedure risolutive strutturate (viste a lezione) con soluzioni ad hoc, e valorizzando in una certa misura l'intuizione.
Delivery: face to face
Learning activities:
Teaching methods:
Introduzione ai sistemi elettronici.
Architettura di base di un sistema elettronici per l'elaborazione di qualche tipo di informazione. L'approccio analogico. Limitazioni dovute alla presenza di rumore e disturbi. I sistemi con codifica di tipo digitale. Vantaggi tipici dei sistemi digitali. Misura dell'informazione e definizione di bit.
Rappresentazione dell'informazione in forma numerica.
Rappresentazione di numeri interi assoluti. L'esempio della numerazione romana. Le notazioni posizionali in base generica. Algoritmo per l'esecuzione di somma, differenza e prodotto. Il passaggio da una base all'altra. Algoritmo polinomiale per passare da una base generica alla base 10 (o ad altra base su cui siano disponibili gli operatori di calcolo). Definizione dell'operazione modulo n. Proprietà dell'operazione modulo con cenni alla loro dimostrazione. Cambiamento di base con il metodo della divisione intera e del modulo. Rappresentazione dei numeri relativi. Modulo e segno, C1, C2 e traslazione. Operazioni di cambio segno, estrazione del valore assoluto, estensione e riduzione della rappresentazione, somma per le diverse rappresentazioni. Rappresentazione dei numeri razionali. Forma generica frazionale periodica di un qualsiasi numero razionale. Formula per risalire al valore esatto come rapporto di 2 interi. Rappresentazione di numeri reali. Limiti delle rappresentazioni in virgola fissa e vantaggio nelle rappresentazioni con significando e ordine di grandezza espressi in parti separate. Standard di rappresentazione. Lo standard binary 32 della IEEE-754/2008. Legge di rappresentazione. Operazioni principali. Operazioni di divisione, somma e sottrazione con rappresentazioni binary32. Rinormalizzazione. Rappresentazione di testi. Codici ASCII. Principi informatori e costituzione della tabella dei codici. Unicode. Scelte di fondo per la costituzione del database Unicode. Codifica UTF-8. Codifica di valori in base 10. Codifiche pesate BCD, 2421; codifica autocomplementante eccesso 3. Robustezza dei codici. Distanza di Hamming. Rivelazione e correzione di errori. Parità e altre tecniche per aumentare la robustezza di un codice.
Introduzione all'algebra della logica.
Definizioni e postulati secondo Huntington. Coerenza e indipendenza di un insieme di postulati. Regole di deduzione. Set di postulati per la definizione di una algebra di Boole: esistenza di almeno due elementi, chiusura, esistenza degli elementi neutri, commutatività e distributività degli operatori, definizione del complemento. Principio di dualità. Esempi di algebre concrete che soddisfano i postulati proposti. Teoremi principali dell'algebra di Boole con dimostrazione. Algebre a 2 valori. Induzione perfetta. Funzione booleana: descrizione mediante grafico, tabella o espressione booleana. Espressioni in forma normale e canonica. Equivalenza tra tabella di verità e forma canonica costituita dai mintermini della funzione. Caso duale dei maxtermini. Teorema di espansione e riduzione di Shannon. Porte logiche. Porte NAND e NOR: porte universali. Porta XOR: definizione e proprietà principali con dimostrazione.
Sintesi di reti combinatorie.
Definizione di una funzione di costo: individuazione delle prestazioni di interesse e costituzione di un funzionale da minimizzare. Il costo legato al numero dei letterali. Definizione di implicante.Relazione tra implicanti in forma di prodotto. Definizione di implicante principale. Lista di copertura irridondante. Implicante essenziale. Definizione e uso delle mappe di Karnaugh (per determinare gli implicanti principali ed essenziali. Valore numerico corrispondente alle caselle di una mappa di Karnaugh. Procedura per la sintesi ottima di forme normali SP a minimo numero di letterali. Caso duale PS. Equivalenza tra sintesi PS e sintesi della funzione negata. Reti combinatorie a 5 e 6 ingressi. Mappe multipiano. Ottimizzazione di reti a molte uscite: limiti dell'approccio a ottimizzazione singola, riuso di implicanti.
Reti combinatorie aritmetiche.
Sommatori ripple-carry e carry look-ahead. Approccio carry-look-ahead gerarchico. Tempi di ritardo dei diversi sommatori. Comparatori, sintesi con MSB e LSB first. Decoder ed encoder. Decoder N-2^N. Definizione. Realizzazione a porte logiche. Decoder N-2^N con abilitazione (demultiplexer). Modularità. Uso di decoder per realizzazione di reti combinatorie generiche con OR oppure NOR Decoder BCD oppure Hex verso 7 segmenti. Codici Gray. Conversione Gray-binario e viceversa. Encoder 2^m a m. Introduzione della priorità. Multiplexer. Definizione e realizzazione logica. Realizzazioni modulari. Uso dei multiplexer per realizzare reti combinatorie generiche.
Reti logiche combinatorie programmabili.
Motivazioni. Elementi fisici che permettono la programmabilità. Architetture basate su forme normali. PLA, PAL. Notazioni per il disegno degli schemi. PROM: visione di una rete combinatoria come contenitore di informazioni.
Reti sequenziali.
Classificazione. L'elemento bistabile come base per realizzare memorie. Motivazione fisica: invertitore CMOS, semplice modello e dimostrazione dell'esistenza di solo 2 gruppi di soluzioni stabili, condizionate alla forma della caratteristica di trasferimento. Latch SR. Applicazione antirimbalzo. SR con porte NAND a priorità di set. SR con abilitazione. D-latch. Analisi del comportamento nel tempo. Condizioni di corretto funzionamento e metastabilità. Limite delle reti trasparenti e importanza di elementi di memoria non trasparenti. La tecnica dell'impulso breve di abilitazione. L'approccio master-slave. Generazione del clock in flip-flop master-slave. Comportamento di tipo edge-triggered, positivo o negativo. Tempi di rispetto di un flip-flop edge-triggered. Applicazioni semplici dei flip-flop a macchine sincrone per le applicazioni più diffuse. Registri. Modalità di ingresso e di uscita, seriale e parallela. Registro universale e possibili operazioni svolte grazie al multiplexer. Applicazione dei registri ai riconoscitori di sequenza interallacciati e non. Contatori. Definizione e funzionalità. Comportamento a fine conteggio. Realizzazione di contatori con T-FF. Principio del ripple-carry. Contatori UP-DOWN. Funzionalità di reset ed enable. Contatori modulo n. Contatore ad anello e Johnson. Modifica del contatore Johnson per valori di modulo dispari.
Introduzione alle memorie.
Memorie a semiconduttore. Classificazione. Volatili e non volatili, statiche e dinamiche, ad accesso casuale o seriale. SRAM: interfaccia elettrica e temporizzazione di lettura e scrittura. Architettura interna con indirizzamento mono e bidimensionale. Schema logico semplificato della cella. Assemblaggio di moduli di memoria. Aumento della dimensione di parola e del numero di parole.
Architetture delle macchine sequenziali sincrone.
Problemi dell'architettura di Mealy con uscita asincrona. Temporizzazione delle macchine sequenziali e massima frequenza di funzionamento. Approccio strutturato all'analisi di macchine sequenziali sincrone. Identificazione degli step di analisi: verifica sincronicità, identificazione del modello, ricostruzione tabella di eccitazione e transizione, costruzione del grafo di flusso. Descrizione di una funzionalità sequenziale sincrona. Inversione del flusso di analisi per ottenere la sintesi a partire dal grafo. Dal grafo di flusso allo schema logico. Scelta dell'architettura. Riduzione degli stati equivalenti. Codifica degli stati. Definizione della tabella di transizione. Dalla tabella di transizione a quella di eccitazione (per usare JK-FF oppure D-FF). Uso dei DE-FF per realizzare macchine con frequenza di elaborazione ridotta. Equivalenza del grafo di Moore con quello di Mealy sincrono e procedura per la relativa trasformazione. Numero delle possibili codifiche degli stati. Linee guida per la scelta della codifica tesa a ottimizzare la sintesi delle reti combinatorie.
Reti sequenziali asincrone.
Modelli per reti asincrone. Reti combinatoria per il calcolo dello stato futuro in macchine sequenziali asincrone. Progettazione senza alee statiche in forme normali. Altri criteri per l'analisi e la sintesi di reti sequenziali asincrone. Codifica degli stati. Alee essenziali e accorgimenti per limitarne gli effetti. Numero di step prima del raggiungimento dell'equilibrio. Sintesi del D-FF. Sintesi di reti asincrone con memoria concentrata in bistabili. Sintesi del D-FF a partire dal decisore con SR.
Architetture a controllo di programma.
Divisione di una macchina a stati in parte operativa e parte di controllo. Interfaccia tra le due parti. Esempio di una semplice parte operativa. Architettura a data-path con registri dotati di abilitazione. Codice operativo per il controllo dell'unità logico-aritmetica. Parte di controllo. Descrizione con diagramma di flusso e traduzione in linguaggio a trasferimento di dati tra registri. Architettura con memoria e con contatore. Introduzione di un ulteriore livello e architettura di un processore. CISC e RISC. Architettura di Harvard e Von Neumann. Linguaggio macchina. Architettura dei microcontrollori AVR della Microchip. Registri, memoria, memoria di programma. Program counter e stack pointer. Unità operativa e registro di stato SREG. Specializzazione di alcuni registri nella funzione di puntamento.
Programmazione assembly.
Struttura di un listato assembly. Istruzioni, operandi, label, direttive e commenti. Esempio delle direttive org, equ, def. Uso di basi numeriche diverse dalla decimale. Capacità aritmetiche dell'assembler. Dimensione delle istruzioni. Set di istruzioni del microcontrollore XMEGA256A3BU. Notazioni usate. Flag e loro significato. Indirizzamenti immediato, diretto, indiretto senza e con modifica del puntatore. Effetto dell'indirizzamento sulla codifica. Istruzioni di spostamento dati, tra registri e tra registri e memoria. Stack e stack pointer. Istruzioni read-modify-write. Istruzioni aritmetiche: somme, differenze, incrementi, decrementi, cambio segno. Sottrazione di operando immediato. Possibile uso come somma immediata. Operazioni di confronto. Confronto multibyte. Moltiplicazione, tra unsigned, signed e ibrida. Moltiplicazioni tra frazionali. Operazioni di movimento di bit. Uso aritmentico delle shift e delle rotazioni. Gestione di singoli bit. Gestione dei bit di SREG (flag). Operazioni di controllo. Salto assoluto, relativo e indiretto. Codice rilocabile. Operazioni di skip. Istruzioni di controllo. CALL e RET. Meccanismo di salvataggio dell'indirizzo di ritorno. Interruzioni e RETI. Esigenza di salvataggio registri nelle subroutine e nei gestori di interruzione. Salti condizionati. Analisi delle diverse condizioni possibili. Istruzioni particolari di controllo: NOP, BREAK, SLEEP e WDR. Funzionamento del watchdog timer. Strutture di programmazione. Scheduler ciclico. Esecuzione di cicli brevi e lunghi.
Strutture di programmazione.
Programmazione gerarchica. Codice rilocabile e riuso delle procedure. Importanza di definire un'interfaccia tra programma chiamante e chiamato. Passaggio dei parametri e delle variabili. Periferiche del microcontrollore. La periferica porta di I/O. Schema della sezione di uscita, di ingresso e di pull. Descrizione analitica dei registri di configurazione. Conclusione della parte teorica del corso.
The course provides knowledge of Number Systems: binary, octal and hexadecimal number systems. Basic arithmetic operations. Conversion from "N" radix at 10 radix and vice versa. Representation of relative numbers. Representation in fixed-point and floating-point. Boolean Algebra: Huntingtone postulates and theorems. Switching Algebra Logical Networks. Logic gates. Design techniques of combinatorial networks. Fundamental combinatorial networks. Sequential networks. Flip Flop. Sequential elementary networks. Technical design of sequential networks. Architecture of a digital computer. Basic constituent parts of a computer: ALU, CPU, RAM, ROM, I/O
D. D. Givone, "Digital Principles and Design", McGraw Hill, 2003; Mano M. Morris, Charles R. Kime, "Reti logiche", Pearson Addison-Wesley, 2008; N. Balabanian, B. Carlson, "Digital Logic Design Principles, John Wiley & Sons, 2001; www.microchip.com datasheet dei microcontrollori della famiglia AVR e del relativo linguaggio assembly; le tracce usate dal docente per la presentazione delle lezioni sono disponibili sul sito del docente.
Donald D. Givone, PRINCIPLES AND DIGITAL DESIGN, McGraw-Hill
Il corso prevede la frequenza. I contenuti possono comunque essere studiati in autonomia, usaando le tracce presenti sul sito del docente, il registro delle lezioni compilato settimanalmente, anno per anno, e i libri di testo indicati. A partire dalla pagina web del corso possono trovarsi poi tutte le prove di esame (scritto) assegnate nel passato, corredate dalla soluzione.
L'esame prevede il superamento di una prova scritta (6 esercizi che assegnano fino a 33 punti) da svolgere in circa 2 ore (non meno). Il raggiungimento della sufficienza nella prova scritta è necessario per presentarsi all'esame orale, nella stessa sessione o nella successiva (con l'eccezione dell'appello straordinario di novembre). L'esame orale tipico prevede la risposta ad alcuni quesiti, è comprensiva di una eventuale parte numerica e ha una durata di circa 40 minuti.
Gli argomenti affrontati nel corso possono essere approfonditi (quindi dopo lo studio preliminare) anche ricorrendo al moltissimo materiale di buona qualità reperibile in rete. L'uso proficuo di questo materiale richiede una buona dose di spirito critico e l'uso dei comuni criteri di valutazione dell'attendibilità di quanto trovato. Si suggeriscono siti ospitati in istituzioni universitarie o di enti di ricerca, siti di produttori e distributori di componenti o sistemi elettronici, siti di editori di letteratura scientifica di livello universitario. Può essere utile anche l'uso di enciclopedie on line come la versione inglese (solitamente più completa e accurata per le discipline tecniche) di Wikipedia, con la cautela suggerita dal fatto che questi strumenti, per scelta editoriale, non costituiscono fonte primaria, ma rimandano sempre ad altri documenti pubblicati.