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 Programma 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 1-2 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 1-3 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 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 1 1 0 1 1 0 0 1 0 1 0 1 0 1 1 1 0 0 1 1 1 1 1 1 Half adder Full Adder Sistemi elettronici programmabili 1-4 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 1-5 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 1-6 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 1-7 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 A B F A F 0 0 0 0 0 0 0 1 0 1 1 0 1 0 1 0 1 0 1 1 0 0 1 1 1 1 1 1 Sistemi elettronici programmabili 1-8 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 1-9 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 Sistemi elettronici programmabili NOR 1-10 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 1-11 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 Sistemi elettronici programmabili C 1-12 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è OUT IN VDD PUN IN IN OUT OUT PDN GND Sistemi elettronici programmabili 1-13 Altri Circuiti Logici Elementari VDD VDD A B A OUT OUT B NAND A B NOR GND GND Sistemi elettronici programmabili 1-14 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: Y A( B CD) Da cui Y A( B CD) A VDD B C D A B C D Sistemi elettronici programmabili Y GND 1-15 Transmission Gate Coppia NMOS/PMOS che conduce sia il valore alto che il valore basso in modo ottimale Vout Vc Vc 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 1-16 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 OUT PDN Cl t Sistemi elettronici programmabili 1-17 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 0 0 QN 0 1 1 1 0 0 1 1 NV R Q R Q Q S Q Sistemi elettronici programmabili S 1-18 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 R Q S Q Q S Q CK CK Sistemi elettronici programmabili 1-19 Flip-Flop Latch D DATA S D D Q R Q Q Q CK CK FLIP FLOP D Master –Slave Commuta sul fronte negativo Q D Q Q D Q Q CK D Q MS Q CK Sistemi elettronici programmabili 1-20 Flip-Flop FLIP FLOP JK J K Qn+1 0 0 QN 0 1 1 1 0 0 1 1 QN/ J R Q K S Q CK Registro a scorrimento D Q MS Q D Q MS D Q MS Q Q D Q MS Q CK Sistemi elettronici programmabili 1-21 Memorie 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 1-22 Architettura di una Ram Bit Line 0 CELLA 1 A0 AM-1 . . . D E C R I G A K . . . . 2M-1. Word Line 0 1 … L N 2 …. -1 SENSE AMPLIFIER AM AM+1 AM+N-1 DEC COLONNA I/O DATA Sistemi elettronici programmabili 1-23 Dispositivi Logici Programmabili (PLD) OR di AND ROM PAL PLA FUSE OUT A22 0 A1 . . . A0 Sistemi elettronici programmabili 1-24 PAL Numero limitato di AND di ingresso con connessioni programmabili. Connessioni fisse verso l’OR di uscita · FUSE OUT AB C A B C Convenzione: BC D D C Sistemi elettronici programmabili B A 1-25 PLA (Programmable Logic Array ) Si programmano le interconnessioni degli AND e degli OR D C B A 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 1-26 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 CONTROLLO INPUT MEMORIA OUTPUT ALU Sistemi elettronici programmabili 1-27 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 1-28