Programma del corso

Introduzione all'architettura degli elaboratori elettronici
Organizzazione generale degli elaboratori elettronici. Il concetto di macchina virtuale e i livelli dei sistemi di elaborazione. Progetto strutturato dei computer (struttura a livelli di Tanenbaum): introduzione alla gestione delle periferiche. Schema base per l'interconnessione, bus, interfacce. Inquadramento dei contenuti del corso rispetto alle conoscenze pregresse ed in coordinamento con il corso di Architettura dei Calcolatori Elettronici.
PARTE PRIMA: Analisi dell'architettura dei sistemi di elaborazione
Le periferiche
Esigenze di interconnessione tra sistemi ed all'interno di un singolo sistema. Organizzazione interna delle interfacce di comunicazione con le periferiche. Cenni sui bus di sistema. Problematiche di progetto dei sistemi di I/O. Affidabilita', costo prestazioni dei sistemi di I/O. Programmazione dell'I/O: I/O programmato. Interfacce elementari. Progetto di periferiche elementari: tastiera, display. Hardware e software di sistema: modello di programmazione. Protocollo di input programmato.
Interruzioni e DMA
Overlap delle operazioni in input programmato. Output programmato. I/O con interrupt. Trasferimenti di I/O a blocchi. Controller DMA. Cenni sull'8237. Interrupt controller 8259: configurazione, tecniche di indirizzamento, registri di configurazione e sequenza di inizializzazione. Registri. Priorita'.
Porte di comunicazione
Porto parallelo PIA 6821. Organizzazione interna, esterna e modello di programmazione. Configurazione modi di funzionamento. Cenni all'INTEL 8255. Interfaccia seriale: organizzazione generale, motivazione, gestione degli errori. Comunicazione half e full duplex, sincrona e asincrona. Standard di comunicazione seriale. UART INTEL 8251: configurazione e programmazione. I timer: struttura base e utilizzo. Configurazione e programmazione dell'INTEL 8254.
Evoluzione delle periferiche
L'architettura di un moderno sistema di calcolo basato su architettura INTEL: organizzazione e chipset. Analisi della documentazione tecnica.
Simulazione di un sistema di elaborazione: l'ambiente ASIM
L'ambiente ASIM per la simulazione di architetture: esempio di simulazione di sistemi di comunicazione.
PARTE SECONDA: Sintesi di componenti dei sistemi di elaborazione
Metodologie e modelli per il progetto: Hardware Description Language
HDL. Tipologie di circuiti digitali moderni. Flusso di progetto: specifica, sintesi, place & route, simulazione. Caratteristiche di un HDL: gestione della concorrenza, organizzazione gerarchica, modularita', tempificazione, livelli di astrazione, simulazione, verifica, documentazione.
VHDL
Il linguaggio VHDL. Descrizioni: comportamentale, strutturale, data flow. Comparazione tra le esecuzioni comportamentale, strutturale e data flow. Descrizioni gate level e RTL. Simulazione in VHDL. Ritardi. Il linguaggio VHDL: oggetti, tipi scalari e composti, tipi predefiniti (intero, physical, floating, enumerato), tipi enumerati predefiniti.Tipi composti in VHDL. Array, record, alias, sottotipi, attributi, operatori. Descrizione strutturale in VHDL: entita' e architettura. Architettura: parte dichiarativa e corpo concorrente. Generics. Costrutti iterativi. Testbench. Descrizione dataflow. Assegnazioni concorrenti incondizionata, condizionata e con selezione. Esempi: nibble comparator, SR latch, D latch, multiplexer. Confronto delle realizzazioni con condizione e con selezione: multiplexer, D latch, FF D e D con reset. Processi. Template di processi: con wait, con sensitivity list. Tipi di wait. Interazione con l'esterno. Variabili. Assegnazioni sequenziali nel process e tempificazione. Istruzioni sequenziali. Assert. FSM in VHDL: descrizione a due o a un processo. Esempio: riconoscitore di stringa (descrizione comportamentale). Esempio: handshaking. Codifica dello stato. Realizzazione di macchine con logica a microcontrollo. Macchine con logica a microprogrammazione: esempi di macchine in VHDL.
Progettazione e realizzazione di componenti basati su VHDL
Ambiente di sviluppo VHDL Simili. Progetto d'esame: divisore con restoring. Circuiti ad alta integrazione. ASIC. Classificazione e caratteristiche: dai full custom ai programmabili. PLD: tecniche di configurazione, tipi (ROM, PAL, PLA). PLD in circuiti VLSI: FPGA. La famiglia Xilinx Spartan: tecniche interne (SRAM), architettura, caratteristiche dei blocchi logici, dell'I/O, delle interconnessioni. Macchine base per i PLD VLSI. Multiplexer, circuiti aritmetici, latch e FF.
Parte terza: le macchine aritmetiche
Addizionatori in modulo. Addizionatori di interi positivi (binari e per potenze di b). Sottrattori in modulo. Addizionatori in modulo diminuito. Addizionatori di numeri relativi. Addizionatori in complementi alla base. Moltiplicatori modulo M. Moltiplicatori di interi positivi. Moltiplicatori binari. Moltiplicatori binari veloci: moltiplicatori per stringhe. Divisori modulo M. Divisori di interi positivi. Divisori binari. Divisione con e senza restoring.

Testi consigliati
Sulla prima parte:
Andrew S. Tanenbaum, "Structured Computer Organization - Fourth Edition", Prentice-Hall (anche in versione italiana)
Yu-cheng Liu, Glenn A. Gibson, "Microcomputer Systems: The 8086/8088 Family", Prentice-Hall
John F. Wakerly, "Microcomputer architecture and programming: the 68000 family", John Wiley & Sons
Sulla seconda parte:
VHDL Cookbook
Zainalabedin Navabi, "VHDL: Analysis and Modeling of Digital Systems", McGraw Hill
Sulla terza parte:
Bruno Fadini, Ugo De Carlini, "Macchine per l'elaborazione delle informazioni", Liguori Editore
M. Morris Mano, Charles R. Kime, "Reti logiche", Addison Wesley (consigliato per terza e seconda parte)