P9 - REGISTRI, CONTATORI, MEMORIE A SEMICONDUTTORE P9

Transcript

P9 - REGISTRI, CONTATORI, MEMORIE A SEMICONDUTTORE P9
P9 - REGISTRI, CONTATORI, MEMORIE A
SEMICONDUTTORE
P9.1 – Nei registri a scorrimento l’operazione di lettura provoca la
perdita dei dati memorizzati. Proporre una soluzione circuitale che
consenta di evitare questo inconveniente.
Soluzione
Per non perdere i dati memorizzati, si può dotare lo shift register di un
collegamento di retroazione, che permette di reinserire i dati in ingresso
man mano che vengono letti. Ciò può essere ottenuto mediante un
multiplexer a due ingressi (DIN , DOUT ), comandato da un selettore di
lettura/scrittura R / W (Read/ Write ), secondo la seguente logica: se R / W = 1
è attivo l’ingresso DOUT e i dati letti sull’uscita (un bit ad ogni colpo di
clock) vengono reinseriti all’ingresso del registro (operazione di lettura
“non distruttiva”); se invece R / W = 0 vengono introdotti nuovi dati
dall’ingresso attivo DIN e quelli letti in uscita si perdono (operazione di
scrittura).
Lo schema a blocchi del registro risulta pertanto del tipo seguente, con
riferimento ad un registro SISO (Serial Input – Serial Output) per parole di
lunghezza n=4 bit (ovvero di un nibble).
MUX
I0
D
Q
D
Q
D
Q
D
Q
Dout
U
Din
I1
S
CK
CK
CK
CK
R/W
CK
Lo schema logico del blocco relativo al MUX è il seguente (cfr.
problema P7.5).
Dout
U
Din
R/W
A seconda del livello logico di R / W viene attivata una o l’altra porta
AND, consentendo il passaggio sull’uscita Y di DOUT o di DIN.
Il registro SISO considerato viene detto anche registro FIFO (First In –
First Out), in quanto il primo dato caricato è anche il primo dato che viene
reso disponibile all’uscita, dopo n colpi di clock.
E’ possibile realizzare anche registri di tipo LIFO (Last In – First Out),
inserendo all’ingresso dei flip-flop un multiplexer a due ingressi,
controllato da un segnale LEFT / RIGHT che consente di invertire il verso di
scorrimento dei dati (registri bidirezionali).
____________________________________________________________
P9.2 – Realizzare un sommatore seriale capace di addizionare, mediante
un full-adder a 1 bit, due numeri binari di 4 bit ciascuno, memorizzati su
due registri PISO, uno dei quali con possibilità di caricamento anche
seriale.
Soluzione
Il circuito richiesto può essere realizzato secondo lo schema a blocchi
seguente.
A3 A 2 A1 A0
Registro
R1
In
Out
CK
Ai
Bi
B3 B2 B1 B0
Registro
R2
In
CK
Out
Ai
Bi
Ci
∑
Si
Co
Si
D
Q
CK
CK
L’operazione di addizione dei due numeri binari si svolge sommando a
due a due, in successivi impulsi di clock, i bit degli addendi di uguale peso,
aggiungendo l’eventuale riporto proveniente dalla somma precedente.
A ciò provvede il full-adder, che riceve i bit da sommare dalle uscite dei
due registri R1 e R2 (sui quali sono stati caricati in parallelo i due addendi)
e del flip-flop D (sul quale è memorizzato il riporto della somma
precedente).
Al primo colpo di clock il full-adder riceve la coppia di bit A0, B0 di
minor peso, e presenta il risultato della somma all’ingresso seriale del
registro R1, mentre il flip-flop (preventivamente resettato) memorizza lo
stato del riporto.
L’operazione prosegue interessando coppie di bit di peso crescente, e si
completa al quarto colpo di clock con la coppia di bit A3, B3 di maggior
peso.
Alla fine, il risultato della somma dei due numeri binari si trova
memorizzato sul registro R1 (4 bit, a partire dal meno significativo) e sul
flip-flop D (1 bit, il più significativo).
___________________________________________________________
P9.3 – Si vuole realizzare un contatore asincrono modulo 4 utilizzando
l’integrato Dual JK Flip-flop 7473, avente il pin out appresso indicato.
Tracciare lo schema del contatore e indicare poi come si può far sì che il
contatore funzioni all’indietro (contatore decrescente, o down counter).
PIN No
SIMBOLO
FUNZIONE
14; 7
3; 10
12; 9
13; 8
1; 5
2; 6
4
11
J0; J1
K0; K1
Q0; Q1
Ingressi J,K
Uscite Q, Q
Q 0 Q1
CK0; CK1
CLR0; CLR1
GND
Vcc
Ingressi clock
Ingressi clear
Massa (0 V)
Tensione di alimentazione
Soluzione
a)
Contatore crescente
Avendosi m=22=4, i due flip-flop contenuti nell’integrato assegnato
sono in numero sufficiente per realizzare un contatore modulo 4. Lo
schema dei collegamenti, con la numerazione dei pin, è il seguente.
1
5V
11
14
CK
1
3
J0
Q0
K0
7
5
CK
Q0
CLR0
4
CLR
12
GND
13
10
J1
Q1
9
CK
K1
Q1
CLR1
8
6
2
Q0
(LSB)
Q1
(MSB)
Gli ingressi J, K dei due FF-JK-NET sono collegati insieme e tenuti a
livello “1” per mantenere i flip-flop in modalità TOGGLE.
Il primo flip-flop ha come ingresso di clock il treno di impulsi da
conteggiare. Essendo in modalità toggle, la sua uscita commuta ad ogni
periodo di clock, Tck , in corrispondenza del fronte di salita dei singoli
impulsi. Il segnale di uscita Q0 ha periodo 2Tck e costituisce il segnale di
clock per il secondo flip-flop, il quale pertanto commuta ad ogni periodo di
Q0. Il segnale di uscita Q1 del secondo flip-flop ha quindi periodo 4Tck .
Il diagramma temporale ideale risulta pertanto del tipo seguente.
CK
1
0
t
Q0
1
0
t
Q1
1
0
t
Dal diagramma temporale si desume la seguente tabella di
funzionamento del contatore in esame.
CK
↓
(Q1 Q0 )
n
0 0
(Q1 Q0)
n+1
0 1
↓
0
1
1
0
↓
1
0
1
1
↓
1
1
0
0
Si vede chiaramente che il contatore fornisce in uscita il numero degli
impulsi di clock ricevuti, espresso in binario : (01)2 = 1 al primo colpo di
clock; (10)2 = 2 al secondo colpo; (11)2 = 3 al terzo colpo. Il quarto colpo
di clock azzera le uscite, predisponendo il contatore per un nuovo
conteggio.
b) Contatore decrescente
Per ottenere il conteggio all’indietro è sufficiente comandare l’ingresso
CK del secondo flip-flop con l’uscita complementata Q 0 (anziché con
l’uscita diretta Q 0 ) del primo flip-flop. Lo schema del circuito, il
diagramma temporale e la tabella di funzionamento si modificano nel
modo appresso indicato.
1
5V
11
14
1
CK
3
J0
Q0
7
5
CK
K0
Q0
CLR0
4
GND
CLR
12
13
10
J1
9
Q1
CK
K1
8
Q1
CLR1
6
2
Q0
(LSB)
Q1
(MSB)
CK
1
0
t
Q0
1
0
t
Q0
1
0
t
Q1
1
0
t
CK
(Q1 Q0 )
n
(Q1 Q0)
n+1
1 1
↓
0
0
↓
1
1
1
0
↓
1
0
0
1
↓
0
1
0
0
La sequenza del conteggio risulta: (11)2 = 3; (10)2 = 2; (01)2 = 1;
(00)2 = 0.
________________________________________________________
P9.4 – Tracciare lo schema di un contatore asincrono modulo 4, dotato di
ingresso di controllo U / D per il funzionamento crescente/decrescente.
Soluzione
Per ottenere il contatore up/down richiesto, è sufficiente inserire, tra i
due flip-flop in cascata di un normale contatore asincrono, un multiplexer a
due ingressi che consente di inviare all’ingresso CK1 del secondo flip-flop
l’uscita 0 del primo flip-flop (up-counter) o l’uscita negata Q 0 (downcounter). Il simbolo funzionale, la tabella di funzionamento e lo schema
logico di tale multiplexer sono i seguenti.
MUX
Q0
U/D CK1
I0
U
Q0
I1
CK1
0
Q0
1
Q0
S
U/D
Q0
U/D
CK1
Q0
Utilizzando due flip-flop di tipo T (derivati da due FF-JK-NET
collegando insieme gli ingressi JK), lo schema del contatore richiesto
risulta del tipo seguente.
1
CK
T0
Q0
T1
Q1
CK
Q0
CK
Q1
CLR0
CLR1
U/D
MR
Q0
(LSB)
Q1
(MSB)
Dopo aver azzerato il contatore agendo sul comando MR (master reset),
si può predisporre il contatore per il conteggio crescente o decrescente,
ponendo rispettivamente U / D = 0 o U / D = 1 .
_______________________________________________________
P9.5 – Tracciare il diagramma temporale ideale di un contatore
asincrono modulo 8, realizzato impiegando flip-flop di tipo JK-PET.
Soluzione
Il contatore proposto comprende 3 flip-flop (m=23 = 8), collegati in
cascata secondo lo schema seguente.
1
J
CK
J
Q
J
Q
Q
CK
CK
CK
K
K
K
CLR
CLR
CLR
MR
Q0
Q1
Q2
Gli ingressi J, K dei flip-flop sono collegati insieme e posti a livello
alto, per realizzare la funzione toggle (commutazione ad ogni colpo di
clock).
Essendo di tipo PET, i flip.flop hanno gli ingressi di clock sensibili ai
fonti di salita del segnale applicato. Il diagramma temporale delle uscite
del contatore risulta pertanto del tipo seguente.
CK
1
0
t
Q0
1
0
t
Q1
1
0
t
Q2
1
0
t
Dal diagramma temporale, valutando le uscite dopo ogni colpo di clock,
si desume la seguante tabella di funzionamento del contatore.
CK
↑
↑
↑
↑
↑
↑
↑
↑
(Q2 Q1 Q0)n
0 0 0
1 1 1
1 1 0
1 0 1
1 0 0
0 1 1
0 1 0
0 0 1
(Q2 Q1 Q0)n+1
1 1 1
1 1 0
1 0 1
1 0 0
0 1 1
0 1 0
0 0 1
0 0 0
Come si vede, si tratta di un contatore decrescente (down counter), con
le uscite che assumono il valore (111)2 = 7 dopo il primo fronte positivo di
clock e conservano tale valore fino al secondo fronte, in corrispondenza del
quale il valore delle uscite scende a (110)2 = 6, e così via, fino a giungere
all’ottavo colpo di clock che provoca l’azzeramento del contatore.
__________________________________________________________
P9.6 – Disegnare lo schema di un contatore asincrono modulo 10.
Soluzione
Il contatore richiesto, denominato contatore decadico (decade
counter), avendo un modulo non esprimibile come potenza di 2, viene
ricavato da un contatore a 4 flip-flop modulo 16 (m = 24 = 16), eliminando
dal conteggio le 6 combinazioni eccedenti. Precisamente, alle cifre
decimali da 0 a 9 vengono fatti corrispondere i valori binari formati dalle
uscite dei 4 flip-flop (codifica BCD, Binary Coded Decimal), mentre le 6
combinazioni rimanenti vengono soppresse con un comando automatico di
azzeramento al decimo impulso di clock.
Ciò può essere ottenuto collegando alle uscite del contatore un circuito
comprendente una porta NAND in modo tale che, quando agli ingressi del
circuito si presenta la combinazione (1010)2 = 10, la sua uscita aziona il
comando MR di azzeramento del contatore, attivo a livello basso. Più
semplicemente, nel caso in esame, si può impiegare una porta a due soli
ingressi, sfruttando il fatto che, nel conteggio crescente a 4 bit, il 2° e il 4°
bit (a partire dal bit meno significativo) assumono per la prima volta
contemporaneamente il valore 1 proprio in corrispondenza della
combinazione 1010 suddetta.
Binario 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010
Decim.
0
1
2
3
4
5
6
7
8
9
10
Utilizzando 4 flip-flop di tipo T (toggle flip-flop), lo schema del circuito
risulta del tipo seguente.
1
T
CK
T
Q
CK
T
Q
CK
CLR
T
Q
CK
CK
CLR
CLR
Q
CLR
MR
Q0
Q1
Q2
Q3
I contatori decadici sono usati spesso come divisori di frequenza per 10.
Collegando due o più contatori decadici in cascata, si possono ottenere
divisori per 100, per 1000 e così via.
________________________________________________________
P9.7 – Si vuole realizzare un contatore asincrono modulo 5 ed utilizzarlo
in un contatore decadico.
Soluzione
Si parte da un contatore modulo 8, realizzato con 3 flip-flop in cascata.
Supponendo un controllo di clear MR attivo a livello alto, si aggiunge una
porta AND con gli ingressi sulle uscite del primo e del terzo flip-flop e con
uscita sul segnale di azzeramento, in modo da chiudere il conteggio in
corrispondenza del valore (101)2 = 5 .
Se al contatore modulo 5 così ottenuto si antepone in cascata un
contatore modulo 2, realizzato con un semplice flip-flop, si ottiene il
contatore decadico richiesto (modulo 2 × 5 = 10 ).
Lo schema del circuito risulta del tipo seguente.
1
T
CK
T
Q
CK
T
Q
CK
CLR
T
Q
CK
CK
CLR
CLR
Q
CLR
MR
Q0
(LSB)
Q1
Q2
Q3
(MSB)
Le uscite Q0 e Q3 forniscono rispettivamente la cifra meno significativa
del conteggio (LSB. Least Significant Bit) e la più significativa (MSB,
Most Significant Bit).
La tabella di funzionamento del contatore richiesto risulta la seguente.
CK
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
(Q3 Q2 Q1 Q0)n
0 0 0 0
0 0 0 1
0 0 1 0
0 0 1 1
0 1 0 0
0 1 0 1
0 1 1 0
0 1 1 1
1 0 0 0
1 0 0 1
(Q3 Q2 Q1 Q0)n+1 Decim.
1
0 0 0 1
2
0 0 1 0
3
0 0 1 1
4
0 1 0 0
5
0 1 0 1
6
0 1 1 0
7
0 1 1 1
8
1 0 0 0
9
1 0 0 1
0
0 0 0 0
__________________________________________________________
P9.8 – Tracciare lo schema di un contatore sincrono modulo 8.
Soluzione
I contatori sincroni possono essere realizzati utilizzando dei flip-flop di
tipo T, come per i contatori asincroni, tenendo presente, però, che
l’ingresso di clock di ciascun FF è impegnato dal segnale di sincronismo
che viene applicato contemporaneamente a tutti i flip-flop.
Nel nostro caso sono necessari 3 flip-flop, essendo m=23=8. Per
individuare un possibile schema dei collegamenti, va tenuta presente la
tabella di funzionamento del contatore considerato.
CK (Q0 Q1 Q2)n
0 0 0
↓
1 0 0
↓
0 1 0
↓
1 1 0
↓
0 0 1
↓
1 0 1
↓
0 1 1
↓
1 1 1
↓
(Q0 Q1 Q2)n+1
1 0 0
0 1 0
1 1 0
0 0 1
1 0 1
0 1 1
1 1 1
0 0 0
Si nota che l’uscita Q0 deve commutare ad ogni colpo di clock e
pertanto il suo ingresso T deve essere tenuto a livello 1 (modalità toggle),
come avviene per i contatori asincroni.
Si nota altresì che l’uscita Q1 commuta ogni volta che sull’uscita Q0 è
presente il valore 1. Possiamo allora collegare l’ingresso T del secondo
flip-flop all’uscita Q0, in modo che il secondo flip-flop sia attivo solo
quando l’uscita Q0 è a livello logico alto.
Il terzo flip-flop, infine, commuta soltanto quando nello stato
precedente entrambe le uscite Q0 e Q1 hanno valore 1; per soddisfare
questa condizione si possono quindi collegare le uscite Q0 e Q1
all’ingresso T del terzo flip-flop attraverso una porta AND, come indicato
nello schema seguente.
1
T
T
Q
CK
T
Q
CK
CLR
Q
CK
CLR
CLR
CK
MR
Q0 (LSB)
Q1
Q2 (MSB)
Possiamo generalizzare il risultato ottenuto, affermando che nei
contatori sincroni l’ingresso di clock è comune a tutti i flip-flop presenti
nel circuito, e che l’ingresso T del primo flip-flop è fissato a livello 1,
come nei contatori asincroni, mentre l’ingresso T dell’ennesimo flip-flop è
ottenuto dall’AND delle uscite degli n-1 flip-flop precedenti, come
sintetizzato nella seguente tabella.
FF
1
2
3
4
…
Ingresso T
1
Q0
Q0٠Q1
Q0٠Q1٠Q2
……………...
___________________________________________________________-
P9.9 – Tracciare lo schema
di un contatore sincrono modulo 16,
realizzato utilizzando dei FF-JK-NET. Indicare poi come si modifica lo
schema se, per il pilotaggio dei flip-flop in cascata, si vogliono impiegare
soltanto porte AND a 2 ingressi. Calcolare in entrambi i casi la massima
frequenza di clock ammissibile, assumendo per i flip-flop e per le porte
AND un tempo di propagazione rispettivamente pari a:
tFF = 14 ns; tAND = 6 ns
Soluzione
Il contatore può essere realizzato con 4 flip-flop JK ( m= 24 = 16 ), il
primo dei quali con gli ingressi J, K mantenuti a livello alto, come nei
contatori asincroni. I successivi stadi sono pilotati rispettivamente:
dall’uscita Q0, dall’AND delle uscite Q0 e Q1, e dall’AND delle uscite Q0,
Q1e Q2, come indicato nel seguente schema.
1
J
J
Q
J
Q
J
Q
Q
CK
CK
CK
CK
K
K
K
K
CLR
CLR
CLR
CLR
CK
MR
Q0 (LSB)
Q1
Q2
Q3 (MSB)
I contatori sincroni di questo tipo sono detti a comando di propagazione
parallelo, perché hanno un tempo di propagazione complessivo dato
semplicemente dalla somma dei tempi di propagazione di un FF e di una
porta AND. La massima frequenza di clock risulta pertanto (ritenendo
trascurabile il tempo di predisposizione, o setup time, dei FF, cioè
l’intervallo di tempo in cui i livelli in ingresso devono rimanere stabili
prima che intervenga il fronte attivo di clock):
f CK (max) =
t FF
1
1
=
= 50 MHz
+ t AND (14 + 6) ⋅ 10 −9
Questo valore è indipendente dal numero di stadi del contatore, tuttavia,
per valori elevati del modulo m del contatore, risulta elevato anche il
numero degli ingressi delle porte logiche di pilotaggio, specie di quella
relativa all’ultimo stadio. Si può evitare questo inconveniente adottando il
comando di propagazione serie, il quale prevede l’impiego di porte logiche
con due soli ingressi, come indicato nello schema seguente.
1
J
J
Q
J
Q
J
Q
Q
CK
CK
CK
CK
K
K
K
K
CLR
CLR
CLR
CLR
CK
MR
Q0 (LSB)
Q1
Q2
Q3 (MSB)
La logica di funzionamento è la stessa dello schema precedente, ma è
diverso il tempo di propagazione. Precisamente, per un contatore a n stadi,
il tempo di propagazione complessivo risulta:
ovvero, nel nostro caso:
t CK = (n − 2)t FF + t AND
t CK [ns ] = (4 − 2) × 14 + 6 = 34 ns
e quindi la massima frequenza di clock ammissibile risulta (trascurando il
setup time dei flip-flop):
f CK (max) =
1
= 29,4 MHz
34 ⋅ 10 −9
sensibilmente minore di quella relativa al contatore con comando di
propagazione parallelo.
________________________________________________________
P9.10 – Disegnare lo schema di un contatore ad anello Johnson (o
twisted ring counter) modulo 8 e tracciare il relativo diagramma degli stati
di uscita, a partire dallo stato di RESET del contatore. Descrivere poi la
situazione che si crea se il contatore assume il seguente stato delle uscite:
Q0 Q1 Q2 Q3 = 0 0 1 0
Soluzione
Lo schema corrisponde a quello di un registro a scorrimento modulo 16
(4 flip-flop D collegati in cascata, tutti sincronizzati dal medesimo segnale
di clock), con l’uscita negata dell’ultimo stadio collegata all’ingresso del
primo.
D
D
Q
CK
D
Q
CK
D
Q
CK
Q
CK Q
CK
Q0
Q1
Q
Q3
Il diagramma degli stati di uscita, a partire dallo stato di RESET, è il
seguente:
0000 → 1000 → 1100 → 1110
↑
↓
0001 ← 0011 ← 0111 ← 1111
Se si verifica lo stato di uscita Q0 Q1 Q2 Q3 = 0 0 1 0, estraneo al ciclo
del RESET, il contatore entra in un nuovo ciclo, formato dagli 8 stati non
compresi nel ciclo del RESET:
0010 → 1001 → 0100 → 1010
↑
↓
0101 ← 1011 ← 0110 ← 1101
Con una operazione di reset, si può riportare il contatore al ciclo
originario.
________________________________________________________
P9.11 – In figura è riportato il simbolo sintetico di un modulo di memoria
da 16 × 4 bit, cioè di una memoria avente capacità C=64 bit organizzata in
L=16 locazioni con parole di n=4 bit.
4
A0÷A3
R/W
DQ0÷DQ3
4
CS
OE
Utilizzando integrati di tale tipo, si realizzi un circuito che permetta di
ottenere una memoria 16 × 8 , cioè una memoria di capacità doppia avente
lo stesso numero di locazioni, ma con parole di 1 byte (8 bit) anziché di un
nibble (4 bit).
Soluzione
La memoria assegnata ha il bus d’ingresso di tipo bidirezionale, cioè
utilizzato per i dati sia di ingresso (scrittura) che di uscita (lettura).
Oltre alle linee di indirizzo A0 ÷ A3 e all’ingresso di controllo
lettura/scrittura R / W (Read/Write), sono presenti gli ingressi di controllo
CS (Chip Select) e OE (Out Enable): il primo è di abilitazione generale del
dispositivo; il secondo permette di disabilitare le uscite anche quando
R / W = 1 (dispositivo predisposto per un’operazione di lettura).
Il raddoppio della capacità di memoria attraverso una espansione della
parola da 4 a 8 bit può essere ottenuto mediante due integrati del tipo
considerato, semplicemente collegando in parallelo le linee di indirizzo e
quelle di controllo, e affiancando le linee dati in modo da costituire un bus
della dimensione richiesta.
La figura seguente mostra lo schema dei collegamenti della memoria
16 × 8 così ottenuta.
4
A0÷A3
R/W
DQ0÷DQ3
4
DQ0÷DQ3
CS
OE
8
A0÷A3
4
4
DQ0÷DQ7
A0÷A3
R/W
R/W
CS
CS
OE
OE
DQ0÷DQ3
4
DQ4÷DQ7
___________________________________________________________
P9.12 – Una memoria EPROM deve essere programmata per eseguire la
moltiplicazione tra due numeri binari a 2 bit. Determinare le
caratteristiche di base (capacità e organizzazione) della EPROM e
indicare le modalità di impiego.
Soluzione
I 4 bit relativi ai due numeri binari da moltiplicare vengono impiegati
come bit di indirizzo della EPROM, la quale deve avere pertanto almeno 4
linee di indirizzo e quindi L = 24 = 16 locazioni di memoria. La lunghezza
di parola deve essere almeno n = 4 bit, perché tale è la massima lunghezza
del numero binario risultante dalla moltiplicazione di due numeri a 2 bit (si
ha infatti: (11) 2 × (11) 2 = (1001) 2 ).
Occorre quindi una EPROM con organizzazione 16 × 4 , avente pertanto
una capacità complessiva C = 64 bit.
I dati da memorizzare nelle 16 celle sono quelli indicati nella seguente
tabella, compilata in base alle regole della moltiplicazione binaria.
Uscite
Ingressi
N1
N2
A3 A2 A1 A0
0 0 0 0
0 0 0 1
0 0 1 0
0 0 1 1
0 1 0 0
0 1 0 1
0 1 1 0
0 1 1 1
1 0 0 0
1 0 0 1
1 0 1 0
1 0 1 1
1 1 0 0
1 1 0 1
1 1 1 0
1 1 1 1
Q3 Q2 Q1 Q0
0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 1
0 0 1 0
0 0 1 1
0 0 0 0
0 0 1 0
0 1 0 0
0 1 1 0
0 0 0 0
0 0 1 1
0 1 1 0
1 0 0 1
Una volta programmata la EPROM, è sufficiente mantenerla sempre
nella condizione di lettura, attivando il controllo di Chip Select ( CS = 0 ) e
ponendo l’ingresso Read/Write a livello alto ( R / W = 1 ), per realizzare il
circuito moltiplicatore richiesto, come indicato sinteticamente nello
schema seguente.
Numeri da
moltiplicare
4
A0÷A3
Vcc
R/W
DQ0÷DQ3
4
Prodotto
CS
OE
GND
_______________________________________________________
P9.13 – Tracciare lo schema di una memoria FIFO da 32 bit, con
organizzazione 8× 24 , dotata di comando di ricircolazione per la lettura
non distruttiva dei dati memorizzati.
Soluzione
In generale, per realizzare una memoria FIFO (First IN – First Out) del
tipo L × n (cioè con L locazioni di memoria e con lunghezza di parola di n
bit), si collegano in parallelo n memorie FIFO ad L celle di memoria da 1
bit. Nel nostro caso, quindi, dobbiamo collegare in parallelo 4 memorie
FIFO aventi ciascuna 8 celle da 1 bit.
Ciascuna memoria FIFO 8 × 1 si ottiene utilizzando un registro a
scorrimento del tipo SISO a 8 bit (costituito da 8 flip-flop D o JK collegati
in cascata), associando ad esso un multiplexer a due ingressi per la
ricircolazione dei dati, secondo il seguente schema.
MUX
FF1
I0
D
U
Din
I1
S
FF2
Q
CK
CLR
D
FF7
Q
...
CK
CLR
D
Q
Dout
CK
CLR
R/W
CK
MR
...
...
Se R / W = 1 , i dati in uscita vengono reinseriti serialmente all’ingresso
dello shift register; se invece R / W = 0 , vengono introdotti serialmente
nuovi dati dall’ingresso DIN e quelli in uscita si perdono.
Utilizzando 4 di questi moduli di memoria FIFO 8 × 1 , si ottiene il
seguente schema della memoria FIFO 8× 4 richiesta.
Din 0
Din
Dout
Dout
R/W
CK
MR
Din 1
Din
Dout
Dout
R/W
CK
MR
Din 2
Din
Dout
Dout
R/W
CK
MR
Din 3
Din
R/W
R/W
CK
CK
Dout
Dout
MR
MR
___________________________________________________________