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 …..01117
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
Scarica

Lucidi_1_-_Intro-08