FIFO:
1) Le uscite sono stabili solo durante il periodo in cui il RE
(Read Enable) è alto e altrove sono in alta impedenza (come per le
RAM)?
In un FIFO asincrono (come quelli che noi utilizziamo nromalmente;
esistono anche FIFO sincroni, ma hanno comportamento piu' complicato) le
uscite sono stabili e valide solo durante RE attivo. Quando RE e'
inattivo, le uscite sono sicuramente non valide; potrebbero anche essere
in alta impedenza, ma la cosa avrebbe senso solo se potessimo connettere
in parallelo tra loro le uscite di due o piu' FIFO, il che, se ci pensa un
attimo, non ha molto significato.
2) Quando avviene precisamente la commutazione delle uscite? Al
fronte di discesa del RE? Quindi anche in corrispondenza di tale fronte
il QE (Queue Empty) potrebbe andare ad 1?
3) Per ciò che riguarda il segnale di WE, quando il QF (Queue Full)
può salire ad 1? Al fronte di discesa del WE?
Possiamo assumere, per non complicare eccessivamente e inutilmente la
descrizione del comportamento del FIFO, che il suo stato interno (e dunque
in particolare anche QE e QF) cambi nell'istante in cui RE o WE passano
dal livello attivo a quello inattivo.
4) Commetto un errore se decido di far durare il RE (o WE) un
ciclo di clock? oppure dev'essere maggiore?
No, a meno che non sia un clock assurdamente veloce. Tanto per avere
un'idea, supponga che la durata di RE o di WE sia dello stesso ordine di
grandezza della durata di WE per una RAM statica. Essenzialmente si tratta
di un impulso la cui durata deve essere in grado di far cambiare di stato
uno o piu' flip-flop interni al FIFO, dunque pari al tempo di propagazione
attraverso tre-cinque livelli di porte logiche.
BUFFER THREE STATE E MUX:
1) Posso sempre sostituire ad un MUX ad N ingressi, un insieme di
N BTS convoglianti in un BUS il cui valore verrà ad esempio catturato
come un ingresso di un circuito combinatorio (stando attenti a lasciare
almeno un ingresso NON in three state)?
In linea di principio si'. Nella pratica poi sopravvengono altre
considerazioni relative alla lunghezza dei conduttori, al percorso che
essi devono seguire, e cosi' via -- ma sono tutte considerazioni di tipo
elettrico, non logico.
2) Avendo bisogno per generare i singoli segnali di abilitazione
di un decoder alle uscite di un contatore, conviene effettivamente?
Anche qui, sono considerazioni di tipo elettrico, non logico. La vera
distinzione tra il multiplexer classico e quello relaizzato con tri-state
e' che il primo e' "concentrato", mentre il secondo e'
"distribuito". Se dobbiamo multiplexare ad esempio 8 gruppi da
32 bit ciascuno, nel primo caso far arrivare ad una singola area
localizzata del circuito 8x32 conduttori, nel secondo caso possiamo invece
semplicemente far girare per i vari circuiti un solo gruppo di 32
conduttori, piu' altri 8 per le singole abilitazioni. Diminuisce cosi'
quantita' di rumore generato (alle alte velocita', un conduttore si
comporta come un'antenna) e la possibilita' di mutue interferenze tra
segnali diversi.
LAVORO INUTILE
1) E' importante per i progetti (e in generale) cercare, ad
esempio in una fase di inattività della periferica, di non far lavorare
circuiti combinatori oppure commutare registri?
Dal punto di vista logico, quasi mai. Dal punto di vista elettrico, si'
sempre e senz'altro: circuiti che non commutano non consumano energia (e
questo vale massimamente per la logica CMOS, dove in regime statico l'uno
o l'altro dei due transistori dello stadio di uscita e' interdetto, ma in
commutazione c'e' sempre un attimo di tempo in cui entrambi si trovano a
condurre, con conseguente passaggio di corrente dall'alimentazione a
massa), e di conseguenza circuiti che commutano inutilmente consumano
inutilmente energia. |