Calcolatori Elettronici I

Università degli Studi di Napoli Federico II

Prof. Roberto Canonico


A.A. 2019-20

AVVISO: E' opportuno che gli studenti che seguono il corso di Calcolatori Elettronici I del prof. Canonico si iscrivano al corso sul sito docenti http://www.docenti.unina.it/roberto.canonico mediante la apposita procedura, selezionando l'opzione "Iscrizione alla mailing list" per ricevere eventuali comunicazioni dal docente.

AVVISO: A seguito delle misure precauzionali stabilite dal governo, almeno in una fase iniziale, il corso verrà svolto in modalità telematica. Gli studenti sono invitati ad installare sui propri PC il software Microsoft Teams, seguendo le istruzioni contenute sulla pagina web predisposta dal nostro ateneo: http://softwaresso.unina.it/teams/ utilizzando le proprie credenziali UNINA per l'accesso alla piattaforma.
Le lezioni del corso saranno erogate tramite la piattaforma Microsoft Teams a partire da giovedì 12 marzo 2020 nell'orario ufficiale del corso.
Si invitano gli studenti a consultare quotidianamente gli avvisi pubblicati nella bacheca del sito docenti.

AVVISO: La partecipazione alle lezioni tramite la piattaforma Teams dovrà avvenire nel rispetto delle regole indicate nel documento qui riportato: POLICY USO TEAMS.

Programma dettagliato delle lezioni svolte

Le slide delle lezioni (quando utilizzate) verranno pubblicate in formato PDF dopo ciascuna lezione.

Lezione Data Slide / Riferimenti Argomenti
1 12/03/2020 Introduzione al Corso ed agli strumenti telematici per la didattica.
Brevi cenni storici sulla evoluzione dei calcolatori elettronici.
Primi cenni introduttivi sulla architettura di un calcolatore elettronico.
2 16/03/2020 Informazione e sua rappresentazione. Codici a lunghezza fissa ed a lunghezza variabile.
Codici binari. Esempi di codici.
Rappresentazione posizionale dei numeri. Sistemi binario, ottale ed esadecimale.
Rappresentazione di numeri naturali.
Rappresentazione di numeri interi relativi: rappresentazione in segno e modulo ed in complementi.
Rappresentazione in complementi alla base. Funzione resto-modulo-M.
Algoritmi di complementazione. Estensione della rappresentazione.
Aritmetica in complementi. Overflow.
3 17/03/2020 Rappresentazione in complementi diminuiti. Rappresentazione per eccessi (vedi slide lezione 2).
Algebra di Boole. Proprietà fondamentali.
Definizione di Algebra di Boole.
Teorema di De Morgan ed altre proprietà dell'algebra di Boole.
Modelli di algebre di Boole: algebra delle proposizioni, algebra degli insiemi ed algebra dei circuiti.
Porte logiche elementari e loro composizione.
4 19/03/2020 Funzioni booleane e tabella di verità.
Funzioni booleane di 2 variabili.
Mintermini e maxtermini.
Forma normale di tipo P e di tipo S di una funzione booleana.
Relazione d'ordine parziale in un'algebra di Boole.
Implicazione come relazione d'ordine nell'algebra delle proposizioni.
Clausole e fattori elementari.
Implicanti di una funzione. Implicanti primi.
5 23/03/2020 Generazione di consensi tra mintermini (slide lezione precedente).
Mappe di Karnaugh. Rappresentazione di clausole sulle Mappe di Karnaugh.
Individuazione degli implicanti primi sulle mappe di Karnaugh.
6 24/03/2020 Introduzione al problema della minimizzazione di funzioni booleane.
Metriche per la misura del costo di una funzione: costo di porte, costo di letterali, costo di ingressi.
Ricerca dei primi implicanti: espansione sulla mappa di Karnaugh per funzioni fino a 4 variabili.
Espansione sulla mappa di Karnaugh per una funzione di 5 variabili.
Primi implicanti essenziali. Funzioni cicliche.
Copertura mediante mappe di Karnaugh.
7 26/03/2020 Minimizzazione di funzioni booleane: matrice di copertura.
Semplificazione della matrice di copertura: righe e colonne dominanti. Funzioni incompletamente specificate.
Minimizzazione di funzioni incompletamente specificate con le mappe di Karnaugh e con la matrice di copertura.
8 30/03/2020 Macchine combinatorie.
Progetto di un transcodificatore per display a 7 segmenti.
Macchine combinatorie fondamentali: half e full adder.
Addizionatore binario parallelo a propagazione del riporto.
Addizionatore binario con anticipo del riporto: rete di carry look-ahead.
9 31/03/2020 Encoder e decoder. Composizione di decoder. Arbitro di priorità.
Multiplexer e demultiplexer lineari ed indirizzabili.
Porte abilitanti tristate. Multiplexer con porte tristate.
10 02/04/2020 Funzioni NAND e NOR. Proprietà di NAND e NOR.
Forme NAND e NOR di una funzione booleana.
Macchine combinatorie: reti universali.
Realizzazione di macchine combinatorie mediante multiplexer, ROM o PLA.
11 06/04/2020 Effetti dei ritardi nelle macchine combinatorie.
Alee in reti combinatorie: alee statiche e dinamiche. Automi a stati finiti. Modelli di Moore e di Mealy.
Rappresentazione di ASF mediante tabelle e mediante grafi.
Macchine sequenziali. Def. di stato stabile sotto un dato ingresso.
Macchine sequenziali asincrone: definizione e modello fondamentale.
12 07/04/2020 Il flip flop RS fondamentale come macchina asincrona.
Circuito a NOR ed a NAND: analisi.
Problemi di tempificazione del flip-flop RS fondamentale.
Flip-flop RS abilitato latch.
Flip-flop D latch.
Tempificazione dei flip-flop: latch.
13 16/04/2020 Tempificazione dei flip-flop: latch ed edge-triggered (continua).
Flip-flop RS e D edge-triggered: tabella delle transizioni di stato e circuito.
Flip-flop JK e T edge-triggered: tabella delle transizioni di stato.
14 20/04/2020 Macchine sequenziali sincrone. Tabelle di transizione e schema realizzativo.
Metodologia di progetto delle reti sincrone.
Introduzione ai contatori sincroni.
Progetto di un contatore sincrono mod-4 con FF e.t. di tipo JK.
Tabelle di eccitazione dei FF di tipo JK e T.
Tabella di eccitazione di un FF di tipo D.
Progetto di un contatore sincrono mod-16 con FF e.t. di tipo JK.
Progetto di contatori a crescere ed a decrescere (up/down).
Progetto di un contatore sincrono mod-10 con FF e.t. di tipo JK e con FF di tipo T.
15 21/04/2020 Progetto di una macchina sequenziale sincrona.
Ingressi di posizionamento asincroni dei flip-flop commerciali.
Contatori sincroni: ingressi di reset sia sincrono che asincrono.
16 23/04/2020 Consultazione di datasheet di componenti commerciali.
Contatori sincroni: ingressi di precaricamento sia sincrono che asincrono.
Riduzione del modulo di un contatore mediante reset o precaricamento sincrono.
Contatori sincroni composti. Contatore mod-256.
Contatore mod-24.
17 27/04/2020 Progetto di una macchina sequenziale sincrona.
Esercizio di analisi di una rete sincrona.
Contatori asincroni (ripple counter).
Registri sincroni: parallel-in/parallel-out, serial-in/serial-out, serial-in/parallel-out.
Registri a scorrimento. Uso di multiplexer in registri a scorrimento.
Contatore di Johnson.
18 28/04/2020 Concetto di equivalenza tra stati.
Minimizzazione degli stati con il metodo di Paull-Unger per macchine completamente specificate.
Riconoscitore di codice 8421: minimizzazione degli stati.
Definizione di compatibilità tra stati in una macchina sequenziale incompletamente specificata.
Differenza tra equivalenza e compatibilità tra stati.
19 30/04/2020 Introduzione all'architettura del calcolatore.
Il processore. Ciclo del processore.
Interfacciamento processore-memoria.
Rappresentazione in memoria di dati di tipo word: disposizione big-endian e little-endian. Word allineate e non allineate.
Processore: modello ad accumulatore e modello a registri generali.
Primi esempi di codici in linguaggio macchina per processori ad accumulatore ed a registri generali.
Codifica delle istruzioni in linguaggio macchina.
Il modello di programmazione del processore Motorola MC68000.
20 04/05/2020 Introduzione al linguaggio macchina. Classi di istruzioni l/m.
Introduzione al linguaggio assembly.
Formato delle istruzioni in assembly.
Alcune istruzioni del processore MC68000.
L'istruzione MOVE. Le istruzioni AND, OR, NOT, EOR.
21 05/05/2020 Intruduzione al linguaggio assembly MC68000.
Direttive di assemblaggio: ORG, END, EQU, DC, DS.
Funzionamento dell'assemblatore. Tabella dei simboli. Assemblaggio in due passi.
AsimTool. Ambiente di simulazione Asim.
22 07/05/2020 Modi di indirizzamento: diretto a registro, assoluto ed immediato.
Verifica del funzionamento dei modi di indirizzamento con l'ausilio del simulatore Asim.
23 11/05/2020 Modi di indirizzamento del processore MC68000: indiretto, indiretto con pre-decremento, indiretto con post-incremento.
Istruzione LEA. Istruzione DBcc.
Primi esempi di programmi in linguaggio assembly MC68000. Esempi di programmi assembly MC68000: prodotto di due numeri interi tramite somme successive, prodotto scalare di vettori di interi.
24 12/05/2020 Istruzioni aritmetiche del processore MC68000: ADD, SUB, NEG, MULS, MULU, DIVS, DIVU. Istruzioni ADDI, ADDQ.
Aritmetica in precisione multipla: il flag X e l'istruzione ADDX.
Istruzioni su operandi di tipo indirizzo: MOVEA e ADDA.
Istruzioni di confronto: CMP e TST.
Flag del processore e loro settaggio da parte delle istruzioni aritmetiche e di confronto.
25 14/05/2020
Progetto di riconoscitori di sequenza sincroni con uscita di Mealy.
Progetto macchina sincrona "contatore di 1 ogni tre bit".
26 18/05/2020 Istruzioni di salto assoluto (jump) e salto relativo (branch): differenze nella codifica in linguaggio macchina.
Istruzioni di salto condizionato (Bcc) del processore MC68000.
Codifica in assembler di tipici costrutti di controllo del flusso di programma.
27 19/05/2020 Modi di indirizzamento con modifica dell'indirizzo: based, indexed e based-indexed.
Modi di indirizzamento del processore MC68000: indirect with displacement, indirect with displacement and index.
Modi di indirizzamento del processore MC68000: PC-relative e PC-relative indexed.
Gestione di uno stack attraverso i modi di indirizzamento con predecremento e postincremento.
Gestione dei sottoprogrammi in linguaggio macchina: problema del collegamento e del passaggio dei parametri.
Collegamento tramite link register (istruzione jal dei processori RISC). Collegamento tramite stack.
28 21/05/2020 MC68000: istruzioni JSR, RTS.
Tecniche di passaggio dei parametri a subroutine in assembly.
Passaggio attraverso registri del processore.
Passaggio dei parametri attraverso record di attivazione allocato su stack. Frame pointer.
MC68000: istruzioni LINK, UNLK, MOVEM.
Codifica dei caratteri.
Esercizi di programmazione assembler MC68000: ricerca di un token in una stringa NUL-terminated.
29 25/05/2020 Gerarchia di memorie in un calcolatore.
Memorie indirizzabili vs. memorie content-addressable.
Memorie RAM. Schemi di selezione. Selezione lineare e semiselezione.
SRAM vs. DRAM.
Collegamenti di chip di memoria per aumentare la capacità.
Interfacciamento CPU-memoria. Schemi asincroni e sincroni. SDRAM.
Architettura interna della CPU.
30 26/05/2020 Architettura interna della CPU. Struttura a bus interno unico ed a tre bus interni. Trasferimenti tra registri del processore. Register file. Cenni al ruolo della unità di controllo della CPU. Analisi della fase fetch del processore.
Esercizi di programmazione assembler MC68000: conteggio del numero di caratteri non-spazio in una stringa NUL-terminated con subroutine.
Esecuzione di un programma con subroutine nel simulatore ASIM.
31 28/05/2020 Il sistema delle interruzioni. Interrupt Service Routine (ISR).
Il sistema delle interruzioni del processore MC68000. Istruzione RTE.
Context switch e latenza delle interruzioni.
Priorità delle interruzioni e nesting delle ISR.
32 01/06/2020 Interruzioni vettorizzate ed autovettorizzate.
Identificazione della richiesta di interruzione: daisy chaining, polling o handshaking.
Livelli di privilegio del processore MC68000.
Istruzioni privilegiate.
Interrupt, eccezioni e trap.
Breve presentazione dei processori ARM (cenni).
33 04/06/2020 Ulteriori dettagli sul repertorio di istruzioni dei processori ARM.
Il sistema di I/O.
I/O memory mapped vs. I/O isolato.
Sincronizzazione del colloquio CPU-periferica: I/O programmato.
Esempio di driver con I/O programmato.
34 08/06/2020 Sincronizzazione del colloquio CPU-periferica: I/O programmato, I/O con interruzioni.
Esempio di driver con I/O programmato e con interruzioni.
Interfacce con capacità DMA.
Esercizi di programmazione assembler MC68000: trasformazione lettere minuscole in maiuscole in una stringa di caratteri (subroutine touppercase), elaborazioni sugli elementi di un array di interi.
35 09/06/2020 Esercizi di progetto e analisi di macchine sequenziali sincrone.
Esercizio di minimizzazione in forma S (prodotto di somme) di una funzione booleana incompletamente specificata.
Comparatore parallelo come macchina combinatoria.
Analisi del codice assembly MC68000 prodotto da un compilatore C (file programmi-C.zip).

Riferimenti a siti web


Libri di testo

  O IN ALTERNATIVA:   

Altri documenti


Esercizi

ESEMPI DI TRACCE DI ESAME

Software didattico


Calendario esami a.a. 2019-2020

NOTA: L'organizzazione delle sedute di esame avverrà secondo un calendario che sarà determinato dalle modalità di esame rese possibili dall'attuale situazione e dal numero di prenotati. Di seguito si indicano le date d'inizio delle sedute previste.

Edizioni precedenti del corso


Pagina ufficiale sul sito docenti.unina.it
Email del docente: roberto.canonico at unina.it

Ultimo aggiornamento: 11 giugno 2020