Circuiti logici sequenziali - Corsi di Laurea a Distanza

Circuiti logici sequenziali
I circuiti logici possono essere classificati in circuiti combinatori, nei quali l’uscita in un determinato
istante dipende solo dal valore degli ingressi nello staesso istante, e circuiti sequenziali, nei quali
l’uscita in un certo istante dipende non solo dagli ingressi in quell’istante, ma anche dallo stato
precedente delle uscite. I circuiti sequenziali sono quindi caratterizzati dal fatto di possedere memoria.
Elementi fondamentali dei circuiti sequenziali sono i circuiti bistabili.
Circuiti bistabili
I circuiti bistabili, detti comunemente flip-flop, sono circuiti che hanno due stati di funzionamento,
entrambi indefinitamente stabili. Il più semplice circuito di questo tipo è realizzato collegando come in
figura 4.1 due inverter. L'anello così costituito realizza una forte reazione positiva. Supponendo di
avere un "1" logico nel punto B, in A si ha uno "0" logico che viene riportato in ingresso alla porta 1 e
mantiene fisso a "1" il punto B. Questo è uno dei due possibili stati del circuito. Il secondo si ha nella
situazione opposta in cui il punto B è a "0" logico, e A ad "1".
Figura 4.1 - Semplice flip-flop
I due stati sono detti stabili perché possono essere mantenuti per un tempo indefinito.
Questo tipo di circuiti può essere utilizzato come elemento di memoria di un sistema logico, a questo
scopo è però necessario avere a disposizione degli ingressi per poter determinare lo stato, cioè per
inserire i dati.
Una possibile soluzione è riportata nello schema di figura 4.2, dove gli inverter sono stati sostituiti con
delle porte NOR.
Figura 4.2 – Flip-flop realizzato con porte logiche NOR
Gli ingressi di questo semplice tipo di flip-flop vengono chiamati rispettivamente Set e Reset mentre Q
e Q sono le informazioni all'uscita di ciascuna delle due porte. Questo circuito viene denominato FlipFlop Set Reset (SRFF).
La tabella di verità di questo flip-flop è facilmente ricavabile ricordando che le porte NOR hanno gli
ingressi attivi alti, cioè la configurazione di uscita è determinata se almeno un ingresso è all' "1" logico.
Set
Reset
Q
Q
0
0
1
1
0
1
0
1
Memoria
0
1
Situazione non
Memoria
1
0
consentita
La seconda e la terza configurazione di ingresso consentono di determinare lo stato sulle uscite del FF,
e quindi di inserire l'informazione. La combinazione "0""0" su ingressi che sono “attivi alti”, non può
determinare lo stato delle uscite, e quindi lascia inalterata la situazione precedente: è quindi la
combinazione di memoria con la quale il circuito mantiene l'informazione precedentemente inserita. Se
gli ingressi sono entrambi a "1" le uscite vanno entrambe a "0" e questo in genere non è accettabile:
infatti se da questa combinazione si passa alla situazione di memoria le uscite possono portarsi alla
configurazione "0"/"1" oppure "1"/"0" in modo pressoché casuale (il verificarsi di una delle due
situazioni dipende da quale dei due ingressi passa per primo allo "0" logico e dalla rapidità relativa
delle due porte). Poiché in genere non è accettabile che nell'evolvere per stati di un sistema logico si
introduca un elemento stocastico, per cui non si sappia predire lo stato dell'uscita, si deve evitare di
fornire in ingresso la configurazione S = R = "1".
5.1.1 Comportamento di un flip-flop Set Reset
In figura 4.3 è riportato il circuito di un flip-flop a porte NOR. Cerchiamo di analizzarne il
comportamento.
Le forme d'onda di figura 4.4 riportano i segnali d'ingresso (S e R) ed una delle uscite (Q). La
configurazione S = "1", R = "0" forza l'uscita a "1" (fare riferimento alla tabella di verità prima
riportata); quando S torna a "0" il flip-flop si trova nello stato di memoria e Q non cambia, si noti come
commutazioni successive di S non hanno effetto sull'uscita. Per portare l'uscita a "0" occorre attivare il
segnale di reset (R = "1"). Anche in questo caso, mantenendo S a "0", le variazioni di R non influiscono
sul valore di Q.
Figura 4.3 – Flip-flop realizzato con porte logiche NOR
Figura 4.4 – Esempio di funzionamento di un flip-flop
I flip-flop possono essere realizzati anche utilizzando delle porte NAND al posto delle NOR (figura
4.5), la tavola di verità è:
Figura 4.5 – Flip-flop realizzato con porte logiche NAND
S
R
Q
Q
0
0
1
1
0
1
0
1
Situazione non
1
0
Memoria
consentita
0
1
Memoria
Dall'esame comparativo delle tavole della verità si può notare come il funzionamento del FF di NAND
sia ricavabile da quello del FF di NOR complementando gli ingressi. Questo spiega la figura 4.6 dove
Figura 4.6 – Simboli utilizzati per i flip-flop con porte logiche NOR (a) e porte logiche NAND (b)
sono riportati i simboli utilizzati per rappresentare i due tipi di flip-flop sopra descritti, il simbolo(a) si
riferisce a quelli realizzati con porte NOR, mentre quello (b) si riferisce ai flip-flop a porte NAND.
Questi semplici flip-flop Set Reset sono impiegati come circuiti antirimbalzo per collegare degli
interruttori meccanici a dei circuiti logici. Infatti, un interruttore meccanico quando chiude un circuito,
a causa dell'elasticità del materiale con cui sono realizzati i contatti, soffre di rimbalzi meccanici che
fanno chiudere ed aprire il contatto più volte prima di raggiungere la situazione di regime. Questo
potrebbe essere letto dal circuito logico comandato dal contatto come una ripetizione voluta di
comandi, e non come un unico dato in ingresso. Interponendo tra interruttore e sistema logico un RSFF,
come abbiamo visto in precedenza, le commutazioni multiple sugli ingressi non si ripercuotono sulle
uscite e i rimbalzi meccanici non danno origine a comandi non voluti al sistema logico che segue.
4.1.1 Altri tipi di flip-flop
Esistono diversi tipi di flip-flop: spesso si vuole che le commutazioni vengano comandate dai segnali S
e R, ma anche che possano avvenire solo in corrispondenza con un segnale di temporizzazione. In
figura 4.8 è riportato un flip-flop che può commutare solo se il segnale di clock (CP) è a livello alto
(esistono anche flip-flop abilitati da segnali a livello basso). Per CP allo "0", le uscite delle porte AND
si portano entrambi all'"0" e il FF rimane nello stato di memoria.
Figura 4.8 – Flip –Flop abilitato da un segnale di temporizzazione.
Nel circuito di figura 4.9 è stata introdotta una modifica che elimina la possibilità di dare in ingresso la
configurazione “proibita” S = R = "1". Questo circuito, detto flip-flop latch, quando CP è a livello alto
copia sull'uscita il dato posto in ingresso (D); quando il clock torna a livello basso il circuito si trova
nello stato di memoria, eventuali variazioni dell'ingresso in questa condizione non hanno effetto.
Figura 4.9 – Latch D
Questo tipo di flip-flop viene impiegato come elemento di memoria. Un insieme di questi circuiti
integrati nello stesso package forma quello che viene chiamato registro e può essere usato per
memorizzare una parola composta da diversi bit (ad es. 8,16).
Il latch appena descritto può commutare per tutto il tempo in cui il segnale CP si mantiene a livello
alto.
Nei sistemi regolati da un segnale di temporizzazione si vuole che le commutazioni avvengano solo in
corrispondenza di una transizione (fronte) specifica del clock e non durante tutto il tempo in cui il clock
rimane ad un dato livello. I flip-flop con queste caratteristiche vengono detti flip-flop cadenzati e
vengono rappresentati con il simbolo di figura 4.10.
In seguito è riportata la tavola di verità di un flip-flop cadenzato attivo sul fronte di salita del clock
D
CP
Q
Q
0
0
1
1
↑
↑
1
0
X
0,1
Memoria
Memoria
Figura 4.10 – Simbolo del flip-flop cadenzato
e nella figura 4.11 è riportato a titolo di esempio un diagramma di temporizzazione.
Fig. 4.11 – Esempio di funzionamento di un latch
Un flip flop cadenzato puo’ memorizzare l’informazione di un bit, per memorizzare un’intera parola
costituita da n bit occorrono n flip flop. Un insieme di n flip flop per memorizzare parole di n bit viene
detto Registro di n bit .
Memorie a semiconduttore
Le memorie a semiconduttori sono dispositivi elettronici in grado di conservare nel tempo dati sotto
forma binaria. Rispetto alle memorie di massa su supporto magnetico le memorie a semiconduttore
presentano tempi di accesso alle informazioni immagazzinate estremamente più brevi
Una prima classificazione delle memorie può essere effettuata sulla base del tipo di accesso, cioè della
modalità con la quale si può raggiungere la posizione di memoria desiderata. Si può distinguere tra:
• MEMORIE AD ACCESSO IMPLICITO: L'indirizzo del dato è determinato da quello del dato
precedente. E' il tipo di accesso proprio delle memorie seriali, per le quali si può accedere ad una
determinata cella di memoria solo se sono già state visitate in sequenza le celle precedenti (es.
nastro magnetico). Quelle a semiconduttore sono costituite da una serie di flip-flop collegati in
cascata (registri a scorrimento).
• MEMORIE ASSOCIATIVE: la memoria è organizzata in funzione del proprio contenuto, la
realizzazione è molto complessa, e la loro descrizione esula dagli scopi del presente corso.
• MEMORIE AD ACCESSO CASUALE: si accede direttamente alla cella di memoria di interesse
specificandone l'indirizzo.
Un ulteriore modo di classificazione delle memorie è rappresentato dalla modalità d'impiego; in tal
senso le memorie a semiconduttore vengono suddivise in due categorie:
• Memorie a sola lettura (ROM Read Only Memory,): in esse il contenuto può essere scritto una
sola volta e nel seguito viene soltanto letto. Si dividono in varie famiglie:
A. ROM vere e proprie: i dati sono immagazzinati dal costruttore una volta per tutte all'atto della
fabbricazione del componente e non possono più essere modificati.
B. PROM (Programmable ROM): la memorizzazione dei dati viene effettuata dall’acquirente una
volta per sempre, dopo l'acquisto del chip, facendo ricorso ad apposite apparecchiature.
C. EPROM (Erasable PROM), sono memorie PROM che possono essere cancellate e riprogrammate
un numero limitato di volte in quanto ad ogni cancellazione si ha un piccolo danneggiamento. La
cancellazione avviene esponendo il chip a raggi ultravioletti. Stanno scomparendo sostituite dalle
EEPROM :
D. EEPROM (Electrical EPROM), memorie in cui la fase di scrittura e di cancellazione avviene per
via elettrica. Non possono però essere considerate memorie di lettura e scrittura in quanto la
cancellazione e la scrittura richiedono tempi lunghi e tensioni apposite. Tra queste sono
identificabili le memorie FLASH, in cui la cancellazione può avvenire non bit per bit ma solo a
blocchi di dimensioni prefissate (sono le memorie usate nelle macchine fotografiche, penne USB
ecc.). Possono essere cancellate e riscritte da 10000 volte a 1 milione di volte.
• Memorie di lettura e scrittura RW (Read-Write), in genere ad accesso casuale, e quindi RWRAM (Random Access Memory). Possono essere divise in:
A. RAM volatili, perdono il proprio contenuto in assenza di alimentazione
B. RAM permanenti, in assenza di tensione di alimentazione sono in grado di conservare le
informazioni per un tempo sufficientemente lungo.
Le RW RAM possono essere anche suddivise in:
A. SRAM (RAM Statiche), in cui l'elemento di memoria è costituito da un flip-flop, sono in grado di
mantenere inalterato il contenuto di ogni cella di memoria per un tempo indefinito (a patto di non
togliere l'alimentazione, sono comunque memorie volatili);
B. DRAM (RAM Dinamiche), l'elemento di memoria è una capacità, il dato immagazzinato in una
cella si deteriora nel tempo in quanto la capacità si scarica, e si rendono necessarie delle periodiche
operazioni di ripristino del contenuto delle singole celle (operazione di rinfresco "refresh").
Organizzazione di una memoria RAM
Le memorie ad accesso casuale sono caratterizzate dall'avere una organizzazione a matrice, che può
essere schematizzata come in figura 5.1. Le celle di memoria contenenti il singolo bit sono individuate
nella struttura dalla riga e dalla colonna di appartenenza. Normalmente le informazioni sono
organizzate a parole di 4 bit, 8 bit (1 byte), 16 bit, ecc. Le linee orizzontali (word line) permettono di
individuare la parola, mentre quelle verticali (bit line) individuano il bit all'interno della parola.
Specificando l'indirizzo della parola che si intende leggere (o scrivere), il circuito di decodifica attiva la
relativa word line e i bit della parola selezionata (e solo loro) diventano accessibili (in parallelo) sui
piedini del chip mediante le bit lines.
Figura 5.1 – Organizzazione di una memoria RAM
Nella figura 5.2 è riportato lo schema della piedinatura tipica di una SRAM, dove sono indicate:
• linee di INDIRIZZO, permettono di selezionare una determinata parola della memoria, il numero
N
•
di queste linee dipende dall'estensione della memoria, con N linee si possono indirizzare 2
locazioni.
linee di DATI, vengono utilizzare per leggere e scrivere i dati in memoria.
•
linea R / W (Read/Write), è un ingresso per selezionare la lettura o la scrittura dei dati. Il simbolo
•
•
R / W indica che quando la linea è a livello alto i dati vengono letti, in caso contrario vengono
scritti.
linea CS (Chip Select), è un comando utilizzato per selezionare il singolo chip all'interno del
banco di memoria. Tipicamente un banco di memoria è formato da diversi circuiti integrati:
volendo accedere ad una locazione di memoria occorre specificare, oltre all'indirizzo, il chip sul
quale
si trova la locazione desiderata.
OutputEnable
linea,
consente di leggere o scrivere dati solo quando è attiva, quando è
disabilitata le linee dati sono sconnesse dal resto del circuito
(questa linea è necessaria perché il passaggio da un indirizzo di memoria ad un altro non avviene
istantaneamente e contemporaneamente su tutti i piedini).
Figura 5.2 – Piedinatura essenziale di una SRAM
Oltre a questa piedinatura essenziale occorrono anche altri piedini per i segnali di controllo e per il
segnale di clock.
5.2 PLD (Programmable Logic Devices)
Possono essere considerati dei particolari casi di memorie PROM. Si tratta di dispositivi integrati che
possono essere programmati per realizzare funzioni logiche anche molto complesse. Dai teoremi
dell'algebra binaria si ricava che qualunque funzione logica combinatoria tra più variabili è esprimibile
in forma canonica come somma di prodotti o come prodotto di somme
Es.:
f1 ( A, B, C , D ) = ABCD + ABC D
Ciascuno dei prodotti è implementabile con un circuito di tipo AND, la somma è realizzata con un
circuito OR. Entrambi questi circuiti possono essere realizzati con dei diodi, anche se nelle
realizzazioni moderne sono realizzati con transistori MOS. Per semplicità si descrive la realizzazione a
diodi.
Circuito AND
Nel circuito di figura 5.14 (a) è sufficiente che la tensione di uno degli ingressi sia bassa ("0" logico)
perché il relativo diodo conduca e si abbia in uscita una tensione bassa. Per avere un livello alto ("1"
logico) in uscita è necessario che tutti gli ingressi siano a tensione alta (tutti i diodi sono in
interdizione): la reistenza in questo caso ha la funzione di “tirare su” all’”1” logico la tensione d’uscita
quando i diodi sono interdetti, per questo si chiama “Pull up resistor”.
Circuito OR
Il circuito in figura 5.14 (b) è duale rispetto al caso precedente, si può notare l'uso di una resistenza di
pull-down per mantenere l'uscita a livello basso. La tensione in uscita è alta se uno degli ingressi è a
livello alto (il diodo corrispondente viene portato in conduzione), se invece tutti gli ingressi sono a
tensione bassa l'uscita rimane a livello basso (tutti i diodi sono interdetti).
I PLD sono dispositivi creati per realizzare qualunque funzione logica a partire da un circuito integrato
Figura 5.14 – Circuito AND (a) e circuito OR (b)
programmabile, realizzato con tecnologia PROM, in cui si scrivono le funzioni logiche da realizzare.
Lo
schema
in
figura
5.15
relativo
all'implementazione
su
PLD
della
f 1 ( A, B, C , D ) = ABCD + ABC D aiuta a comprendere il principio di funzionamento di questi
dispositivi le cui dimensioni variano a seconda del numero di ingressi trattati.
Ogni variabile d'ingresso viene, nel chip, resa disponibile sia negata sia non negata. A ciascuna
variabile corrisponde una colonna: su ogni riga orizzontale è possibile realizzare l'AND delle variabili a
disposizione, creando uno dei prodotti che devono essere sommati. Infatti ogni riga ha una resistenza di
pull-up verso Val, e i diodi realizzano la funzione AND connettendo ogni variabile che deve
partecipare alla costruzione del prodotto con la riga su cui questo è realizzato. nella figura MEM14 la
prima riga costruisce il termine ABCD e la seconda ABC D .
La sezione OR del PLD permette di sommare i prodotti così costruiti per ottenere le funzioni richieste
d'uscita. Questo si ottiene mediante delle linee verticali, con resistenze di pull-down, che tramite diodi
posti verso i termini da sommare costituiscono i circuiti OR.
Questi dispositivi hanno nomi diversi a seconda del livello di programmabilità e del costruttore che li
ha brevettati:
• PLA (Programmable Logic Array): sono programmabili sia i livelli AND sia quelli OR
• PAL: è programmabile solo uno dei livelli (AND o OR)
Con questa tecnica non si realizzano solo funzioni combinatorie, ma utilizzando anche dei flip-flop si
possono realizzare circuiti sequenziali anche complessi.
Fig. 5.16 realizzazione di funzioni sequenziali tramite PLD
In figura 5.16 si descrive come si possa realizzare una funzione sequenziale mettendo in ogni istante
(scandito dal clock) in ingresso al PLD non solo i segnali IN attuali, ma anche segnali d’uscita ottenuti
nell’istante precedente e memorizzati da un opportuno registro. All’arrivo di un nuovo impulso di clock
si presentano per l’elaborazione combinatoria da parte del PLD sia i segnali d’ingresso sia le uscite
ottenute in precedenza, e si realizza cosi’ una funzione sequenziale.