Sistemi Elettronici Programmabili (SELPR) Prof. Adelio Salsano - Dott. Stefano Bertazzoni – Ing. Salvatore Pontarelli III Ciclo Dal 2 Marzo 2009 al 24 Aprile 2009 Lezioni Lunedì ore 11.30 – 13.15, Aula 3 Nuovi edifici Mercoledì ore 14 – 15.45 Aula 9 NE Giovedì ore 11.30 – 13.15, Aula 3 NE Ricevimento studenti: lunedì e giovedì ore 15-17 Organizzazione Quattro settimane per richiami di elettronica digitale, circuiti programmabili, architettura e caratteristiche hardware e software dei sistemi a microprocessore. Verifica intermedia Tre settimane di lezioni ed esercitazioni relative a sistemi a microcontrollore, basate su un microcontrollore commerciale. Verifiche finali Possibilità di modifica in relazione ai prerequisiti degli studenti
Sistemi elettronici programmabili Introduzione: dal continuo al discreto Richiami di elettronica digitale: Sistemi numerici e algoritmi di conversione Funzioni logiche e aritmetiche Circuiti combinatori e sequenziali PLD e FPGA: Architetture; celle elementari e strutture complesse Microcalcolatori e microprocessori: Architetture Caratteristiche hardware dei microprocessori: Lunghezza di parola; Velocità; Registri Memorie permanenti e di lavoro Sequenza di esecuzione di una istruzione Caratteristiche software dei microprocessori: Codici operativi; Modi indirizzamento Progetto di un microprocessore Sistemi elettronici digitali: definizioni; architetture di interconnessione Le periferiche La gestione dello scambio dei dati La comunicazione tra sistemi digitali: Trasmissione seriale; Trasmissione parallela; Riconoscimento e correzione degli errori Linguaggi e strumenti di programmazione Presentazione di un microcontrollore commerciale: Architettura Set di istruzione Tecniche di programmazione Sviluppo di un progetto In funzione della disponibilità di posti di lavoro, sono previste esercitazioni pratiche sui sistemi presentati MATERIALE DIDATTICO Trasparenze e dispense del corso www.uniroma2.it/didattica (selpr1) e www.elet.uniroma2.it (approfondimenti) Carl Hamacher, Z. Vranesic, S. Zaky: “Introduzione all’architettura dei Calcolatori” , MacGraw- Hill H.A. Farhat: “Digital Design and Computer Organization”, CRC Press Sistemi elettronici programmabili
Dal Continuo al Discreto I fenomeni naturali sono intrinsecamente continui - temperatura, velocità, ecc. La misura di una grandezza è intrinsecamente discreta numero La precisione può essere spinta quanto si vuole Strumenti analogici e digitali conversione A/D e D/A Simboli e numeri. Codici binari. Simboli rappresentano oggetti come lettere dell’alfabeto, o qualità e possono – non sempre - essere messi in ordine funzioni logiche I numeri possono essere ordinati, sommati, moltiplicati, ecc. concetto indipendente dalla rappresentazione I sistemi numerici: decimale, binario. Valore posizionale Le cifre sono i simboli usati in un sistema in una certa base 0-9 per la base 10, 0-1 per la base 2, 0-7 per la base 8. Sistemi elettronici programmabili
Sistemi elettronici programmabili Adder Equivalente decimale di un numero in base B D = Pi Bi Equivalente binario di un numero decimale Divisioni successive per 2 I resti sono i bit successivi a partire da B0 Algoritmi simili per numeri frazionari (<1) successive moltiplicazioni per passaggio da decimale a binario Half adder e full adder di numeri binari Cin B A SUM Cout 1 Half adder Full Adder Sistemi elettronici programmabili
Numeri negativi Complemento a 2 Serve per fare le sottrazioni sommando il complemento a due del sottraendo Il bit più significativo dà il segno: 1 corrisponde a numero negativo Passaggio da un numero al suo complemento a 2 Complementare tutti i bit e sommare 1 0000 0 0001 1 …..01117 1111-1 1110-2 …..1001-7 1000-8 ESEMPI 4 bit da –8 a +7 Si prendono i quattro bit meno significativi e si trascura il riporto +1 = 0001 -1 = 1111 10000 +5 = 0101 -2 = 1110 10011 Sistemi elettronici programmabili
Sistemi elettronici programmabili Codici (1) Codici Stabiliscono una corrispondenza biunivoca tra simboli/numeri e rappresentazione in termini di bit. Lunghezza di un codice Numero di bit usato per rappresentare un simbolo/numero Con N bit possono essere rappresentati al massimo 2N “oggetti” diversi Codici ridondanti per facilitare il riconoscimento di errori, l’esecuzione di operazioni, ecc. Codici pesati e non pesati per numeri binario, BCD a 4 o 5 bit, eccesso 3. Codice ASCII (American Standard Code for Information Interchange) 7 bit per lettere e numeri i numeri hanno come primi bit 011, seguiti dai 4 bit BCD tutte le tastiere. Bar code. Sistemi elettronici programmabili
Sistemi elettronici programmabili Codici (2) Codifica e decodifica: dal simbolo/ numero ai bit e viceversa Funzioni logiche Display 7 segmenti. Funzioni logiche relazioni tra variabili che possono essere “vere” o “false” – “1” o “0” Esempio: lampada accesa (“1”) se l’interruttore è acceso (“1) e c’è la corrente (“1”). Byte: 8 bit - Digit: 4 bit - Parola o word: numero di bit corrispondente al parallelismo del sistema di elaborazione. Le funzioni logiche sono espresse ed elaborate con le regole dell’algebra booleana. Sistemi elettronici programmabili
Algebra Booleana e Porte Elementari Algebra Booleana e Porte Elementari L’algebra booleana si basa su alcune funzioni elementari, OR, o somma logica, AND, o moltiplicazione logica e NOT, o negazione logica. · F= A+B F vero se A o B vero o se sono veri sia A che B · F=A.B F vero solo se sia che B sono veri. · F=A/ F vero se A falso, F falso se A vero. · “Vero”, “true”, corrisponde a “1” e “falso”, “false”, corrisponde a “0”. Tabelle della verità OR AND NOT A B F 1 Sistemi elettronici programmabili
Altre funzioni elementari sono: NOR OR negato NAND AND negato Funzioni più complesse sono rappresentabili con tabelle della verità e con opportune interconnessioni di funzioni elementari CIRCUITI LOGICI Data una espressione booleana, è possibile realizzare un circuito logico corrispondente e viceversa. I circuiti logici lavorano tra due tensioni corrispondenti rispettivamente a “1” e a “0”. Sono in genere la tensione minima e la massima del circuito – terra e alimentazione e si dice che lavora in logica positiva se a “1” corrisponde la tensione più alta e a “0” la tensione più bassa. Per realizzare un circuito logico Funzione logica, p.e. tabella della verità Semplificazione con leggi algebra Implementazione Sistemi elettronici programmabili
Sistemi elettronici programmabili De Morgan Il negato di una somma è uguale al prodotto dei negati Il negato di un prodotto è uguale alla somma dei negati Leggi varie per semplificare le espressioni booleane Possibile utilizzare solo NOR o solo NAND per realizzare la generica funzione booleana SIMBOLI DELLE FUNZIONI ELEMENTARI AND OR INV NAND NOR Sistemi elettronici programmabili
Tabelle di Look-up (LUT) Una funzione logica può essere realizzata con un circuito logico – or, and, nor,,,,- o In alternativa, può essere realizzata utilizzando memorie elettroniche (RAM, ROM, EEPROM, FLASH…) partendo direttamente dalla tabella della verità. Una funzione logica ad n variabili fa corrispondere ad ognuna delle 2n combinazioni degli ingressi un valore per l’uscita: può essere implementata con una memoria 2n x1, con gli indirizzi corrispondenti alle combinazioni degli ingressi. Questa soluzione è utilizzata per esempio nei FPGA Sistemi elettronici programmabili
Componenti Usati nei Circuiti Logici I circuiti logici che considereremo nel corso sono realizzati con transistori MOS che possono essere schematizzati come interruttori aperti o chiusi, con resistenze, effettive o equivalenti, e capacità. I simboli relativi sono i seguenti NMOS PMOS R C Sistemi elettronici programmabili
Circuiti Logici Elementari I circuiti logici si basano sulla realizzazione di inverter, o, meglio, di blocchi circuitali che, in funzione degli ingressi, colleghino l’uscita all’alimentazione (pull-up, o PUN, Pull Up Network) o a terra (pull-down, o PDN, Pull Down Network). Possono essere usate diverse tecnologie: la più usata attualmente è la CMOS. L’inverter di base esegue la funzione “negazione”, cioè PUN PDN IN OUT VDD GND Sistemi elettronici programmabili
Altri Circuiti Logici Elementari B A VDD OUT GND NAND NOR Sistemi elettronici programmabili
Sistemi elettronici programmabili Funzioni Complesse Funzioni più complesse si realizzano considerando prima il PDN; cioè realizzando la funzione che dà l’uscita bassa: il PUN è quindi realizzato come duale del PDN. ESEMPIO: Da cui B A C D GND VDD Y Sistemi elettronici programmabili
Sistemi elettronici programmabili Transmission Gate Coppia NMOS/PMOS che conduce sia il valore alto che il valore basso in modo ottimale Vc Vout Vin FAN IN e FAN OUT: Fan in è il numero di porte di ingresso ammesse per la tecnologia considerata, mentre il fan out è il numero di ingressi che l’uscita di una porta logica può pilotare rispettando i limiti di capacità e di ritardo ammessi Sistemi elettronici programmabili
Sistemi elettronici programmabili CIRCUITI DINAMICI Informazione memorizzata in capacità Numero MOS metà dei CMOS+2 I due MOS collegati ad un clock per precarica e valutazione L’informazione si perde se la frequenza del clock è troppo bassa VDD PDN Cl t OUT Sistemi elettronici programmabili
Circuiti Combinatori e Sequenziali I circuiti esaminati finora sono detti “combinatori”: l’uscita dipende solo dagli ingressi attuali I circuiti nei quali l’uscita dipende dagli ingressi attuali e dagli ingressi precedenti sono detti “sequenziali” -esempio tipico è il flip flop RS che memorizza un bit in logica statica R S Qn+1 QN 1 NV R S Q R Q Sistemi elettronici programmabili
Sistemi elettronici programmabili Il Clock Sistemi complessi richiedono un segnale di clock per sincronizzare le operazioni dei diversi componenti e circuiti La memorizzazione avviene in elementi sensibili al livello – latches - o al fronte –flip flop. Flip Flop con funzionalità diverse (RS, D, JK) sincronizzati LATCH RS SENSIBILE AL LIVELLO R Q S CK R S Q CK Sistemi elettronici programmabili
Sistemi elettronici programmabili Flip-Flop Latch D DATA S Q R CK D Q FLIP FLOP D Master –Slave Commuta sul fronte negativo D Q D Q CK MS Sistemi elettronici programmabili
Sistemi elettronici programmabili Flip-Flop FLIP FLOP JK R S Q J CK K J K Qn+1 QN 1 QN/ Registro a scorrimento D Q MS CK Sistemi elettronici programmabili
Memorie MEMORIA CENTRALE e MEMORIA DI MASSA Un sistema di calcolo necessita di memorie per i programmi e per i dati MEMORIA CENTRALE e MEMORIA DI MASSA · La memoria centrale serve per i dati da elaborare e deve avere velocità elevata Accesso casuale, cioè il tempo di accesso non dipende dall’indirizzo Tecnologia microelettronica (RAM e ROM) · La memoria di massa serve per i programmi e per dati che normalmente non vengono usati immediatamente nelle elaborazioni Tempi di accesso elevati (ms) e tecnologia elettromeccanica (hard disk) · Memorie RAM R/W: lettura e scrittura con tempi comparabili · Memorie ROM, Read Only Memories FLASH, EEPROM: conservano le informazioni anche senza l’alimentazione o memorie permanenti scritte una volta per tutte o memorie per le quali la procedura di scrittura richiede tempi molto elevati e ha una complessità maggiore della lettura lettura in tempi come le RAM Sistemi elettronici programmabili
Architettura di una Ram Sistemi elettronici programmabili
Dispositivi Logici Programmabili (PLD) · OR di AND · ROM · PAL · PLA FUSE OUT . . . A2 2 A1 A0 Sistemi elettronici programmabili
Sistemi elettronici programmabili PAL · Numero limitato di AND di ingresso con connessioni programmabili. · Connessioni fisse verso l’OR di uscita C AB Convenzione: B C D D C B A Sistemi elettronici programmabili
PLA (Programmable Logic Array ) Si programmano le interconnessioni degli AND e degli OR FPGA Field Programmable Logic Array Sono i componenti più moderni: consentono fino a 4 livelli di logica combinatoria e inoltre contengono registri Possibilità di realizzare sistemi anche sequenziali, modificabili via software Sistemi elettronici programmabili
Microprocessori e Microcalcolatori (1) Un microcalcolatore è un sistema elettronico programmabile sincrono basato su circuiti integrati ad elevata integrazione collegati attraverso opportune interfacce ad organi di I/O e normalmente rivolti ad un singolo utilizzatore. Un microprocessore ( o ALU, Arithmetic and Logic Unit) è un circuito integrato ad elevata integrazione in grado di eseguire operazioni logiche, aritmetiche e di controllo su dati generati dal microprocessore stesso o fornito dall’esterno. La struttura di un microcalcolatore è quella classica detta di Von Neumann Sistemi elettronici programmabili
Microcalcolatori e Microprocessori (2) Il Microprocessore (o CPU, Central Processing Unit) in genere contiene una ALU (Arithmetic and Logic Unit), un’unità di controllo e i circuiti di interfaccia verso le periferiche. La Memoria può essere esterna al microprocessore. I microprocessori si distinguono per lunghezza di parola, corrispondente al numero di bit trattati in parallelo, oltre per le altre caratteristiche hardware e software, quali la velocità, le caratteristiche elettriche, l’architettura, il set di istruzioni, ecc. Lo scambio dei dati tra i diversi circuiti di un microcalcolatore e all’interno del microprocessore va da collegamenti punto-punto ai sistemi a bus. In genere si individua un dispositivo sorgente e uno o più dispositivi destinatari, con il dispositivo sorgente che generea il dato e un eventuale segnale di controllo e il dispositivo destinatario che riceve il dato e, quando necessario, conferma l’avvenuta ricezione. Sistemi elettronici programmabili