Upload
matty
View
74
Download
0
Embed Size (px)
DESCRIPTION
Reti Sincrone. I problemi con le reti asincrone . Il comportamento dipende dai ritardi sugli anelli di retroazione con possibilità di malfunzionamenti (disallineamento dei ritardi sugli anelli di retroazione) - PowerPoint PPT Presentation
Citation preview
Reti Sincrone
1
2
I problemi con le reti asincrone
bull Il comportamento dipende dai ritardi sugli anelli di retroazione con possibilitagrave di malfunzionamenti (disallineamento dei ritardi sugli anelli di retroazione)
bull Il comportamento dipende dalle alee degli ingressi (che comunque NON possono essere temporalmente allineati in assoluto) e impedisce il riconoscimento di sequenze ripetute degli ingressi (ad esempio riconoscere la sequenza 00-00-11-01 che risulta essere indistinguibile da 00-11-01)
SOLUZIONE
bull Ottenere artificialmente lrsquoallineamento degli ingressi e degli anelli di retroazione
3
Segnale di sincronismo
bull Se la durata dellrsquoimpulso t egrave inferiore al tempo di reazione della rete combinatoria (ovvero il minimo ritardo della rete combinatoria) le nuove funzioni di eccitazione sr0k calcolate della rete combinatoria non raggiungono lrsquoAND di blocco prima che le uscite degli AND stessi siano portate a zero rendendo stabili le uscite dei FF SR (il FF SR con gli ingressi entrambi a zero NON cambia stato Solo al successivo impulso t le nuove funzioni di eccitazione (e quindi le nuove variabili di stato) sono avviate alla rete combinatoria senza che la retroazione faccia in tempo ad agire Allineamento delle retroazioni
bull Si noti che cosigrave facendo anche lrsquoeffetto degli ingressi viene ldquoallineatordquo
bull Le uscite sono esattamente ldquoallineaterdquo se la rete egrave di tipo Moore (dipendenti solo dalle variabili di stato)
Rete combinatoria
X0nZ0m
sr0kY0k
t
FF SR0k
Segnale di sincronismo
4
Segnale di sincronismo
bull Il segnale di sincronismo viene sempre indicato con il nome di clock
bull Normalmente il segnale di clock egrave un segnale ripetitivo e cadenzato (questrsquoultima caratteristica pressocheacute sempre ma non necessariamente rispettata)
bull Un FF SR dotato di segnale di clock viene chiamato SR sincrono (che perograve NON egrave mai usato nella realtagrave)
bull Quali problemi vi sono con un segnale di clock come quello riportato in figura Lrsquoimpulso dovrebbe essere strettissimo dal momento che una rete combinatoria puograve consistere anche di un solo filo nel qual caso il ritardo da combattere sarebbe solo quello legato alla propagazione del segnale elettrico sui fili Di fatto irrealizzabile
Clock
T
5
I FF sincronibull Esistono molti FF di tipo sincrono ma oggi si usa UNICAMENTE il FF D il cui
comportamento egrave stato studiato come rete asincrona ma che qui viene utilizzato come FF sincrono (nella pratica nella sua versione 74xx74)
D Q
QCK D
bull Il FF D si chiama cosigrave percheacute D sta per Delay (ritardo) Infatti lrsquouscita Q segue lrsquoingresso D con un periodo T di ritardo (se il segnale di ingresso D egrave sincrono ndash ovvero generato contemporaneo al clock - nel rispetto di setup e hold - ad esempio da una rete controllata da altri FF D) oppure al primo fronte positivo del clock
bull Il triangolo sul clock (CK) indica che egrave edge triggered ovvero che scatta sul fronte positivo del clock
D Q
QCK DPR
CL
I segnali CL e PR agiscono in modo asincrono ovvero immediatamente senza attendere il clock
6
Reti sequenziali sincrone
bull La sintesi si effettua come nel caso della rete asincrona con retroazione diretta ma ingressi che rimangono costanti sono ingressi considerati dalla rete come diversi (in quanto presi in considerazione in istanti diversi e quindi in possibile presenza di stati diversi)
bull Ciograve che conta in questo caso egrave il fronte positivo del clock la distanza fra fronti positivi successivi (nel rispetto di setup e hold ndash v reti asincrone) NON ha importanza
bull Ovviamente il periodo (la frequenza) del clock deve essere superiore (inferiore) al massimo ritardo insito nella rete combinatoria La rete combinatoria deve essersi stabilizzata a seguito di un fronte del clock prima che il successivo fronte si presenti
Rete combinatoria
X0nZ0m
y0kY0k
Clock
D0kQ0k
FFD0k
CK D0kQ0k CK
Si veda lo schema delle reti asincrone con la retroazione tramite FF RS in cui S=R
Reti Sequenziali Sincrone (RSS)
k (k)FFD
k
k FFD sullrsquoanello di retroazione Tutti con lo stesso clock di periodo T
S S S SCK
S
U
S
I
t t+T t+2Tt-TNel caso specifico Moore o Mealy Lo stato cambia anche se non cambia lrsquoingresso
Lrsquouscita cambia anche se non cambia lrsquoingresso
CK
7
Il FFD come elemento fondamentale delle RSSSe allrsquoingresso CK viene inviato un segnale periodico (clock) il FFD ritarda (D = Delay) il segnale di uscita Q rispetto al segnale di ingresso D di un tempo pari al periodo di clock T se il cambiamento del segnale D egrave contemporaneo a quelli clock (nel rispetto di setup e hold)
Qn+1 = Dn
D
CK
QT T T T
FFDD
CK
Q
Q
D
CK
Q
Q
8
NB il concetto di contemporaneitagrave potrebbe apparire in contrasto con la necessitagrave di rispettare i tempi di setup e hold Di fatto gli ingressi di una rete sincrona sono nella larga maggioranza provenienti da altre reti che hanno lo stesso clock e quindi sono generati con i ritardi delle reti soggette al clock rispettando quindi di fatto i tempi previsti Di fatto le variazioni degli ingressi sono sempre un porsquo posteriori alla variazione del clock Si veda in seguito il comportamento dei registri a traslazione
NB essendo qui il tempo discretizzato si usa n e
n+1 al posto di T e T+t
Alcune considerazioni sulle RSS
bull Lo stato della rete cambia solo in corrispondenza dei fronti di salita del clock che si susseguono con periodo T
bull La rete risponde ogni T se si desidera massimizzare la velocitagrave di risposta della rArruscita egrave necessario adottare il modello di Mealy
bull La sequenza degli stati della rete egrave svincolata dai ritardi della rete combinatoria (purcheacute la distanza fra i fronti positivi del segnale clock sia superiore al massimo ritardo della rete combinatoria) Quindi nessun problema di corse critiche
bull Allrsquointerno di uno stesso progetto (ad esempio un processore) sono tipicamente presenti piugrave RSS e non necessariamente per tutte le RSS il clock egrave lo stesso eo coincide con il clock del processore
bull Le RSS sono piugrave facili da progettare delle RSA
9
Clock gating e glitch sul clockNelle reti sincrone egrave necessario evitare variazioni spurie (glitches) del segnale di clock che possono provocare commutazioni indesiderate dei FFD (che sono sensibili ai fronti)
Ad esempio per via dei ritardi tra gli n segnali I[n-10] eo le alee introdotte dalla rete combinatoria di decodifica a causa del ldquoclock gatingldquo puograve verificarsi quanto segue
CK
P
CK_G
Glitch sul clock rarr possibile commutazione spuria del FFD
X
CK
Q
QFFD
D
CK
Q
QCK_GRete di Decodifica
I[n-10]P
t
NO
10
Naturalmente tutto dipende dalla larghezza dellrsquoimpulso spurio se molto stretto il FF potrebbe non sentirlo Quindi il clock gating non egrave proibito ma egrave un rischio da evitare in caso di incertezza
11
Per transizioni che debbono o meno verificarsi in funzione del valore della rete di decodifica bisogna condizionare il segnale D come in figura Se la rete di decodifica genera il valore 1 lrsquouscita Q assume al clock il valore di X altrimenti lrsquouscita Q copia seacute stessa e rimane invariata
Clock gating e glitch sul clock
X
CK
Q
QFFD
D
CK
Q
Q
I[n-10] P
t
01SEL
01SEL
Rete di Decodifica
Il clock gating oltre a generare potenziali glitch introduceldquoclock-skewrdquo (disallineamento) Ad esempio consideriamo due RSS soggette al FF1 e al FF2
Clock gating e clock-skew
CK
CK_GtAND tAND
I clock delle due reti sono sfasati di un tempo pari al ritardo introdotto dallrsquoAND (in generale dalla eventuale RC) interposto Tale fenomeno (ldquoclock-skewrdquo) egrave potenzialmente dannoso in quanto il FF2 potrebbe fare campionare alla propria RC in presenza dello stesso fronte di clock i nuovi valori prodotti dalla RC alimentata dal FF1
NB Il ldquoclock-skewrdquo non egrave causato solo dal clock gating ma anche (ad esempio) da percorsi elettrici di lunghezza diversa
I1
CK
B
BCK_GP
I2
CK
A
A
tAND
FFD-1D
CK
Q
QFFD-2
D
CK
Q
Q
12
13
Sincronizzazione degli ingressibull Finora si egrave dato implicitamente per scontato che gli ingressi di una rete sincrona commutino
in modo sincrono con il clock
bull Ciograve egrave verificato se gli ingressi provengono da una rete sincrona di tipo Moore nella quale le uscite sono funzione solo dello stato che commuta solo al fronte positivo del clock
Rete combinatoria
X0n
Z0m
y0k
Y0k
Clock
D0kQ0k
FFD0k
CK D0kQ0k CK
Rete combinatoria
bull Nella realtagrave le cose stanno diversamente Si pensi al caso di pulsanti esterni che costituiscano lrsquo ingresso della rete Il cambiamento puograve avvenire in un istante qualsiasi
bull Nella rete di figura (Moore) le uscite sono comunque certamente sincronizzate con il clock e se gli ingressi X0n cambiano in un momento qualsiasi non sincronizzato il cambiamento viene percepito dai FF di retroazione solo al fronte positivo del clock e quindi il comportamento delle uscite della rete egrave il medesimo che si avrebbe se gli ingressi fossero sincronizzati
14
Sincronizzazione degli ingressi
bull La cosa cambia perograve se la rete egrave di tipo Mealy
Rete combinatoria
X0nZ0m
y0kY0k
Clock
D0kQ0k
FFD0k
CK D0kQ0k CK
bull In questo caso un cambiamento asincrono degli ingressi provoca in generale un cambiamento asincrono delle uscite
15
Esempio la cassaforte (dotata di una doppia tastiera - due ingressi) si apre solo se gli ingressi hanno assunto NEL TEMPO le configurazioni
00-01-01-10 Ogni violazione della sequenza riporta il sistema nello stato iniziale NB Essendo gli ingressi campionati la sequenza di ingresso 01-01 egrave possibile e significativa
hellip Cassaforte hellip sincrona hellip
NB si puograve supporre che gli ingressi cambino allo stesso istante delle variabili di stato ma la cosa non egrave necessaria Se la rete egrave di tipo Moore anche se gli ingressi cambiano a metagrave di un periodo di clock il comportamento dal punto di vista degli stati e quindi delle uscite egrave assolutamente lo stesso (ogni variazione egrave rilevata solo alla fine del periodo)
E11101
0111
11
F0
01
01
G0
0000
11 00
11
11
10
1001
10
00
10 0110
01
01
00
Per ogni stato tutte le combinazioni di ingresso
00
10
10
11
C0A0 B0 D0
Gli stati NON sono stabili per gli ingressi che li hanno provocati
00
B
00 01 11 10
F A GA
B C A GB
B D A GCB F A ED
B F A GE
B F AA- GF
B F A GG
0
0
0
0
1
0
0
X1X2
A0 B0 C0 E10011
01
10
0111
11
11
D0 10
F0
01
01
G0
0000
00
00
11
11
10
1001
1010 0110
01
11
00
Cassaforte sincrona
16
01
NB in questo esempio non vi sono condizioni di indifferenza Anzicheacute di stati compatibili si parla qui di stati equivalenti Ove poi due stati per gli stessi ingressi abbiano uscite identiche e portino agli stessi stati si parla di stati indistinguibili Naturalmente la descrizione a parole puograve evidenziare che alcune combinazioni di ingresso per alcuni stati non si presentano In questo caso si ritorna al concetto di compatibilitagrave
00
17
Cassaforte sincrona
Classi di equivalenza [AFG] =gt a[B] =gt b[C] =gt g[D] =gt d[E] =gt e
B
00 01 11 10
F A GA
B C A GB
B D A GCB F A ED
B F A GE
B F AA- GF
B F A GG
0
0
0
0
1
0
0
X1X2
B
C
D
E
F
G
A B C D E F
CF
FD CD
CFGE
CFGE
DFGE
--- CF DF GE
--- C F DF GE --
b
00 01 11 10
a a aa
b g a ab
b d a ag
b a a ed
b a a ae
X1X2
0
0
0
0
1 NB nel caso di tabelle completamente specificate le classi (massime) di equivalenza non hanno mai stati in comune Vanno usate tutte quindi Non esiste problema di chiusura
Ovviamente 5 stati 4 facenti parte della sequenza e uno esterno
18
b
00 01 11 10
a a aa
b g a ab
b d a ag
b a a ed
b a a ae
X1X2
0
0
0
0
1
Cassaforte sincrona
001
00 01 11 10
000 000 000000
001 011 000 000001
001 010 000 000011
001 000 000 100010
001 000 000 000100
X1X2
-- -- -- --101
-- -- -- --111
-- -- -- --110
0
0
0
0
1
--
--
--
Y1Y2 Y3
a =gt 000b =gt 001g =gt 011d =gt 010e =gt 100
D1= X1X2Y2Y3
D2=X1X2Y3
D3=X1X2+X1Y2Y3 Z =Y1
Sintetizzando con FFD la sintesi degli ingressi Di si ottiene sintetizzando le funzioni Yi (Yn+1=Dn)
Nessun problema di corse codifica libera (possibilmente ottima)
19
Sintesi
Direttorio cassaforte sincrona
20
00 01 01 10
Sintesi ndash simulazione funzionale
NB Gli ingressi cambiano in modo NON sincrono con il clock ma lrsquo uscita egrave sincrona essendo la rete di tipo Moore
21
Sintesi ndash simulazione timing
Si notino i ritardi delle uscite dei FF e dei gates da esse dipendenti rispetto al fronte positivo del clock (ad esempio d) se la frequenza del clock fosse eccessiva il sistema NON funzionerebbe piugrave correttamente
d
22
E con Mealy
B
00 01 11 10
F A GA
B C A GB
B D A GCB F A ED
B F A GE
B F AA- GF
B F A GG
0
0
0
0
1
0
0
X1X2
B0
00 01 11 10
F0 A0 G0A
B0 C0 A0 G0B
B0 D0 A0 G0CB0 F0 A0 E1D
B1 F1 A1 G1E
B0 F0 A0A-G0F
B0 F0 A0 G0G
X1X2
Potrei mettere una indifferenza sullrsquouscita Si si possono mettere indifferenze sulle uscite che cambiano Anticipazione o ritardo del cambiamento
Sintetizzare e simulare con Altera
23
bull Allrsquoesame orale egrave necessario portare un esercizio di reti sincrone e uno di reti asincrone NON ldquomutuatordquo da altri hellip
bull I due esercizi debbono essere portati su una chiavetta (o dispositivo equivalente) debbono contenere una spiegazione e anche la progettazionesimulazione con Altera
bull Il candidato deve dimostrare di sapere usare il sistema Altera e spiegare i progetti portati
bull Gli esercizi di reti sincrone hanno spesso il diagramma degli stati ma solo per verificahellip
Monoimpulsore A
D1 Q1
Q1CKFFD
D2 Q2
Q2CKFFD Z1
D
Clock
Clock
D
Z
Q1
Q2
Qui lrsquoingresso asincrono D egrave sincronizzato dai FF Uscita Z sincrona
Generare un impulso di uscita di un periodo di clock per ingresso 1 Un ulteriore impulso viene generato solo se lrsquoingresso torna a 1 dopo essere stato a 0 Lrsquouscita deve essere sincronizzata con il clock
24
25
D1 Q1
Q1CKFFD
D2 Q2
Q2CKFFD Z
D
Clock
Monoimpulsore A
1
0
1
1
0
A0 B1
C0
0
A
A
A
-
B
C
C
-
DQ2
Q1
B
0 1
C
-
Z0
0
1
-
A 00
--
00
00
10
--
11
11
DQ2
Q1
01
0 1
11
10
Z0
0
-
1
0000
10
11
01
B
C
-
A
Q1=D Q2= DQ1 Z=Q1Q2
00
00
01
01
10
10
11
11
DQ2
Q1
01
0 1
11
10
Z0
0
0
1
00
MAhellip
Q1=D Q2= Q1 Z=Q1Q2
Moore necessariamente
26
D1 Q1
Q1CKFFD
D2 Q2
Q2CKFFD Z2
D
Clock
Monoimpulsore B
Clock
D
Z2
Q1
Q2
Lrsquoingresso asincrono D agisce direttamente sullrsquouscita Z che quindi risulta asincrona
Qui la rete egrave di tipo Mealy e quindi con ingresso asincrono egrave possibile che vi sia uscita asincrona
27
D Q
QCKFFD Z
D
Clock
Monoimpulsore C
Clock
D
Z
Q
Anche qui lrsquoingresso asincrono D agisce direttamente sullrsquouscita Z che quindi risulta asincronaSi noti che se lrsquoingresso oscilla una volta che il FF ha campionato un 1 e fino a quando non campiona uno 0 lrsquouscita oscilla
Qui la rete egrave di tipo Mealy e quindi con ingresso asincrono egrave possibile che vi sia uscita asincrona
28
Considerazioni sui monoimpulsori A B e C
Il diagramma degli stati corrispondente al funzionamento reale dei due monoimpulsori B e C NON puograve essere tracciato percheacute di fatto le due reti (di tipo Mealy) NON sono sincrone Infatti il diagramma di circuiti sincroni prevede implicitamente un comportamento sincrono anche degli ingressi fatto non verificato nei casi B e C
La cosa non vale per il monoimpulsore A in quanto pur essendo lrsquoingresso asincrono lrsquouscita (rete di tipo Moore) dipende solo dagli stati In altre parole il comportamento della rete rende intrinsecamente sincroni ingressi fisicamente asincroni
Il diagramma degli stati che riflette il comportamento delle due reti B e C puograve essere tracciato solo partendo da una analisi asincrona ldquoaprendordquo quindi i FF D inseriti Ovviamente egrave possibile progettare le due reti senza lrsquouso dei FF D partendo da un diagramma degli stati asincrono ldquotradizionalerdquo
A scopo di esercizio si suggerisce la sintesi e la simulazione con Altera dei tre monoimpulsori come reti asincrone Si tratta di circuiti on due ingressi Ck e D
29
Monoimpulsori A-B-C
30
31
Contatori
A B C D Z
Circuiti senza ingresso (a parte il clock) nella versione piugrave semplice
D0 Q0
Q0CKFFD
MUX
1
0D1 Q1
Q1CKFFD
(Il clock egrave spesso sottinteso nei circuiti sincroni)
U0 U1
Esempio contatore binario x 4 con decodifica del 3
000 010 100 111
OUT
Q1 cambia stato quando Q0 egrave a 1 e passa a 0
CK
u1
u0
OUT (0) (1) (2) (0) (1) (2)(3) (3)
Contatore x 4 con decodifica del 3
33
Contatori binari in base non potenza di 2
A B C D E
000 001 010 011 100Contatore
binario per 5
D0 Q0
Q0CKFFD
MUX
1
0 1D1 Q1
Q1CKFFD
MUX
1
0D Q2
Q2CKFFD
Questo conta x8 ma per contare x5 arrivati a 4 bisogna ritornare a 0
34
D0 Q0
Q0CKFFD D1 Q1
Q1CKFFD
MUX
1
0 D2 Q2
Q2CKFFD
MUX
1
0
ABC
ldquo4rdquo
Contatore x 5
Decoder
La decodifica del 4 porta a zero lrsquouscita del decodificatore e quindi a 0 tutte le uscite degli AND rosa e al successivo fronte positivo del clock i tre FF campionano uno ldquo0rdquo
Per esercizio sintetizzare un contatore x 100 partendo dalla sintesi di un contatore decimale ovvero di un contatore x10 (da sintetizzare) Quanti FF per un contatore decimale I contatori decimali si trovano integrati in Altera
ldquo3rdquo
35
Contatori con ingressi di controllo
Ex Contatore integrato x 16 con Load e Enable
bull Il contatore conta per 16 (0-15) se il segnale EN egrave a 1 Allorchegrave il segnale LD va a 1 il dato presente sugli ingressi D egrave inserito nei 4 FF (lrsquoingresso puograve essere sincrono o asincrono) Nel caso precedente il decodificatore del ldquo3rdquo (uscita vera va portato) allrsquoingresso LD con tutti i Di a zero
bull In generale il contatore fornisce anche unrsquouscita ldquocarryrdquo che va a 1 quando il contatore raggiunge il valore FF Questa uscita puograve essere connessa allrsquoenable di un contatore a valle per ottenere un contatore per 256 cosigrave via (Progettarlo come esercizio)
EN
Q0 Q1 Q2 Q3CKLD
D0 D1 D2 D3
EN
Q0 Q1 Q2 Q3CK
CYLD
D0 D1 D2 D3
bull Esistono contatori UPDOWN nei quali un ingresso (UD) seleziona se il conteggio deve avvenire avanti o indietro Nel caso sia selezionata la modalitagrave ldquoindietrordquo il carry si attiva quando si raggiunge il valore ldquotutti zerirdquo
bull Esiste una molteplicitagrave di contatori ciascuno con le proprie specifiche peculiaritagrave con o senza RESET (che normalmente agisce in modo asincrono) UD con o senza LD etc etc
NB qualunque circuito sincrono (con sequenza non binaria) riconducibile al diagramma degli stati di un contatore egrave sempre un contatore
101 010 000 111 110 Contatore x 5 non binario
36
74163 contatore reale x 16 con Load Reset e Enable (T e P)I segnali di controllo sono sincroni ovvero agiscono sul fronte positivo del clock (rising edge)
74138 decoder 38 con uscite negate se G2A e G2B entrambi a zero e G1 a 1 Altrimenti tutte uscite alte
Direttorio Counter Glitch
Contatore binario x 8 e glitches
37
Glitch
Simulazione timingNB la presenza e la durata del glitch dipende dalle caratteristiche elettriche dei dispositivi
dalla loro tecnologia etc Nel caso dei dispositivi Altera dipende dal tipo di dispositivo sul quale egrave realizzato il circuito Analogamente la sensibilitagrave di eventuali ingressi di clock collegati allrsquouscita con il glitch dipende dalle caratteristiche del dispositivo Se ad esempio nel dispositivo Altera utilizzato si collega allrsquouscita Y6 il clock di un FFD non si ha commutazione del FF ma questo non egrave vero in assoluto
38
Cosa succede al contatore X5 progettato precedentemente se allrsquoaccensione non disponendo di un segnale di RESET i FF si portano in uno stato non facente parte del cicloNB La condizione allrsquoaccensione egrave del tutto casuale e dipende unicamente dalle condizioni elettriche
di realizzazione Ersquo impredicibileSupponiamo che i FF si portino al valore 110 (il numero 6 fuori dal ciclo) Analizziamo il comportamento
D0 Q0Q0CK
FFD D1 Q1Q1CK
FFD
MUX
1
0 D2 Q2Q2CK
FFD
MUX
1
0
ABC
ldquo4rdquo
000 001 010 011 100 110 111
In questo caso ci si riporta nella situazione di conteggio regolare (verificare con la tabella degli stati ) ma il comportamento in generale dipende dalla realizzazione e in altre realizzazione i due stati potrebbero essere separati dal ciclo principale che quindi non verrebbe mai raggiunto Ecco la funzione del RESET
39
Solo come esempio (da non utilizzare ) a scopo didattico vediamo la tabella delle transizioni di un contatore per 6 UpDown con comando di Reset I segnali di ingresso cambiano in modo asincrono ma hanno effetto in modo sincrono
Per compensare allrsquoaccensione
Sintetizzare e simulareCome dovrebbe essere modificato lo schema in Altera per permettere di
ldquopresettarerdquo in modo asincrono il contatore a un particolare valore di ingresso
00 01 11 10UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
111
110
000 101
000
101
y3 y2 y100 01 11 10
UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
000 000111
000 000 000 000110
000 101
000
000 000
101
y3 y2 y1
40
D0Q0
CKFFD
Clocky2
DEC
y3
y2
y1
ldquo1rdquo
ldquo2rdquo
ldquo3rdquo
ldquo4rdquo
1
0
UPDown
Sintesi di y2 in modo ldquodirettordquo
1
0
00 01 11 10UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
000 000111
000 000 000 000110
000 101
000
000 000
101
y3 y2 y1
41
Cassaforte hellipDisponendo di un contatore per 8 (ma anche per 16 etc) con reset sincrono e sempre abilitato al conteggio come potrei realizzare il circuito di apertura della cassaforte (sequenza X1X2 00-01-01-10) con modello Moore
Cx8RES
Q0 Q1 Q2 CK
RES= (ldquo0rdquoX1X2 + ldquo1rdquo X1X2 + ldquo2rdquo X1X2 + ldquo3rdquo X1 X2)Z = ldquo4rdquo (ldquo0rdquordquo1rdquordquo2rdquordquo3rdquordquo4rdquo sono le decodifiche binarie delle tre uscite del contatore)
Il contatore si resetta ogni volta che non si presenta lrsquoingresso giusto relativo al particolare stato Ilcontatore quindi si resetta e rimane resettato se non nelle condizioni espresse dalla funzione RESIl contatore arrivato a 4 (Z=1) si resetta comunque al successivo fronte del clock
Le reti sincrone si progettano sempre come combinazione di blocchi disponibili e logica ldquorandomrdquo
ABC
ldquo0rdquoldquo1rdquoldquo2rdquoldquo3rdquoldquo4rdquo
RLAND-OR
X1X2
RESZ
Cx8RES
Q0 Q1 Q2 CK
42
Contatori
EN
Q0 Q1 Q2 Q3CKCY
RESET
bull Attenzione Consideriamo il contatore di figura (questa volta con RESET asincrono) e supponiamo di utilizzarlo per contare per 5 (NB per il Reset si usa il ldquo5rdquo in questo casohellip glitch)
ABCD
ldquo5rdquo
ldquo1rdquo Percheacute questo schema egrave sbagliato
bull Percheacute presenta una corsa critica Nel momento in cui anche uno solo dei FF si resetta (e non tutti nello stesso istante) viene a mancare la configurazione ldquo4rdquo sul decoder e quindi alcuni FF potrebbero non fare in tempo a resettarsi E allora
EN
Q0 Q1 Q2 Q3CKCY
RESET
ABCD
ldquo5rdquo
ldquo1rdquo
RS
Y ldquo0rdquo
bull Cosigrave facendo il ldquo4rdquo attiva il SET e il FF NON si resetta fino a quando non egrave stato raggiunto la ldquo0rdquo NB lo schema ldquosbagliatordquo si puograve usare solo se si egrave certi della rapiditagrave di reset dei FF del contatore
bull Verificare con Altera
Sintesi cassaforte con moduli
Altera Cassaforte sincrona con moduli
Rete di controllo
Contatore con Reset asincrono e Load sincrono
43
NB In questo progetto la sintesi egrave stata condotta in modo ldquodirettordquo ovvero senza passare per la sintesi formale e utilizzando componenti disponibili e helliphellip materia grigia La sintesi dei circuiti sincroni si fa sempre e unicamente cosigrave
44
Simulazione funzionale (no timing)
NB I segnali di ingresso sono campionati SOLO sul fronte positivo del clock anche se si presentano asincroni Il segnale di uscita si attiva al clock successivo al riconoscimento della sequenza La posizione di ldquoriposordquo del contatore egrave il valore 4 I segnali Yi sono le decodifiche dei segnali di di ingresso X1 e X2
00 01 01 10
45
Simulazione timing
46
NB Si egrave scelto di utilizzare SOLO gli ingressi SINCRONI del contatore per semplicitagrave Il contatore rimane al valore 100 fino a quando non si presenta allrsquoingresso il valore 00 Se la sequenza egrave esatta il contatore continua a contare in avanti fino alla generazione dellrsquouscita (valore 11 del contatore) altrimenti si riporta al valore 100 ovvero Qc=1) Il segnale GN (Gate Not) egrave quello che abilita il conteggio Il sistema riamane stabile a 000 per una sequenza lunga a piacere di X1=0 e X2=0 e si sposta quando dopo 00 si ha 01 Come si evince dalla simulazione se la sequenza non egrave corretta o egrave interrotta il contatore si riporta sempre a 100
00 01 11 10
001 000 000
X1
000000 010 100 100001
000 100 100 011010
100 100 100 100011
000 100 100 100100
000 100 100 100101
000 100 100 100110
000 100 100 100111
0
0
0
1
0
0
0
0
X2
000
NB la tabella delle transizioni derivata della rete realizzata NON ha ovviamente condizioni di indifferenza
47
Progettare un contatore packed BCD updown a 8 bit (due digit)
48
Generazione di forme drsquoondabull Ersquo possibile generare forme drsquoonda periodiche mediante circuiti sincroni di periodo
sottomultiplo intero del clock
Esempio 1Divisore di frequenza per 2
D0k Q0k
CK D Q
CK Clock
Q
Esempio 2 generare una forma drsquoonda periodica con periodo 5T (ove T sia il periodo del clock) in cui in un semiperiodo 3T lrsquouscita sia alta e nellrsquoaltro semiperiodo 2T lrsquouscita sia bassa
Q0 Q1 Q2 CK
Cx5
C
B
A
01234
DecoderDemux
Clock
ZZ T
3T2T
3T
NB una rete logica egrave in grado di effettuare delle divisioni di frequenza e mai delle moltiplicazioni di frequenza (che si possono ottenere solo con circuiti analogici non lineari)
49
Di che circuito si tratta
D0k Q0k
CK D0 Q0
CKQ0
D0k Q0k
CK D1 Q1
CK
D0k Q0k
CK D2 Q2
CKClock
Clock
Q0
Q1
Q2
Ersquo un contatore binario ma non sincrono Infatti i vari FF NON utilizzano lo stesso clock e questo porta a un piccolo disallineamento sulle uscite Non egrave sintetizzabile come una rete sincrona e una sintesi formale sarebbe possibile solo trattando il circuito come asincrono ovvero ldquoaprendordquo i FF Sarebbe possibile trasformarlo in un contatore x6 mantenendo la stessa impostazione
Sintetizzare e simulare con Altera
NB il segnale di clock non egrave in comune
50
7493
51
Altera Contatore asincrono
Contatore asincrono
52
Simulazione timing
53
Come puograve essere utilizzato un FFD per catturare un impulso piugrave breve di un periodo
D2 Q2
Q2CKFFD Z
Clock
D1 Q1
Q1CKFFD
D0 Q00
Q0CKFFD
ldquo1rdquo CL
Lrsquoimpulso breve viene catturato dal FF 0 (purcheacute di larghezza sufficiente per la tecnologia del FF) - che quindi agisce come integratore ndash la cui uscita alimenta il monoimpulsore di tipo A Lrsquoattivazione del FF 1 resetta il FF 0 (supponendo che il segnale di CL sia ldquopositiverdquotruerdquo)
Ci puograve essere un problema se il CL agisce in modo asincrono
NB questo circuito e quello del lucido precedente evidenziano il fatto che nella realtagrave nessuna rete egrave solo sincrona ma bensigrave egrave pressocheacute sempre necessario utilizzare reti di natura diversa anche percheacute vi egrave sempre una interazione fra reti con clock diversi eo con segnali provenienti dal mondo esterno NON sincronizzati con il clock
Monoimpulsore di tipo A ldquorivistordquo
54
bull Uno shift register a sinistra (a destra) egrave un registro composto da FFD che ad ogni clock trasferisce il valore del FF a destra (a sinistra) di ciascun FF nel FF stesso Nel FF piugrave a destra (sinistra) viene immesso uno ldquo0rdquo Questi tipi di registri shift si chiamano ldquologicirdquo
Shift register (registri a traslazione o scorrimento)
D0kQ0k
CK DnQn
CK
D0kQ0k
CK Dn-1Qn-1
CK
D0kQ0k
CK Dn-2Qn-2
CK
D0kQ0k
CK D0Q0
CK
ldquo0rdquo
Shift register a sinistra
bull Anche per i registri a traslazione esistono diverse versioni con ingresso parallelo e uscita seriale con ingresso seriale e uscita parallela con reset con load etc etc
bull Si noti che uno shift register egrave anche un contatore Si immagini per esempio che dopo un reset siano inseriti degli uni a partire da destra Lo shift register si riempie progressivamente di uni e quindi la posizione in cui egrave arrivato lrsquouno indica il valore del conteggio in base a un codice ldquouno su nrdquo (un codice decodificato)
bull Spesso uno stesso registro puograve traslare a destra o a sinistra in funzione di una segnale di controllo Ovviamente questo si ottiene premettendo a ogni ingresso Di un MUX a due vie che preleva in funzione del segnale di controllo Qigrave+1 o Qigrave-1 Con questa configurazione lo shift register diventa anche un contatore avantiindietro
Registro a scorrimento (shift-register) a 3 bit
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
IN
OUT2OUT1OUT0
CK
CK
IN
A_RESET
OUT1
OUT2
OUT0
Registro a scorrimento (shift-register) a 3 bit
57
Esempio 74164 (serial In parallel OUT)
bull In questo registro a traslazione ad ogni fronte positivo del clock i dati sono traslati a destra (Q0 -gt Q1 Q1-gtQ2 etc) Il registro egrave dotato in un Master Reset (vero negato) e il dato inserito nel FF Q0 egrave dato dallrsquoAND dei due ingressi Dsa e Dsb
bull Si noti che lrsquooperazione di shift corrisponde aritmeticamente alle operazioni di divisione e moltiplicazione per 2 Si supponga che in Q0 vi sia il bit meno significativo e in Q7 il meno significativo
0 1 1 0 1 0 1 0
010101102 = 10810
Shift left =gt x2
Shift right =gt 2
101011002 = 21610
001010112 = 5910
NB nel dispositivo i bit sono posti in ordine invertito e quindi un shift left del numero corrisponde a uno shift right sul dispositivo
58
bull Esistono anche i registri a traslazione ldquoaritmeticirdquo In questi shift register a destra anzicheacute fare entrare nel FF piugrave a sinistra lo ldquo0rdquo viene immesso sempre ripetutamente il suo valore logico
Shift aritmetico
Q7 Q6 Q5 Q4 Q3 Q2 Q1 Q0
D7 D6 D5 D4 D3 D2 D1 D0
I LDCK Esempio
11001010SRA
11100101 interpretato in complemento a 2
001101102=5410
C2 C2
000110112=2710
bull Lo shift aritmetico a destra effettua una divisione per 2 mantenendo il segno
59
Rotazione
Nei computer egrave sovente necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register
D0kQ0k
CK DnQn
CK
D0kQ0k
CK Dn-1Qn-1
CK
D0kQ0k
CK Dn-2Qn-2
CK
D0kQ0k
CK D0Q0
CK
Molto spesso nei computer egrave necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register con direzione programmabile In questo caso su D0 ad esempio puograve essere avviato o Q1 o Qn
60
Contatori con shift register ndash Contatore retroazionato EX-OR
Q2Q0
Shift right 3 bitDQ1
110 111 011 101 010 001
Diagramma degli stati disgiunto
Uno shift register con n FF retroazionato con un EX-OR (scelta degli ingressi variabile) egrave un contatore NON binario che conta per 2n-1 (purcheacute presettato a un valore diverso da tutti zeri)
000
100
61
Contatore di Johnson (riempimento e svuotamento)
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
000-gt100-gt110-gt111-gt011-gt001-gt000-gtStati isolati 101-gt010-gt101gt1
Poicheacute configurazioni adiacenti del codice Johnson differiscono di un solo bit il contatore puograve essere utilizzato per generare forme drsquoonda prive di alee
62
Contatore ad anello con un solo 1 (ovvero che genera direttamente il codice 1su n)
FFDD Q
QR
RESET
FFDD Q
QR
RESET
FFDD Q
QPR
RESET
OUT3OUT1OUT0
CK
FFDD Q
QR
RESET
OUT2
0001-gt1000-gt0100-gt0010-gt0010n FF per contare per n (mentre con i contatori binari il numero dei FF egrave il log2m ove m egrave il primo intero maggiore o uguale a n)
63
Barrel shifter (rotore)Un barrel shifter egrave uno shift register in grado di traslare di ldquonrdquo posizioni in un solo clock il contenuto dei suoi FF In figura egrave riportato il barrel shifter della Altera Gli ingressi A-H in presenza dellrsquoattivazione del segnale LDST al primo fronte positivo del clock sono depositati nei FF Quando LDST egrave 0 ad ogni fronte positivo del clock i bit di uscita sono ruotati di n posizioni in senso antiorario (ovvero lrsquouscita H diventa la G la G diventa la Fhellipe lrsquouscita A diventa la H) ove n egrave il valore binario indicato dai segnali S0 S1 e S2
Si noti che il circuito in questione egrave di fatto un registro con 8 FF allrsquoingresso di ciascuno dei quali egrave previsto un MUX a 8 vie che pilotato dai segnali S0 S1 e S2 che seleziona uno degli 8 uscite del dispositivo La struttura interna puograve essere osservata ldquoclikkandordquo due volte sul dispositivo nello schema di Altera
64
Barrel shifter
6565
66
Simulazione timing
67
bull Utilizzando il sistema Altera progettare un orologio con secondi minuti ora partendo da un oscillatore a quarzo con frequenza 500 KHz
bull E se si volesse proseguire e realizzare anche un datario (giorno mese e anno )
bull Come potrebbe essere integrato con una sveglia Si ricordi che lrsquoorologio deve essere anche essere ldquopresettatordquo
bull Quali circuiti utilizzare per la visualizzazione
68
EPROM
X0nZ0m
y0kY0k
Clock
D0kQ0k
FFD0k
CK D0kQ0k CK
Reti sincrone con EPROM
Al posto delle EPROM si utilizzano ora dei PLA ovvero dispositivi nei quali si nei quali le funzioni combinatorie sono ottimizzate ma il principio egrave assolutamente il medesimo
69
Progettare con Altera una rete logica sincrona che utilizzando registri 374 ALU 74181 un contatore e altri dispositivi ritenuti necessari permetta di eseguire in sequenza la somma di due dati di 4 bit senza segno ingresso esegua il complemento a 2 inverta la parte bassa con la parte alta del risultato e infine moltiplichi il tutto logicamente per 2
La soluzione egrave sempre decomponibile in tre sottosistemi il controllo con la sua decodifica (unitagrave di controllo) il percorso dei dati con le unitagrave che li trasformano (datapath) e i registri di deposito e di ingresso dei dati
Questa egrave la struttura base di qualunque unitagrave centrale di qualunque computer
La differenza consiste solo nel fatto che anzicheacute avere una sequenza fissa di operazioni ne viene generata una volta a volta che dipende appunto dalla istruzione che deve essere eseguita Come si vedragrave approfonditamente nel corso di Calcolatori T del II anno (prof Neri e Mattoccia)
Arrivederci al corso di Calcolatori T del II anno (sapendo perfettamente le reti logiche helliphellip)
2
I problemi con le reti asincrone
bull Il comportamento dipende dai ritardi sugli anelli di retroazione con possibilitagrave di malfunzionamenti (disallineamento dei ritardi sugli anelli di retroazione)
bull Il comportamento dipende dalle alee degli ingressi (che comunque NON possono essere temporalmente allineati in assoluto) e impedisce il riconoscimento di sequenze ripetute degli ingressi (ad esempio riconoscere la sequenza 00-00-11-01 che risulta essere indistinguibile da 00-11-01)
SOLUZIONE
bull Ottenere artificialmente lrsquoallineamento degli ingressi e degli anelli di retroazione
3
Segnale di sincronismo
bull Se la durata dellrsquoimpulso t egrave inferiore al tempo di reazione della rete combinatoria (ovvero il minimo ritardo della rete combinatoria) le nuove funzioni di eccitazione sr0k calcolate della rete combinatoria non raggiungono lrsquoAND di blocco prima che le uscite degli AND stessi siano portate a zero rendendo stabili le uscite dei FF SR (il FF SR con gli ingressi entrambi a zero NON cambia stato Solo al successivo impulso t le nuove funzioni di eccitazione (e quindi le nuove variabili di stato) sono avviate alla rete combinatoria senza che la retroazione faccia in tempo ad agire Allineamento delle retroazioni
bull Si noti che cosigrave facendo anche lrsquoeffetto degli ingressi viene ldquoallineatordquo
bull Le uscite sono esattamente ldquoallineaterdquo se la rete egrave di tipo Moore (dipendenti solo dalle variabili di stato)
Rete combinatoria
X0nZ0m
sr0kY0k
t
FF SR0k
Segnale di sincronismo
4
Segnale di sincronismo
bull Il segnale di sincronismo viene sempre indicato con il nome di clock
bull Normalmente il segnale di clock egrave un segnale ripetitivo e cadenzato (questrsquoultima caratteristica pressocheacute sempre ma non necessariamente rispettata)
bull Un FF SR dotato di segnale di clock viene chiamato SR sincrono (che perograve NON egrave mai usato nella realtagrave)
bull Quali problemi vi sono con un segnale di clock come quello riportato in figura Lrsquoimpulso dovrebbe essere strettissimo dal momento che una rete combinatoria puograve consistere anche di un solo filo nel qual caso il ritardo da combattere sarebbe solo quello legato alla propagazione del segnale elettrico sui fili Di fatto irrealizzabile
Clock
T
5
I FF sincronibull Esistono molti FF di tipo sincrono ma oggi si usa UNICAMENTE il FF D il cui
comportamento egrave stato studiato come rete asincrona ma che qui viene utilizzato come FF sincrono (nella pratica nella sua versione 74xx74)
D Q
QCK D
bull Il FF D si chiama cosigrave percheacute D sta per Delay (ritardo) Infatti lrsquouscita Q segue lrsquoingresso D con un periodo T di ritardo (se il segnale di ingresso D egrave sincrono ndash ovvero generato contemporaneo al clock - nel rispetto di setup e hold - ad esempio da una rete controllata da altri FF D) oppure al primo fronte positivo del clock
bull Il triangolo sul clock (CK) indica che egrave edge triggered ovvero che scatta sul fronte positivo del clock
D Q
QCK DPR
CL
I segnali CL e PR agiscono in modo asincrono ovvero immediatamente senza attendere il clock
6
Reti sequenziali sincrone
bull La sintesi si effettua come nel caso della rete asincrona con retroazione diretta ma ingressi che rimangono costanti sono ingressi considerati dalla rete come diversi (in quanto presi in considerazione in istanti diversi e quindi in possibile presenza di stati diversi)
bull Ciograve che conta in questo caso egrave il fronte positivo del clock la distanza fra fronti positivi successivi (nel rispetto di setup e hold ndash v reti asincrone) NON ha importanza
bull Ovviamente il periodo (la frequenza) del clock deve essere superiore (inferiore) al massimo ritardo insito nella rete combinatoria La rete combinatoria deve essersi stabilizzata a seguito di un fronte del clock prima che il successivo fronte si presenti
Rete combinatoria
X0nZ0m
y0kY0k
Clock
D0kQ0k
FFD0k
CK D0kQ0k CK
Si veda lo schema delle reti asincrone con la retroazione tramite FF RS in cui S=R
Reti Sequenziali Sincrone (RSS)
k (k)FFD
k
k FFD sullrsquoanello di retroazione Tutti con lo stesso clock di periodo T
S S S SCK
S
U
S
I
t t+T t+2Tt-TNel caso specifico Moore o Mealy Lo stato cambia anche se non cambia lrsquoingresso
Lrsquouscita cambia anche se non cambia lrsquoingresso
CK
7
Il FFD come elemento fondamentale delle RSSSe allrsquoingresso CK viene inviato un segnale periodico (clock) il FFD ritarda (D = Delay) il segnale di uscita Q rispetto al segnale di ingresso D di un tempo pari al periodo di clock T se il cambiamento del segnale D egrave contemporaneo a quelli clock (nel rispetto di setup e hold)
Qn+1 = Dn
D
CK
QT T T T
FFDD
CK
Q
Q
D
CK
Q
Q
8
NB il concetto di contemporaneitagrave potrebbe apparire in contrasto con la necessitagrave di rispettare i tempi di setup e hold Di fatto gli ingressi di una rete sincrona sono nella larga maggioranza provenienti da altre reti che hanno lo stesso clock e quindi sono generati con i ritardi delle reti soggette al clock rispettando quindi di fatto i tempi previsti Di fatto le variazioni degli ingressi sono sempre un porsquo posteriori alla variazione del clock Si veda in seguito il comportamento dei registri a traslazione
NB essendo qui il tempo discretizzato si usa n e
n+1 al posto di T e T+t
Alcune considerazioni sulle RSS
bull Lo stato della rete cambia solo in corrispondenza dei fronti di salita del clock che si susseguono con periodo T
bull La rete risponde ogni T se si desidera massimizzare la velocitagrave di risposta della rArruscita egrave necessario adottare il modello di Mealy
bull La sequenza degli stati della rete egrave svincolata dai ritardi della rete combinatoria (purcheacute la distanza fra i fronti positivi del segnale clock sia superiore al massimo ritardo della rete combinatoria) Quindi nessun problema di corse critiche
bull Allrsquointerno di uno stesso progetto (ad esempio un processore) sono tipicamente presenti piugrave RSS e non necessariamente per tutte le RSS il clock egrave lo stesso eo coincide con il clock del processore
bull Le RSS sono piugrave facili da progettare delle RSA
9
Clock gating e glitch sul clockNelle reti sincrone egrave necessario evitare variazioni spurie (glitches) del segnale di clock che possono provocare commutazioni indesiderate dei FFD (che sono sensibili ai fronti)
Ad esempio per via dei ritardi tra gli n segnali I[n-10] eo le alee introdotte dalla rete combinatoria di decodifica a causa del ldquoclock gatingldquo puograve verificarsi quanto segue
CK
P
CK_G
Glitch sul clock rarr possibile commutazione spuria del FFD
X
CK
Q
QFFD
D
CK
Q
QCK_GRete di Decodifica
I[n-10]P
t
NO
10
Naturalmente tutto dipende dalla larghezza dellrsquoimpulso spurio se molto stretto il FF potrebbe non sentirlo Quindi il clock gating non egrave proibito ma egrave un rischio da evitare in caso di incertezza
11
Per transizioni che debbono o meno verificarsi in funzione del valore della rete di decodifica bisogna condizionare il segnale D come in figura Se la rete di decodifica genera il valore 1 lrsquouscita Q assume al clock il valore di X altrimenti lrsquouscita Q copia seacute stessa e rimane invariata
Clock gating e glitch sul clock
X
CK
Q
QFFD
D
CK
Q
Q
I[n-10] P
t
01SEL
01SEL
Rete di Decodifica
Il clock gating oltre a generare potenziali glitch introduceldquoclock-skewrdquo (disallineamento) Ad esempio consideriamo due RSS soggette al FF1 e al FF2
Clock gating e clock-skew
CK
CK_GtAND tAND
I clock delle due reti sono sfasati di un tempo pari al ritardo introdotto dallrsquoAND (in generale dalla eventuale RC) interposto Tale fenomeno (ldquoclock-skewrdquo) egrave potenzialmente dannoso in quanto il FF2 potrebbe fare campionare alla propria RC in presenza dello stesso fronte di clock i nuovi valori prodotti dalla RC alimentata dal FF1
NB Il ldquoclock-skewrdquo non egrave causato solo dal clock gating ma anche (ad esempio) da percorsi elettrici di lunghezza diversa
I1
CK
B
BCK_GP
I2
CK
A
A
tAND
FFD-1D
CK
Q
QFFD-2
D
CK
Q
Q
12
13
Sincronizzazione degli ingressibull Finora si egrave dato implicitamente per scontato che gli ingressi di una rete sincrona commutino
in modo sincrono con il clock
bull Ciograve egrave verificato se gli ingressi provengono da una rete sincrona di tipo Moore nella quale le uscite sono funzione solo dello stato che commuta solo al fronte positivo del clock
Rete combinatoria
X0n
Z0m
y0k
Y0k
Clock
D0kQ0k
FFD0k
CK D0kQ0k CK
Rete combinatoria
bull Nella realtagrave le cose stanno diversamente Si pensi al caso di pulsanti esterni che costituiscano lrsquo ingresso della rete Il cambiamento puograve avvenire in un istante qualsiasi
bull Nella rete di figura (Moore) le uscite sono comunque certamente sincronizzate con il clock e se gli ingressi X0n cambiano in un momento qualsiasi non sincronizzato il cambiamento viene percepito dai FF di retroazione solo al fronte positivo del clock e quindi il comportamento delle uscite della rete egrave il medesimo che si avrebbe se gli ingressi fossero sincronizzati
14
Sincronizzazione degli ingressi
bull La cosa cambia perograve se la rete egrave di tipo Mealy
Rete combinatoria
X0nZ0m
y0kY0k
Clock
D0kQ0k
FFD0k
CK D0kQ0k CK
bull In questo caso un cambiamento asincrono degli ingressi provoca in generale un cambiamento asincrono delle uscite
15
Esempio la cassaforte (dotata di una doppia tastiera - due ingressi) si apre solo se gli ingressi hanno assunto NEL TEMPO le configurazioni
00-01-01-10 Ogni violazione della sequenza riporta il sistema nello stato iniziale NB Essendo gli ingressi campionati la sequenza di ingresso 01-01 egrave possibile e significativa
hellip Cassaforte hellip sincrona hellip
NB si puograve supporre che gli ingressi cambino allo stesso istante delle variabili di stato ma la cosa non egrave necessaria Se la rete egrave di tipo Moore anche se gli ingressi cambiano a metagrave di un periodo di clock il comportamento dal punto di vista degli stati e quindi delle uscite egrave assolutamente lo stesso (ogni variazione egrave rilevata solo alla fine del periodo)
E11101
0111
11
F0
01
01
G0
0000
11 00
11
11
10
1001
10
00
10 0110
01
01
00
Per ogni stato tutte le combinazioni di ingresso
00
10
10
11
C0A0 B0 D0
Gli stati NON sono stabili per gli ingressi che li hanno provocati
00
B
00 01 11 10
F A GA
B C A GB
B D A GCB F A ED
B F A GE
B F AA- GF
B F A GG
0
0
0
0
1
0
0
X1X2
A0 B0 C0 E10011
01
10
0111
11
11
D0 10
F0
01
01
G0
0000
00
00
11
11
10
1001
1010 0110
01
11
00
Cassaforte sincrona
16
01
NB in questo esempio non vi sono condizioni di indifferenza Anzicheacute di stati compatibili si parla qui di stati equivalenti Ove poi due stati per gli stessi ingressi abbiano uscite identiche e portino agli stessi stati si parla di stati indistinguibili Naturalmente la descrizione a parole puograve evidenziare che alcune combinazioni di ingresso per alcuni stati non si presentano In questo caso si ritorna al concetto di compatibilitagrave
00
17
Cassaforte sincrona
Classi di equivalenza [AFG] =gt a[B] =gt b[C] =gt g[D] =gt d[E] =gt e
B
00 01 11 10
F A GA
B C A GB
B D A GCB F A ED
B F A GE
B F AA- GF
B F A GG
0
0
0
0
1
0
0
X1X2
B
C
D
E
F
G
A B C D E F
CF
FD CD
CFGE
CFGE
DFGE
--- CF DF GE
--- C F DF GE --
b
00 01 11 10
a a aa
b g a ab
b d a ag
b a a ed
b a a ae
X1X2
0
0
0
0
1 NB nel caso di tabelle completamente specificate le classi (massime) di equivalenza non hanno mai stati in comune Vanno usate tutte quindi Non esiste problema di chiusura
Ovviamente 5 stati 4 facenti parte della sequenza e uno esterno
18
b
00 01 11 10
a a aa
b g a ab
b d a ag
b a a ed
b a a ae
X1X2
0
0
0
0
1
Cassaforte sincrona
001
00 01 11 10
000 000 000000
001 011 000 000001
001 010 000 000011
001 000 000 100010
001 000 000 000100
X1X2
-- -- -- --101
-- -- -- --111
-- -- -- --110
0
0
0
0
1
--
--
--
Y1Y2 Y3
a =gt 000b =gt 001g =gt 011d =gt 010e =gt 100
D1= X1X2Y2Y3
D2=X1X2Y3
D3=X1X2+X1Y2Y3 Z =Y1
Sintetizzando con FFD la sintesi degli ingressi Di si ottiene sintetizzando le funzioni Yi (Yn+1=Dn)
Nessun problema di corse codifica libera (possibilmente ottima)
19
Sintesi
Direttorio cassaforte sincrona
20
00 01 01 10
Sintesi ndash simulazione funzionale
NB Gli ingressi cambiano in modo NON sincrono con il clock ma lrsquo uscita egrave sincrona essendo la rete di tipo Moore
21
Sintesi ndash simulazione timing
Si notino i ritardi delle uscite dei FF e dei gates da esse dipendenti rispetto al fronte positivo del clock (ad esempio d) se la frequenza del clock fosse eccessiva il sistema NON funzionerebbe piugrave correttamente
d
22
E con Mealy
B
00 01 11 10
F A GA
B C A GB
B D A GCB F A ED
B F A GE
B F AA- GF
B F A GG
0
0
0
0
1
0
0
X1X2
B0
00 01 11 10
F0 A0 G0A
B0 C0 A0 G0B
B0 D0 A0 G0CB0 F0 A0 E1D
B1 F1 A1 G1E
B0 F0 A0A-G0F
B0 F0 A0 G0G
X1X2
Potrei mettere una indifferenza sullrsquouscita Si si possono mettere indifferenze sulle uscite che cambiano Anticipazione o ritardo del cambiamento
Sintetizzare e simulare con Altera
23
bull Allrsquoesame orale egrave necessario portare un esercizio di reti sincrone e uno di reti asincrone NON ldquomutuatordquo da altri hellip
bull I due esercizi debbono essere portati su una chiavetta (o dispositivo equivalente) debbono contenere una spiegazione e anche la progettazionesimulazione con Altera
bull Il candidato deve dimostrare di sapere usare il sistema Altera e spiegare i progetti portati
bull Gli esercizi di reti sincrone hanno spesso il diagramma degli stati ma solo per verificahellip
Monoimpulsore A
D1 Q1
Q1CKFFD
D2 Q2
Q2CKFFD Z1
D
Clock
Clock
D
Z
Q1
Q2
Qui lrsquoingresso asincrono D egrave sincronizzato dai FF Uscita Z sincrona
Generare un impulso di uscita di un periodo di clock per ingresso 1 Un ulteriore impulso viene generato solo se lrsquoingresso torna a 1 dopo essere stato a 0 Lrsquouscita deve essere sincronizzata con il clock
24
25
D1 Q1
Q1CKFFD
D2 Q2
Q2CKFFD Z
D
Clock
Monoimpulsore A
1
0
1
1
0
A0 B1
C0
0
A
A
A
-
B
C
C
-
DQ2
Q1
B
0 1
C
-
Z0
0
1
-
A 00
--
00
00
10
--
11
11
DQ2
Q1
01
0 1
11
10
Z0
0
-
1
0000
10
11
01
B
C
-
A
Q1=D Q2= DQ1 Z=Q1Q2
00
00
01
01
10
10
11
11
DQ2
Q1
01
0 1
11
10
Z0
0
0
1
00
MAhellip
Q1=D Q2= Q1 Z=Q1Q2
Moore necessariamente
26
D1 Q1
Q1CKFFD
D2 Q2
Q2CKFFD Z2
D
Clock
Monoimpulsore B
Clock
D
Z2
Q1
Q2
Lrsquoingresso asincrono D agisce direttamente sullrsquouscita Z che quindi risulta asincrona
Qui la rete egrave di tipo Mealy e quindi con ingresso asincrono egrave possibile che vi sia uscita asincrona
27
D Q
QCKFFD Z
D
Clock
Monoimpulsore C
Clock
D
Z
Q
Anche qui lrsquoingresso asincrono D agisce direttamente sullrsquouscita Z che quindi risulta asincronaSi noti che se lrsquoingresso oscilla una volta che il FF ha campionato un 1 e fino a quando non campiona uno 0 lrsquouscita oscilla
Qui la rete egrave di tipo Mealy e quindi con ingresso asincrono egrave possibile che vi sia uscita asincrona
28
Considerazioni sui monoimpulsori A B e C
Il diagramma degli stati corrispondente al funzionamento reale dei due monoimpulsori B e C NON puograve essere tracciato percheacute di fatto le due reti (di tipo Mealy) NON sono sincrone Infatti il diagramma di circuiti sincroni prevede implicitamente un comportamento sincrono anche degli ingressi fatto non verificato nei casi B e C
La cosa non vale per il monoimpulsore A in quanto pur essendo lrsquoingresso asincrono lrsquouscita (rete di tipo Moore) dipende solo dagli stati In altre parole il comportamento della rete rende intrinsecamente sincroni ingressi fisicamente asincroni
Il diagramma degli stati che riflette il comportamento delle due reti B e C puograve essere tracciato solo partendo da una analisi asincrona ldquoaprendordquo quindi i FF D inseriti Ovviamente egrave possibile progettare le due reti senza lrsquouso dei FF D partendo da un diagramma degli stati asincrono ldquotradizionalerdquo
A scopo di esercizio si suggerisce la sintesi e la simulazione con Altera dei tre monoimpulsori come reti asincrone Si tratta di circuiti on due ingressi Ck e D
29
Monoimpulsori A-B-C
30
31
Contatori
A B C D Z
Circuiti senza ingresso (a parte il clock) nella versione piugrave semplice
D0 Q0
Q0CKFFD
MUX
1
0D1 Q1
Q1CKFFD
(Il clock egrave spesso sottinteso nei circuiti sincroni)
U0 U1
Esempio contatore binario x 4 con decodifica del 3
000 010 100 111
OUT
Q1 cambia stato quando Q0 egrave a 1 e passa a 0
CK
u1
u0
OUT (0) (1) (2) (0) (1) (2)(3) (3)
Contatore x 4 con decodifica del 3
33
Contatori binari in base non potenza di 2
A B C D E
000 001 010 011 100Contatore
binario per 5
D0 Q0
Q0CKFFD
MUX
1
0 1D1 Q1
Q1CKFFD
MUX
1
0D Q2
Q2CKFFD
Questo conta x8 ma per contare x5 arrivati a 4 bisogna ritornare a 0
34
D0 Q0
Q0CKFFD D1 Q1
Q1CKFFD
MUX
1
0 D2 Q2
Q2CKFFD
MUX
1
0
ABC
ldquo4rdquo
Contatore x 5
Decoder
La decodifica del 4 porta a zero lrsquouscita del decodificatore e quindi a 0 tutte le uscite degli AND rosa e al successivo fronte positivo del clock i tre FF campionano uno ldquo0rdquo
Per esercizio sintetizzare un contatore x 100 partendo dalla sintesi di un contatore decimale ovvero di un contatore x10 (da sintetizzare) Quanti FF per un contatore decimale I contatori decimali si trovano integrati in Altera
ldquo3rdquo
35
Contatori con ingressi di controllo
Ex Contatore integrato x 16 con Load e Enable
bull Il contatore conta per 16 (0-15) se il segnale EN egrave a 1 Allorchegrave il segnale LD va a 1 il dato presente sugli ingressi D egrave inserito nei 4 FF (lrsquoingresso puograve essere sincrono o asincrono) Nel caso precedente il decodificatore del ldquo3rdquo (uscita vera va portato) allrsquoingresso LD con tutti i Di a zero
bull In generale il contatore fornisce anche unrsquouscita ldquocarryrdquo che va a 1 quando il contatore raggiunge il valore FF Questa uscita puograve essere connessa allrsquoenable di un contatore a valle per ottenere un contatore per 256 cosigrave via (Progettarlo come esercizio)
EN
Q0 Q1 Q2 Q3CKLD
D0 D1 D2 D3
EN
Q0 Q1 Q2 Q3CK
CYLD
D0 D1 D2 D3
bull Esistono contatori UPDOWN nei quali un ingresso (UD) seleziona se il conteggio deve avvenire avanti o indietro Nel caso sia selezionata la modalitagrave ldquoindietrordquo il carry si attiva quando si raggiunge il valore ldquotutti zerirdquo
bull Esiste una molteplicitagrave di contatori ciascuno con le proprie specifiche peculiaritagrave con o senza RESET (che normalmente agisce in modo asincrono) UD con o senza LD etc etc
NB qualunque circuito sincrono (con sequenza non binaria) riconducibile al diagramma degli stati di un contatore egrave sempre un contatore
101 010 000 111 110 Contatore x 5 non binario
36
74163 contatore reale x 16 con Load Reset e Enable (T e P)I segnali di controllo sono sincroni ovvero agiscono sul fronte positivo del clock (rising edge)
74138 decoder 38 con uscite negate se G2A e G2B entrambi a zero e G1 a 1 Altrimenti tutte uscite alte
Direttorio Counter Glitch
Contatore binario x 8 e glitches
37
Glitch
Simulazione timingNB la presenza e la durata del glitch dipende dalle caratteristiche elettriche dei dispositivi
dalla loro tecnologia etc Nel caso dei dispositivi Altera dipende dal tipo di dispositivo sul quale egrave realizzato il circuito Analogamente la sensibilitagrave di eventuali ingressi di clock collegati allrsquouscita con il glitch dipende dalle caratteristiche del dispositivo Se ad esempio nel dispositivo Altera utilizzato si collega allrsquouscita Y6 il clock di un FFD non si ha commutazione del FF ma questo non egrave vero in assoluto
38
Cosa succede al contatore X5 progettato precedentemente se allrsquoaccensione non disponendo di un segnale di RESET i FF si portano in uno stato non facente parte del cicloNB La condizione allrsquoaccensione egrave del tutto casuale e dipende unicamente dalle condizioni elettriche
di realizzazione Ersquo impredicibileSupponiamo che i FF si portino al valore 110 (il numero 6 fuori dal ciclo) Analizziamo il comportamento
D0 Q0Q0CK
FFD D1 Q1Q1CK
FFD
MUX
1
0 D2 Q2Q2CK
FFD
MUX
1
0
ABC
ldquo4rdquo
000 001 010 011 100 110 111
In questo caso ci si riporta nella situazione di conteggio regolare (verificare con la tabella degli stati ) ma il comportamento in generale dipende dalla realizzazione e in altre realizzazione i due stati potrebbero essere separati dal ciclo principale che quindi non verrebbe mai raggiunto Ecco la funzione del RESET
39
Solo come esempio (da non utilizzare ) a scopo didattico vediamo la tabella delle transizioni di un contatore per 6 UpDown con comando di Reset I segnali di ingresso cambiano in modo asincrono ma hanno effetto in modo sincrono
Per compensare allrsquoaccensione
Sintetizzare e simulareCome dovrebbe essere modificato lo schema in Altera per permettere di
ldquopresettarerdquo in modo asincrono il contatore a un particolare valore di ingresso
00 01 11 10UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
111
110
000 101
000
101
y3 y2 y100 01 11 10
UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
000 000111
000 000 000 000110
000 101
000
000 000
101
y3 y2 y1
40
D0Q0
CKFFD
Clocky2
DEC
y3
y2
y1
ldquo1rdquo
ldquo2rdquo
ldquo3rdquo
ldquo4rdquo
1
0
UPDown
Sintesi di y2 in modo ldquodirettordquo
1
0
00 01 11 10UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
000 000111
000 000 000 000110
000 101
000
000 000
101
y3 y2 y1
41
Cassaforte hellipDisponendo di un contatore per 8 (ma anche per 16 etc) con reset sincrono e sempre abilitato al conteggio come potrei realizzare il circuito di apertura della cassaforte (sequenza X1X2 00-01-01-10) con modello Moore
Cx8RES
Q0 Q1 Q2 CK
RES= (ldquo0rdquoX1X2 + ldquo1rdquo X1X2 + ldquo2rdquo X1X2 + ldquo3rdquo X1 X2)Z = ldquo4rdquo (ldquo0rdquordquo1rdquordquo2rdquordquo3rdquordquo4rdquo sono le decodifiche binarie delle tre uscite del contatore)
Il contatore si resetta ogni volta che non si presenta lrsquoingresso giusto relativo al particolare stato Ilcontatore quindi si resetta e rimane resettato se non nelle condizioni espresse dalla funzione RESIl contatore arrivato a 4 (Z=1) si resetta comunque al successivo fronte del clock
Le reti sincrone si progettano sempre come combinazione di blocchi disponibili e logica ldquorandomrdquo
ABC
ldquo0rdquoldquo1rdquoldquo2rdquoldquo3rdquoldquo4rdquo
RLAND-OR
X1X2
RESZ
Cx8RES
Q0 Q1 Q2 CK
42
Contatori
EN
Q0 Q1 Q2 Q3CKCY
RESET
bull Attenzione Consideriamo il contatore di figura (questa volta con RESET asincrono) e supponiamo di utilizzarlo per contare per 5 (NB per il Reset si usa il ldquo5rdquo in questo casohellip glitch)
ABCD
ldquo5rdquo
ldquo1rdquo Percheacute questo schema egrave sbagliato
bull Percheacute presenta una corsa critica Nel momento in cui anche uno solo dei FF si resetta (e non tutti nello stesso istante) viene a mancare la configurazione ldquo4rdquo sul decoder e quindi alcuni FF potrebbero non fare in tempo a resettarsi E allora
EN
Q0 Q1 Q2 Q3CKCY
RESET
ABCD
ldquo5rdquo
ldquo1rdquo
RS
Y ldquo0rdquo
bull Cosigrave facendo il ldquo4rdquo attiva il SET e il FF NON si resetta fino a quando non egrave stato raggiunto la ldquo0rdquo NB lo schema ldquosbagliatordquo si puograve usare solo se si egrave certi della rapiditagrave di reset dei FF del contatore
bull Verificare con Altera
Sintesi cassaforte con moduli
Altera Cassaforte sincrona con moduli
Rete di controllo
Contatore con Reset asincrono e Load sincrono
43
NB In questo progetto la sintesi egrave stata condotta in modo ldquodirettordquo ovvero senza passare per la sintesi formale e utilizzando componenti disponibili e helliphellip materia grigia La sintesi dei circuiti sincroni si fa sempre e unicamente cosigrave
44
Simulazione funzionale (no timing)
NB I segnali di ingresso sono campionati SOLO sul fronte positivo del clock anche se si presentano asincroni Il segnale di uscita si attiva al clock successivo al riconoscimento della sequenza La posizione di ldquoriposordquo del contatore egrave il valore 4 I segnali Yi sono le decodifiche dei segnali di di ingresso X1 e X2
00 01 01 10
45
Simulazione timing
46
NB Si egrave scelto di utilizzare SOLO gli ingressi SINCRONI del contatore per semplicitagrave Il contatore rimane al valore 100 fino a quando non si presenta allrsquoingresso il valore 00 Se la sequenza egrave esatta il contatore continua a contare in avanti fino alla generazione dellrsquouscita (valore 11 del contatore) altrimenti si riporta al valore 100 ovvero Qc=1) Il segnale GN (Gate Not) egrave quello che abilita il conteggio Il sistema riamane stabile a 000 per una sequenza lunga a piacere di X1=0 e X2=0 e si sposta quando dopo 00 si ha 01 Come si evince dalla simulazione se la sequenza non egrave corretta o egrave interrotta il contatore si riporta sempre a 100
00 01 11 10
001 000 000
X1
000000 010 100 100001
000 100 100 011010
100 100 100 100011
000 100 100 100100
000 100 100 100101
000 100 100 100110
000 100 100 100111
0
0
0
1
0
0
0
0
X2
000
NB la tabella delle transizioni derivata della rete realizzata NON ha ovviamente condizioni di indifferenza
47
Progettare un contatore packed BCD updown a 8 bit (due digit)
48
Generazione di forme drsquoondabull Ersquo possibile generare forme drsquoonda periodiche mediante circuiti sincroni di periodo
sottomultiplo intero del clock
Esempio 1Divisore di frequenza per 2
D0k Q0k
CK D Q
CK Clock
Q
Esempio 2 generare una forma drsquoonda periodica con periodo 5T (ove T sia il periodo del clock) in cui in un semiperiodo 3T lrsquouscita sia alta e nellrsquoaltro semiperiodo 2T lrsquouscita sia bassa
Q0 Q1 Q2 CK
Cx5
C
B
A
01234
DecoderDemux
Clock
ZZ T
3T2T
3T
NB una rete logica egrave in grado di effettuare delle divisioni di frequenza e mai delle moltiplicazioni di frequenza (che si possono ottenere solo con circuiti analogici non lineari)
49
Di che circuito si tratta
D0k Q0k
CK D0 Q0
CKQ0
D0k Q0k
CK D1 Q1
CK
D0k Q0k
CK D2 Q2
CKClock
Clock
Q0
Q1
Q2
Ersquo un contatore binario ma non sincrono Infatti i vari FF NON utilizzano lo stesso clock e questo porta a un piccolo disallineamento sulle uscite Non egrave sintetizzabile come una rete sincrona e una sintesi formale sarebbe possibile solo trattando il circuito come asincrono ovvero ldquoaprendordquo i FF Sarebbe possibile trasformarlo in un contatore x6 mantenendo la stessa impostazione
Sintetizzare e simulare con Altera
NB il segnale di clock non egrave in comune
50
7493
51
Altera Contatore asincrono
Contatore asincrono
52
Simulazione timing
53
Come puograve essere utilizzato un FFD per catturare un impulso piugrave breve di un periodo
D2 Q2
Q2CKFFD Z
Clock
D1 Q1
Q1CKFFD
D0 Q00
Q0CKFFD
ldquo1rdquo CL
Lrsquoimpulso breve viene catturato dal FF 0 (purcheacute di larghezza sufficiente per la tecnologia del FF) - che quindi agisce come integratore ndash la cui uscita alimenta il monoimpulsore di tipo A Lrsquoattivazione del FF 1 resetta il FF 0 (supponendo che il segnale di CL sia ldquopositiverdquotruerdquo)
Ci puograve essere un problema se il CL agisce in modo asincrono
NB questo circuito e quello del lucido precedente evidenziano il fatto che nella realtagrave nessuna rete egrave solo sincrona ma bensigrave egrave pressocheacute sempre necessario utilizzare reti di natura diversa anche percheacute vi egrave sempre una interazione fra reti con clock diversi eo con segnali provenienti dal mondo esterno NON sincronizzati con il clock
Monoimpulsore di tipo A ldquorivistordquo
54
bull Uno shift register a sinistra (a destra) egrave un registro composto da FFD che ad ogni clock trasferisce il valore del FF a destra (a sinistra) di ciascun FF nel FF stesso Nel FF piugrave a destra (sinistra) viene immesso uno ldquo0rdquo Questi tipi di registri shift si chiamano ldquologicirdquo
Shift register (registri a traslazione o scorrimento)
D0kQ0k
CK DnQn
CK
D0kQ0k
CK Dn-1Qn-1
CK
D0kQ0k
CK Dn-2Qn-2
CK
D0kQ0k
CK D0Q0
CK
ldquo0rdquo
Shift register a sinistra
bull Anche per i registri a traslazione esistono diverse versioni con ingresso parallelo e uscita seriale con ingresso seriale e uscita parallela con reset con load etc etc
bull Si noti che uno shift register egrave anche un contatore Si immagini per esempio che dopo un reset siano inseriti degli uni a partire da destra Lo shift register si riempie progressivamente di uni e quindi la posizione in cui egrave arrivato lrsquouno indica il valore del conteggio in base a un codice ldquouno su nrdquo (un codice decodificato)
bull Spesso uno stesso registro puograve traslare a destra o a sinistra in funzione di una segnale di controllo Ovviamente questo si ottiene premettendo a ogni ingresso Di un MUX a due vie che preleva in funzione del segnale di controllo Qigrave+1 o Qigrave-1 Con questa configurazione lo shift register diventa anche un contatore avantiindietro
Registro a scorrimento (shift-register) a 3 bit
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
IN
OUT2OUT1OUT0
CK
CK
IN
A_RESET
OUT1
OUT2
OUT0
Registro a scorrimento (shift-register) a 3 bit
57
Esempio 74164 (serial In parallel OUT)
bull In questo registro a traslazione ad ogni fronte positivo del clock i dati sono traslati a destra (Q0 -gt Q1 Q1-gtQ2 etc) Il registro egrave dotato in un Master Reset (vero negato) e il dato inserito nel FF Q0 egrave dato dallrsquoAND dei due ingressi Dsa e Dsb
bull Si noti che lrsquooperazione di shift corrisponde aritmeticamente alle operazioni di divisione e moltiplicazione per 2 Si supponga che in Q0 vi sia il bit meno significativo e in Q7 il meno significativo
0 1 1 0 1 0 1 0
010101102 = 10810
Shift left =gt x2
Shift right =gt 2
101011002 = 21610
001010112 = 5910
NB nel dispositivo i bit sono posti in ordine invertito e quindi un shift left del numero corrisponde a uno shift right sul dispositivo
58
bull Esistono anche i registri a traslazione ldquoaritmeticirdquo In questi shift register a destra anzicheacute fare entrare nel FF piugrave a sinistra lo ldquo0rdquo viene immesso sempre ripetutamente il suo valore logico
Shift aritmetico
Q7 Q6 Q5 Q4 Q3 Q2 Q1 Q0
D7 D6 D5 D4 D3 D2 D1 D0
I LDCK Esempio
11001010SRA
11100101 interpretato in complemento a 2
001101102=5410
C2 C2
000110112=2710
bull Lo shift aritmetico a destra effettua una divisione per 2 mantenendo il segno
59
Rotazione
Nei computer egrave sovente necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register
D0kQ0k
CK DnQn
CK
D0kQ0k
CK Dn-1Qn-1
CK
D0kQ0k
CK Dn-2Qn-2
CK
D0kQ0k
CK D0Q0
CK
Molto spesso nei computer egrave necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register con direzione programmabile In questo caso su D0 ad esempio puograve essere avviato o Q1 o Qn
60
Contatori con shift register ndash Contatore retroazionato EX-OR
Q2Q0
Shift right 3 bitDQ1
110 111 011 101 010 001
Diagramma degli stati disgiunto
Uno shift register con n FF retroazionato con un EX-OR (scelta degli ingressi variabile) egrave un contatore NON binario che conta per 2n-1 (purcheacute presettato a un valore diverso da tutti zeri)
000
100
61
Contatore di Johnson (riempimento e svuotamento)
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
000-gt100-gt110-gt111-gt011-gt001-gt000-gtStati isolati 101-gt010-gt101gt1
Poicheacute configurazioni adiacenti del codice Johnson differiscono di un solo bit il contatore puograve essere utilizzato per generare forme drsquoonda prive di alee
62
Contatore ad anello con un solo 1 (ovvero che genera direttamente il codice 1su n)
FFDD Q
QR
RESET
FFDD Q
QR
RESET
FFDD Q
QPR
RESET
OUT3OUT1OUT0
CK
FFDD Q
QR
RESET
OUT2
0001-gt1000-gt0100-gt0010-gt0010n FF per contare per n (mentre con i contatori binari il numero dei FF egrave il log2m ove m egrave il primo intero maggiore o uguale a n)
63
Barrel shifter (rotore)Un barrel shifter egrave uno shift register in grado di traslare di ldquonrdquo posizioni in un solo clock il contenuto dei suoi FF In figura egrave riportato il barrel shifter della Altera Gli ingressi A-H in presenza dellrsquoattivazione del segnale LDST al primo fronte positivo del clock sono depositati nei FF Quando LDST egrave 0 ad ogni fronte positivo del clock i bit di uscita sono ruotati di n posizioni in senso antiorario (ovvero lrsquouscita H diventa la G la G diventa la Fhellipe lrsquouscita A diventa la H) ove n egrave il valore binario indicato dai segnali S0 S1 e S2
Si noti che il circuito in questione egrave di fatto un registro con 8 FF allrsquoingresso di ciascuno dei quali egrave previsto un MUX a 8 vie che pilotato dai segnali S0 S1 e S2 che seleziona uno degli 8 uscite del dispositivo La struttura interna puograve essere osservata ldquoclikkandordquo due volte sul dispositivo nello schema di Altera
64
Barrel shifter
6565
66
Simulazione timing
67
bull Utilizzando il sistema Altera progettare un orologio con secondi minuti ora partendo da un oscillatore a quarzo con frequenza 500 KHz
bull E se si volesse proseguire e realizzare anche un datario (giorno mese e anno )
bull Come potrebbe essere integrato con una sveglia Si ricordi che lrsquoorologio deve essere anche essere ldquopresettatordquo
bull Quali circuiti utilizzare per la visualizzazione
68
EPROM
X0nZ0m
y0kY0k
Clock
D0kQ0k
FFD0k
CK D0kQ0k CK
Reti sincrone con EPROM
Al posto delle EPROM si utilizzano ora dei PLA ovvero dispositivi nei quali si nei quali le funzioni combinatorie sono ottimizzate ma il principio egrave assolutamente il medesimo
69
Progettare con Altera una rete logica sincrona che utilizzando registri 374 ALU 74181 un contatore e altri dispositivi ritenuti necessari permetta di eseguire in sequenza la somma di due dati di 4 bit senza segno ingresso esegua il complemento a 2 inverta la parte bassa con la parte alta del risultato e infine moltiplichi il tutto logicamente per 2
La soluzione egrave sempre decomponibile in tre sottosistemi il controllo con la sua decodifica (unitagrave di controllo) il percorso dei dati con le unitagrave che li trasformano (datapath) e i registri di deposito e di ingresso dei dati
Questa egrave la struttura base di qualunque unitagrave centrale di qualunque computer
La differenza consiste solo nel fatto che anzicheacute avere una sequenza fissa di operazioni ne viene generata una volta a volta che dipende appunto dalla istruzione che deve essere eseguita Come si vedragrave approfonditamente nel corso di Calcolatori T del II anno (prof Neri e Mattoccia)
Arrivederci al corso di Calcolatori T del II anno (sapendo perfettamente le reti logiche helliphellip)
3
Segnale di sincronismo
bull Se la durata dellrsquoimpulso t egrave inferiore al tempo di reazione della rete combinatoria (ovvero il minimo ritardo della rete combinatoria) le nuove funzioni di eccitazione sr0k calcolate della rete combinatoria non raggiungono lrsquoAND di blocco prima che le uscite degli AND stessi siano portate a zero rendendo stabili le uscite dei FF SR (il FF SR con gli ingressi entrambi a zero NON cambia stato Solo al successivo impulso t le nuove funzioni di eccitazione (e quindi le nuove variabili di stato) sono avviate alla rete combinatoria senza che la retroazione faccia in tempo ad agire Allineamento delle retroazioni
bull Si noti che cosigrave facendo anche lrsquoeffetto degli ingressi viene ldquoallineatordquo
bull Le uscite sono esattamente ldquoallineaterdquo se la rete egrave di tipo Moore (dipendenti solo dalle variabili di stato)
Rete combinatoria
X0nZ0m
sr0kY0k
t
FF SR0k
Segnale di sincronismo
4
Segnale di sincronismo
bull Il segnale di sincronismo viene sempre indicato con il nome di clock
bull Normalmente il segnale di clock egrave un segnale ripetitivo e cadenzato (questrsquoultima caratteristica pressocheacute sempre ma non necessariamente rispettata)
bull Un FF SR dotato di segnale di clock viene chiamato SR sincrono (che perograve NON egrave mai usato nella realtagrave)
bull Quali problemi vi sono con un segnale di clock come quello riportato in figura Lrsquoimpulso dovrebbe essere strettissimo dal momento che una rete combinatoria puograve consistere anche di un solo filo nel qual caso il ritardo da combattere sarebbe solo quello legato alla propagazione del segnale elettrico sui fili Di fatto irrealizzabile
Clock
T
5
I FF sincronibull Esistono molti FF di tipo sincrono ma oggi si usa UNICAMENTE il FF D il cui
comportamento egrave stato studiato come rete asincrona ma che qui viene utilizzato come FF sincrono (nella pratica nella sua versione 74xx74)
D Q
QCK D
bull Il FF D si chiama cosigrave percheacute D sta per Delay (ritardo) Infatti lrsquouscita Q segue lrsquoingresso D con un periodo T di ritardo (se il segnale di ingresso D egrave sincrono ndash ovvero generato contemporaneo al clock - nel rispetto di setup e hold - ad esempio da una rete controllata da altri FF D) oppure al primo fronte positivo del clock
bull Il triangolo sul clock (CK) indica che egrave edge triggered ovvero che scatta sul fronte positivo del clock
D Q
QCK DPR
CL
I segnali CL e PR agiscono in modo asincrono ovvero immediatamente senza attendere il clock
6
Reti sequenziali sincrone
bull La sintesi si effettua come nel caso della rete asincrona con retroazione diretta ma ingressi che rimangono costanti sono ingressi considerati dalla rete come diversi (in quanto presi in considerazione in istanti diversi e quindi in possibile presenza di stati diversi)
bull Ciograve che conta in questo caso egrave il fronte positivo del clock la distanza fra fronti positivi successivi (nel rispetto di setup e hold ndash v reti asincrone) NON ha importanza
bull Ovviamente il periodo (la frequenza) del clock deve essere superiore (inferiore) al massimo ritardo insito nella rete combinatoria La rete combinatoria deve essersi stabilizzata a seguito di un fronte del clock prima che il successivo fronte si presenti
Rete combinatoria
X0nZ0m
y0kY0k
Clock
D0kQ0k
FFD0k
CK D0kQ0k CK
Si veda lo schema delle reti asincrone con la retroazione tramite FF RS in cui S=R
Reti Sequenziali Sincrone (RSS)
k (k)FFD
k
k FFD sullrsquoanello di retroazione Tutti con lo stesso clock di periodo T
S S S SCK
S
U
S
I
t t+T t+2Tt-TNel caso specifico Moore o Mealy Lo stato cambia anche se non cambia lrsquoingresso
Lrsquouscita cambia anche se non cambia lrsquoingresso
CK
7
Il FFD come elemento fondamentale delle RSSSe allrsquoingresso CK viene inviato un segnale periodico (clock) il FFD ritarda (D = Delay) il segnale di uscita Q rispetto al segnale di ingresso D di un tempo pari al periodo di clock T se il cambiamento del segnale D egrave contemporaneo a quelli clock (nel rispetto di setup e hold)
Qn+1 = Dn
D
CK
QT T T T
FFDD
CK
Q
Q
D
CK
Q
Q
8
NB il concetto di contemporaneitagrave potrebbe apparire in contrasto con la necessitagrave di rispettare i tempi di setup e hold Di fatto gli ingressi di una rete sincrona sono nella larga maggioranza provenienti da altre reti che hanno lo stesso clock e quindi sono generati con i ritardi delle reti soggette al clock rispettando quindi di fatto i tempi previsti Di fatto le variazioni degli ingressi sono sempre un porsquo posteriori alla variazione del clock Si veda in seguito il comportamento dei registri a traslazione
NB essendo qui il tempo discretizzato si usa n e
n+1 al posto di T e T+t
Alcune considerazioni sulle RSS
bull Lo stato della rete cambia solo in corrispondenza dei fronti di salita del clock che si susseguono con periodo T
bull La rete risponde ogni T se si desidera massimizzare la velocitagrave di risposta della rArruscita egrave necessario adottare il modello di Mealy
bull La sequenza degli stati della rete egrave svincolata dai ritardi della rete combinatoria (purcheacute la distanza fra i fronti positivi del segnale clock sia superiore al massimo ritardo della rete combinatoria) Quindi nessun problema di corse critiche
bull Allrsquointerno di uno stesso progetto (ad esempio un processore) sono tipicamente presenti piugrave RSS e non necessariamente per tutte le RSS il clock egrave lo stesso eo coincide con il clock del processore
bull Le RSS sono piugrave facili da progettare delle RSA
9
Clock gating e glitch sul clockNelle reti sincrone egrave necessario evitare variazioni spurie (glitches) del segnale di clock che possono provocare commutazioni indesiderate dei FFD (che sono sensibili ai fronti)
Ad esempio per via dei ritardi tra gli n segnali I[n-10] eo le alee introdotte dalla rete combinatoria di decodifica a causa del ldquoclock gatingldquo puograve verificarsi quanto segue
CK
P
CK_G
Glitch sul clock rarr possibile commutazione spuria del FFD
X
CK
Q
QFFD
D
CK
Q
QCK_GRete di Decodifica
I[n-10]P
t
NO
10
Naturalmente tutto dipende dalla larghezza dellrsquoimpulso spurio se molto stretto il FF potrebbe non sentirlo Quindi il clock gating non egrave proibito ma egrave un rischio da evitare in caso di incertezza
11
Per transizioni che debbono o meno verificarsi in funzione del valore della rete di decodifica bisogna condizionare il segnale D come in figura Se la rete di decodifica genera il valore 1 lrsquouscita Q assume al clock il valore di X altrimenti lrsquouscita Q copia seacute stessa e rimane invariata
Clock gating e glitch sul clock
X
CK
Q
QFFD
D
CK
Q
Q
I[n-10] P
t
01SEL
01SEL
Rete di Decodifica
Il clock gating oltre a generare potenziali glitch introduceldquoclock-skewrdquo (disallineamento) Ad esempio consideriamo due RSS soggette al FF1 e al FF2
Clock gating e clock-skew
CK
CK_GtAND tAND
I clock delle due reti sono sfasati di un tempo pari al ritardo introdotto dallrsquoAND (in generale dalla eventuale RC) interposto Tale fenomeno (ldquoclock-skewrdquo) egrave potenzialmente dannoso in quanto il FF2 potrebbe fare campionare alla propria RC in presenza dello stesso fronte di clock i nuovi valori prodotti dalla RC alimentata dal FF1
NB Il ldquoclock-skewrdquo non egrave causato solo dal clock gating ma anche (ad esempio) da percorsi elettrici di lunghezza diversa
I1
CK
B
BCK_GP
I2
CK
A
A
tAND
FFD-1D
CK
Q
QFFD-2
D
CK
Q
Q
12
13
Sincronizzazione degli ingressibull Finora si egrave dato implicitamente per scontato che gli ingressi di una rete sincrona commutino
in modo sincrono con il clock
bull Ciograve egrave verificato se gli ingressi provengono da una rete sincrona di tipo Moore nella quale le uscite sono funzione solo dello stato che commuta solo al fronte positivo del clock
Rete combinatoria
X0n
Z0m
y0k
Y0k
Clock
D0kQ0k
FFD0k
CK D0kQ0k CK
Rete combinatoria
bull Nella realtagrave le cose stanno diversamente Si pensi al caso di pulsanti esterni che costituiscano lrsquo ingresso della rete Il cambiamento puograve avvenire in un istante qualsiasi
bull Nella rete di figura (Moore) le uscite sono comunque certamente sincronizzate con il clock e se gli ingressi X0n cambiano in un momento qualsiasi non sincronizzato il cambiamento viene percepito dai FF di retroazione solo al fronte positivo del clock e quindi il comportamento delle uscite della rete egrave il medesimo che si avrebbe se gli ingressi fossero sincronizzati
14
Sincronizzazione degli ingressi
bull La cosa cambia perograve se la rete egrave di tipo Mealy
Rete combinatoria
X0nZ0m
y0kY0k
Clock
D0kQ0k
FFD0k
CK D0kQ0k CK
bull In questo caso un cambiamento asincrono degli ingressi provoca in generale un cambiamento asincrono delle uscite
15
Esempio la cassaforte (dotata di una doppia tastiera - due ingressi) si apre solo se gli ingressi hanno assunto NEL TEMPO le configurazioni
00-01-01-10 Ogni violazione della sequenza riporta il sistema nello stato iniziale NB Essendo gli ingressi campionati la sequenza di ingresso 01-01 egrave possibile e significativa
hellip Cassaforte hellip sincrona hellip
NB si puograve supporre che gli ingressi cambino allo stesso istante delle variabili di stato ma la cosa non egrave necessaria Se la rete egrave di tipo Moore anche se gli ingressi cambiano a metagrave di un periodo di clock il comportamento dal punto di vista degli stati e quindi delle uscite egrave assolutamente lo stesso (ogni variazione egrave rilevata solo alla fine del periodo)
E11101
0111
11
F0
01
01
G0
0000
11 00
11
11
10
1001
10
00
10 0110
01
01
00
Per ogni stato tutte le combinazioni di ingresso
00
10
10
11
C0A0 B0 D0
Gli stati NON sono stabili per gli ingressi che li hanno provocati
00
B
00 01 11 10
F A GA
B C A GB
B D A GCB F A ED
B F A GE
B F AA- GF
B F A GG
0
0
0
0
1
0
0
X1X2
A0 B0 C0 E10011
01
10
0111
11
11
D0 10
F0
01
01
G0
0000
00
00
11
11
10
1001
1010 0110
01
11
00
Cassaforte sincrona
16
01
NB in questo esempio non vi sono condizioni di indifferenza Anzicheacute di stati compatibili si parla qui di stati equivalenti Ove poi due stati per gli stessi ingressi abbiano uscite identiche e portino agli stessi stati si parla di stati indistinguibili Naturalmente la descrizione a parole puograve evidenziare che alcune combinazioni di ingresso per alcuni stati non si presentano In questo caso si ritorna al concetto di compatibilitagrave
00
17
Cassaforte sincrona
Classi di equivalenza [AFG] =gt a[B] =gt b[C] =gt g[D] =gt d[E] =gt e
B
00 01 11 10
F A GA
B C A GB
B D A GCB F A ED
B F A GE
B F AA- GF
B F A GG
0
0
0
0
1
0
0
X1X2
B
C
D
E
F
G
A B C D E F
CF
FD CD
CFGE
CFGE
DFGE
--- CF DF GE
--- C F DF GE --
b
00 01 11 10
a a aa
b g a ab
b d a ag
b a a ed
b a a ae
X1X2
0
0
0
0
1 NB nel caso di tabelle completamente specificate le classi (massime) di equivalenza non hanno mai stati in comune Vanno usate tutte quindi Non esiste problema di chiusura
Ovviamente 5 stati 4 facenti parte della sequenza e uno esterno
18
b
00 01 11 10
a a aa
b g a ab
b d a ag
b a a ed
b a a ae
X1X2
0
0
0
0
1
Cassaforte sincrona
001
00 01 11 10
000 000 000000
001 011 000 000001
001 010 000 000011
001 000 000 100010
001 000 000 000100
X1X2
-- -- -- --101
-- -- -- --111
-- -- -- --110
0
0
0
0
1
--
--
--
Y1Y2 Y3
a =gt 000b =gt 001g =gt 011d =gt 010e =gt 100
D1= X1X2Y2Y3
D2=X1X2Y3
D3=X1X2+X1Y2Y3 Z =Y1
Sintetizzando con FFD la sintesi degli ingressi Di si ottiene sintetizzando le funzioni Yi (Yn+1=Dn)
Nessun problema di corse codifica libera (possibilmente ottima)
19
Sintesi
Direttorio cassaforte sincrona
20
00 01 01 10
Sintesi ndash simulazione funzionale
NB Gli ingressi cambiano in modo NON sincrono con il clock ma lrsquo uscita egrave sincrona essendo la rete di tipo Moore
21
Sintesi ndash simulazione timing
Si notino i ritardi delle uscite dei FF e dei gates da esse dipendenti rispetto al fronte positivo del clock (ad esempio d) se la frequenza del clock fosse eccessiva il sistema NON funzionerebbe piugrave correttamente
d
22
E con Mealy
B
00 01 11 10
F A GA
B C A GB
B D A GCB F A ED
B F A GE
B F AA- GF
B F A GG
0
0
0
0
1
0
0
X1X2
B0
00 01 11 10
F0 A0 G0A
B0 C0 A0 G0B
B0 D0 A0 G0CB0 F0 A0 E1D
B1 F1 A1 G1E
B0 F0 A0A-G0F
B0 F0 A0 G0G
X1X2
Potrei mettere una indifferenza sullrsquouscita Si si possono mettere indifferenze sulle uscite che cambiano Anticipazione o ritardo del cambiamento
Sintetizzare e simulare con Altera
23
bull Allrsquoesame orale egrave necessario portare un esercizio di reti sincrone e uno di reti asincrone NON ldquomutuatordquo da altri hellip
bull I due esercizi debbono essere portati su una chiavetta (o dispositivo equivalente) debbono contenere una spiegazione e anche la progettazionesimulazione con Altera
bull Il candidato deve dimostrare di sapere usare il sistema Altera e spiegare i progetti portati
bull Gli esercizi di reti sincrone hanno spesso il diagramma degli stati ma solo per verificahellip
Monoimpulsore A
D1 Q1
Q1CKFFD
D2 Q2
Q2CKFFD Z1
D
Clock
Clock
D
Z
Q1
Q2
Qui lrsquoingresso asincrono D egrave sincronizzato dai FF Uscita Z sincrona
Generare un impulso di uscita di un periodo di clock per ingresso 1 Un ulteriore impulso viene generato solo se lrsquoingresso torna a 1 dopo essere stato a 0 Lrsquouscita deve essere sincronizzata con il clock
24
25
D1 Q1
Q1CKFFD
D2 Q2
Q2CKFFD Z
D
Clock
Monoimpulsore A
1
0
1
1
0
A0 B1
C0
0
A
A
A
-
B
C
C
-
DQ2
Q1
B
0 1
C
-
Z0
0
1
-
A 00
--
00
00
10
--
11
11
DQ2
Q1
01
0 1
11
10
Z0
0
-
1
0000
10
11
01
B
C
-
A
Q1=D Q2= DQ1 Z=Q1Q2
00
00
01
01
10
10
11
11
DQ2
Q1
01
0 1
11
10
Z0
0
0
1
00
MAhellip
Q1=D Q2= Q1 Z=Q1Q2
Moore necessariamente
26
D1 Q1
Q1CKFFD
D2 Q2
Q2CKFFD Z2
D
Clock
Monoimpulsore B
Clock
D
Z2
Q1
Q2
Lrsquoingresso asincrono D agisce direttamente sullrsquouscita Z che quindi risulta asincrona
Qui la rete egrave di tipo Mealy e quindi con ingresso asincrono egrave possibile che vi sia uscita asincrona
27
D Q
QCKFFD Z
D
Clock
Monoimpulsore C
Clock
D
Z
Q
Anche qui lrsquoingresso asincrono D agisce direttamente sullrsquouscita Z che quindi risulta asincronaSi noti che se lrsquoingresso oscilla una volta che il FF ha campionato un 1 e fino a quando non campiona uno 0 lrsquouscita oscilla
Qui la rete egrave di tipo Mealy e quindi con ingresso asincrono egrave possibile che vi sia uscita asincrona
28
Considerazioni sui monoimpulsori A B e C
Il diagramma degli stati corrispondente al funzionamento reale dei due monoimpulsori B e C NON puograve essere tracciato percheacute di fatto le due reti (di tipo Mealy) NON sono sincrone Infatti il diagramma di circuiti sincroni prevede implicitamente un comportamento sincrono anche degli ingressi fatto non verificato nei casi B e C
La cosa non vale per il monoimpulsore A in quanto pur essendo lrsquoingresso asincrono lrsquouscita (rete di tipo Moore) dipende solo dagli stati In altre parole il comportamento della rete rende intrinsecamente sincroni ingressi fisicamente asincroni
Il diagramma degli stati che riflette il comportamento delle due reti B e C puograve essere tracciato solo partendo da una analisi asincrona ldquoaprendordquo quindi i FF D inseriti Ovviamente egrave possibile progettare le due reti senza lrsquouso dei FF D partendo da un diagramma degli stati asincrono ldquotradizionalerdquo
A scopo di esercizio si suggerisce la sintesi e la simulazione con Altera dei tre monoimpulsori come reti asincrone Si tratta di circuiti on due ingressi Ck e D
29
Monoimpulsori A-B-C
30
31
Contatori
A B C D Z
Circuiti senza ingresso (a parte il clock) nella versione piugrave semplice
D0 Q0
Q0CKFFD
MUX
1
0D1 Q1
Q1CKFFD
(Il clock egrave spesso sottinteso nei circuiti sincroni)
U0 U1
Esempio contatore binario x 4 con decodifica del 3
000 010 100 111
OUT
Q1 cambia stato quando Q0 egrave a 1 e passa a 0
CK
u1
u0
OUT (0) (1) (2) (0) (1) (2)(3) (3)
Contatore x 4 con decodifica del 3
33
Contatori binari in base non potenza di 2
A B C D E
000 001 010 011 100Contatore
binario per 5
D0 Q0
Q0CKFFD
MUX
1
0 1D1 Q1
Q1CKFFD
MUX
1
0D Q2
Q2CKFFD
Questo conta x8 ma per contare x5 arrivati a 4 bisogna ritornare a 0
34
D0 Q0
Q0CKFFD D1 Q1
Q1CKFFD
MUX
1
0 D2 Q2
Q2CKFFD
MUX
1
0
ABC
ldquo4rdquo
Contatore x 5
Decoder
La decodifica del 4 porta a zero lrsquouscita del decodificatore e quindi a 0 tutte le uscite degli AND rosa e al successivo fronte positivo del clock i tre FF campionano uno ldquo0rdquo
Per esercizio sintetizzare un contatore x 100 partendo dalla sintesi di un contatore decimale ovvero di un contatore x10 (da sintetizzare) Quanti FF per un contatore decimale I contatori decimali si trovano integrati in Altera
ldquo3rdquo
35
Contatori con ingressi di controllo
Ex Contatore integrato x 16 con Load e Enable
bull Il contatore conta per 16 (0-15) se il segnale EN egrave a 1 Allorchegrave il segnale LD va a 1 il dato presente sugli ingressi D egrave inserito nei 4 FF (lrsquoingresso puograve essere sincrono o asincrono) Nel caso precedente il decodificatore del ldquo3rdquo (uscita vera va portato) allrsquoingresso LD con tutti i Di a zero
bull In generale il contatore fornisce anche unrsquouscita ldquocarryrdquo che va a 1 quando il contatore raggiunge il valore FF Questa uscita puograve essere connessa allrsquoenable di un contatore a valle per ottenere un contatore per 256 cosigrave via (Progettarlo come esercizio)
EN
Q0 Q1 Q2 Q3CKLD
D0 D1 D2 D3
EN
Q0 Q1 Q2 Q3CK
CYLD
D0 D1 D2 D3
bull Esistono contatori UPDOWN nei quali un ingresso (UD) seleziona se il conteggio deve avvenire avanti o indietro Nel caso sia selezionata la modalitagrave ldquoindietrordquo il carry si attiva quando si raggiunge il valore ldquotutti zerirdquo
bull Esiste una molteplicitagrave di contatori ciascuno con le proprie specifiche peculiaritagrave con o senza RESET (che normalmente agisce in modo asincrono) UD con o senza LD etc etc
NB qualunque circuito sincrono (con sequenza non binaria) riconducibile al diagramma degli stati di un contatore egrave sempre un contatore
101 010 000 111 110 Contatore x 5 non binario
36
74163 contatore reale x 16 con Load Reset e Enable (T e P)I segnali di controllo sono sincroni ovvero agiscono sul fronte positivo del clock (rising edge)
74138 decoder 38 con uscite negate se G2A e G2B entrambi a zero e G1 a 1 Altrimenti tutte uscite alte
Direttorio Counter Glitch
Contatore binario x 8 e glitches
37
Glitch
Simulazione timingNB la presenza e la durata del glitch dipende dalle caratteristiche elettriche dei dispositivi
dalla loro tecnologia etc Nel caso dei dispositivi Altera dipende dal tipo di dispositivo sul quale egrave realizzato il circuito Analogamente la sensibilitagrave di eventuali ingressi di clock collegati allrsquouscita con il glitch dipende dalle caratteristiche del dispositivo Se ad esempio nel dispositivo Altera utilizzato si collega allrsquouscita Y6 il clock di un FFD non si ha commutazione del FF ma questo non egrave vero in assoluto
38
Cosa succede al contatore X5 progettato precedentemente se allrsquoaccensione non disponendo di un segnale di RESET i FF si portano in uno stato non facente parte del cicloNB La condizione allrsquoaccensione egrave del tutto casuale e dipende unicamente dalle condizioni elettriche
di realizzazione Ersquo impredicibileSupponiamo che i FF si portino al valore 110 (il numero 6 fuori dal ciclo) Analizziamo il comportamento
D0 Q0Q0CK
FFD D1 Q1Q1CK
FFD
MUX
1
0 D2 Q2Q2CK
FFD
MUX
1
0
ABC
ldquo4rdquo
000 001 010 011 100 110 111
In questo caso ci si riporta nella situazione di conteggio regolare (verificare con la tabella degli stati ) ma il comportamento in generale dipende dalla realizzazione e in altre realizzazione i due stati potrebbero essere separati dal ciclo principale che quindi non verrebbe mai raggiunto Ecco la funzione del RESET
39
Solo come esempio (da non utilizzare ) a scopo didattico vediamo la tabella delle transizioni di un contatore per 6 UpDown con comando di Reset I segnali di ingresso cambiano in modo asincrono ma hanno effetto in modo sincrono
Per compensare allrsquoaccensione
Sintetizzare e simulareCome dovrebbe essere modificato lo schema in Altera per permettere di
ldquopresettarerdquo in modo asincrono il contatore a un particolare valore di ingresso
00 01 11 10UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
111
110
000 101
000
101
y3 y2 y100 01 11 10
UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
000 000111
000 000 000 000110
000 101
000
000 000
101
y3 y2 y1
40
D0Q0
CKFFD
Clocky2
DEC
y3
y2
y1
ldquo1rdquo
ldquo2rdquo
ldquo3rdquo
ldquo4rdquo
1
0
UPDown
Sintesi di y2 in modo ldquodirettordquo
1
0
00 01 11 10UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
000 000111
000 000 000 000110
000 101
000
000 000
101
y3 y2 y1
41
Cassaforte hellipDisponendo di un contatore per 8 (ma anche per 16 etc) con reset sincrono e sempre abilitato al conteggio come potrei realizzare il circuito di apertura della cassaforte (sequenza X1X2 00-01-01-10) con modello Moore
Cx8RES
Q0 Q1 Q2 CK
RES= (ldquo0rdquoX1X2 + ldquo1rdquo X1X2 + ldquo2rdquo X1X2 + ldquo3rdquo X1 X2)Z = ldquo4rdquo (ldquo0rdquordquo1rdquordquo2rdquordquo3rdquordquo4rdquo sono le decodifiche binarie delle tre uscite del contatore)
Il contatore si resetta ogni volta che non si presenta lrsquoingresso giusto relativo al particolare stato Ilcontatore quindi si resetta e rimane resettato se non nelle condizioni espresse dalla funzione RESIl contatore arrivato a 4 (Z=1) si resetta comunque al successivo fronte del clock
Le reti sincrone si progettano sempre come combinazione di blocchi disponibili e logica ldquorandomrdquo
ABC
ldquo0rdquoldquo1rdquoldquo2rdquoldquo3rdquoldquo4rdquo
RLAND-OR
X1X2
RESZ
Cx8RES
Q0 Q1 Q2 CK
42
Contatori
EN
Q0 Q1 Q2 Q3CKCY
RESET
bull Attenzione Consideriamo il contatore di figura (questa volta con RESET asincrono) e supponiamo di utilizzarlo per contare per 5 (NB per il Reset si usa il ldquo5rdquo in questo casohellip glitch)
ABCD
ldquo5rdquo
ldquo1rdquo Percheacute questo schema egrave sbagliato
bull Percheacute presenta una corsa critica Nel momento in cui anche uno solo dei FF si resetta (e non tutti nello stesso istante) viene a mancare la configurazione ldquo4rdquo sul decoder e quindi alcuni FF potrebbero non fare in tempo a resettarsi E allora
EN
Q0 Q1 Q2 Q3CKCY
RESET
ABCD
ldquo5rdquo
ldquo1rdquo
RS
Y ldquo0rdquo
bull Cosigrave facendo il ldquo4rdquo attiva il SET e il FF NON si resetta fino a quando non egrave stato raggiunto la ldquo0rdquo NB lo schema ldquosbagliatordquo si puograve usare solo se si egrave certi della rapiditagrave di reset dei FF del contatore
bull Verificare con Altera
Sintesi cassaforte con moduli
Altera Cassaforte sincrona con moduli
Rete di controllo
Contatore con Reset asincrono e Load sincrono
43
NB In questo progetto la sintesi egrave stata condotta in modo ldquodirettordquo ovvero senza passare per la sintesi formale e utilizzando componenti disponibili e helliphellip materia grigia La sintesi dei circuiti sincroni si fa sempre e unicamente cosigrave
44
Simulazione funzionale (no timing)
NB I segnali di ingresso sono campionati SOLO sul fronte positivo del clock anche se si presentano asincroni Il segnale di uscita si attiva al clock successivo al riconoscimento della sequenza La posizione di ldquoriposordquo del contatore egrave il valore 4 I segnali Yi sono le decodifiche dei segnali di di ingresso X1 e X2
00 01 01 10
45
Simulazione timing
46
NB Si egrave scelto di utilizzare SOLO gli ingressi SINCRONI del contatore per semplicitagrave Il contatore rimane al valore 100 fino a quando non si presenta allrsquoingresso il valore 00 Se la sequenza egrave esatta il contatore continua a contare in avanti fino alla generazione dellrsquouscita (valore 11 del contatore) altrimenti si riporta al valore 100 ovvero Qc=1) Il segnale GN (Gate Not) egrave quello che abilita il conteggio Il sistema riamane stabile a 000 per una sequenza lunga a piacere di X1=0 e X2=0 e si sposta quando dopo 00 si ha 01 Come si evince dalla simulazione se la sequenza non egrave corretta o egrave interrotta il contatore si riporta sempre a 100
00 01 11 10
001 000 000
X1
000000 010 100 100001
000 100 100 011010
100 100 100 100011
000 100 100 100100
000 100 100 100101
000 100 100 100110
000 100 100 100111
0
0
0
1
0
0
0
0
X2
000
NB la tabella delle transizioni derivata della rete realizzata NON ha ovviamente condizioni di indifferenza
47
Progettare un contatore packed BCD updown a 8 bit (due digit)
48
Generazione di forme drsquoondabull Ersquo possibile generare forme drsquoonda periodiche mediante circuiti sincroni di periodo
sottomultiplo intero del clock
Esempio 1Divisore di frequenza per 2
D0k Q0k
CK D Q
CK Clock
Q
Esempio 2 generare una forma drsquoonda periodica con periodo 5T (ove T sia il periodo del clock) in cui in un semiperiodo 3T lrsquouscita sia alta e nellrsquoaltro semiperiodo 2T lrsquouscita sia bassa
Q0 Q1 Q2 CK
Cx5
C
B
A
01234
DecoderDemux
Clock
ZZ T
3T2T
3T
NB una rete logica egrave in grado di effettuare delle divisioni di frequenza e mai delle moltiplicazioni di frequenza (che si possono ottenere solo con circuiti analogici non lineari)
49
Di che circuito si tratta
D0k Q0k
CK D0 Q0
CKQ0
D0k Q0k
CK D1 Q1
CK
D0k Q0k
CK D2 Q2
CKClock
Clock
Q0
Q1
Q2
Ersquo un contatore binario ma non sincrono Infatti i vari FF NON utilizzano lo stesso clock e questo porta a un piccolo disallineamento sulle uscite Non egrave sintetizzabile come una rete sincrona e una sintesi formale sarebbe possibile solo trattando il circuito come asincrono ovvero ldquoaprendordquo i FF Sarebbe possibile trasformarlo in un contatore x6 mantenendo la stessa impostazione
Sintetizzare e simulare con Altera
NB il segnale di clock non egrave in comune
50
7493
51
Altera Contatore asincrono
Contatore asincrono
52
Simulazione timing
53
Come puograve essere utilizzato un FFD per catturare un impulso piugrave breve di un periodo
D2 Q2
Q2CKFFD Z
Clock
D1 Q1
Q1CKFFD
D0 Q00
Q0CKFFD
ldquo1rdquo CL
Lrsquoimpulso breve viene catturato dal FF 0 (purcheacute di larghezza sufficiente per la tecnologia del FF) - che quindi agisce come integratore ndash la cui uscita alimenta il monoimpulsore di tipo A Lrsquoattivazione del FF 1 resetta il FF 0 (supponendo che il segnale di CL sia ldquopositiverdquotruerdquo)
Ci puograve essere un problema se il CL agisce in modo asincrono
NB questo circuito e quello del lucido precedente evidenziano il fatto che nella realtagrave nessuna rete egrave solo sincrona ma bensigrave egrave pressocheacute sempre necessario utilizzare reti di natura diversa anche percheacute vi egrave sempre una interazione fra reti con clock diversi eo con segnali provenienti dal mondo esterno NON sincronizzati con il clock
Monoimpulsore di tipo A ldquorivistordquo
54
bull Uno shift register a sinistra (a destra) egrave un registro composto da FFD che ad ogni clock trasferisce il valore del FF a destra (a sinistra) di ciascun FF nel FF stesso Nel FF piugrave a destra (sinistra) viene immesso uno ldquo0rdquo Questi tipi di registri shift si chiamano ldquologicirdquo
Shift register (registri a traslazione o scorrimento)
D0kQ0k
CK DnQn
CK
D0kQ0k
CK Dn-1Qn-1
CK
D0kQ0k
CK Dn-2Qn-2
CK
D0kQ0k
CK D0Q0
CK
ldquo0rdquo
Shift register a sinistra
bull Anche per i registri a traslazione esistono diverse versioni con ingresso parallelo e uscita seriale con ingresso seriale e uscita parallela con reset con load etc etc
bull Si noti che uno shift register egrave anche un contatore Si immagini per esempio che dopo un reset siano inseriti degli uni a partire da destra Lo shift register si riempie progressivamente di uni e quindi la posizione in cui egrave arrivato lrsquouno indica il valore del conteggio in base a un codice ldquouno su nrdquo (un codice decodificato)
bull Spesso uno stesso registro puograve traslare a destra o a sinistra in funzione di una segnale di controllo Ovviamente questo si ottiene premettendo a ogni ingresso Di un MUX a due vie che preleva in funzione del segnale di controllo Qigrave+1 o Qigrave-1 Con questa configurazione lo shift register diventa anche un contatore avantiindietro
Registro a scorrimento (shift-register) a 3 bit
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
IN
OUT2OUT1OUT0
CK
CK
IN
A_RESET
OUT1
OUT2
OUT0
Registro a scorrimento (shift-register) a 3 bit
57
Esempio 74164 (serial In parallel OUT)
bull In questo registro a traslazione ad ogni fronte positivo del clock i dati sono traslati a destra (Q0 -gt Q1 Q1-gtQ2 etc) Il registro egrave dotato in un Master Reset (vero negato) e il dato inserito nel FF Q0 egrave dato dallrsquoAND dei due ingressi Dsa e Dsb
bull Si noti che lrsquooperazione di shift corrisponde aritmeticamente alle operazioni di divisione e moltiplicazione per 2 Si supponga che in Q0 vi sia il bit meno significativo e in Q7 il meno significativo
0 1 1 0 1 0 1 0
010101102 = 10810
Shift left =gt x2
Shift right =gt 2
101011002 = 21610
001010112 = 5910
NB nel dispositivo i bit sono posti in ordine invertito e quindi un shift left del numero corrisponde a uno shift right sul dispositivo
58
bull Esistono anche i registri a traslazione ldquoaritmeticirdquo In questi shift register a destra anzicheacute fare entrare nel FF piugrave a sinistra lo ldquo0rdquo viene immesso sempre ripetutamente il suo valore logico
Shift aritmetico
Q7 Q6 Q5 Q4 Q3 Q2 Q1 Q0
D7 D6 D5 D4 D3 D2 D1 D0
I LDCK Esempio
11001010SRA
11100101 interpretato in complemento a 2
001101102=5410
C2 C2
000110112=2710
bull Lo shift aritmetico a destra effettua una divisione per 2 mantenendo il segno
59
Rotazione
Nei computer egrave sovente necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register
D0kQ0k
CK DnQn
CK
D0kQ0k
CK Dn-1Qn-1
CK
D0kQ0k
CK Dn-2Qn-2
CK
D0kQ0k
CK D0Q0
CK
Molto spesso nei computer egrave necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register con direzione programmabile In questo caso su D0 ad esempio puograve essere avviato o Q1 o Qn
60
Contatori con shift register ndash Contatore retroazionato EX-OR
Q2Q0
Shift right 3 bitDQ1
110 111 011 101 010 001
Diagramma degli stati disgiunto
Uno shift register con n FF retroazionato con un EX-OR (scelta degli ingressi variabile) egrave un contatore NON binario che conta per 2n-1 (purcheacute presettato a un valore diverso da tutti zeri)
000
100
61
Contatore di Johnson (riempimento e svuotamento)
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
000-gt100-gt110-gt111-gt011-gt001-gt000-gtStati isolati 101-gt010-gt101gt1
Poicheacute configurazioni adiacenti del codice Johnson differiscono di un solo bit il contatore puograve essere utilizzato per generare forme drsquoonda prive di alee
62
Contatore ad anello con un solo 1 (ovvero che genera direttamente il codice 1su n)
FFDD Q
QR
RESET
FFDD Q
QR
RESET
FFDD Q
QPR
RESET
OUT3OUT1OUT0
CK
FFDD Q
QR
RESET
OUT2
0001-gt1000-gt0100-gt0010-gt0010n FF per contare per n (mentre con i contatori binari il numero dei FF egrave il log2m ove m egrave il primo intero maggiore o uguale a n)
63
Barrel shifter (rotore)Un barrel shifter egrave uno shift register in grado di traslare di ldquonrdquo posizioni in un solo clock il contenuto dei suoi FF In figura egrave riportato il barrel shifter della Altera Gli ingressi A-H in presenza dellrsquoattivazione del segnale LDST al primo fronte positivo del clock sono depositati nei FF Quando LDST egrave 0 ad ogni fronte positivo del clock i bit di uscita sono ruotati di n posizioni in senso antiorario (ovvero lrsquouscita H diventa la G la G diventa la Fhellipe lrsquouscita A diventa la H) ove n egrave il valore binario indicato dai segnali S0 S1 e S2
Si noti che il circuito in questione egrave di fatto un registro con 8 FF allrsquoingresso di ciascuno dei quali egrave previsto un MUX a 8 vie che pilotato dai segnali S0 S1 e S2 che seleziona uno degli 8 uscite del dispositivo La struttura interna puograve essere osservata ldquoclikkandordquo due volte sul dispositivo nello schema di Altera
64
Barrel shifter
6565
66
Simulazione timing
67
bull Utilizzando il sistema Altera progettare un orologio con secondi minuti ora partendo da un oscillatore a quarzo con frequenza 500 KHz
bull E se si volesse proseguire e realizzare anche un datario (giorno mese e anno )
bull Come potrebbe essere integrato con una sveglia Si ricordi che lrsquoorologio deve essere anche essere ldquopresettatordquo
bull Quali circuiti utilizzare per la visualizzazione
68
EPROM
X0nZ0m
y0kY0k
Clock
D0kQ0k
FFD0k
CK D0kQ0k CK
Reti sincrone con EPROM
Al posto delle EPROM si utilizzano ora dei PLA ovvero dispositivi nei quali si nei quali le funzioni combinatorie sono ottimizzate ma il principio egrave assolutamente il medesimo
69
Progettare con Altera una rete logica sincrona che utilizzando registri 374 ALU 74181 un contatore e altri dispositivi ritenuti necessari permetta di eseguire in sequenza la somma di due dati di 4 bit senza segno ingresso esegua il complemento a 2 inverta la parte bassa con la parte alta del risultato e infine moltiplichi il tutto logicamente per 2
La soluzione egrave sempre decomponibile in tre sottosistemi il controllo con la sua decodifica (unitagrave di controllo) il percorso dei dati con le unitagrave che li trasformano (datapath) e i registri di deposito e di ingresso dei dati
Questa egrave la struttura base di qualunque unitagrave centrale di qualunque computer
La differenza consiste solo nel fatto che anzicheacute avere una sequenza fissa di operazioni ne viene generata una volta a volta che dipende appunto dalla istruzione che deve essere eseguita Come si vedragrave approfonditamente nel corso di Calcolatori T del II anno (prof Neri e Mattoccia)
Arrivederci al corso di Calcolatori T del II anno (sapendo perfettamente le reti logiche helliphellip)
4
Segnale di sincronismo
bull Il segnale di sincronismo viene sempre indicato con il nome di clock
bull Normalmente il segnale di clock egrave un segnale ripetitivo e cadenzato (questrsquoultima caratteristica pressocheacute sempre ma non necessariamente rispettata)
bull Un FF SR dotato di segnale di clock viene chiamato SR sincrono (che perograve NON egrave mai usato nella realtagrave)
bull Quali problemi vi sono con un segnale di clock come quello riportato in figura Lrsquoimpulso dovrebbe essere strettissimo dal momento che una rete combinatoria puograve consistere anche di un solo filo nel qual caso il ritardo da combattere sarebbe solo quello legato alla propagazione del segnale elettrico sui fili Di fatto irrealizzabile
Clock
T
5
I FF sincronibull Esistono molti FF di tipo sincrono ma oggi si usa UNICAMENTE il FF D il cui
comportamento egrave stato studiato come rete asincrona ma che qui viene utilizzato come FF sincrono (nella pratica nella sua versione 74xx74)
D Q
QCK D
bull Il FF D si chiama cosigrave percheacute D sta per Delay (ritardo) Infatti lrsquouscita Q segue lrsquoingresso D con un periodo T di ritardo (se il segnale di ingresso D egrave sincrono ndash ovvero generato contemporaneo al clock - nel rispetto di setup e hold - ad esempio da una rete controllata da altri FF D) oppure al primo fronte positivo del clock
bull Il triangolo sul clock (CK) indica che egrave edge triggered ovvero che scatta sul fronte positivo del clock
D Q
QCK DPR
CL
I segnali CL e PR agiscono in modo asincrono ovvero immediatamente senza attendere il clock
6
Reti sequenziali sincrone
bull La sintesi si effettua come nel caso della rete asincrona con retroazione diretta ma ingressi che rimangono costanti sono ingressi considerati dalla rete come diversi (in quanto presi in considerazione in istanti diversi e quindi in possibile presenza di stati diversi)
bull Ciograve che conta in questo caso egrave il fronte positivo del clock la distanza fra fronti positivi successivi (nel rispetto di setup e hold ndash v reti asincrone) NON ha importanza
bull Ovviamente il periodo (la frequenza) del clock deve essere superiore (inferiore) al massimo ritardo insito nella rete combinatoria La rete combinatoria deve essersi stabilizzata a seguito di un fronte del clock prima che il successivo fronte si presenti
Rete combinatoria
X0nZ0m
y0kY0k
Clock
D0kQ0k
FFD0k
CK D0kQ0k CK
Si veda lo schema delle reti asincrone con la retroazione tramite FF RS in cui S=R
Reti Sequenziali Sincrone (RSS)
k (k)FFD
k
k FFD sullrsquoanello di retroazione Tutti con lo stesso clock di periodo T
S S S SCK
S
U
S
I
t t+T t+2Tt-TNel caso specifico Moore o Mealy Lo stato cambia anche se non cambia lrsquoingresso
Lrsquouscita cambia anche se non cambia lrsquoingresso
CK
7
Il FFD come elemento fondamentale delle RSSSe allrsquoingresso CK viene inviato un segnale periodico (clock) il FFD ritarda (D = Delay) il segnale di uscita Q rispetto al segnale di ingresso D di un tempo pari al periodo di clock T se il cambiamento del segnale D egrave contemporaneo a quelli clock (nel rispetto di setup e hold)
Qn+1 = Dn
D
CK
QT T T T
FFDD
CK
Q
Q
D
CK
Q
Q
8
NB il concetto di contemporaneitagrave potrebbe apparire in contrasto con la necessitagrave di rispettare i tempi di setup e hold Di fatto gli ingressi di una rete sincrona sono nella larga maggioranza provenienti da altre reti che hanno lo stesso clock e quindi sono generati con i ritardi delle reti soggette al clock rispettando quindi di fatto i tempi previsti Di fatto le variazioni degli ingressi sono sempre un porsquo posteriori alla variazione del clock Si veda in seguito il comportamento dei registri a traslazione
NB essendo qui il tempo discretizzato si usa n e
n+1 al posto di T e T+t
Alcune considerazioni sulle RSS
bull Lo stato della rete cambia solo in corrispondenza dei fronti di salita del clock che si susseguono con periodo T
bull La rete risponde ogni T se si desidera massimizzare la velocitagrave di risposta della rArruscita egrave necessario adottare il modello di Mealy
bull La sequenza degli stati della rete egrave svincolata dai ritardi della rete combinatoria (purcheacute la distanza fra i fronti positivi del segnale clock sia superiore al massimo ritardo della rete combinatoria) Quindi nessun problema di corse critiche
bull Allrsquointerno di uno stesso progetto (ad esempio un processore) sono tipicamente presenti piugrave RSS e non necessariamente per tutte le RSS il clock egrave lo stesso eo coincide con il clock del processore
bull Le RSS sono piugrave facili da progettare delle RSA
9
Clock gating e glitch sul clockNelle reti sincrone egrave necessario evitare variazioni spurie (glitches) del segnale di clock che possono provocare commutazioni indesiderate dei FFD (che sono sensibili ai fronti)
Ad esempio per via dei ritardi tra gli n segnali I[n-10] eo le alee introdotte dalla rete combinatoria di decodifica a causa del ldquoclock gatingldquo puograve verificarsi quanto segue
CK
P
CK_G
Glitch sul clock rarr possibile commutazione spuria del FFD
X
CK
Q
QFFD
D
CK
Q
QCK_GRete di Decodifica
I[n-10]P
t
NO
10
Naturalmente tutto dipende dalla larghezza dellrsquoimpulso spurio se molto stretto il FF potrebbe non sentirlo Quindi il clock gating non egrave proibito ma egrave un rischio da evitare in caso di incertezza
11
Per transizioni che debbono o meno verificarsi in funzione del valore della rete di decodifica bisogna condizionare il segnale D come in figura Se la rete di decodifica genera il valore 1 lrsquouscita Q assume al clock il valore di X altrimenti lrsquouscita Q copia seacute stessa e rimane invariata
Clock gating e glitch sul clock
X
CK
Q
QFFD
D
CK
Q
Q
I[n-10] P
t
01SEL
01SEL
Rete di Decodifica
Il clock gating oltre a generare potenziali glitch introduceldquoclock-skewrdquo (disallineamento) Ad esempio consideriamo due RSS soggette al FF1 e al FF2
Clock gating e clock-skew
CK
CK_GtAND tAND
I clock delle due reti sono sfasati di un tempo pari al ritardo introdotto dallrsquoAND (in generale dalla eventuale RC) interposto Tale fenomeno (ldquoclock-skewrdquo) egrave potenzialmente dannoso in quanto il FF2 potrebbe fare campionare alla propria RC in presenza dello stesso fronte di clock i nuovi valori prodotti dalla RC alimentata dal FF1
NB Il ldquoclock-skewrdquo non egrave causato solo dal clock gating ma anche (ad esempio) da percorsi elettrici di lunghezza diversa
I1
CK
B
BCK_GP
I2
CK
A
A
tAND
FFD-1D
CK
Q
QFFD-2
D
CK
Q
Q
12
13
Sincronizzazione degli ingressibull Finora si egrave dato implicitamente per scontato che gli ingressi di una rete sincrona commutino
in modo sincrono con il clock
bull Ciograve egrave verificato se gli ingressi provengono da una rete sincrona di tipo Moore nella quale le uscite sono funzione solo dello stato che commuta solo al fronte positivo del clock
Rete combinatoria
X0n
Z0m
y0k
Y0k
Clock
D0kQ0k
FFD0k
CK D0kQ0k CK
Rete combinatoria
bull Nella realtagrave le cose stanno diversamente Si pensi al caso di pulsanti esterni che costituiscano lrsquo ingresso della rete Il cambiamento puograve avvenire in un istante qualsiasi
bull Nella rete di figura (Moore) le uscite sono comunque certamente sincronizzate con il clock e se gli ingressi X0n cambiano in un momento qualsiasi non sincronizzato il cambiamento viene percepito dai FF di retroazione solo al fronte positivo del clock e quindi il comportamento delle uscite della rete egrave il medesimo che si avrebbe se gli ingressi fossero sincronizzati
14
Sincronizzazione degli ingressi
bull La cosa cambia perograve se la rete egrave di tipo Mealy
Rete combinatoria
X0nZ0m
y0kY0k
Clock
D0kQ0k
FFD0k
CK D0kQ0k CK
bull In questo caso un cambiamento asincrono degli ingressi provoca in generale un cambiamento asincrono delle uscite
15
Esempio la cassaforte (dotata di una doppia tastiera - due ingressi) si apre solo se gli ingressi hanno assunto NEL TEMPO le configurazioni
00-01-01-10 Ogni violazione della sequenza riporta il sistema nello stato iniziale NB Essendo gli ingressi campionati la sequenza di ingresso 01-01 egrave possibile e significativa
hellip Cassaforte hellip sincrona hellip
NB si puograve supporre che gli ingressi cambino allo stesso istante delle variabili di stato ma la cosa non egrave necessaria Se la rete egrave di tipo Moore anche se gli ingressi cambiano a metagrave di un periodo di clock il comportamento dal punto di vista degli stati e quindi delle uscite egrave assolutamente lo stesso (ogni variazione egrave rilevata solo alla fine del periodo)
E11101
0111
11
F0
01
01
G0
0000
11 00
11
11
10
1001
10
00
10 0110
01
01
00
Per ogni stato tutte le combinazioni di ingresso
00
10
10
11
C0A0 B0 D0
Gli stati NON sono stabili per gli ingressi che li hanno provocati
00
B
00 01 11 10
F A GA
B C A GB
B D A GCB F A ED
B F A GE
B F AA- GF
B F A GG
0
0
0
0
1
0
0
X1X2
A0 B0 C0 E10011
01
10
0111
11
11
D0 10
F0
01
01
G0
0000
00
00
11
11
10
1001
1010 0110
01
11
00
Cassaforte sincrona
16
01
NB in questo esempio non vi sono condizioni di indifferenza Anzicheacute di stati compatibili si parla qui di stati equivalenti Ove poi due stati per gli stessi ingressi abbiano uscite identiche e portino agli stessi stati si parla di stati indistinguibili Naturalmente la descrizione a parole puograve evidenziare che alcune combinazioni di ingresso per alcuni stati non si presentano In questo caso si ritorna al concetto di compatibilitagrave
00
17
Cassaforte sincrona
Classi di equivalenza [AFG] =gt a[B] =gt b[C] =gt g[D] =gt d[E] =gt e
B
00 01 11 10
F A GA
B C A GB
B D A GCB F A ED
B F A GE
B F AA- GF
B F A GG
0
0
0
0
1
0
0
X1X2
B
C
D
E
F
G
A B C D E F
CF
FD CD
CFGE
CFGE
DFGE
--- CF DF GE
--- C F DF GE --
b
00 01 11 10
a a aa
b g a ab
b d a ag
b a a ed
b a a ae
X1X2
0
0
0
0
1 NB nel caso di tabelle completamente specificate le classi (massime) di equivalenza non hanno mai stati in comune Vanno usate tutte quindi Non esiste problema di chiusura
Ovviamente 5 stati 4 facenti parte della sequenza e uno esterno
18
b
00 01 11 10
a a aa
b g a ab
b d a ag
b a a ed
b a a ae
X1X2
0
0
0
0
1
Cassaforte sincrona
001
00 01 11 10
000 000 000000
001 011 000 000001
001 010 000 000011
001 000 000 100010
001 000 000 000100
X1X2
-- -- -- --101
-- -- -- --111
-- -- -- --110
0
0
0
0
1
--
--
--
Y1Y2 Y3
a =gt 000b =gt 001g =gt 011d =gt 010e =gt 100
D1= X1X2Y2Y3
D2=X1X2Y3
D3=X1X2+X1Y2Y3 Z =Y1
Sintetizzando con FFD la sintesi degli ingressi Di si ottiene sintetizzando le funzioni Yi (Yn+1=Dn)
Nessun problema di corse codifica libera (possibilmente ottima)
19
Sintesi
Direttorio cassaforte sincrona
20
00 01 01 10
Sintesi ndash simulazione funzionale
NB Gli ingressi cambiano in modo NON sincrono con il clock ma lrsquo uscita egrave sincrona essendo la rete di tipo Moore
21
Sintesi ndash simulazione timing
Si notino i ritardi delle uscite dei FF e dei gates da esse dipendenti rispetto al fronte positivo del clock (ad esempio d) se la frequenza del clock fosse eccessiva il sistema NON funzionerebbe piugrave correttamente
d
22
E con Mealy
B
00 01 11 10
F A GA
B C A GB
B D A GCB F A ED
B F A GE
B F AA- GF
B F A GG
0
0
0
0
1
0
0
X1X2
B0
00 01 11 10
F0 A0 G0A
B0 C0 A0 G0B
B0 D0 A0 G0CB0 F0 A0 E1D
B1 F1 A1 G1E
B0 F0 A0A-G0F
B0 F0 A0 G0G
X1X2
Potrei mettere una indifferenza sullrsquouscita Si si possono mettere indifferenze sulle uscite che cambiano Anticipazione o ritardo del cambiamento
Sintetizzare e simulare con Altera
23
bull Allrsquoesame orale egrave necessario portare un esercizio di reti sincrone e uno di reti asincrone NON ldquomutuatordquo da altri hellip
bull I due esercizi debbono essere portati su una chiavetta (o dispositivo equivalente) debbono contenere una spiegazione e anche la progettazionesimulazione con Altera
bull Il candidato deve dimostrare di sapere usare il sistema Altera e spiegare i progetti portati
bull Gli esercizi di reti sincrone hanno spesso il diagramma degli stati ma solo per verificahellip
Monoimpulsore A
D1 Q1
Q1CKFFD
D2 Q2
Q2CKFFD Z1
D
Clock
Clock
D
Z
Q1
Q2
Qui lrsquoingresso asincrono D egrave sincronizzato dai FF Uscita Z sincrona
Generare un impulso di uscita di un periodo di clock per ingresso 1 Un ulteriore impulso viene generato solo se lrsquoingresso torna a 1 dopo essere stato a 0 Lrsquouscita deve essere sincronizzata con il clock
24
25
D1 Q1
Q1CKFFD
D2 Q2
Q2CKFFD Z
D
Clock
Monoimpulsore A
1
0
1
1
0
A0 B1
C0
0
A
A
A
-
B
C
C
-
DQ2
Q1
B
0 1
C
-
Z0
0
1
-
A 00
--
00
00
10
--
11
11
DQ2
Q1
01
0 1
11
10
Z0
0
-
1
0000
10
11
01
B
C
-
A
Q1=D Q2= DQ1 Z=Q1Q2
00
00
01
01
10
10
11
11
DQ2
Q1
01
0 1
11
10
Z0
0
0
1
00
MAhellip
Q1=D Q2= Q1 Z=Q1Q2
Moore necessariamente
26
D1 Q1
Q1CKFFD
D2 Q2
Q2CKFFD Z2
D
Clock
Monoimpulsore B
Clock
D
Z2
Q1
Q2
Lrsquoingresso asincrono D agisce direttamente sullrsquouscita Z che quindi risulta asincrona
Qui la rete egrave di tipo Mealy e quindi con ingresso asincrono egrave possibile che vi sia uscita asincrona
27
D Q
QCKFFD Z
D
Clock
Monoimpulsore C
Clock
D
Z
Q
Anche qui lrsquoingresso asincrono D agisce direttamente sullrsquouscita Z che quindi risulta asincronaSi noti che se lrsquoingresso oscilla una volta che il FF ha campionato un 1 e fino a quando non campiona uno 0 lrsquouscita oscilla
Qui la rete egrave di tipo Mealy e quindi con ingresso asincrono egrave possibile che vi sia uscita asincrona
28
Considerazioni sui monoimpulsori A B e C
Il diagramma degli stati corrispondente al funzionamento reale dei due monoimpulsori B e C NON puograve essere tracciato percheacute di fatto le due reti (di tipo Mealy) NON sono sincrone Infatti il diagramma di circuiti sincroni prevede implicitamente un comportamento sincrono anche degli ingressi fatto non verificato nei casi B e C
La cosa non vale per il monoimpulsore A in quanto pur essendo lrsquoingresso asincrono lrsquouscita (rete di tipo Moore) dipende solo dagli stati In altre parole il comportamento della rete rende intrinsecamente sincroni ingressi fisicamente asincroni
Il diagramma degli stati che riflette il comportamento delle due reti B e C puograve essere tracciato solo partendo da una analisi asincrona ldquoaprendordquo quindi i FF D inseriti Ovviamente egrave possibile progettare le due reti senza lrsquouso dei FF D partendo da un diagramma degli stati asincrono ldquotradizionalerdquo
A scopo di esercizio si suggerisce la sintesi e la simulazione con Altera dei tre monoimpulsori come reti asincrone Si tratta di circuiti on due ingressi Ck e D
29
Monoimpulsori A-B-C
30
31
Contatori
A B C D Z
Circuiti senza ingresso (a parte il clock) nella versione piugrave semplice
D0 Q0
Q0CKFFD
MUX
1
0D1 Q1
Q1CKFFD
(Il clock egrave spesso sottinteso nei circuiti sincroni)
U0 U1
Esempio contatore binario x 4 con decodifica del 3
000 010 100 111
OUT
Q1 cambia stato quando Q0 egrave a 1 e passa a 0
CK
u1
u0
OUT (0) (1) (2) (0) (1) (2)(3) (3)
Contatore x 4 con decodifica del 3
33
Contatori binari in base non potenza di 2
A B C D E
000 001 010 011 100Contatore
binario per 5
D0 Q0
Q0CKFFD
MUX
1
0 1D1 Q1
Q1CKFFD
MUX
1
0D Q2
Q2CKFFD
Questo conta x8 ma per contare x5 arrivati a 4 bisogna ritornare a 0
34
D0 Q0
Q0CKFFD D1 Q1
Q1CKFFD
MUX
1
0 D2 Q2
Q2CKFFD
MUX
1
0
ABC
ldquo4rdquo
Contatore x 5
Decoder
La decodifica del 4 porta a zero lrsquouscita del decodificatore e quindi a 0 tutte le uscite degli AND rosa e al successivo fronte positivo del clock i tre FF campionano uno ldquo0rdquo
Per esercizio sintetizzare un contatore x 100 partendo dalla sintesi di un contatore decimale ovvero di un contatore x10 (da sintetizzare) Quanti FF per un contatore decimale I contatori decimali si trovano integrati in Altera
ldquo3rdquo
35
Contatori con ingressi di controllo
Ex Contatore integrato x 16 con Load e Enable
bull Il contatore conta per 16 (0-15) se il segnale EN egrave a 1 Allorchegrave il segnale LD va a 1 il dato presente sugli ingressi D egrave inserito nei 4 FF (lrsquoingresso puograve essere sincrono o asincrono) Nel caso precedente il decodificatore del ldquo3rdquo (uscita vera va portato) allrsquoingresso LD con tutti i Di a zero
bull In generale il contatore fornisce anche unrsquouscita ldquocarryrdquo che va a 1 quando il contatore raggiunge il valore FF Questa uscita puograve essere connessa allrsquoenable di un contatore a valle per ottenere un contatore per 256 cosigrave via (Progettarlo come esercizio)
EN
Q0 Q1 Q2 Q3CKLD
D0 D1 D2 D3
EN
Q0 Q1 Q2 Q3CK
CYLD
D0 D1 D2 D3
bull Esistono contatori UPDOWN nei quali un ingresso (UD) seleziona se il conteggio deve avvenire avanti o indietro Nel caso sia selezionata la modalitagrave ldquoindietrordquo il carry si attiva quando si raggiunge il valore ldquotutti zerirdquo
bull Esiste una molteplicitagrave di contatori ciascuno con le proprie specifiche peculiaritagrave con o senza RESET (che normalmente agisce in modo asincrono) UD con o senza LD etc etc
NB qualunque circuito sincrono (con sequenza non binaria) riconducibile al diagramma degli stati di un contatore egrave sempre un contatore
101 010 000 111 110 Contatore x 5 non binario
36
74163 contatore reale x 16 con Load Reset e Enable (T e P)I segnali di controllo sono sincroni ovvero agiscono sul fronte positivo del clock (rising edge)
74138 decoder 38 con uscite negate se G2A e G2B entrambi a zero e G1 a 1 Altrimenti tutte uscite alte
Direttorio Counter Glitch
Contatore binario x 8 e glitches
37
Glitch
Simulazione timingNB la presenza e la durata del glitch dipende dalle caratteristiche elettriche dei dispositivi
dalla loro tecnologia etc Nel caso dei dispositivi Altera dipende dal tipo di dispositivo sul quale egrave realizzato il circuito Analogamente la sensibilitagrave di eventuali ingressi di clock collegati allrsquouscita con il glitch dipende dalle caratteristiche del dispositivo Se ad esempio nel dispositivo Altera utilizzato si collega allrsquouscita Y6 il clock di un FFD non si ha commutazione del FF ma questo non egrave vero in assoluto
38
Cosa succede al contatore X5 progettato precedentemente se allrsquoaccensione non disponendo di un segnale di RESET i FF si portano in uno stato non facente parte del cicloNB La condizione allrsquoaccensione egrave del tutto casuale e dipende unicamente dalle condizioni elettriche
di realizzazione Ersquo impredicibileSupponiamo che i FF si portino al valore 110 (il numero 6 fuori dal ciclo) Analizziamo il comportamento
D0 Q0Q0CK
FFD D1 Q1Q1CK
FFD
MUX
1
0 D2 Q2Q2CK
FFD
MUX
1
0
ABC
ldquo4rdquo
000 001 010 011 100 110 111
In questo caso ci si riporta nella situazione di conteggio regolare (verificare con la tabella degli stati ) ma il comportamento in generale dipende dalla realizzazione e in altre realizzazione i due stati potrebbero essere separati dal ciclo principale che quindi non verrebbe mai raggiunto Ecco la funzione del RESET
39
Solo come esempio (da non utilizzare ) a scopo didattico vediamo la tabella delle transizioni di un contatore per 6 UpDown con comando di Reset I segnali di ingresso cambiano in modo asincrono ma hanno effetto in modo sincrono
Per compensare allrsquoaccensione
Sintetizzare e simulareCome dovrebbe essere modificato lo schema in Altera per permettere di
ldquopresettarerdquo in modo asincrono il contatore a un particolare valore di ingresso
00 01 11 10UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
111
110
000 101
000
101
y3 y2 y100 01 11 10
UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
000 000111
000 000 000 000110
000 101
000
000 000
101
y3 y2 y1
40
D0Q0
CKFFD
Clocky2
DEC
y3
y2
y1
ldquo1rdquo
ldquo2rdquo
ldquo3rdquo
ldquo4rdquo
1
0
UPDown
Sintesi di y2 in modo ldquodirettordquo
1
0
00 01 11 10UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
000 000111
000 000 000 000110
000 101
000
000 000
101
y3 y2 y1
41
Cassaforte hellipDisponendo di un contatore per 8 (ma anche per 16 etc) con reset sincrono e sempre abilitato al conteggio come potrei realizzare il circuito di apertura della cassaforte (sequenza X1X2 00-01-01-10) con modello Moore
Cx8RES
Q0 Q1 Q2 CK
RES= (ldquo0rdquoX1X2 + ldquo1rdquo X1X2 + ldquo2rdquo X1X2 + ldquo3rdquo X1 X2)Z = ldquo4rdquo (ldquo0rdquordquo1rdquordquo2rdquordquo3rdquordquo4rdquo sono le decodifiche binarie delle tre uscite del contatore)
Il contatore si resetta ogni volta che non si presenta lrsquoingresso giusto relativo al particolare stato Ilcontatore quindi si resetta e rimane resettato se non nelle condizioni espresse dalla funzione RESIl contatore arrivato a 4 (Z=1) si resetta comunque al successivo fronte del clock
Le reti sincrone si progettano sempre come combinazione di blocchi disponibili e logica ldquorandomrdquo
ABC
ldquo0rdquoldquo1rdquoldquo2rdquoldquo3rdquoldquo4rdquo
RLAND-OR
X1X2
RESZ
Cx8RES
Q0 Q1 Q2 CK
42
Contatori
EN
Q0 Q1 Q2 Q3CKCY
RESET
bull Attenzione Consideriamo il contatore di figura (questa volta con RESET asincrono) e supponiamo di utilizzarlo per contare per 5 (NB per il Reset si usa il ldquo5rdquo in questo casohellip glitch)
ABCD
ldquo5rdquo
ldquo1rdquo Percheacute questo schema egrave sbagliato
bull Percheacute presenta una corsa critica Nel momento in cui anche uno solo dei FF si resetta (e non tutti nello stesso istante) viene a mancare la configurazione ldquo4rdquo sul decoder e quindi alcuni FF potrebbero non fare in tempo a resettarsi E allora
EN
Q0 Q1 Q2 Q3CKCY
RESET
ABCD
ldquo5rdquo
ldquo1rdquo
RS
Y ldquo0rdquo
bull Cosigrave facendo il ldquo4rdquo attiva il SET e il FF NON si resetta fino a quando non egrave stato raggiunto la ldquo0rdquo NB lo schema ldquosbagliatordquo si puograve usare solo se si egrave certi della rapiditagrave di reset dei FF del contatore
bull Verificare con Altera
Sintesi cassaforte con moduli
Altera Cassaforte sincrona con moduli
Rete di controllo
Contatore con Reset asincrono e Load sincrono
43
NB In questo progetto la sintesi egrave stata condotta in modo ldquodirettordquo ovvero senza passare per la sintesi formale e utilizzando componenti disponibili e helliphellip materia grigia La sintesi dei circuiti sincroni si fa sempre e unicamente cosigrave
44
Simulazione funzionale (no timing)
NB I segnali di ingresso sono campionati SOLO sul fronte positivo del clock anche se si presentano asincroni Il segnale di uscita si attiva al clock successivo al riconoscimento della sequenza La posizione di ldquoriposordquo del contatore egrave il valore 4 I segnali Yi sono le decodifiche dei segnali di di ingresso X1 e X2
00 01 01 10
45
Simulazione timing
46
NB Si egrave scelto di utilizzare SOLO gli ingressi SINCRONI del contatore per semplicitagrave Il contatore rimane al valore 100 fino a quando non si presenta allrsquoingresso il valore 00 Se la sequenza egrave esatta il contatore continua a contare in avanti fino alla generazione dellrsquouscita (valore 11 del contatore) altrimenti si riporta al valore 100 ovvero Qc=1) Il segnale GN (Gate Not) egrave quello che abilita il conteggio Il sistema riamane stabile a 000 per una sequenza lunga a piacere di X1=0 e X2=0 e si sposta quando dopo 00 si ha 01 Come si evince dalla simulazione se la sequenza non egrave corretta o egrave interrotta il contatore si riporta sempre a 100
00 01 11 10
001 000 000
X1
000000 010 100 100001
000 100 100 011010
100 100 100 100011
000 100 100 100100
000 100 100 100101
000 100 100 100110
000 100 100 100111
0
0
0
1
0
0
0
0
X2
000
NB la tabella delle transizioni derivata della rete realizzata NON ha ovviamente condizioni di indifferenza
47
Progettare un contatore packed BCD updown a 8 bit (due digit)
48
Generazione di forme drsquoondabull Ersquo possibile generare forme drsquoonda periodiche mediante circuiti sincroni di periodo
sottomultiplo intero del clock
Esempio 1Divisore di frequenza per 2
D0k Q0k
CK D Q
CK Clock
Q
Esempio 2 generare una forma drsquoonda periodica con periodo 5T (ove T sia il periodo del clock) in cui in un semiperiodo 3T lrsquouscita sia alta e nellrsquoaltro semiperiodo 2T lrsquouscita sia bassa
Q0 Q1 Q2 CK
Cx5
C
B
A
01234
DecoderDemux
Clock
ZZ T
3T2T
3T
NB una rete logica egrave in grado di effettuare delle divisioni di frequenza e mai delle moltiplicazioni di frequenza (che si possono ottenere solo con circuiti analogici non lineari)
49
Di che circuito si tratta
D0k Q0k
CK D0 Q0
CKQ0
D0k Q0k
CK D1 Q1
CK
D0k Q0k
CK D2 Q2
CKClock
Clock
Q0
Q1
Q2
Ersquo un contatore binario ma non sincrono Infatti i vari FF NON utilizzano lo stesso clock e questo porta a un piccolo disallineamento sulle uscite Non egrave sintetizzabile come una rete sincrona e una sintesi formale sarebbe possibile solo trattando il circuito come asincrono ovvero ldquoaprendordquo i FF Sarebbe possibile trasformarlo in un contatore x6 mantenendo la stessa impostazione
Sintetizzare e simulare con Altera
NB il segnale di clock non egrave in comune
50
7493
51
Altera Contatore asincrono
Contatore asincrono
52
Simulazione timing
53
Come puograve essere utilizzato un FFD per catturare un impulso piugrave breve di un periodo
D2 Q2
Q2CKFFD Z
Clock
D1 Q1
Q1CKFFD
D0 Q00
Q0CKFFD
ldquo1rdquo CL
Lrsquoimpulso breve viene catturato dal FF 0 (purcheacute di larghezza sufficiente per la tecnologia del FF) - che quindi agisce come integratore ndash la cui uscita alimenta il monoimpulsore di tipo A Lrsquoattivazione del FF 1 resetta il FF 0 (supponendo che il segnale di CL sia ldquopositiverdquotruerdquo)
Ci puograve essere un problema se il CL agisce in modo asincrono
NB questo circuito e quello del lucido precedente evidenziano il fatto che nella realtagrave nessuna rete egrave solo sincrona ma bensigrave egrave pressocheacute sempre necessario utilizzare reti di natura diversa anche percheacute vi egrave sempre una interazione fra reti con clock diversi eo con segnali provenienti dal mondo esterno NON sincronizzati con il clock
Monoimpulsore di tipo A ldquorivistordquo
54
bull Uno shift register a sinistra (a destra) egrave un registro composto da FFD che ad ogni clock trasferisce il valore del FF a destra (a sinistra) di ciascun FF nel FF stesso Nel FF piugrave a destra (sinistra) viene immesso uno ldquo0rdquo Questi tipi di registri shift si chiamano ldquologicirdquo
Shift register (registri a traslazione o scorrimento)
D0kQ0k
CK DnQn
CK
D0kQ0k
CK Dn-1Qn-1
CK
D0kQ0k
CK Dn-2Qn-2
CK
D0kQ0k
CK D0Q0
CK
ldquo0rdquo
Shift register a sinistra
bull Anche per i registri a traslazione esistono diverse versioni con ingresso parallelo e uscita seriale con ingresso seriale e uscita parallela con reset con load etc etc
bull Si noti che uno shift register egrave anche un contatore Si immagini per esempio che dopo un reset siano inseriti degli uni a partire da destra Lo shift register si riempie progressivamente di uni e quindi la posizione in cui egrave arrivato lrsquouno indica il valore del conteggio in base a un codice ldquouno su nrdquo (un codice decodificato)
bull Spesso uno stesso registro puograve traslare a destra o a sinistra in funzione di una segnale di controllo Ovviamente questo si ottiene premettendo a ogni ingresso Di un MUX a due vie che preleva in funzione del segnale di controllo Qigrave+1 o Qigrave-1 Con questa configurazione lo shift register diventa anche un contatore avantiindietro
Registro a scorrimento (shift-register) a 3 bit
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
IN
OUT2OUT1OUT0
CK
CK
IN
A_RESET
OUT1
OUT2
OUT0
Registro a scorrimento (shift-register) a 3 bit
57
Esempio 74164 (serial In parallel OUT)
bull In questo registro a traslazione ad ogni fronte positivo del clock i dati sono traslati a destra (Q0 -gt Q1 Q1-gtQ2 etc) Il registro egrave dotato in un Master Reset (vero negato) e il dato inserito nel FF Q0 egrave dato dallrsquoAND dei due ingressi Dsa e Dsb
bull Si noti che lrsquooperazione di shift corrisponde aritmeticamente alle operazioni di divisione e moltiplicazione per 2 Si supponga che in Q0 vi sia il bit meno significativo e in Q7 il meno significativo
0 1 1 0 1 0 1 0
010101102 = 10810
Shift left =gt x2
Shift right =gt 2
101011002 = 21610
001010112 = 5910
NB nel dispositivo i bit sono posti in ordine invertito e quindi un shift left del numero corrisponde a uno shift right sul dispositivo
58
bull Esistono anche i registri a traslazione ldquoaritmeticirdquo In questi shift register a destra anzicheacute fare entrare nel FF piugrave a sinistra lo ldquo0rdquo viene immesso sempre ripetutamente il suo valore logico
Shift aritmetico
Q7 Q6 Q5 Q4 Q3 Q2 Q1 Q0
D7 D6 D5 D4 D3 D2 D1 D0
I LDCK Esempio
11001010SRA
11100101 interpretato in complemento a 2
001101102=5410
C2 C2
000110112=2710
bull Lo shift aritmetico a destra effettua una divisione per 2 mantenendo il segno
59
Rotazione
Nei computer egrave sovente necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register
D0kQ0k
CK DnQn
CK
D0kQ0k
CK Dn-1Qn-1
CK
D0kQ0k
CK Dn-2Qn-2
CK
D0kQ0k
CK D0Q0
CK
Molto spesso nei computer egrave necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register con direzione programmabile In questo caso su D0 ad esempio puograve essere avviato o Q1 o Qn
60
Contatori con shift register ndash Contatore retroazionato EX-OR
Q2Q0
Shift right 3 bitDQ1
110 111 011 101 010 001
Diagramma degli stati disgiunto
Uno shift register con n FF retroazionato con un EX-OR (scelta degli ingressi variabile) egrave un contatore NON binario che conta per 2n-1 (purcheacute presettato a un valore diverso da tutti zeri)
000
100
61
Contatore di Johnson (riempimento e svuotamento)
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
000-gt100-gt110-gt111-gt011-gt001-gt000-gtStati isolati 101-gt010-gt101gt1
Poicheacute configurazioni adiacenti del codice Johnson differiscono di un solo bit il contatore puograve essere utilizzato per generare forme drsquoonda prive di alee
62
Contatore ad anello con un solo 1 (ovvero che genera direttamente il codice 1su n)
FFDD Q
QR
RESET
FFDD Q
QR
RESET
FFDD Q
QPR
RESET
OUT3OUT1OUT0
CK
FFDD Q
QR
RESET
OUT2
0001-gt1000-gt0100-gt0010-gt0010n FF per contare per n (mentre con i contatori binari il numero dei FF egrave il log2m ove m egrave il primo intero maggiore o uguale a n)
63
Barrel shifter (rotore)Un barrel shifter egrave uno shift register in grado di traslare di ldquonrdquo posizioni in un solo clock il contenuto dei suoi FF In figura egrave riportato il barrel shifter della Altera Gli ingressi A-H in presenza dellrsquoattivazione del segnale LDST al primo fronte positivo del clock sono depositati nei FF Quando LDST egrave 0 ad ogni fronte positivo del clock i bit di uscita sono ruotati di n posizioni in senso antiorario (ovvero lrsquouscita H diventa la G la G diventa la Fhellipe lrsquouscita A diventa la H) ove n egrave il valore binario indicato dai segnali S0 S1 e S2
Si noti che il circuito in questione egrave di fatto un registro con 8 FF allrsquoingresso di ciascuno dei quali egrave previsto un MUX a 8 vie che pilotato dai segnali S0 S1 e S2 che seleziona uno degli 8 uscite del dispositivo La struttura interna puograve essere osservata ldquoclikkandordquo due volte sul dispositivo nello schema di Altera
64
Barrel shifter
6565
66
Simulazione timing
67
bull Utilizzando il sistema Altera progettare un orologio con secondi minuti ora partendo da un oscillatore a quarzo con frequenza 500 KHz
bull E se si volesse proseguire e realizzare anche un datario (giorno mese e anno )
bull Come potrebbe essere integrato con una sveglia Si ricordi che lrsquoorologio deve essere anche essere ldquopresettatordquo
bull Quali circuiti utilizzare per la visualizzazione
68
EPROM
X0nZ0m
y0kY0k
Clock
D0kQ0k
FFD0k
CK D0kQ0k CK
Reti sincrone con EPROM
Al posto delle EPROM si utilizzano ora dei PLA ovvero dispositivi nei quali si nei quali le funzioni combinatorie sono ottimizzate ma il principio egrave assolutamente il medesimo
69
Progettare con Altera una rete logica sincrona che utilizzando registri 374 ALU 74181 un contatore e altri dispositivi ritenuti necessari permetta di eseguire in sequenza la somma di due dati di 4 bit senza segno ingresso esegua il complemento a 2 inverta la parte bassa con la parte alta del risultato e infine moltiplichi il tutto logicamente per 2
La soluzione egrave sempre decomponibile in tre sottosistemi il controllo con la sua decodifica (unitagrave di controllo) il percorso dei dati con le unitagrave che li trasformano (datapath) e i registri di deposito e di ingresso dei dati
Questa egrave la struttura base di qualunque unitagrave centrale di qualunque computer
La differenza consiste solo nel fatto che anzicheacute avere una sequenza fissa di operazioni ne viene generata una volta a volta che dipende appunto dalla istruzione che deve essere eseguita Come si vedragrave approfonditamente nel corso di Calcolatori T del II anno (prof Neri e Mattoccia)
Arrivederci al corso di Calcolatori T del II anno (sapendo perfettamente le reti logiche helliphellip)
5
I FF sincronibull Esistono molti FF di tipo sincrono ma oggi si usa UNICAMENTE il FF D il cui
comportamento egrave stato studiato come rete asincrona ma che qui viene utilizzato come FF sincrono (nella pratica nella sua versione 74xx74)
D Q
QCK D
bull Il FF D si chiama cosigrave percheacute D sta per Delay (ritardo) Infatti lrsquouscita Q segue lrsquoingresso D con un periodo T di ritardo (se il segnale di ingresso D egrave sincrono ndash ovvero generato contemporaneo al clock - nel rispetto di setup e hold - ad esempio da una rete controllata da altri FF D) oppure al primo fronte positivo del clock
bull Il triangolo sul clock (CK) indica che egrave edge triggered ovvero che scatta sul fronte positivo del clock
D Q
QCK DPR
CL
I segnali CL e PR agiscono in modo asincrono ovvero immediatamente senza attendere il clock
6
Reti sequenziali sincrone
bull La sintesi si effettua come nel caso della rete asincrona con retroazione diretta ma ingressi che rimangono costanti sono ingressi considerati dalla rete come diversi (in quanto presi in considerazione in istanti diversi e quindi in possibile presenza di stati diversi)
bull Ciograve che conta in questo caso egrave il fronte positivo del clock la distanza fra fronti positivi successivi (nel rispetto di setup e hold ndash v reti asincrone) NON ha importanza
bull Ovviamente il periodo (la frequenza) del clock deve essere superiore (inferiore) al massimo ritardo insito nella rete combinatoria La rete combinatoria deve essersi stabilizzata a seguito di un fronte del clock prima che il successivo fronte si presenti
Rete combinatoria
X0nZ0m
y0kY0k
Clock
D0kQ0k
FFD0k
CK D0kQ0k CK
Si veda lo schema delle reti asincrone con la retroazione tramite FF RS in cui S=R
Reti Sequenziali Sincrone (RSS)
k (k)FFD
k
k FFD sullrsquoanello di retroazione Tutti con lo stesso clock di periodo T
S S S SCK
S
U
S
I
t t+T t+2Tt-TNel caso specifico Moore o Mealy Lo stato cambia anche se non cambia lrsquoingresso
Lrsquouscita cambia anche se non cambia lrsquoingresso
CK
7
Il FFD come elemento fondamentale delle RSSSe allrsquoingresso CK viene inviato un segnale periodico (clock) il FFD ritarda (D = Delay) il segnale di uscita Q rispetto al segnale di ingresso D di un tempo pari al periodo di clock T se il cambiamento del segnale D egrave contemporaneo a quelli clock (nel rispetto di setup e hold)
Qn+1 = Dn
D
CK
QT T T T
FFDD
CK
Q
Q
D
CK
Q
Q
8
NB il concetto di contemporaneitagrave potrebbe apparire in contrasto con la necessitagrave di rispettare i tempi di setup e hold Di fatto gli ingressi di una rete sincrona sono nella larga maggioranza provenienti da altre reti che hanno lo stesso clock e quindi sono generati con i ritardi delle reti soggette al clock rispettando quindi di fatto i tempi previsti Di fatto le variazioni degli ingressi sono sempre un porsquo posteriori alla variazione del clock Si veda in seguito il comportamento dei registri a traslazione
NB essendo qui il tempo discretizzato si usa n e
n+1 al posto di T e T+t
Alcune considerazioni sulle RSS
bull Lo stato della rete cambia solo in corrispondenza dei fronti di salita del clock che si susseguono con periodo T
bull La rete risponde ogni T se si desidera massimizzare la velocitagrave di risposta della rArruscita egrave necessario adottare il modello di Mealy
bull La sequenza degli stati della rete egrave svincolata dai ritardi della rete combinatoria (purcheacute la distanza fra i fronti positivi del segnale clock sia superiore al massimo ritardo della rete combinatoria) Quindi nessun problema di corse critiche
bull Allrsquointerno di uno stesso progetto (ad esempio un processore) sono tipicamente presenti piugrave RSS e non necessariamente per tutte le RSS il clock egrave lo stesso eo coincide con il clock del processore
bull Le RSS sono piugrave facili da progettare delle RSA
9
Clock gating e glitch sul clockNelle reti sincrone egrave necessario evitare variazioni spurie (glitches) del segnale di clock che possono provocare commutazioni indesiderate dei FFD (che sono sensibili ai fronti)
Ad esempio per via dei ritardi tra gli n segnali I[n-10] eo le alee introdotte dalla rete combinatoria di decodifica a causa del ldquoclock gatingldquo puograve verificarsi quanto segue
CK
P
CK_G
Glitch sul clock rarr possibile commutazione spuria del FFD
X
CK
Q
QFFD
D
CK
Q
QCK_GRete di Decodifica
I[n-10]P
t
NO
10
Naturalmente tutto dipende dalla larghezza dellrsquoimpulso spurio se molto stretto il FF potrebbe non sentirlo Quindi il clock gating non egrave proibito ma egrave un rischio da evitare in caso di incertezza
11
Per transizioni che debbono o meno verificarsi in funzione del valore della rete di decodifica bisogna condizionare il segnale D come in figura Se la rete di decodifica genera il valore 1 lrsquouscita Q assume al clock il valore di X altrimenti lrsquouscita Q copia seacute stessa e rimane invariata
Clock gating e glitch sul clock
X
CK
Q
QFFD
D
CK
Q
Q
I[n-10] P
t
01SEL
01SEL
Rete di Decodifica
Il clock gating oltre a generare potenziali glitch introduceldquoclock-skewrdquo (disallineamento) Ad esempio consideriamo due RSS soggette al FF1 e al FF2
Clock gating e clock-skew
CK
CK_GtAND tAND
I clock delle due reti sono sfasati di un tempo pari al ritardo introdotto dallrsquoAND (in generale dalla eventuale RC) interposto Tale fenomeno (ldquoclock-skewrdquo) egrave potenzialmente dannoso in quanto il FF2 potrebbe fare campionare alla propria RC in presenza dello stesso fronte di clock i nuovi valori prodotti dalla RC alimentata dal FF1
NB Il ldquoclock-skewrdquo non egrave causato solo dal clock gating ma anche (ad esempio) da percorsi elettrici di lunghezza diversa
I1
CK
B
BCK_GP
I2
CK
A
A
tAND
FFD-1D
CK
Q
QFFD-2
D
CK
Q
Q
12
13
Sincronizzazione degli ingressibull Finora si egrave dato implicitamente per scontato che gli ingressi di una rete sincrona commutino
in modo sincrono con il clock
bull Ciograve egrave verificato se gli ingressi provengono da una rete sincrona di tipo Moore nella quale le uscite sono funzione solo dello stato che commuta solo al fronte positivo del clock
Rete combinatoria
X0n
Z0m
y0k
Y0k
Clock
D0kQ0k
FFD0k
CK D0kQ0k CK
Rete combinatoria
bull Nella realtagrave le cose stanno diversamente Si pensi al caso di pulsanti esterni che costituiscano lrsquo ingresso della rete Il cambiamento puograve avvenire in un istante qualsiasi
bull Nella rete di figura (Moore) le uscite sono comunque certamente sincronizzate con il clock e se gli ingressi X0n cambiano in un momento qualsiasi non sincronizzato il cambiamento viene percepito dai FF di retroazione solo al fronte positivo del clock e quindi il comportamento delle uscite della rete egrave il medesimo che si avrebbe se gli ingressi fossero sincronizzati
14
Sincronizzazione degli ingressi
bull La cosa cambia perograve se la rete egrave di tipo Mealy
Rete combinatoria
X0nZ0m
y0kY0k
Clock
D0kQ0k
FFD0k
CK D0kQ0k CK
bull In questo caso un cambiamento asincrono degli ingressi provoca in generale un cambiamento asincrono delle uscite
15
Esempio la cassaforte (dotata di una doppia tastiera - due ingressi) si apre solo se gli ingressi hanno assunto NEL TEMPO le configurazioni
00-01-01-10 Ogni violazione della sequenza riporta il sistema nello stato iniziale NB Essendo gli ingressi campionati la sequenza di ingresso 01-01 egrave possibile e significativa
hellip Cassaforte hellip sincrona hellip
NB si puograve supporre che gli ingressi cambino allo stesso istante delle variabili di stato ma la cosa non egrave necessaria Se la rete egrave di tipo Moore anche se gli ingressi cambiano a metagrave di un periodo di clock il comportamento dal punto di vista degli stati e quindi delle uscite egrave assolutamente lo stesso (ogni variazione egrave rilevata solo alla fine del periodo)
E11101
0111
11
F0
01
01
G0
0000
11 00
11
11
10
1001
10
00
10 0110
01
01
00
Per ogni stato tutte le combinazioni di ingresso
00
10
10
11
C0A0 B0 D0
Gli stati NON sono stabili per gli ingressi che li hanno provocati
00
B
00 01 11 10
F A GA
B C A GB
B D A GCB F A ED
B F A GE
B F AA- GF
B F A GG
0
0
0
0
1
0
0
X1X2
A0 B0 C0 E10011
01
10
0111
11
11
D0 10
F0
01
01
G0
0000
00
00
11
11
10
1001
1010 0110
01
11
00
Cassaforte sincrona
16
01
NB in questo esempio non vi sono condizioni di indifferenza Anzicheacute di stati compatibili si parla qui di stati equivalenti Ove poi due stati per gli stessi ingressi abbiano uscite identiche e portino agli stessi stati si parla di stati indistinguibili Naturalmente la descrizione a parole puograve evidenziare che alcune combinazioni di ingresso per alcuni stati non si presentano In questo caso si ritorna al concetto di compatibilitagrave
00
17
Cassaforte sincrona
Classi di equivalenza [AFG] =gt a[B] =gt b[C] =gt g[D] =gt d[E] =gt e
B
00 01 11 10
F A GA
B C A GB
B D A GCB F A ED
B F A GE
B F AA- GF
B F A GG
0
0
0
0
1
0
0
X1X2
B
C
D
E
F
G
A B C D E F
CF
FD CD
CFGE
CFGE
DFGE
--- CF DF GE
--- C F DF GE --
b
00 01 11 10
a a aa
b g a ab
b d a ag
b a a ed
b a a ae
X1X2
0
0
0
0
1 NB nel caso di tabelle completamente specificate le classi (massime) di equivalenza non hanno mai stati in comune Vanno usate tutte quindi Non esiste problema di chiusura
Ovviamente 5 stati 4 facenti parte della sequenza e uno esterno
18
b
00 01 11 10
a a aa
b g a ab
b d a ag
b a a ed
b a a ae
X1X2
0
0
0
0
1
Cassaforte sincrona
001
00 01 11 10
000 000 000000
001 011 000 000001
001 010 000 000011
001 000 000 100010
001 000 000 000100
X1X2
-- -- -- --101
-- -- -- --111
-- -- -- --110
0
0
0
0
1
--
--
--
Y1Y2 Y3
a =gt 000b =gt 001g =gt 011d =gt 010e =gt 100
D1= X1X2Y2Y3
D2=X1X2Y3
D3=X1X2+X1Y2Y3 Z =Y1
Sintetizzando con FFD la sintesi degli ingressi Di si ottiene sintetizzando le funzioni Yi (Yn+1=Dn)
Nessun problema di corse codifica libera (possibilmente ottima)
19
Sintesi
Direttorio cassaforte sincrona
20
00 01 01 10
Sintesi ndash simulazione funzionale
NB Gli ingressi cambiano in modo NON sincrono con il clock ma lrsquo uscita egrave sincrona essendo la rete di tipo Moore
21
Sintesi ndash simulazione timing
Si notino i ritardi delle uscite dei FF e dei gates da esse dipendenti rispetto al fronte positivo del clock (ad esempio d) se la frequenza del clock fosse eccessiva il sistema NON funzionerebbe piugrave correttamente
d
22
E con Mealy
B
00 01 11 10
F A GA
B C A GB
B D A GCB F A ED
B F A GE
B F AA- GF
B F A GG
0
0
0
0
1
0
0
X1X2
B0
00 01 11 10
F0 A0 G0A
B0 C0 A0 G0B
B0 D0 A0 G0CB0 F0 A0 E1D
B1 F1 A1 G1E
B0 F0 A0A-G0F
B0 F0 A0 G0G
X1X2
Potrei mettere una indifferenza sullrsquouscita Si si possono mettere indifferenze sulle uscite che cambiano Anticipazione o ritardo del cambiamento
Sintetizzare e simulare con Altera
23
bull Allrsquoesame orale egrave necessario portare un esercizio di reti sincrone e uno di reti asincrone NON ldquomutuatordquo da altri hellip
bull I due esercizi debbono essere portati su una chiavetta (o dispositivo equivalente) debbono contenere una spiegazione e anche la progettazionesimulazione con Altera
bull Il candidato deve dimostrare di sapere usare il sistema Altera e spiegare i progetti portati
bull Gli esercizi di reti sincrone hanno spesso il diagramma degli stati ma solo per verificahellip
Monoimpulsore A
D1 Q1
Q1CKFFD
D2 Q2
Q2CKFFD Z1
D
Clock
Clock
D
Z
Q1
Q2
Qui lrsquoingresso asincrono D egrave sincronizzato dai FF Uscita Z sincrona
Generare un impulso di uscita di un periodo di clock per ingresso 1 Un ulteriore impulso viene generato solo se lrsquoingresso torna a 1 dopo essere stato a 0 Lrsquouscita deve essere sincronizzata con il clock
24
25
D1 Q1
Q1CKFFD
D2 Q2
Q2CKFFD Z
D
Clock
Monoimpulsore A
1
0
1
1
0
A0 B1
C0
0
A
A
A
-
B
C
C
-
DQ2
Q1
B
0 1
C
-
Z0
0
1
-
A 00
--
00
00
10
--
11
11
DQ2
Q1
01
0 1
11
10
Z0
0
-
1
0000
10
11
01
B
C
-
A
Q1=D Q2= DQ1 Z=Q1Q2
00
00
01
01
10
10
11
11
DQ2
Q1
01
0 1
11
10
Z0
0
0
1
00
MAhellip
Q1=D Q2= Q1 Z=Q1Q2
Moore necessariamente
26
D1 Q1
Q1CKFFD
D2 Q2
Q2CKFFD Z2
D
Clock
Monoimpulsore B
Clock
D
Z2
Q1
Q2
Lrsquoingresso asincrono D agisce direttamente sullrsquouscita Z che quindi risulta asincrona
Qui la rete egrave di tipo Mealy e quindi con ingresso asincrono egrave possibile che vi sia uscita asincrona
27
D Q
QCKFFD Z
D
Clock
Monoimpulsore C
Clock
D
Z
Q
Anche qui lrsquoingresso asincrono D agisce direttamente sullrsquouscita Z che quindi risulta asincronaSi noti che se lrsquoingresso oscilla una volta che il FF ha campionato un 1 e fino a quando non campiona uno 0 lrsquouscita oscilla
Qui la rete egrave di tipo Mealy e quindi con ingresso asincrono egrave possibile che vi sia uscita asincrona
28
Considerazioni sui monoimpulsori A B e C
Il diagramma degli stati corrispondente al funzionamento reale dei due monoimpulsori B e C NON puograve essere tracciato percheacute di fatto le due reti (di tipo Mealy) NON sono sincrone Infatti il diagramma di circuiti sincroni prevede implicitamente un comportamento sincrono anche degli ingressi fatto non verificato nei casi B e C
La cosa non vale per il monoimpulsore A in quanto pur essendo lrsquoingresso asincrono lrsquouscita (rete di tipo Moore) dipende solo dagli stati In altre parole il comportamento della rete rende intrinsecamente sincroni ingressi fisicamente asincroni
Il diagramma degli stati che riflette il comportamento delle due reti B e C puograve essere tracciato solo partendo da una analisi asincrona ldquoaprendordquo quindi i FF D inseriti Ovviamente egrave possibile progettare le due reti senza lrsquouso dei FF D partendo da un diagramma degli stati asincrono ldquotradizionalerdquo
A scopo di esercizio si suggerisce la sintesi e la simulazione con Altera dei tre monoimpulsori come reti asincrone Si tratta di circuiti on due ingressi Ck e D
29
Monoimpulsori A-B-C
30
31
Contatori
A B C D Z
Circuiti senza ingresso (a parte il clock) nella versione piugrave semplice
D0 Q0
Q0CKFFD
MUX
1
0D1 Q1
Q1CKFFD
(Il clock egrave spesso sottinteso nei circuiti sincroni)
U0 U1
Esempio contatore binario x 4 con decodifica del 3
000 010 100 111
OUT
Q1 cambia stato quando Q0 egrave a 1 e passa a 0
CK
u1
u0
OUT (0) (1) (2) (0) (1) (2)(3) (3)
Contatore x 4 con decodifica del 3
33
Contatori binari in base non potenza di 2
A B C D E
000 001 010 011 100Contatore
binario per 5
D0 Q0
Q0CKFFD
MUX
1
0 1D1 Q1
Q1CKFFD
MUX
1
0D Q2
Q2CKFFD
Questo conta x8 ma per contare x5 arrivati a 4 bisogna ritornare a 0
34
D0 Q0
Q0CKFFD D1 Q1
Q1CKFFD
MUX
1
0 D2 Q2
Q2CKFFD
MUX
1
0
ABC
ldquo4rdquo
Contatore x 5
Decoder
La decodifica del 4 porta a zero lrsquouscita del decodificatore e quindi a 0 tutte le uscite degli AND rosa e al successivo fronte positivo del clock i tre FF campionano uno ldquo0rdquo
Per esercizio sintetizzare un contatore x 100 partendo dalla sintesi di un contatore decimale ovvero di un contatore x10 (da sintetizzare) Quanti FF per un contatore decimale I contatori decimali si trovano integrati in Altera
ldquo3rdquo
35
Contatori con ingressi di controllo
Ex Contatore integrato x 16 con Load e Enable
bull Il contatore conta per 16 (0-15) se il segnale EN egrave a 1 Allorchegrave il segnale LD va a 1 il dato presente sugli ingressi D egrave inserito nei 4 FF (lrsquoingresso puograve essere sincrono o asincrono) Nel caso precedente il decodificatore del ldquo3rdquo (uscita vera va portato) allrsquoingresso LD con tutti i Di a zero
bull In generale il contatore fornisce anche unrsquouscita ldquocarryrdquo che va a 1 quando il contatore raggiunge il valore FF Questa uscita puograve essere connessa allrsquoenable di un contatore a valle per ottenere un contatore per 256 cosigrave via (Progettarlo come esercizio)
EN
Q0 Q1 Q2 Q3CKLD
D0 D1 D2 D3
EN
Q0 Q1 Q2 Q3CK
CYLD
D0 D1 D2 D3
bull Esistono contatori UPDOWN nei quali un ingresso (UD) seleziona se il conteggio deve avvenire avanti o indietro Nel caso sia selezionata la modalitagrave ldquoindietrordquo il carry si attiva quando si raggiunge il valore ldquotutti zerirdquo
bull Esiste una molteplicitagrave di contatori ciascuno con le proprie specifiche peculiaritagrave con o senza RESET (che normalmente agisce in modo asincrono) UD con o senza LD etc etc
NB qualunque circuito sincrono (con sequenza non binaria) riconducibile al diagramma degli stati di un contatore egrave sempre un contatore
101 010 000 111 110 Contatore x 5 non binario
36
74163 contatore reale x 16 con Load Reset e Enable (T e P)I segnali di controllo sono sincroni ovvero agiscono sul fronte positivo del clock (rising edge)
74138 decoder 38 con uscite negate se G2A e G2B entrambi a zero e G1 a 1 Altrimenti tutte uscite alte
Direttorio Counter Glitch
Contatore binario x 8 e glitches
37
Glitch
Simulazione timingNB la presenza e la durata del glitch dipende dalle caratteristiche elettriche dei dispositivi
dalla loro tecnologia etc Nel caso dei dispositivi Altera dipende dal tipo di dispositivo sul quale egrave realizzato il circuito Analogamente la sensibilitagrave di eventuali ingressi di clock collegati allrsquouscita con il glitch dipende dalle caratteristiche del dispositivo Se ad esempio nel dispositivo Altera utilizzato si collega allrsquouscita Y6 il clock di un FFD non si ha commutazione del FF ma questo non egrave vero in assoluto
38
Cosa succede al contatore X5 progettato precedentemente se allrsquoaccensione non disponendo di un segnale di RESET i FF si portano in uno stato non facente parte del cicloNB La condizione allrsquoaccensione egrave del tutto casuale e dipende unicamente dalle condizioni elettriche
di realizzazione Ersquo impredicibileSupponiamo che i FF si portino al valore 110 (il numero 6 fuori dal ciclo) Analizziamo il comportamento
D0 Q0Q0CK
FFD D1 Q1Q1CK
FFD
MUX
1
0 D2 Q2Q2CK
FFD
MUX
1
0
ABC
ldquo4rdquo
000 001 010 011 100 110 111
In questo caso ci si riporta nella situazione di conteggio regolare (verificare con la tabella degli stati ) ma il comportamento in generale dipende dalla realizzazione e in altre realizzazione i due stati potrebbero essere separati dal ciclo principale che quindi non verrebbe mai raggiunto Ecco la funzione del RESET
39
Solo come esempio (da non utilizzare ) a scopo didattico vediamo la tabella delle transizioni di un contatore per 6 UpDown con comando di Reset I segnali di ingresso cambiano in modo asincrono ma hanno effetto in modo sincrono
Per compensare allrsquoaccensione
Sintetizzare e simulareCome dovrebbe essere modificato lo schema in Altera per permettere di
ldquopresettarerdquo in modo asincrono il contatore a un particolare valore di ingresso
00 01 11 10UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
111
110
000 101
000
101
y3 y2 y100 01 11 10
UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
000 000111
000 000 000 000110
000 101
000
000 000
101
y3 y2 y1
40
D0Q0
CKFFD
Clocky2
DEC
y3
y2
y1
ldquo1rdquo
ldquo2rdquo
ldquo3rdquo
ldquo4rdquo
1
0
UPDown
Sintesi di y2 in modo ldquodirettordquo
1
0
00 01 11 10UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
000 000111
000 000 000 000110
000 101
000
000 000
101
y3 y2 y1
41
Cassaforte hellipDisponendo di un contatore per 8 (ma anche per 16 etc) con reset sincrono e sempre abilitato al conteggio come potrei realizzare il circuito di apertura della cassaforte (sequenza X1X2 00-01-01-10) con modello Moore
Cx8RES
Q0 Q1 Q2 CK
RES= (ldquo0rdquoX1X2 + ldquo1rdquo X1X2 + ldquo2rdquo X1X2 + ldquo3rdquo X1 X2)Z = ldquo4rdquo (ldquo0rdquordquo1rdquordquo2rdquordquo3rdquordquo4rdquo sono le decodifiche binarie delle tre uscite del contatore)
Il contatore si resetta ogni volta che non si presenta lrsquoingresso giusto relativo al particolare stato Ilcontatore quindi si resetta e rimane resettato se non nelle condizioni espresse dalla funzione RESIl contatore arrivato a 4 (Z=1) si resetta comunque al successivo fronte del clock
Le reti sincrone si progettano sempre come combinazione di blocchi disponibili e logica ldquorandomrdquo
ABC
ldquo0rdquoldquo1rdquoldquo2rdquoldquo3rdquoldquo4rdquo
RLAND-OR
X1X2
RESZ
Cx8RES
Q0 Q1 Q2 CK
42
Contatori
EN
Q0 Q1 Q2 Q3CKCY
RESET
bull Attenzione Consideriamo il contatore di figura (questa volta con RESET asincrono) e supponiamo di utilizzarlo per contare per 5 (NB per il Reset si usa il ldquo5rdquo in questo casohellip glitch)
ABCD
ldquo5rdquo
ldquo1rdquo Percheacute questo schema egrave sbagliato
bull Percheacute presenta una corsa critica Nel momento in cui anche uno solo dei FF si resetta (e non tutti nello stesso istante) viene a mancare la configurazione ldquo4rdquo sul decoder e quindi alcuni FF potrebbero non fare in tempo a resettarsi E allora
EN
Q0 Q1 Q2 Q3CKCY
RESET
ABCD
ldquo5rdquo
ldquo1rdquo
RS
Y ldquo0rdquo
bull Cosigrave facendo il ldquo4rdquo attiva il SET e il FF NON si resetta fino a quando non egrave stato raggiunto la ldquo0rdquo NB lo schema ldquosbagliatordquo si puograve usare solo se si egrave certi della rapiditagrave di reset dei FF del contatore
bull Verificare con Altera
Sintesi cassaforte con moduli
Altera Cassaforte sincrona con moduli
Rete di controllo
Contatore con Reset asincrono e Load sincrono
43
NB In questo progetto la sintesi egrave stata condotta in modo ldquodirettordquo ovvero senza passare per la sintesi formale e utilizzando componenti disponibili e helliphellip materia grigia La sintesi dei circuiti sincroni si fa sempre e unicamente cosigrave
44
Simulazione funzionale (no timing)
NB I segnali di ingresso sono campionati SOLO sul fronte positivo del clock anche se si presentano asincroni Il segnale di uscita si attiva al clock successivo al riconoscimento della sequenza La posizione di ldquoriposordquo del contatore egrave il valore 4 I segnali Yi sono le decodifiche dei segnali di di ingresso X1 e X2
00 01 01 10
45
Simulazione timing
46
NB Si egrave scelto di utilizzare SOLO gli ingressi SINCRONI del contatore per semplicitagrave Il contatore rimane al valore 100 fino a quando non si presenta allrsquoingresso il valore 00 Se la sequenza egrave esatta il contatore continua a contare in avanti fino alla generazione dellrsquouscita (valore 11 del contatore) altrimenti si riporta al valore 100 ovvero Qc=1) Il segnale GN (Gate Not) egrave quello che abilita il conteggio Il sistema riamane stabile a 000 per una sequenza lunga a piacere di X1=0 e X2=0 e si sposta quando dopo 00 si ha 01 Come si evince dalla simulazione se la sequenza non egrave corretta o egrave interrotta il contatore si riporta sempre a 100
00 01 11 10
001 000 000
X1
000000 010 100 100001
000 100 100 011010
100 100 100 100011
000 100 100 100100
000 100 100 100101
000 100 100 100110
000 100 100 100111
0
0
0
1
0
0
0
0
X2
000
NB la tabella delle transizioni derivata della rete realizzata NON ha ovviamente condizioni di indifferenza
47
Progettare un contatore packed BCD updown a 8 bit (due digit)
48
Generazione di forme drsquoondabull Ersquo possibile generare forme drsquoonda periodiche mediante circuiti sincroni di periodo
sottomultiplo intero del clock
Esempio 1Divisore di frequenza per 2
D0k Q0k
CK D Q
CK Clock
Q
Esempio 2 generare una forma drsquoonda periodica con periodo 5T (ove T sia il periodo del clock) in cui in un semiperiodo 3T lrsquouscita sia alta e nellrsquoaltro semiperiodo 2T lrsquouscita sia bassa
Q0 Q1 Q2 CK
Cx5
C
B
A
01234
DecoderDemux
Clock
ZZ T
3T2T
3T
NB una rete logica egrave in grado di effettuare delle divisioni di frequenza e mai delle moltiplicazioni di frequenza (che si possono ottenere solo con circuiti analogici non lineari)
49
Di che circuito si tratta
D0k Q0k
CK D0 Q0
CKQ0
D0k Q0k
CK D1 Q1
CK
D0k Q0k
CK D2 Q2
CKClock
Clock
Q0
Q1
Q2
Ersquo un contatore binario ma non sincrono Infatti i vari FF NON utilizzano lo stesso clock e questo porta a un piccolo disallineamento sulle uscite Non egrave sintetizzabile come una rete sincrona e una sintesi formale sarebbe possibile solo trattando il circuito come asincrono ovvero ldquoaprendordquo i FF Sarebbe possibile trasformarlo in un contatore x6 mantenendo la stessa impostazione
Sintetizzare e simulare con Altera
NB il segnale di clock non egrave in comune
50
7493
51
Altera Contatore asincrono
Contatore asincrono
52
Simulazione timing
53
Come puograve essere utilizzato un FFD per catturare un impulso piugrave breve di un periodo
D2 Q2
Q2CKFFD Z
Clock
D1 Q1
Q1CKFFD
D0 Q00
Q0CKFFD
ldquo1rdquo CL
Lrsquoimpulso breve viene catturato dal FF 0 (purcheacute di larghezza sufficiente per la tecnologia del FF) - che quindi agisce come integratore ndash la cui uscita alimenta il monoimpulsore di tipo A Lrsquoattivazione del FF 1 resetta il FF 0 (supponendo che il segnale di CL sia ldquopositiverdquotruerdquo)
Ci puograve essere un problema se il CL agisce in modo asincrono
NB questo circuito e quello del lucido precedente evidenziano il fatto che nella realtagrave nessuna rete egrave solo sincrona ma bensigrave egrave pressocheacute sempre necessario utilizzare reti di natura diversa anche percheacute vi egrave sempre una interazione fra reti con clock diversi eo con segnali provenienti dal mondo esterno NON sincronizzati con il clock
Monoimpulsore di tipo A ldquorivistordquo
54
bull Uno shift register a sinistra (a destra) egrave un registro composto da FFD che ad ogni clock trasferisce il valore del FF a destra (a sinistra) di ciascun FF nel FF stesso Nel FF piugrave a destra (sinistra) viene immesso uno ldquo0rdquo Questi tipi di registri shift si chiamano ldquologicirdquo
Shift register (registri a traslazione o scorrimento)
D0kQ0k
CK DnQn
CK
D0kQ0k
CK Dn-1Qn-1
CK
D0kQ0k
CK Dn-2Qn-2
CK
D0kQ0k
CK D0Q0
CK
ldquo0rdquo
Shift register a sinistra
bull Anche per i registri a traslazione esistono diverse versioni con ingresso parallelo e uscita seriale con ingresso seriale e uscita parallela con reset con load etc etc
bull Si noti che uno shift register egrave anche un contatore Si immagini per esempio che dopo un reset siano inseriti degli uni a partire da destra Lo shift register si riempie progressivamente di uni e quindi la posizione in cui egrave arrivato lrsquouno indica il valore del conteggio in base a un codice ldquouno su nrdquo (un codice decodificato)
bull Spesso uno stesso registro puograve traslare a destra o a sinistra in funzione di una segnale di controllo Ovviamente questo si ottiene premettendo a ogni ingresso Di un MUX a due vie che preleva in funzione del segnale di controllo Qigrave+1 o Qigrave-1 Con questa configurazione lo shift register diventa anche un contatore avantiindietro
Registro a scorrimento (shift-register) a 3 bit
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
IN
OUT2OUT1OUT0
CK
CK
IN
A_RESET
OUT1
OUT2
OUT0
Registro a scorrimento (shift-register) a 3 bit
57
Esempio 74164 (serial In parallel OUT)
bull In questo registro a traslazione ad ogni fronte positivo del clock i dati sono traslati a destra (Q0 -gt Q1 Q1-gtQ2 etc) Il registro egrave dotato in un Master Reset (vero negato) e il dato inserito nel FF Q0 egrave dato dallrsquoAND dei due ingressi Dsa e Dsb
bull Si noti che lrsquooperazione di shift corrisponde aritmeticamente alle operazioni di divisione e moltiplicazione per 2 Si supponga che in Q0 vi sia il bit meno significativo e in Q7 il meno significativo
0 1 1 0 1 0 1 0
010101102 = 10810
Shift left =gt x2
Shift right =gt 2
101011002 = 21610
001010112 = 5910
NB nel dispositivo i bit sono posti in ordine invertito e quindi un shift left del numero corrisponde a uno shift right sul dispositivo
58
bull Esistono anche i registri a traslazione ldquoaritmeticirdquo In questi shift register a destra anzicheacute fare entrare nel FF piugrave a sinistra lo ldquo0rdquo viene immesso sempre ripetutamente il suo valore logico
Shift aritmetico
Q7 Q6 Q5 Q4 Q3 Q2 Q1 Q0
D7 D6 D5 D4 D3 D2 D1 D0
I LDCK Esempio
11001010SRA
11100101 interpretato in complemento a 2
001101102=5410
C2 C2
000110112=2710
bull Lo shift aritmetico a destra effettua una divisione per 2 mantenendo il segno
59
Rotazione
Nei computer egrave sovente necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register
D0kQ0k
CK DnQn
CK
D0kQ0k
CK Dn-1Qn-1
CK
D0kQ0k
CK Dn-2Qn-2
CK
D0kQ0k
CK D0Q0
CK
Molto spesso nei computer egrave necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register con direzione programmabile In questo caso su D0 ad esempio puograve essere avviato o Q1 o Qn
60
Contatori con shift register ndash Contatore retroazionato EX-OR
Q2Q0
Shift right 3 bitDQ1
110 111 011 101 010 001
Diagramma degli stati disgiunto
Uno shift register con n FF retroazionato con un EX-OR (scelta degli ingressi variabile) egrave un contatore NON binario che conta per 2n-1 (purcheacute presettato a un valore diverso da tutti zeri)
000
100
61
Contatore di Johnson (riempimento e svuotamento)
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
000-gt100-gt110-gt111-gt011-gt001-gt000-gtStati isolati 101-gt010-gt101gt1
Poicheacute configurazioni adiacenti del codice Johnson differiscono di un solo bit il contatore puograve essere utilizzato per generare forme drsquoonda prive di alee
62
Contatore ad anello con un solo 1 (ovvero che genera direttamente il codice 1su n)
FFDD Q
QR
RESET
FFDD Q
QR
RESET
FFDD Q
QPR
RESET
OUT3OUT1OUT0
CK
FFDD Q
QR
RESET
OUT2
0001-gt1000-gt0100-gt0010-gt0010n FF per contare per n (mentre con i contatori binari il numero dei FF egrave il log2m ove m egrave il primo intero maggiore o uguale a n)
63
Barrel shifter (rotore)Un barrel shifter egrave uno shift register in grado di traslare di ldquonrdquo posizioni in un solo clock il contenuto dei suoi FF In figura egrave riportato il barrel shifter della Altera Gli ingressi A-H in presenza dellrsquoattivazione del segnale LDST al primo fronte positivo del clock sono depositati nei FF Quando LDST egrave 0 ad ogni fronte positivo del clock i bit di uscita sono ruotati di n posizioni in senso antiorario (ovvero lrsquouscita H diventa la G la G diventa la Fhellipe lrsquouscita A diventa la H) ove n egrave il valore binario indicato dai segnali S0 S1 e S2
Si noti che il circuito in questione egrave di fatto un registro con 8 FF allrsquoingresso di ciascuno dei quali egrave previsto un MUX a 8 vie che pilotato dai segnali S0 S1 e S2 che seleziona uno degli 8 uscite del dispositivo La struttura interna puograve essere osservata ldquoclikkandordquo due volte sul dispositivo nello schema di Altera
64
Barrel shifter
6565
66
Simulazione timing
67
bull Utilizzando il sistema Altera progettare un orologio con secondi minuti ora partendo da un oscillatore a quarzo con frequenza 500 KHz
bull E se si volesse proseguire e realizzare anche un datario (giorno mese e anno )
bull Come potrebbe essere integrato con una sveglia Si ricordi che lrsquoorologio deve essere anche essere ldquopresettatordquo
bull Quali circuiti utilizzare per la visualizzazione
68
EPROM
X0nZ0m
y0kY0k
Clock
D0kQ0k
FFD0k
CK D0kQ0k CK
Reti sincrone con EPROM
Al posto delle EPROM si utilizzano ora dei PLA ovvero dispositivi nei quali si nei quali le funzioni combinatorie sono ottimizzate ma il principio egrave assolutamente il medesimo
69
Progettare con Altera una rete logica sincrona che utilizzando registri 374 ALU 74181 un contatore e altri dispositivi ritenuti necessari permetta di eseguire in sequenza la somma di due dati di 4 bit senza segno ingresso esegua il complemento a 2 inverta la parte bassa con la parte alta del risultato e infine moltiplichi il tutto logicamente per 2
La soluzione egrave sempre decomponibile in tre sottosistemi il controllo con la sua decodifica (unitagrave di controllo) il percorso dei dati con le unitagrave che li trasformano (datapath) e i registri di deposito e di ingresso dei dati
Questa egrave la struttura base di qualunque unitagrave centrale di qualunque computer
La differenza consiste solo nel fatto che anzicheacute avere una sequenza fissa di operazioni ne viene generata una volta a volta che dipende appunto dalla istruzione che deve essere eseguita Come si vedragrave approfonditamente nel corso di Calcolatori T del II anno (prof Neri e Mattoccia)
Arrivederci al corso di Calcolatori T del II anno (sapendo perfettamente le reti logiche helliphellip)
6
Reti sequenziali sincrone
bull La sintesi si effettua come nel caso della rete asincrona con retroazione diretta ma ingressi che rimangono costanti sono ingressi considerati dalla rete come diversi (in quanto presi in considerazione in istanti diversi e quindi in possibile presenza di stati diversi)
bull Ciograve che conta in questo caso egrave il fronte positivo del clock la distanza fra fronti positivi successivi (nel rispetto di setup e hold ndash v reti asincrone) NON ha importanza
bull Ovviamente il periodo (la frequenza) del clock deve essere superiore (inferiore) al massimo ritardo insito nella rete combinatoria La rete combinatoria deve essersi stabilizzata a seguito di un fronte del clock prima che il successivo fronte si presenti
Rete combinatoria
X0nZ0m
y0kY0k
Clock
D0kQ0k
FFD0k
CK D0kQ0k CK
Si veda lo schema delle reti asincrone con la retroazione tramite FF RS in cui S=R
Reti Sequenziali Sincrone (RSS)
k (k)FFD
k
k FFD sullrsquoanello di retroazione Tutti con lo stesso clock di periodo T
S S S SCK
S
U
S
I
t t+T t+2Tt-TNel caso specifico Moore o Mealy Lo stato cambia anche se non cambia lrsquoingresso
Lrsquouscita cambia anche se non cambia lrsquoingresso
CK
7
Il FFD come elemento fondamentale delle RSSSe allrsquoingresso CK viene inviato un segnale periodico (clock) il FFD ritarda (D = Delay) il segnale di uscita Q rispetto al segnale di ingresso D di un tempo pari al periodo di clock T se il cambiamento del segnale D egrave contemporaneo a quelli clock (nel rispetto di setup e hold)
Qn+1 = Dn
D
CK
QT T T T
FFDD
CK
Q
Q
D
CK
Q
Q
8
NB il concetto di contemporaneitagrave potrebbe apparire in contrasto con la necessitagrave di rispettare i tempi di setup e hold Di fatto gli ingressi di una rete sincrona sono nella larga maggioranza provenienti da altre reti che hanno lo stesso clock e quindi sono generati con i ritardi delle reti soggette al clock rispettando quindi di fatto i tempi previsti Di fatto le variazioni degli ingressi sono sempre un porsquo posteriori alla variazione del clock Si veda in seguito il comportamento dei registri a traslazione
NB essendo qui il tempo discretizzato si usa n e
n+1 al posto di T e T+t
Alcune considerazioni sulle RSS
bull Lo stato della rete cambia solo in corrispondenza dei fronti di salita del clock che si susseguono con periodo T
bull La rete risponde ogni T se si desidera massimizzare la velocitagrave di risposta della rArruscita egrave necessario adottare il modello di Mealy
bull La sequenza degli stati della rete egrave svincolata dai ritardi della rete combinatoria (purcheacute la distanza fra i fronti positivi del segnale clock sia superiore al massimo ritardo della rete combinatoria) Quindi nessun problema di corse critiche
bull Allrsquointerno di uno stesso progetto (ad esempio un processore) sono tipicamente presenti piugrave RSS e non necessariamente per tutte le RSS il clock egrave lo stesso eo coincide con il clock del processore
bull Le RSS sono piugrave facili da progettare delle RSA
9
Clock gating e glitch sul clockNelle reti sincrone egrave necessario evitare variazioni spurie (glitches) del segnale di clock che possono provocare commutazioni indesiderate dei FFD (che sono sensibili ai fronti)
Ad esempio per via dei ritardi tra gli n segnali I[n-10] eo le alee introdotte dalla rete combinatoria di decodifica a causa del ldquoclock gatingldquo puograve verificarsi quanto segue
CK
P
CK_G
Glitch sul clock rarr possibile commutazione spuria del FFD
X
CK
Q
QFFD
D
CK
Q
QCK_GRete di Decodifica
I[n-10]P
t
NO
10
Naturalmente tutto dipende dalla larghezza dellrsquoimpulso spurio se molto stretto il FF potrebbe non sentirlo Quindi il clock gating non egrave proibito ma egrave un rischio da evitare in caso di incertezza
11
Per transizioni che debbono o meno verificarsi in funzione del valore della rete di decodifica bisogna condizionare il segnale D come in figura Se la rete di decodifica genera il valore 1 lrsquouscita Q assume al clock il valore di X altrimenti lrsquouscita Q copia seacute stessa e rimane invariata
Clock gating e glitch sul clock
X
CK
Q
QFFD
D
CK
Q
Q
I[n-10] P
t
01SEL
01SEL
Rete di Decodifica
Il clock gating oltre a generare potenziali glitch introduceldquoclock-skewrdquo (disallineamento) Ad esempio consideriamo due RSS soggette al FF1 e al FF2
Clock gating e clock-skew
CK
CK_GtAND tAND
I clock delle due reti sono sfasati di un tempo pari al ritardo introdotto dallrsquoAND (in generale dalla eventuale RC) interposto Tale fenomeno (ldquoclock-skewrdquo) egrave potenzialmente dannoso in quanto il FF2 potrebbe fare campionare alla propria RC in presenza dello stesso fronte di clock i nuovi valori prodotti dalla RC alimentata dal FF1
NB Il ldquoclock-skewrdquo non egrave causato solo dal clock gating ma anche (ad esempio) da percorsi elettrici di lunghezza diversa
I1
CK
B
BCK_GP
I2
CK
A
A
tAND
FFD-1D
CK
Q
QFFD-2
D
CK
Q
Q
12
13
Sincronizzazione degli ingressibull Finora si egrave dato implicitamente per scontato che gli ingressi di una rete sincrona commutino
in modo sincrono con il clock
bull Ciograve egrave verificato se gli ingressi provengono da una rete sincrona di tipo Moore nella quale le uscite sono funzione solo dello stato che commuta solo al fronte positivo del clock
Rete combinatoria
X0n
Z0m
y0k
Y0k
Clock
D0kQ0k
FFD0k
CK D0kQ0k CK
Rete combinatoria
bull Nella realtagrave le cose stanno diversamente Si pensi al caso di pulsanti esterni che costituiscano lrsquo ingresso della rete Il cambiamento puograve avvenire in un istante qualsiasi
bull Nella rete di figura (Moore) le uscite sono comunque certamente sincronizzate con il clock e se gli ingressi X0n cambiano in un momento qualsiasi non sincronizzato il cambiamento viene percepito dai FF di retroazione solo al fronte positivo del clock e quindi il comportamento delle uscite della rete egrave il medesimo che si avrebbe se gli ingressi fossero sincronizzati
14
Sincronizzazione degli ingressi
bull La cosa cambia perograve se la rete egrave di tipo Mealy
Rete combinatoria
X0nZ0m
y0kY0k
Clock
D0kQ0k
FFD0k
CK D0kQ0k CK
bull In questo caso un cambiamento asincrono degli ingressi provoca in generale un cambiamento asincrono delle uscite
15
Esempio la cassaforte (dotata di una doppia tastiera - due ingressi) si apre solo se gli ingressi hanno assunto NEL TEMPO le configurazioni
00-01-01-10 Ogni violazione della sequenza riporta il sistema nello stato iniziale NB Essendo gli ingressi campionati la sequenza di ingresso 01-01 egrave possibile e significativa
hellip Cassaforte hellip sincrona hellip
NB si puograve supporre che gli ingressi cambino allo stesso istante delle variabili di stato ma la cosa non egrave necessaria Se la rete egrave di tipo Moore anche se gli ingressi cambiano a metagrave di un periodo di clock il comportamento dal punto di vista degli stati e quindi delle uscite egrave assolutamente lo stesso (ogni variazione egrave rilevata solo alla fine del periodo)
E11101
0111
11
F0
01
01
G0
0000
11 00
11
11
10
1001
10
00
10 0110
01
01
00
Per ogni stato tutte le combinazioni di ingresso
00
10
10
11
C0A0 B0 D0
Gli stati NON sono stabili per gli ingressi che li hanno provocati
00
B
00 01 11 10
F A GA
B C A GB
B D A GCB F A ED
B F A GE
B F AA- GF
B F A GG
0
0
0
0
1
0
0
X1X2
A0 B0 C0 E10011
01
10
0111
11
11
D0 10
F0
01
01
G0
0000
00
00
11
11
10
1001
1010 0110
01
11
00
Cassaforte sincrona
16
01
NB in questo esempio non vi sono condizioni di indifferenza Anzicheacute di stati compatibili si parla qui di stati equivalenti Ove poi due stati per gli stessi ingressi abbiano uscite identiche e portino agli stessi stati si parla di stati indistinguibili Naturalmente la descrizione a parole puograve evidenziare che alcune combinazioni di ingresso per alcuni stati non si presentano In questo caso si ritorna al concetto di compatibilitagrave
00
17
Cassaforte sincrona
Classi di equivalenza [AFG] =gt a[B] =gt b[C] =gt g[D] =gt d[E] =gt e
B
00 01 11 10
F A GA
B C A GB
B D A GCB F A ED
B F A GE
B F AA- GF
B F A GG
0
0
0
0
1
0
0
X1X2
B
C
D
E
F
G
A B C D E F
CF
FD CD
CFGE
CFGE
DFGE
--- CF DF GE
--- C F DF GE --
b
00 01 11 10
a a aa
b g a ab
b d a ag
b a a ed
b a a ae
X1X2
0
0
0
0
1 NB nel caso di tabelle completamente specificate le classi (massime) di equivalenza non hanno mai stati in comune Vanno usate tutte quindi Non esiste problema di chiusura
Ovviamente 5 stati 4 facenti parte della sequenza e uno esterno
18
b
00 01 11 10
a a aa
b g a ab
b d a ag
b a a ed
b a a ae
X1X2
0
0
0
0
1
Cassaforte sincrona
001
00 01 11 10
000 000 000000
001 011 000 000001
001 010 000 000011
001 000 000 100010
001 000 000 000100
X1X2
-- -- -- --101
-- -- -- --111
-- -- -- --110
0
0
0
0
1
--
--
--
Y1Y2 Y3
a =gt 000b =gt 001g =gt 011d =gt 010e =gt 100
D1= X1X2Y2Y3
D2=X1X2Y3
D3=X1X2+X1Y2Y3 Z =Y1
Sintetizzando con FFD la sintesi degli ingressi Di si ottiene sintetizzando le funzioni Yi (Yn+1=Dn)
Nessun problema di corse codifica libera (possibilmente ottima)
19
Sintesi
Direttorio cassaforte sincrona
20
00 01 01 10
Sintesi ndash simulazione funzionale
NB Gli ingressi cambiano in modo NON sincrono con il clock ma lrsquo uscita egrave sincrona essendo la rete di tipo Moore
21
Sintesi ndash simulazione timing
Si notino i ritardi delle uscite dei FF e dei gates da esse dipendenti rispetto al fronte positivo del clock (ad esempio d) se la frequenza del clock fosse eccessiva il sistema NON funzionerebbe piugrave correttamente
d
22
E con Mealy
B
00 01 11 10
F A GA
B C A GB
B D A GCB F A ED
B F A GE
B F AA- GF
B F A GG
0
0
0
0
1
0
0
X1X2
B0
00 01 11 10
F0 A0 G0A
B0 C0 A0 G0B
B0 D0 A0 G0CB0 F0 A0 E1D
B1 F1 A1 G1E
B0 F0 A0A-G0F
B0 F0 A0 G0G
X1X2
Potrei mettere una indifferenza sullrsquouscita Si si possono mettere indifferenze sulle uscite che cambiano Anticipazione o ritardo del cambiamento
Sintetizzare e simulare con Altera
23
bull Allrsquoesame orale egrave necessario portare un esercizio di reti sincrone e uno di reti asincrone NON ldquomutuatordquo da altri hellip
bull I due esercizi debbono essere portati su una chiavetta (o dispositivo equivalente) debbono contenere una spiegazione e anche la progettazionesimulazione con Altera
bull Il candidato deve dimostrare di sapere usare il sistema Altera e spiegare i progetti portati
bull Gli esercizi di reti sincrone hanno spesso il diagramma degli stati ma solo per verificahellip
Monoimpulsore A
D1 Q1
Q1CKFFD
D2 Q2
Q2CKFFD Z1
D
Clock
Clock
D
Z
Q1
Q2
Qui lrsquoingresso asincrono D egrave sincronizzato dai FF Uscita Z sincrona
Generare un impulso di uscita di un periodo di clock per ingresso 1 Un ulteriore impulso viene generato solo se lrsquoingresso torna a 1 dopo essere stato a 0 Lrsquouscita deve essere sincronizzata con il clock
24
25
D1 Q1
Q1CKFFD
D2 Q2
Q2CKFFD Z
D
Clock
Monoimpulsore A
1
0
1
1
0
A0 B1
C0
0
A
A
A
-
B
C
C
-
DQ2
Q1
B
0 1
C
-
Z0
0
1
-
A 00
--
00
00
10
--
11
11
DQ2
Q1
01
0 1
11
10
Z0
0
-
1
0000
10
11
01
B
C
-
A
Q1=D Q2= DQ1 Z=Q1Q2
00
00
01
01
10
10
11
11
DQ2
Q1
01
0 1
11
10
Z0
0
0
1
00
MAhellip
Q1=D Q2= Q1 Z=Q1Q2
Moore necessariamente
26
D1 Q1
Q1CKFFD
D2 Q2
Q2CKFFD Z2
D
Clock
Monoimpulsore B
Clock
D
Z2
Q1
Q2
Lrsquoingresso asincrono D agisce direttamente sullrsquouscita Z che quindi risulta asincrona
Qui la rete egrave di tipo Mealy e quindi con ingresso asincrono egrave possibile che vi sia uscita asincrona
27
D Q
QCKFFD Z
D
Clock
Monoimpulsore C
Clock
D
Z
Q
Anche qui lrsquoingresso asincrono D agisce direttamente sullrsquouscita Z che quindi risulta asincronaSi noti che se lrsquoingresso oscilla una volta che il FF ha campionato un 1 e fino a quando non campiona uno 0 lrsquouscita oscilla
Qui la rete egrave di tipo Mealy e quindi con ingresso asincrono egrave possibile che vi sia uscita asincrona
28
Considerazioni sui monoimpulsori A B e C
Il diagramma degli stati corrispondente al funzionamento reale dei due monoimpulsori B e C NON puograve essere tracciato percheacute di fatto le due reti (di tipo Mealy) NON sono sincrone Infatti il diagramma di circuiti sincroni prevede implicitamente un comportamento sincrono anche degli ingressi fatto non verificato nei casi B e C
La cosa non vale per il monoimpulsore A in quanto pur essendo lrsquoingresso asincrono lrsquouscita (rete di tipo Moore) dipende solo dagli stati In altre parole il comportamento della rete rende intrinsecamente sincroni ingressi fisicamente asincroni
Il diagramma degli stati che riflette il comportamento delle due reti B e C puograve essere tracciato solo partendo da una analisi asincrona ldquoaprendordquo quindi i FF D inseriti Ovviamente egrave possibile progettare le due reti senza lrsquouso dei FF D partendo da un diagramma degli stati asincrono ldquotradizionalerdquo
A scopo di esercizio si suggerisce la sintesi e la simulazione con Altera dei tre monoimpulsori come reti asincrone Si tratta di circuiti on due ingressi Ck e D
29
Monoimpulsori A-B-C
30
31
Contatori
A B C D Z
Circuiti senza ingresso (a parte il clock) nella versione piugrave semplice
D0 Q0
Q0CKFFD
MUX
1
0D1 Q1
Q1CKFFD
(Il clock egrave spesso sottinteso nei circuiti sincroni)
U0 U1
Esempio contatore binario x 4 con decodifica del 3
000 010 100 111
OUT
Q1 cambia stato quando Q0 egrave a 1 e passa a 0
CK
u1
u0
OUT (0) (1) (2) (0) (1) (2)(3) (3)
Contatore x 4 con decodifica del 3
33
Contatori binari in base non potenza di 2
A B C D E
000 001 010 011 100Contatore
binario per 5
D0 Q0
Q0CKFFD
MUX
1
0 1D1 Q1
Q1CKFFD
MUX
1
0D Q2
Q2CKFFD
Questo conta x8 ma per contare x5 arrivati a 4 bisogna ritornare a 0
34
D0 Q0
Q0CKFFD D1 Q1
Q1CKFFD
MUX
1
0 D2 Q2
Q2CKFFD
MUX
1
0
ABC
ldquo4rdquo
Contatore x 5
Decoder
La decodifica del 4 porta a zero lrsquouscita del decodificatore e quindi a 0 tutte le uscite degli AND rosa e al successivo fronte positivo del clock i tre FF campionano uno ldquo0rdquo
Per esercizio sintetizzare un contatore x 100 partendo dalla sintesi di un contatore decimale ovvero di un contatore x10 (da sintetizzare) Quanti FF per un contatore decimale I contatori decimali si trovano integrati in Altera
ldquo3rdquo
35
Contatori con ingressi di controllo
Ex Contatore integrato x 16 con Load e Enable
bull Il contatore conta per 16 (0-15) se il segnale EN egrave a 1 Allorchegrave il segnale LD va a 1 il dato presente sugli ingressi D egrave inserito nei 4 FF (lrsquoingresso puograve essere sincrono o asincrono) Nel caso precedente il decodificatore del ldquo3rdquo (uscita vera va portato) allrsquoingresso LD con tutti i Di a zero
bull In generale il contatore fornisce anche unrsquouscita ldquocarryrdquo che va a 1 quando il contatore raggiunge il valore FF Questa uscita puograve essere connessa allrsquoenable di un contatore a valle per ottenere un contatore per 256 cosigrave via (Progettarlo come esercizio)
EN
Q0 Q1 Q2 Q3CKLD
D0 D1 D2 D3
EN
Q0 Q1 Q2 Q3CK
CYLD
D0 D1 D2 D3
bull Esistono contatori UPDOWN nei quali un ingresso (UD) seleziona se il conteggio deve avvenire avanti o indietro Nel caso sia selezionata la modalitagrave ldquoindietrordquo il carry si attiva quando si raggiunge il valore ldquotutti zerirdquo
bull Esiste una molteplicitagrave di contatori ciascuno con le proprie specifiche peculiaritagrave con o senza RESET (che normalmente agisce in modo asincrono) UD con o senza LD etc etc
NB qualunque circuito sincrono (con sequenza non binaria) riconducibile al diagramma degli stati di un contatore egrave sempre un contatore
101 010 000 111 110 Contatore x 5 non binario
36
74163 contatore reale x 16 con Load Reset e Enable (T e P)I segnali di controllo sono sincroni ovvero agiscono sul fronte positivo del clock (rising edge)
74138 decoder 38 con uscite negate se G2A e G2B entrambi a zero e G1 a 1 Altrimenti tutte uscite alte
Direttorio Counter Glitch
Contatore binario x 8 e glitches
37
Glitch
Simulazione timingNB la presenza e la durata del glitch dipende dalle caratteristiche elettriche dei dispositivi
dalla loro tecnologia etc Nel caso dei dispositivi Altera dipende dal tipo di dispositivo sul quale egrave realizzato il circuito Analogamente la sensibilitagrave di eventuali ingressi di clock collegati allrsquouscita con il glitch dipende dalle caratteristiche del dispositivo Se ad esempio nel dispositivo Altera utilizzato si collega allrsquouscita Y6 il clock di un FFD non si ha commutazione del FF ma questo non egrave vero in assoluto
38
Cosa succede al contatore X5 progettato precedentemente se allrsquoaccensione non disponendo di un segnale di RESET i FF si portano in uno stato non facente parte del cicloNB La condizione allrsquoaccensione egrave del tutto casuale e dipende unicamente dalle condizioni elettriche
di realizzazione Ersquo impredicibileSupponiamo che i FF si portino al valore 110 (il numero 6 fuori dal ciclo) Analizziamo il comportamento
D0 Q0Q0CK
FFD D1 Q1Q1CK
FFD
MUX
1
0 D2 Q2Q2CK
FFD
MUX
1
0
ABC
ldquo4rdquo
000 001 010 011 100 110 111
In questo caso ci si riporta nella situazione di conteggio regolare (verificare con la tabella degli stati ) ma il comportamento in generale dipende dalla realizzazione e in altre realizzazione i due stati potrebbero essere separati dal ciclo principale che quindi non verrebbe mai raggiunto Ecco la funzione del RESET
39
Solo come esempio (da non utilizzare ) a scopo didattico vediamo la tabella delle transizioni di un contatore per 6 UpDown con comando di Reset I segnali di ingresso cambiano in modo asincrono ma hanno effetto in modo sincrono
Per compensare allrsquoaccensione
Sintetizzare e simulareCome dovrebbe essere modificato lo schema in Altera per permettere di
ldquopresettarerdquo in modo asincrono il contatore a un particolare valore di ingresso
00 01 11 10UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
111
110
000 101
000
101
y3 y2 y100 01 11 10
UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
000 000111
000 000 000 000110
000 101
000
000 000
101
y3 y2 y1
40
D0Q0
CKFFD
Clocky2
DEC
y3
y2
y1
ldquo1rdquo
ldquo2rdquo
ldquo3rdquo
ldquo4rdquo
1
0
UPDown
Sintesi di y2 in modo ldquodirettordquo
1
0
00 01 11 10UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
000 000111
000 000 000 000110
000 101
000
000 000
101
y3 y2 y1
41
Cassaforte hellipDisponendo di un contatore per 8 (ma anche per 16 etc) con reset sincrono e sempre abilitato al conteggio come potrei realizzare il circuito di apertura della cassaforte (sequenza X1X2 00-01-01-10) con modello Moore
Cx8RES
Q0 Q1 Q2 CK
RES= (ldquo0rdquoX1X2 + ldquo1rdquo X1X2 + ldquo2rdquo X1X2 + ldquo3rdquo X1 X2)Z = ldquo4rdquo (ldquo0rdquordquo1rdquordquo2rdquordquo3rdquordquo4rdquo sono le decodifiche binarie delle tre uscite del contatore)
Il contatore si resetta ogni volta che non si presenta lrsquoingresso giusto relativo al particolare stato Ilcontatore quindi si resetta e rimane resettato se non nelle condizioni espresse dalla funzione RESIl contatore arrivato a 4 (Z=1) si resetta comunque al successivo fronte del clock
Le reti sincrone si progettano sempre come combinazione di blocchi disponibili e logica ldquorandomrdquo
ABC
ldquo0rdquoldquo1rdquoldquo2rdquoldquo3rdquoldquo4rdquo
RLAND-OR
X1X2
RESZ
Cx8RES
Q0 Q1 Q2 CK
42
Contatori
EN
Q0 Q1 Q2 Q3CKCY
RESET
bull Attenzione Consideriamo il contatore di figura (questa volta con RESET asincrono) e supponiamo di utilizzarlo per contare per 5 (NB per il Reset si usa il ldquo5rdquo in questo casohellip glitch)
ABCD
ldquo5rdquo
ldquo1rdquo Percheacute questo schema egrave sbagliato
bull Percheacute presenta una corsa critica Nel momento in cui anche uno solo dei FF si resetta (e non tutti nello stesso istante) viene a mancare la configurazione ldquo4rdquo sul decoder e quindi alcuni FF potrebbero non fare in tempo a resettarsi E allora
EN
Q0 Q1 Q2 Q3CKCY
RESET
ABCD
ldquo5rdquo
ldquo1rdquo
RS
Y ldquo0rdquo
bull Cosigrave facendo il ldquo4rdquo attiva il SET e il FF NON si resetta fino a quando non egrave stato raggiunto la ldquo0rdquo NB lo schema ldquosbagliatordquo si puograve usare solo se si egrave certi della rapiditagrave di reset dei FF del contatore
bull Verificare con Altera
Sintesi cassaforte con moduli
Altera Cassaforte sincrona con moduli
Rete di controllo
Contatore con Reset asincrono e Load sincrono
43
NB In questo progetto la sintesi egrave stata condotta in modo ldquodirettordquo ovvero senza passare per la sintesi formale e utilizzando componenti disponibili e helliphellip materia grigia La sintesi dei circuiti sincroni si fa sempre e unicamente cosigrave
44
Simulazione funzionale (no timing)
NB I segnali di ingresso sono campionati SOLO sul fronte positivo del clock anche se si presentano asincroni Il segnale di uscita si attiva al clock successivo al riconoscimento della sequenza La posizione di ldquoriposordquo del contatore egrave il valore 4 I segnali Yi sono le decodifiche dei segnali di di ingresso X1 e X2
00 01 01 10
45
Simulazione timing
46
NB Si egrave scelto di utilizzare SOLO gli ingressi SINCRONI del contatore per semplicitagrave Il contatore rimane al valore 100 fino a quando non si presenta allrsquoingresso il valore 00 Se la sequenza egrave esatta il contatore continua a contare in avanti fino alla generazione dellrsquouscita (valore 11 del contatore) altrimenti si riporta al valore 100 ovvero Qc=1) Il segnale GN (Gate Not) egrave quello che abilita il conteggio Il sistema riamane stabile a 000 per una sequenza lunga a piacere di X1=0 e X2=0 e si sposta quando dopo 00 si ha 01 Come si evince dalla simulazione se la sequenza non egrave corretta o egrave interrotta il contatore si riporta sempre a 100
00 01 11 10
001 000 000
X1
000000 010 100 100001
000 100 100 011010
100 100 100 100011
000 100 100 100100
000 100 100 100101
000 100 100 100110
000 100 100 100111
0
0
0
1
0
0
0
0
X2
000
NB la tabella delle transizioni derivata della rete realizzata NON ha ovviamente condizioni di indifferenza
47
Progettare un contatore packed BCD updown a 8 bit (due digit)
48
Generazione di forme drsquoondabull Ersquo possibile generare forme drsquoonda periodiche mediante circuiti sincroni di periodo
sottomultiplo intero del clock
Esempio 1Divisore di frequenza per 2
D0k Q0k
CK D Q
CK Clock
Q
Esempio 2 generare una forma drsquoonda periodica con periodo 5T (ove T sia il periodo del clock) in cui in un semiperiodo 3T lrsquouscita sia alta e nellrsquoaltro semiperiodo 2T lrsquouscita sia bassa
Q0 Q1 Q2 CK
Cx5
C
B
A
01234
DecoderDemux
Clock
ZZ T
3T2T
3T
NB una rete logica egrave in grado di effettuare delle divisioni di frequenza e mai delle moltiplicazioni di frequenza (che si possono ottenere solo con circuiti analogici non lineari)
49
Di che circuito si tratta
D0k Q0k
CK D0 Q0
CKQ0
D0k Q0k
CK D1 Q1
CK
D0k Q0k
CK D2 Q2
CKClock
Clock
Q0
Q1
Q2
Ersquo un contatore binario ma non sincrono Infatti i vari FF NON utilizzano lo stesso clock e questo porta a un piccolo disallineamento sulle uscite Non egrave sintetizzabile come una rete sincrona e una sintesi formale sarebbe possibile solo trattando il circuito come asincrono ovvero ldquoaprendordquo i FF Sarebbe possibile trasformarlo in un contatore x6 mantenendo la stessa impostazione
Sintetizzare e simulare con Altera
NB il segnale di clock non egrave in comune
50
7493
51
Altera Contatore asincrono
Contatore asincrono
52
Simulazione timing
53
Come puograve essere utilizzato un FFD per catturare un impulso piugrave breve di un periodo
D2 Q2
Q2CKFFD Z
Clock
D1 Q1
Q1CKFFD
D0 Q00
Q0CKFFD
ldquo1rdquo CL
Lrsquoimpulso breve viene catturato dal FF 0 (purcheacute di larghezza sufficiente per la tecnologia del FF) - che quindi agisce come integratore ndash la cui uscita alimenta il monoimpulsore di tipo A Lrsquoattivazione del FF 1 resetta il FF 0 (supponendo che il segnale di CL sia ldquopositiverdquotruerdquo)
Ci puograve essere un problema se il CL agisce in modo asincrono
NB questo circuito e quello del lucido precedente evidenziano il fatto che nella realtagrave nessuna rete egrave solo sincrona ma bensigrave egrave pressocheacute sempre necessario utilizzare reti di natura diversa anche percheacute vi egrave sempre una interazione fra reti con clock diversi eo con segnali provenienti dal mondo esterno NON sincronizzati con il clock
Monoimpulsore di tipo A ldquorivistordquo
54
bull Uno shift register a sinistra (a destra) egrave un registro composto da FFD che ad ogni clock trasferisce il valore del FF a destra (a sinistra) di ciascun FF nel FF stesso Nel FF piugrave a destra (sinistra) viene immesso uno ldquo0rdquo Questi tipi di registri shift si chiamano ldquologicirdquo
Shift register (registri a traslazione o scorrimento)
D0kQ0k
CK DnQn
CK
D0kQ0k
CK Dn-1Qn-1
CK
D0kQ0k
CK Dn-2Qn-2
CK
D0kQ0k
CK D0Q0
CK
ldquo0rdquo
Shift register a sinistra
bull Anche per i registri a traslazione esistono diverse versioni con ingresso parallelo e uscita seriale con ingresso seriale e uscita parallela con reset con load etc etc
bull Si noti che uno shift register egrave anche un contatore Si immagini per esempio che dopo un reset siano inseriti degli uni a partire da destra Lo shift register si riempie progressivamente di uni e quindi la posizione in cui egrave arrivato lrsquouno indica il valore del conteggio in base a un codice ldquouno su nrdquo (un codice decodificato)
bull Spesso uno stesso registro puograve traslare a destra o a sinistra in funzione di una segnale di controllo Ovviamente questo si ottiene premettendo a ogni ingresso Di un MUX a due vie che preleva in funzione del segnale di controllo Qigrave+1 o Qigrave-1 Con questa configurazione lo shift register diventa anche un contatore avantiindietro
Registro a scorrimento (shift-register) a 3 bit
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
IN
OUT2OUT1OUT0
CK
CK
IN
A_RESET
OUT1
OUT2
OUT0
Registro a scorrimento (shift-register) a 3 bit
57
Esempio 74164 (serial In parallel OUT)
bull In questo registro a traslazione ad ogni fronte positivo del clock i dati sono traslati a destra (Q0 -gt Q1 Q1-gtQ2 etc) Il registro egrave dotato in un Master Reset (vero negato) e il dato inserito nel FF Q0 egrave dato dallrsquoAND dei due ingressi Dsa e Dsb
bull Si noti che lrsquooperazione di shift corrisponde aritmeticamente alle operazioni di divisione e moltiplicazione per 2 Si supponga che in Q0 vi sia il bit meno significativo e in Q7 il meno significativo
0 1 1 0 1 0 1 0
010101102 = 10810
Shift left =gt x2
Shift right =gt 2
101011002 = 21610
001010112 = 5910
NB nel dispositivo i bit sono posti in ordine invertito e quindi un shift left del numero corrisponde a uno shift right sul dispositivo
58
bull Esistono anche i registri a traslazione ldquoaritmeticirdquo In questi shift register a destra anzicheacute fare entrare nel FF piugrave a sinistra lo ldquo0rdquo viene immesso sempre ripetutamente il suo valore logico
Shift aritmetico
Q7 Q6 Q5 Q4 Q3 Q2 Q1 Q0
D7 D6 D5 D4 D3 D2 D1 D0
I LDCK Esempio
11001010SRA
11100101 interpretato in complemento a 2
001101102=5410
C2 C2
000110112=2710
bull Lo shift aritmetico a destra effettua una divisione per 2 mantenendo il segno
59
Rotazione
Nei computer egrave sovente necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register
D0kQ0k
CK DnQn
CK
D0kQ0k
CK Dn-1Qn-1
CK
D0kQ0k
CK Dn-2Qn-2
CK
D0kQ0k
CK D0Q0
CK
Molto spesso nei computer egrave necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register con direzione programmabile In questo caso su D0 ad esempio puograve essere avviato o Q1 o Qn
60
Contatori con shift register ndash Contatore retroazionato EX-OR
Q2Q0
Shift right 3 bitDQ1
110 111 011 101 010 001
Diagramma degli stati disgiunto
Uno shift register con n FF retroazionato con un EX-OR (scelta degli ingressi variabile) egrave un contatore NON binario che conta per 2n-1 (purcheacute presettato a un valore diverso da tutti zeri)
000
100
61
Contatore di Johnson (riempimento e svuotamento)
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
000-gt100-gt110-gt111-gt011-gt001-gt000-gtStati isolati 101-gt010-gt101gt1
Poicheacute configurazioni adiacenti del codice Johnson differiscono di un solo bit il contatore puograve essere utilizzato per generare forme drsquoonda prive di alee
62
Contatore ad anello con un solo 1 (ovvero che genera direttamente il codice 1su n)
FFDD Q
QR
RESET
FFDD Q
QR
RESET
FFDD Q
QPR
RESET
OUT3OUT1OUT0
CK
FFDD Q
QR
RESET
OUT2
0001-gt1000-gt0100-gt0010-gt0010n FF per contare per n (mentre con i contatori binari il numero dei FF egrave il log2m ove m egrave il primo intero maggiore o uguale a n)
63
Barrel shifter (rotore)Un barrel shifter egrave uno shift register in grado di traslare di ldquonrdquo posizioni in un solo clock il contenuto dei suoi FF In figura egrave riportato il barrel shifter della Altera Gli ingressi A-H in presenza dellrsquoattivazione del segnale LDST al primo fronte positivo del clock sono depositati nei FF Quando LDST egrave 0 ad ogni fronte positivo del clock i bit di uscita sono ruotati di n posizioni in senso antiorario (ovvero lrsquouscita H diventa la G la G diventa la Fhellipe lrsquouscita A diventa la H) ove n egrave il valore binario indicato dai segnali S0 S1 e S2
Si noti che il circuito in questione egrave di fatto un registro con 8 FF allrsquoingresso di ciascuno dei quali egrave previsto un MUX a 8 vie che pilotato dai segnali S0 S1 e S2 che seleziona uno degli 8 uscite del dispositivo La struttura interna puograve essere osservata ldquoclikkandordquo due volte sul dispositivo nello schema di Altera
64
Barrel shifter
6565
66
Simulazione timing
67
bull Utilizzando il sistema Altera progettare un orologio con secondi minuti ora partendo da un oscillatore a quarzo con frequenza 500 KHz
bull E se si volesse proseguire e realizzare anche un datario (giorno mese e anno )
bull Come potrebbe essere integrato con una sveglia Si ricordi che lrsquoorologio deve essere anche essere ldquopresettatordquo
bull Quali circuiti utilizzare per la visualizzazione
68
EPROM
X0nZ0m
y0kY0k
Clock
D0kQ0k
FFD0k
CK D0kQ0k CK
Reti sincrone con EPROM
Al posto delle EPROM si utilizzano ora dei PLA ovvero dispositivi nei quali si nei quali le funzioni combinatorie sono ottimizzate ma il principio egrave assolutamente il medesimo
69
Progettare con Altera una rete logica sincrona che utilizzando registri 374 ALU 74181 un contatore e altri dispositivi ritenuti necessari permetta di eseguire in sequenza la somma di due dati di 4 bit senza segno ingresso esegua il complemento a 2 inverta la parte bassa con la parte alta del risultato e infine moltiplichi il tutto logicamente per 2
La soluzione egrave sempre decomponibile in tre sottosistemi il controllo con la sua decodifica (unitagrave di controllo) il percorso dei dati con le unitagrave che li trasformano (datapath) e i registri di deposito e di ingresso dei dati
Questa egrave la struttura base di qualunque unitagrave centrale di qualunque computer
La differenza consiste solo nel fatto che anzicheacute avere una sequenza fissa di operazioni ne viene generata una volta a volta che dipende appunto dalla istruzione che deve essere eseguita Come si vedragrave approfonditamente nel corso di Calcolatori T del II anno (prof Neri e Mattoccia)
Arrivederci al corso di Calcolatori T del II anno (sapendo perfettamente le reti logiche helliphellip)
Reti Sequenziali Sincrone (RSS)
k (k)FFD
k
k FFD sullrsquoanello di retroazione Tutti con lo stesso clock di periodo T
S S S SCK
S
U
S
I
t t+T t+2Tt-TNel caso specifico Moore o Mealy Lo stato cambia anche se non cambia lrsquoingresso
Lrsquouscita cambia anche se non cambia lrsquoingresso
CK
7
Il FFD come elemento fondamentale delle RSSSe allrsquoingresso CK viene inviato un segnale periodico (clock) il FFD ritarda (D = Delay) il segnale di uscita Q rispetto al segnale di ingresso D di un tempo pari al periodo di clock T se il cambiamento del segnale D egrave contemporaneo a quelli clock (nel rispetto di setup e hold)
Qn+1 = Dn
D
CK
QT T T T
FFDD
CK
Q
Q
D
CK
Q
Q
8
NB il concetto di contemporaneitagrave potrebbe apparire in contrasto con la necessitagrave di rispettare i tempi di setup e hold Di fatto gli ingressi di una rete sincrona sono nella larga maggioranza provenienti da altre reti che hanno lo stesso clock e quindi sono generati con i ritardi delle reti soggette al clock rispettando quindi di fatto i tempi previsti Di fatto le variazioni degli ingressi sono sempre un porsquo posteriori alla variazione del clock Si veda in seguito il comportamento dei registri a traslazione
NB essendo qui il tempo discretizzato si usa n e
n+1 al posto di T e T+t
Alcune considerazioni sulle RSS
bull Lo stato della rete cambia solo in corrispondenza dei fronti di salita del clock che si susseguono con periodo T
bull La rete risponde ogni T se si desidera massimizzare la velocitagrave di risposta della rArruscita egrave necessario adottare il modello di Mealy
bull La sequenza degli stati della rete egrave svincolata dai ritardi della rete combinatoria (purcheacute la distanza fra i fronti positivi del segnale clock sia superiore al massimo ritardo della rete combinatoria) Quindi nessun problema di corse critiche
bull Allrsquointerno di uno stesso progetto (ad esempio un processore) sono tipicamente presenti piugrave RSS e non necessariamente per tutte le RSS il clock egrave lo stesso eo coincide con il clock del processore
bull Le RSS sono piugrave facili da progettare delle RSA
9
Clock gating e glitch sul clockNelle reti sincrone egrave necessario evitare variazioni spurie (glitches) del segnale di clock che possono provocare commutazioni indesiderate dei FFD (che sono sensibili ai fronti)
Ad esempio per via dei ritardi tra gli n segnali I[n-10] eo le alee introdotte dalla rete combinatoria di decodifica a causa del ldquoclock gatingldquo puograve verificarsi quanto segue
CK
P
CK_G
Glitch sul clock rarr possibile commutazione spuria del FFD
X
CK
Q
QFFD
D
CK
Q
QCK_GRete di Decodifica
I[n-10]P
t
NO
10
Naturalmente tutto dipende dalla larghezza dellrsquoimpulso spurio se molto stretto il FF potrebbe non sentirlo Quindi il clock gating non egrave proibito ma egrave un rischio da evitare in caso di incertezza
11
Per transizioni che debbono o meno verificarsi in funzione del valore della rete di decodifica bisogna condizionare il segnale D come in figura Se la rete di decodifica genera il valore 1 lrsquouscita Q assume al clock il valore di X altrimenti lrsquouscita Q copia seacute stessa e rimane invariata
Clock gating e glitch sul clock
X
CK
Q
QFFD
D
CK
Q
Q
I[n-10] P
t
01SEL
01SEL
Rete di Decodifica
Il clock gating oltre a generare potenziali glitch introduceldquoclock-skewrdquo (disallineamento) Ad esempio consideriamo due RSS soggette al FF1 e al FF2
Clock gating e clock-skew
CK
CK_GtAND tAND
I clock delle due reti sono sfasati di un tempo pari al ritardo introdotto dallrsquoAND (in generale dalla eventuale RC) interposto Tale fenomeno (ldquoclock-skewrdquo) egrave potenzialmente dannoso in quanto il FF2 potrebbe fare campionare alla propria RC in presenza dello stesso fronte di clock i nuovi valori prodotti dalla RC alimentata dal FF1
NB Il ldquoclock-skewrdquo non egrave causato solo dal clock gating ma anche (ad esempio) da percorsi elettrici di lunghezza diversa
I1
CK
B
BCK_GP
I2
CK
A
A
tAND
FFD-1D
CK
Q
QFFD-2
D
CK
Q
Q
12
13
Sincronizzazione degli ingressibull Finora si egrave dato implicitamente per scontato che gli ingressi di una rete sincrona commutino
in modo sincrono con il clock
bull Ciograve egrave verificato se gli ingressi provengono da una rete sincrona di tipo Moore nella quale le uscite sono funzione solo dello stato che commuta solo al fronte positivo del clock
Rete combinatoria
X0n
Z0m
y0k
Y0k
Clock
D0kQ0k
FFD0k
CK D0kQ0k CK
Rete combinatoria
bull Nella realtagrave le cose stanno diversamente Si pensi al caso di pulsanti esterni che costituiscano lrsquo ingresso della rete Il cambiamento puograve avvenire in un istante qualsiasi
bull Nella rete di figura (Moore) le uscite sono comunque certamente sincronizzate con il clock e se gli ingressi X0n cambiano in un momento qualsiasi non sincronizzato il cambiamento viene percepito dai FF di retroazione solo al fronte positivo del clock e quindi il comportamento delle uscite della rete egrave il medesimo che si avrebbe se gli ingressi fossero sincronizzati
14
Sincronizzazione degli ingressi
bull La cosa cambia perograve se la rete egrave di tipo Mealy
Rete combinatoria
X0nZ0m
y0kY0k
Clock
D0kQ0k
FFD0k
CK D0kQ0k CK
bull In questo caso un cambiamento asincrono degli ingressi provoca in generale un cambiamento asincrono delle uscite
15
Esempio la cassaforte (dotata di una doppia tastiera - due ingressi) si apre solo se gli ingressi hanno assunto NEL TEMPO le configurazioni
00-01-01-10 Ogni violazione della sequenza riporta il sistema nello stato iniziale NB Essendo gli ingressi campionati la sequenza di ingresso 01-01 egrave possibile e significativa
hellip Cassaforte hellip sincrona hellip
NB si puograve supporre che gli ingressi cambino allo stesso istante delle variabili di stato ma la cosa non egrave necessaria Se la rete egrave di tipo Moore anche se gli ingressi cambiano a metagrave di un periodo di clock il comportamento dal punto di vista degli stati e quindi delle uscite egrave assolutamente lo stesso (ogni variazione egrave rilevata solo alla fine del periodo)
E11101
0111
11
F0
01
01
G0
0000
11 00
11
11
10
1001
10
00
10 0110
01
01
00
Per ogni stato tutte le combinazioni di ingresso
00
10
10
11
C0A0 B0 D0
Gli stati NON sono stabili per gli ingressi che li hanno provocati
00
B
00 01 11 10
F A GA
B C A GB
B D A GCB F A ED
B F A GE
B F AA- GF
B F A GG
0
0
0
0
1
0
0
X1X2
A0 B0 C0 E10011
01
10
0111
11
11
D0 10
F0
01
01
G0
0000
00
00
11
11
10
1001
1010 0110
01
11
00
Cassaforte sincrona
16
01
NB in questo esempio non vi sono condizioni di indifferenza Anzicheacute di stati compatibili si parla qui di stati equivalenti Ove poi due stati per gli stessi ingressi abbiano uscite identiche e portino agli stessi stati si parla di stati indistinguibili Naturalmente la descrizione a parole puograve evidenziare che alcune combinazioni di ingresso per alcuni stati non si presentano In questo caso si ritorna al concetto di compatibilitagrave
00
17
Cassaforte sincrona
Classi di equivalenza [AFG] =gt a[B] =gt b[C] =gt g[D] =gt d[E] =gt e
B
00 01 11 10
F A GA
B C A GB
B D A GCB F A ED
B F A GE
B F AA- GF
B F A GG
0
0
0
0
1
0
0
X1X2
B
C
D
E
F
G
A B C D E F
CF
FD CD
CFGE
CFGE
DFGE
--- CF DF GE
--- C F DF GE --
b
00 01 11 10
a a aa
b g a ab
b d a ag
b a a ed
b a a ae
X1X2
0
0
0
0
1 NB nel caso di tabelle completamente specificate le classi (massime) di equivalenza non hanno mai stati in comune Vanno usate tutte quindi Non esiste problema di chiusura
Ovviamente 5 stati 4 facenti parte della sequenza e uno esterno
18
b
00 01 11 10
a a aa
b g a ab
b d a ag
b a a ed
b a a ae
X1X2
0
0
0
0
1
Cassaforte sincrona
001
00 01 11 10
000 000 000000
001 011 000 000001
001 010 000 000011
001 000 000 100010
001 000 000 000100
X1X2
-- -- -- --101
-- -- -- --111
-- -- -- --110
0
0
0
0
1
--
--
--
Y1Y2 Y3
a =gt 000b =gt 001g =gt 011d =gt 010e =gt 100
D1= X1X2Y2Y3
D2=X1X2Y3
D3=X1X2+X1Y2Y3 Z =Y1
Sintetizzando con FFD la sintesi degli ingressi Di si ottiene sintetizzando le funzioni Yi (Yn+1=Dn)
Nessun problema di corse codifica libera (possibilmente ottima)
19
Sintesi
Direttorio cassaforte sincrona
20
00 01 01 10
Sintesi ndash simulazione funzionale
NB Gli ingressi cambiano in modo NON sincrono con il clock ma lrsquo uscita egrave sincrona essendo la rete di tipo Moore
21
Sintesi ndash simulazione timing
Si notino i ritardi delle uscite dei FF e dei gates da esse dipendenti rispetto al fronte positivo del clock (ad esempio d) se la frequenza del clock fosse eccessiva il sistema NON funzionerebbe piugrave correttamente
d
22
E con Mealy
B
00 01 11 10
F A GA
B C A GB
B D A GCB F A ED
B F A GE
B F AA- GF
B F A GG
0
0
0
0
1
0
0
X1X2
B0
00 01 11 10
F0 A0 G0A
B0 C0 A0 G0B
B0 D0 A0 G0CB0 F0 A0 E1D
B1 F1 A1 G1E
B0 F0 A0A-G0F
B0 F0 A0 G0G
X1X2
Potrei mettere una indifferenza sullrsquouscita Si si possono mettere indifferenze sulle uscite che cambiano Anticipazione o ritardo del cambiamento
Sintetizzare e simulare con Altera
23
bull Allrsquoesame orale egrave necessario portare un esercizio di reti sincrone e uno di reti asincrone NON ldquomutuatordquo da altri hellip
bull I due esercizi debbono essere portati su una chiavetta (o dispositivo equivalente) debbono contenere una spiegazione e anche la progettazionesimulazione con Altera
bull Il candidato deve dimostrare di sapere usare il sistema Altera e spiegare i progetti portati
bull Gli esercizi di reti sincrone hanno spesso il diagramma degli stati ma solo per verificahellip
Monoimpulsore A
D1 Q1
Q1CKFFD
D2 Q2
Q2CKFFD Z1
D
Clock
Clock
D
Z
Q1
Q2
Qui lrsquoingresso asincrono D egrave sincronizzato dai FF Uscita Z sincrona
Generare un impulso di uscita di un periodo di clock per ingresso 1 Un ulteriore impulso viene generato solo se lrsquoingresso torna a 1 dopo essere stato a 0 Lrsquouscita deve essere sincronizzata con il clock
24
25
D1 Q1
Q1CKFFD
D2 Q2
Q2CKFFD Z
D
Clock
Monoimpulsore A
1
0
1
1
0
A0 B1
C0
0
A
A
A
-
B
C
C
-
DQ2
Q1
B
0 1
C
-
Z0
0
1
-
A 00
--
00
00
10
--
11
11
DQ2
Q1
01
0 1
11
10
Z0
0
-
1
0000
10
11
01
B
C
-
A
Q1=D Q2= DQ1 Z=Q1Q2
00
00
01
01
10
10
11
11
DQ2
Q1
01
0 1
11
10
Z0
0
0
1
00
MAhellip
Q1=D Q2= Q1 Z=Q1Q2
Moore necessariamente
26
D1 Q1
Q1CKFFD
D2 Q2
Q2CKFFD Z2
D
Clock
Monoimpulsore B
Clock
D
Z2
Q1
Q2
Lrsquoingresso asincrono D agisce direttamente sullrsquouscita Z che quindi risulta asincrona
Qui la rete egrave di tipo Mealy e quindi con ingresso asincrono egrave possibile che vi sia uscita asincrona
27
D Q
QCKFFD Z
D
Clock
Monoimpulsore C
Clock
D
Z
Q
Anche qui lrsquoingresso asincrono D agisce direttamente sullrsquouscita Z che quindi risulta asincronaSi noti che se lrsquoingresso oscilla una volta che il FF ha campionato un 1 e fino a quando non campiona uno 0 lrsquouscita oscilla
Qui la rete egrave di tipo Mealy e quindi con ingresso asincrono egrave possibile che vi sia uscita asincrona
28
Considerazioni sui monoimpulsori A B e C
Il diagramma degli stati corrispondente al funzionamento reale dei due monoimpulsori B e C NON puograve essere tracciato percheacute di fatto le due reti (di tipo Mealy) NON sono sincrone Infatti il diagramma di circuiti sincroni prevede implicitamente un comportamento sincrono anche degli ingressi fatto non verificato nei casi B e C
La cosa non vale per il monoimpulsore A in quanto pur essendo lrsquoingresso asincrono lrsquouscita (rete di tipo Moore) dipende solo dagli stati In altre parole il comportamento della rete rende intrinsecamente sincroni ingressi fisicamente asincroni
Il diagramma degli stati che riflette il comportamento delle due reti B e C puograve essere tracciato solo partendo da una analisi asincrona ldquoaprendordquo quindi i FF D inseriti Ovviamente egrave possibile progettare le due reti senza lrsquouso dei FF D partendo da un diagramma degli stati asincrono ldquotradizionalerdquo
A scopo di esercizio si suggerisce la sintesi e la simulazione con Altera dei tre monoimpulsori come reti asincrone Si tratta di circuiti on due ingressi Ck e D
29
Monoimpulsori A-B-C
30
31
Contatori
A B C D Z
Circuiti senza ingresso (a parte il clock) nella versione piugrave semplice
D0 Q0
Q0CKFFD
MUX
1
0D1 Q1
Q1CKFFD
(Il clock egrave spesso sottinteso nei circuiti sincroni)
U0 U1
Esempio contatore binario x 4 con decodifica del 3
000 010 100 111
OUT
Q1 cambia stato quando Q0 egrave a 1 e passa a 0
CK
u1
u0
OUT (0) (1) (2) (0) (1) (2)(3) (3)
Contatore x 4 con decodifica del 3
33
Contatori binari in base non potenza di 2
A B C D E
000 001 010 011 100Contatore
binario per 5
D0 Q0
Q0CKFFD
MUX
1
0 1D1 Q1
Q1CKFFD
MUX
1
0D Q2
Q2CKFFD
Questo conta x8 ma per contare x5 arrivati a 4 bisogna ritornare a 0
34
D0 Q0
Q0CKFFD D1 Q1
Q1CKFFD
MUX
1
0 D2 Q2
Q2CKFFD
MUX
1
0
ABC
ldquo4rdquo
Contatore x 5
Decoder
La decodifica del 4 porta a zero lrsquouscita del decodificatore e quindi a 0 tutte le uscite degli AND rosa e al successivo fronte positivo del clock i tre FF campionano uno ldquo0rdquo
Per esercizio sintetizzare un contatore x 100 partendo dalla sintesi di un contatore decimale ovvero di un contatore x10 (da sintetizzare) Quanti FF per un contatore decimale I contatori decimali si trovano integrati in Altera
ldquo3rdquo
35
Contatori con ingressi di controllo
Ex Contatore integrato x 16 con Load e Enable
bull Il contatore conta per 16 (0-15) se il segnale EN egrave a 1 Allorchegrave il segnale LD va a 1 il dato presente sugli ingressi D egrave inserito nei 4 FF (lrsquoingresso puograve essere sincrono o asincrono) Nel caso precedente il decodificatore del ldquo3rdquo (uscita vera va portato) allrsquoingresso LD con tutti i Di a zero
bull In generale il contatore fornisce anche unrsquouscita ldquocarryrdquo che va a 1 quando il contatore raggiunge il valore FF Questa uscita puograve essere connessa allrsquoenable di un contatore a valle per ottenere un contatore per 256 cosigrave via (Progettarlo come esercizio)
EN
Q0 Q1 Q2 Q3CKLD
D0 D1 D2 D3
EN
Q0 Q1 Q2 Q3CK
CYLD
D0 D1 D2 D3
bull Esistono contatori UPDOWN nei quali un ingresso (UD) seleziona se il conteggio deve avvenire avanti o indietro Nel caso sia selezionata la modalitagrave ldquoindietrordquo il carry si attiva quando si raggiunge il valore ldquotutti zerirdquo
bull Esiste una molteplicitagrave di contatori ciascuno con le proprie specifiche peculiaritagrave con o senza RESET (che normalmente agisce in modo asincrono) UD con o senza LD etc etc
NB qualunque circuito sincrono (con sequenza non binaria) riconducibile al diagramma degli stati di un contatore egrave sempre un contatore
101 010 000 111 110 Contatore x 5 non binario
36
74163 contatore reale x 16 con Load Reset e Enable (T e P)I segnali di controllo sono sincroni ovvero agiscono sul fronte positivo del clock (rising edge)
74138 decoder 38 con uscite negate se G2A e G2B entrambi a zero e G1 a 1 Altrimenti tutte uscite alte
Direttorio Counter Glitch
Contatore binario x 8 e glitches
37
Glitch
Simulazione timingNB la presenza e la durata del glitch dipende dalle caratteristiche elettriche dei dispositivi
dalla loro tecnologia etc Nel caso dei dispositivi Altera dipende dal tipo di dispositivo sul quale egrave realizzato il circuito Analogamente la sensibilitagrave di eventuali ingressi di clock collegati allrsquouscita con il glitch dipende dalle caratteristiche del dispositivo Se ad esempio nel dispositivo Altera utilizzato si collega allrsquouscita Y6 il clock di un FFD non si ha commutazione del FF ma questo non egrave vero in assoluto
38
Cosa succede al contatore X5 progettato precedentemente se allrsquoaccensione non disponendo di un segnale di RESET i FF si portano in uno stato non facente parte del cicloNB La condizione allrsquoaccensione egrave del tutto casuale e dipende unicamente dalle condizioni elettriche
di realizzazione Ersquo impredicibileSupponiamo che i FF si portino al valore 110 (il numero 6 fuori dal ciclo) Analizziamo il comportamento
D0 Q0Q0CK
FFD D1 Q1Q1CK
FFD
MUX
1
0 D2 Q2Q2CK
FFD
MUX
1
0
ABC
ldquo4rdquo
000 001 010 011 100 110 111
In questo caso ci si riporta nella situazione di conteggio regolare (verificare con la tabella degli stati ) ma il comportamento in generale dipende dalla realizzazione e in altre realizzazione i due stati potrebbero essere separati dal ciclo principale che quindi non verrebbe mai raggiunto Ecco la funzione del RESET
39
Solo come esempio (da non utilizzare ) a scopo didattico vediamo la tabella delle transizioni di un contatore per 6 UpDown con comando di Reset I segnali di ingresso cambiano in modo asincrono ma hanno effetto in modo sincrono
Per compensare allrsquoaccensione
Sintetizzare e simulareCome dovrebbe essere modificato lo schema in Altera per permettere di
ldquopresettarerdquo in modo asincrono il contatore a un particolare valore di ingresso
00 01 11 10UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
111
110
000 101
000
101
y3 y2 y100 01 11 10
UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
000 000111
000 000 000 000110
000 101
000
000 000
101
y3 y2 y1
40
D0Q0
CKFFD
Clocky2
DEC
y3
y2
y1
ldquo1rdquo
ldquo2rdquo
ldquo3rdquo
ldquo4rdquo
1
0
UPDown
Sintesi di y2 in modo ldquodirettordquo
1
0
00 01 11 10UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
000 000111
000 000 000 000110
000 101
000
000 000
101
y3 y2 y1
41
Cassaforte hellipDisponendo di un contatore per 8 (ma anche per 16 etc) con reset sincrono e sempre abilitato al conteggio come potrei realizzare il circuito di apertura della cassaforte (sequenza X1X2 00-01-01-10) con modello Moore
Cx8RES
Q0 Q1 Q2 CK
RES= (ldquo0rdquoX1X2 + ldquo1rdquo X1X2 + ldquo2rdquo X1X2 + ldquo3rdquo X1 X2)Z = ldquo4rdquo (ldquo0rdquordquo1rdquordquo2rdquordquo3rdquordquo4rdquo sono le decodifiche binarie delle tre uscite del contatore)
Il contatore si resetta ogni volta che non si presenta lrsquoingresso giusto relativo al particolare stato Ilcontatore quindi si resetta e rimane resettato se non nelle condizioni espresse dalla funzione RESIl contatore arrivato a 4 (Z=1) si resetta comunque al successivo fronte del clock
Le reti sincrone si progettano sempre come combinazione di blocchi disponibili e logica ldquorandomrdquo
ABC
ldquo0rdquoldquo1rdquoldquo2rdquoldquo3rdquoldquo4rdquo
RLAND-OR
X1X2
RESZ
Cx8RES
Q0 Q1 Q2 CK
42
Contatori
EN
Q0 Q1 Q2 Q3CKCY
RESET
bull Attenzione Consideriamo il contatore di figura (questa volta con RESET asincrono) e supponiamo di utilizzarlo per contare per 5 (NB per il Reset si usa il ldquo5rdquo in questo casohellip glitch)
ABCD
ldquo5rdquo
ldquo1rdquo Percheacute questo schema egrave sbagliato
bull Percheacute presenta una corsa critica Nel momento in cui anche uno solo dei FF si resetta (e non tutti nello stesso istante) viene a mancare la configurazione ldquo4rdquo sul decoder e quindi alcuni FF potrebbero non fare in tempo a resettarsi E allora
EN
Q0 Q1 Q2 Q3CKCY
RESET
ABCD
ldquo5rdquo
ldquo1rdquo
RS
Y ldquo0rdquo
bull Cosigrave facendo il ldquo4rdquo attiva il SET e il FF NON si resetta fino a quando non egrave stato raggiunto la ldquo0rdquo NB lo schema ldquosbagliatordquo si puograve usare solo se si egrave certi della rapiditagrave di reset dei FF del contatore
bull Verificare con Altera
Sintesi cassaforte con moduli
Altera Cassaforte sincrona con moduli
Rete di controllo
Contatore con Reset asincrono e Load sincrono
43
NB In questo progetto la sintesi egrave stata condotta in modo ldquodirettordquo ovvero senza passare per la sintesi formale e utilizzando componenti disponibili e helliphellip materia grigia La sintesi dei circuiti sincroni si fa sempre e unicamente cosigrave
44
Simulazione funzionale (no timing)
NB I segnali di ingresso sono campionati SOLO sul fronte positivo del clock anche se si presentano asincroni Il segnale di uscita si attiva al clock successivo al riconoscimento della sequenza La posizione di ldquoriposordquo del contatore egrave il valore 4 I segnali Yi sono le decodifiche dei segnali di di ingresso X1 e X2
00 01 01 10
45
Simulazione timing
46
NB Si egrave scelto di utilizzare SOLO gli ingressi SINCRONI del contatore per semplicitagrave Il contatore rimane al valore 100 fino a quando non si presenta allrsquoingresso il valore 00 Se la sequenza egrave esatta il contatore continua a contare in avanti fino alla generazione dellrsquouscita (valore 11 del contatore) altrimenti si riporta al valore 100 ovvero Qc=1) Il segnale GN (Gate Not) egrave quello che abilita il conteggio Il sistema riamane stabile a 000 per una sequenza lunga a piacere di X1=0 e X2=0 e si sposta quando dopo 00 si ha 01 Come si evince dalla simulazione se la sequenza non egrave corretta o egrave interrotta il contatore si riporta sempre a 100
00 01 11 10
001 000 000
X1
000000 010 100 100001
000 100 100 011010
100 100 100 100011
000 100 100 100100
000 100 100 100101
000 100 100 100110
000 100 100 100111
0
0
0
1
0
0
0
0
X2
000
NB la tabella delle transizioni derivata della rete realizzata NON ha ovviamente condizioni di indifferenza
47
Progettare un contatore packed BCD updown a 8 bit (due digit)
48
Generazione di forme drsquoondabull Ersquo possibile generare forme drsquoonda periodiche mediante circuiti sincroni di periodo
sottomultiplo intero del clock
Esempio 1Divisore di frequenza per 2
D0k Q0k
CK D Q
CK Clock
Q
Esempio 2 generare una forma drsquoonda periodica con periodo 5T (ove T sia il periodo del clock) in cui in un semiperiodo 3T lrsquouscita sia alta e nellrsquoaltro semiperiodo 2T lrsquouscita sia bassa
Q0 Q1 Q2 CK
Cx5
C
B
A
01234
DecoderDemux
Clock
ZZ T
3T2T
3T
NB una rete logica egrave in grado di effettuare delle divisioni di frequenza e mai delle moltiplicazioni di frequenza (che si possono ottenere solo con circuiti analogici non lineari)
49
Di che circuito si tratta
D0k Q0k
CK D0 Q0
CKQ0
D0k Q0k
CK D1 Q1
CK
D0k Q0k
CK D2 Q2
CKClock
Clock
Q0
Q1
Q2
Ersquo un contatore binario ma non sincrono Infatti i vari FF NON utilizzano lo stesso clock e questo porta a un piccolo disallineamento sulle uscite Non egrave sintetizzabile come una rete sincrona e una sintesi formale sarebbe possibile solo trattando il circuito come asincrono ovvero ldquoaprendordquo i FF Sarebbe possibile trasformarlo in un contatore x6 mantenendo la stessa impostazione
Sintetizzare e simulare con Altera
NB il segnale di clock non egrave in comune
50
7493
51
Altera Contatore asincrono
Contatore asincrono
52
Simulazione timing
53
Come puograve essere utilizzato un FFD per catturare un impulso piugrave breve di un periodo
D2 Q2
Q2CKFFD Z
Clock
D1 Q1
Q1CKFFD
D0 Q00
Q0CKFFD
ldquo1rdquo CL
Lrsquoimpulso breve viene catturato dal FF 0 (purcheacute di larghezza sufficiente per la tecnologia del FF) - che quindi agisce come integratore ndash la cui uscita alimenta il monoimpulsore di tipo A Lrsquoattivazione del FF 1 resetta il FF 0 (supponendo che il segnale di CL sia ldquopositiverdquotruerdquo)
Ci puograve essere un problema se il CL agisce in modo asincrono
NB questo circuito e quello del lucido precedente evidenziano il fatto che nella realtagrave nessuna rete egrave solo sincrona ma bensigrave egrave pressocheacute sempre necessario utilizzare reti di natura diversa anche percheacute vi egrave sempre una interazione fra reti con clock diversi eo con segnali provenienti dal mondo esterno NON sincronizzati con il clock
Monoimpulsore di tipo A ldquorivistordquo
54
bull Uno shift register a sinistra (a destra) egrave un registro composto da FFD che ad ogni clock trasferisce il valore del FF a destra (a sinistra) di ciascun FF nel FF stesso Nel FF piugrave a destra (sinistra) viene immesso uno ldquo0rdquo Questi tipi di registri shift si chiamano ldquologicirdquo
Shift register (registri a traslazione o scorrimento)
D0kQ0k
CK DnQn
CK
D0kQ0k
CK Dn-1Qn-1
CK
D0kQ0k
CK Dn-2Qn-2
CK
D0kQ0k
CK D0Q0
CK
ldquo0rdquo
Shift register a sinistra
bull Anche per i registri a traslazione esistono diverse versioni con ingresso parallelo e uscita seriale con ingresso seriale e uscita parallela con reset con load etc etc
bull Si noti che uno shift register egrave anche un contatore Si immagini per esempio che dopo un reset siano inseriti degli uni a partire da destra Lo shift register si riempie progressivamente di uni e quindi la posizione in cui egrave arrivato lrsquouno indica il valore del conteggio in base a un codice ldquouno su nrdquo (un codice decodificato)
bull Spesso uno stesso registro puograve traslare a destra o a sinistra in funzione di una segnale di controllo Ovviamente questo si ottiene premettendo a ogni ingresso Di un MUX a due vie che preleva in funzione del segnale di controllo Qigrave+1 o Qigrave-1 Con questa configurazione lo shift register diventa anche un contatore avantiindietro
Registro a scorrimento (shift-register) a 3 bit
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
IN
OUT2OUT1OUT0
CK
CK
IN
A_RESET
OUT1
OUT2
OUT0
Registro a scorrimento (shift-register) a 3 bit
57
Esempio 74164 (serial In parallel OUT)
bull In questo registro a traslazione ad ogni fronte positivo del clock i dati sono traslati a destra (Q0 -gt Q1 Q1-gtQ2 etc) Il registro egrave dotato in un Master Reset (vero negato) e il dato inserito nel FF Q0 egrave dato dallrsquoAND dei due ingressi Dsa e Dsb
bull Si noti che lrsquooperazione di shift corrisponde aritmeticamente alle operazioni di divisione e moltiplicazione per 2 Si supponga che in Q0 vi sia il bit meno significativo e in Q7 il meno significativo
0 1 1 0 1 0 1 0
010101102 = 10810
Shift left =gt x2
Shift right =gt 2
101011002 = 21610
001010112 = 5910
NB nel dispositivo i bit sono posti in ordine invertito e quindi un shift left del numero corrisponde a uno shift right sul dispositivo
58
bull Esistono anche i registri a traslazione ldquoaritmeticirdquo In questi shift register a destra anzicheacute fare entrare nel FF piugrave a sinistra lo ldquo0rdquo viene immesso sempre ripetutamente il suo valore logico
Shift aritmetico
Q7 Q6 Q5 Q4 Q3 Q2 Q1 Q0
D7 D6 D5 D4 D3 D2 D1 D0
I LDCK Esempio
11001010SRA
11100101 interpretato in complemento a 2
001101102=5410
C2 C2
000110112=2710
bull Lo shift aritmetico a destra effettua una divisione per 2 mantenendo il segno
59
Rotazione
Nei computer egrave sovente necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register
D0kQ0k
CK DnQn
CK
D0kQ0k
CK Dn-1Qn-1
CK
D0kQ0k
CK Dn-2Qn-2
CK
D0kQ0k
CK D0Q0
CK
Molto spesso nei computer egrave necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register con direzione programmabile In questo caso su D0 ad esempio puograve essere avviato o Q1 o Qn
60
Contatori con shift register ndash Contatore retroazionato EX-OR
Q2Q0
Shift right 3 bitDQ1
110 111 011 101 010 001
Diagramma degli stati disgiunto
Uno shift register con n FF retroazionato con un EX-OR (scelta degli ingressi variabile) egrave un contatore NON binario che conta per 2n-1 (purcheacute presettato a un valore diverso da tutti zeri)
000
100
61
Contatore di Johnson (riempimento e svuotamento)
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
000-gt100-gt110-gt111-gt011-gt001-gt000-gtStati isolati 101-gt010-gt101gt1
Poicheacute configurazioni adiacenti del codice Johnson differiscono di un solo bit il contatore puograve essere utilizzato per generare forme drsquoonda prive di alee
62
Contatore ad anello con un solo 1 (ovvero che genera direttamente il codice 1su n)
FFDD Q
QR
RESET
FFDD Q
QR
RESET
FFDD Q
QPR
RESET
OUT3OUT1OUT0
CK
FFDD Q
QR
RESET
OUT2
0001-gt1000-gt0100-gt0010-gt0010n FF per contare per n (mentre con i contatori binari il numero dei FF egrave il log2m ove m egrave il primo intero maggiore o uguale a n)
63
Barrel shifter (rotore)Un barrel shifter egrave uno shift register in grado di traslare di ldquonrdquo posizioni in un solo clock il contenuto dei suoi FF In figura egrave riportato il barrel shifter della Altera Gli ingressi A-H in presenza dellrsquoattivazione del segnale LDST al primo fronte positivo del clock sono depositati nei FF Quando LDST egrave 0 ad ogni fronte positivo del clock i bit di uscita sono ruotati di n posizioni in senso antiorario (ovvero lrsquouscita H diventa la G la G diventa la Fhellipe lrsquouscita A diventa la H) ove n egrave il valore binario indicato dai segnali S0 S1 e S2
Si noti che il circuito in questione egrave di fatto un registro con 8 FF allrsquoingresso di ciascuno dei quali egrave previsto un MUX a 8 vie che pilotato dai segnali S0 S1 e S2 che seleziona uno degli 8 uscite del dispositivo La struttura interna puograve essere osservata ldquoclikkandordquo due volte sul dispositivo nello schema di Altera
64
Barrel shifter
6565
66
Simulazione timing
67
bull Utilizzando il sistema Altera progettare un orologio con secondi minuti ora partendo da un oscillatore a quarzo con frequenza 500 KHz
bull E se si volesse proseguire e realizzare anche un datario (giorno mese e anno )
bull Come potrebbe essere integrato con una sveglia Si ricordi che lrsquoorologio deve essere anche essere ldquopresettatordquo
bull Quali circuiti utilizzare per la visualizzazione
68
EPROM
X0nZ0m
y0kY0k
Clock
D0kQ0k
FFD0k
CK D0kQ0k CK
Reti sincrone con EPROM
Al posto delle EPROM si utilizzano ora dei PLA ovvero dispositivi nei quali si nei quali le funzioni combinatorie sono ottimizzate ma il principio egrave assolutamente il medesimo
69
Progettare con Altera una rete logica sincrona che utilizzando registri 374 ALU 74181 un contatore e altri dispositivi ritenuti necessari permetta di eseguire in sequenza la somma di due dati di 4 bit senza segno ingresso esegua il complemento a 2 inverta la parte bassa con la parte alta del risultato e infine moltiplichi il tutto logicamente per 2
La soluzione egrave sempre decomponibile in tre sottosistemi il controllo con la sua decodifica (unitagrave di controllo) il percorso dei dati con le unitagrave che li trasformano (datapath) e i registri di deposito e di ingresso dei dati
Questa egrave la struttura base di qualunque unitagrave centrale di qualunque computer
La differenza consiste solo nel fatto che anzicheacute avere una sequenza fissa di operazioni ne viene generata una volta a volta che dipende appunto dalla istruzione che deve essere eseguita Come si vedragrave approfonditamente nel corso di Calcolatori T del II anno (prof Neri e Mattoccia)
Arrivederci al corso di Calcolatori T del II anno (sapendo perfettamente le reti logiche helliphellip)
Il FFD come elemento fondamentale delle RSSSe allrsquoingresso CK viene inviato un segnale periodico (clock) il FFD ritarda (D = Delay) il segnale di uscita Q rispetto al segnale di ingresso D di un tempo pari al periodo di clock T se il cambiamento del segnale D egrave contemporaneo a quelli clock (nel rispetto di setup e hold)
Qn+1 = Dn
D
CK
QT T T T
FFDD
CK
Q
Q
D
CK
Q
Q
8
NB il concetto di contemporaneitagrave potrebbe apparire in contrasto con la necessitagrave di rispettare i tempi di setup e hold Di fatto gli ingressi di una rete sincrona sono nella larga maggioranza provenienti da altre reti che hanno lo stesso clock e quindi sono generati con i ritardi delle reti soggette al clock rispettando quindi di fatto i tempi previsti Di fatto le variazioni degli ingressi sono sempre un porsquo posteriori alla variazione del clock Si veda in seguito il comportamento dei registri a traslazione
NB essendo qui il tempo discretizzato si usa n e
n+1 al posto di T e T+t
Alcune considerazioni sulle RSS
bull Lo stato della rete cambia solo in corrispondenza dei fronti di salita del clock che si susseguono con periodo T
bull La rete risponde ogni T se si desidera massimizzare la velocitagrave di risposta della rArruscita egrave necessario adottare il modello di Mealy
bull La sequenza degli stati della rete egrave svincolata dai ritardi della rete combinatoria (purcheacute la distanza fra i fronti positivi del segnale clock sia superiore al massimo ritardo della rete combinatoria) Quindi nessun problema di corse critiche
bull Allrsquointerno di uno stesso progetto (ad esempio un processore) sono tipicamente presenti piugrave RSS e non necessariamente per tutte le RSS il clock egrave lo stesso eo coincide con il clock del processore
bull Le RSS sono piugrave facili da progettare delle RSA
9
Clock gating e glitch sul clockNelle reti sincrone egrave necessario evitare variazioni spurie (glitches) del segnale di clock che possono provocare commutazioni indesiderate dei FFD (che sono sensibili ai fronti)
Ad esempio per via dei ritardi tra gli n segnali I[n-10] eo le alee introdotte dalla rete combinatoria di decodifica a causa del ldquoclock gatingldquo puograve verificarsi quanto segue
CK
P
CK_G
Glitch sul clock rarr possibile commutazione spuria del FFD
X
CK
Q
QFFD
D
CK
Q
QCK_GRete di Decodifica
I[n-10]P
t
NO
10
Naturalmente tutto dipende dalla larghezza dellrsquoimpulso spurio se molto stretto il FF potrebbe non sentirlo Quindi il clock gating non egrave proibito ma egrave un rischio da evitare in caso di incertezza
11
Per transizioni che debbono o meno verificarsi in funzione del valore della rete di decodifica bisogna condizionare il segnale D come in figura Se la rete di decodifica genera il valore 1 lrsquouscita Q assume al clock il valore di X altrimenti lrsquouscita Q copia seacute stessa e rimane invariata
Clock gating e glitch sul clock
X
CK
Q
QFFD
D
CK
Q
Q
I[n-10] P
t
01SEL
01SEL
Rete di Decodifica
Il clock gating oltre a generare potenziali glitch introduceldquoclock-skewrdquo (disallineamento) Ad esempio consideriamo due RSS soggette al FF1 e al FF2
Clock gating e clock-skew
CK
CK_GtAND tAND
I clock delle due reti sono sfasati di un tempo pari al ritardo introdotto dallrsquoAND (in generale dalla eventuale RC) interposto Tale fenomeno (ldquoclock-skewrdquo) egrave potenzialmente dannoso in quanto il FF2 potrebbe fare campionare alla propria RC in presenza dello stesso fronte di clock i nuovi valori prodotti dalla RC alimentata dal FF1
NB Il ldquoclock-skewrdquo non egrave causato solo dal clock gating ma anche (ad esempio) da percorsi elettrici di lunghezza diversa
I1
CK
B
BCK_GP
I2
CK
A
A
tAND
FFD-1D
CK
Q
QFFD-2
D
CK
Q
Q
12
13
Sincronizzazione degli ingressibull Finora si egrave dato implicitamente per scontato che gli ingressi di una rete sincrona commutino
in modo sincrono con il clock
bull Ciograve egrave verificato se gli ingressi provengono da una rete sincrona di tipo Moore nella quale le uscite sono funzione solo dello stato che commuta solo al fronte positivo del clock
Rete combinatoria
X0n
Z0m
y0k
Y0k
Clock
D0kQ0k
FFD0k
CK D0kQ0k CK
Rete combinatoria
bull Nella realtagrave le cose stanno diversamente Si pensi al caso di pulsanti esterni che costituiscano lrsquo ingresso della rete Il cambiamento puograve avvenire in un istante qualsiasi
bull Nella rete di figura (Moore) le uscite sono comunque certamente sincronizzate con il clock e se gli ingressi X0n cambiano in un momento qualsiasi non sincronizzato il cambiamento viene percepito dai FF di retroazione solo al fronte positivo del clock e quindi il comportamento delle uscite della rete egrave il medesimo che si avrebbe se gli ingressi fossero sincronizzati
14
Sincronizzazione degli ingressi
bull La cosa cambia perograve se la rete egrave di tipo Mealy
Rete combinatoria
X0nZ0m
y0kY0k
Clock
D0kQ0k
FFD0k
CK D0kQ0k CK
bull In questo caso un cambiamento asincrono degli ingressi provoca in generale un cambiamento asincrono delle uscite
15
Esempio la cassaforte (dotata di una doppia tastiera - due ingressi) si apre solo se gli ingressi hanno assunto NEL TEMPO le configurazioni
00-01-01-10 Ogni violazione della sequenza riporta il sistema nello stato iniziale NB Essendo gli ingressi campionati la sequenza di ingresso 01-01 egrave possibile e significativa
hellip Cassaforte hellip sincrona hellip
NB si puograve supporre che gli ingressi cambino allo stesso istante delle variabili di stato ma la cosa non egrave necessaria Se la rete egrave di tipo Moore anche se gli ingressi cambiano a metagrave di un periodo di clock il comportamento dal punto di vista degli stati e quindi delle uscite egrave assolutamente lo stesso (ogni variazione egrave rilevata solo alla fine del periodo)
E11101
0111
11
F0
01
01
G0
0000
11 00
11
11
10
1001
10
00
10 0110
01
01
00
Per ogni stato tutte le combinazioni di ingresso
00
10
10
11
C0A0 B0 D0
Gli stati NON sono stabili per gli ingressi che li hanno provocati
00
B
00 01 11 10
F A GA
B C A GB
B D A GCB F A ED
B F A GE
B F AA- GF
B F A GG
0
0
0
0
1
0
0
X1X2
A0 B0 C0 E10011
01
10
0111
11
11
D0 10
F0
01
01
G0
0000
00
00
11
11
10
1001
1010 0110
01
11
00
Cassaforte sincrona
16
01
NB in questo esempio non vi sono condizioni di indifferenza Anzicheacute di stati compatibili si parla qui di stati equivalenti Ove poi due stati per gli stessi ingressi abbiano uscite identiche e portino agli stessi stati si parla di stati indistinguibili Naturalmente la descrizione a parole puograve evidenziare che alcune combinazioni di ingresso per alcuni stati non si presentano In questo caso si ritorna al concetto di compatibilitagrave
00
17
Cassaforte sincrona
Classi di equivalenza [AFG] =gt a[B] =gt b[C] =gt g[D] =gt d[E] =gt e
B
00 01 11 10
F A GA
B C A GB
B D A GCB F A ED
B F A GE
B F AA- GF
B F A GG
0
0
0
0
1
0
0
X1X2
B
C
D
E
F
G
A B C D E F
CF
FD CD
CFGE
CFGE
DFGE
--- CF DF GE
--- C F DF GE --
b
00 01 11 10
a a aa
b g a ab
b d a ag
b a a ed
b a a ae
X1X2
0
0
0
0
1 NB nel caso di tabelle completamente specificate le classi (massime) di equivalenza non hanno mai stati in comune Vanno usate tutte quindi Non esiste problema di chiusura
Ovviamente 5 stati 4 facenti parte della sequenza e uno esterno
18
b
00 01 11 10
a a aa
b g a ab
b d a ag
b a a ed
b a a ae
X1X2
0
0
0
0
1
Cassaforte sincrona
001
00 01 11 10
000 000 000000
001 011 000 000001
001 010 000 000011
001 000 000 100010
001 000 000 000100
X1X2
-- -- -- --101
-- -- -- --111
-- -- -- --110
0
0
0
0
1
--
--
--
Y1Y2 Y3
a =gt 000b =gt 001g =gt 011d =gt 010e =gt 100
D1= X1X2Y2Y3
D2=X1X2Y3
D3=X1X2+X1Y2Y3 Z =Y1
Sintetizzando con FFD la sintesi degli ingressi Di si ottiene sintetizzando le funzioni Yi (Yn+1=Dn)
Nessun problema di corse codifica libera (possibilmente ottima)
19
Sintesi
Direttorio cassaforte sincrona
20
00 01 01 10
Sintesi ndash simulazione funzionale
NB Gli ingressi cambiano in modo NON sincrono con il clock ma lrsquo uscita egrave sincrona essendo la rete di tipo Moore
21
Sintesi ndash simulazione timing
Si notino i ritardi delle uscite dei FF e dei gates da esse dipendenti rispetto al fronte positivo del clock (ad esempio d) se la frequenza del clock fosse eccessiva il sistema NON funzionerebbe piugrave correttamente
d
22
E con Mealy
B
00 01 11 10
F A GA
B C A GB
B D A GCB F A ED
B F A GE
B F AA- GF
B F A GG
0
0
0
0
1
0
0
X1X2
B0
00 01 11 10
F0 A0 G0A
B0 C0 A0 G0B
B0 D0 A0 G0CB0 F0 A0 E1D
B1 F1 A1 G1E
B0 F0 A0A-G0F
B0 F0 A0 G0G
X1X2
Potrei mettere una indifferenza sullrsquouscita Si si possono mettere indifferenze sulle uscite che cambiano Anticipazione o ritardo del cambiamento
Sintetizzare e simulare con Altera
23
bull Allrsquoesame orale egrave necessario portare un esercizio di reti sincrone e uno di reti asincrone NON ldquomutuatordquo da altri hellip
bull I due esercizi debbono essere portati su una chiavetta (o dispositivo equivalente) debbono contenere una spiegazione e anche la progettazionesimulazione con Altera
bull Il candidato deve dimostrare di sapere usare il sistema Altera e spiegare i progetti portati
bull Gli esercizi di reti sincrone hanno spesso il diagramma degli stati ma solo per verificahellip
Monoimpulsore A
D1 Q1
Q1CKFFD
D2 Q2
Q2CKFFD Z1
D
Clock
Clock
D
Z
Q1
Q2
Qui lrsquoingresso asincrono D egrave sincronizzato dai FF Uscita Z sincrona
Generare un impulso di uscita di un periodo di clock per ingresso 1 Un ulteriore impulso viene generato solo se lrsquoingresso torna a 1 dopo essere stato a 0 Lrsquouscita deve essere sincronizzata con il clock
24
25
D1 Q1
Q1CKFFD
D2 Q2
Q2CKFFD Z
D
Clock
Monoimpulsore A
1
0
1
1
0
A0 B1
C0
0
A
A
A
-
B
C
C
-
DQ2
Q1
B
0 1
C
-
Z0
0
1
-
A 00
--
00
00
10
--
11
11
DQ2
Q1
01
0 1
11
10
Z0
0
-
1
0000
10
11
01
B
C
-
A
Q1=D Q2= DQ1 Z=Q1Q2
00
00
01
01
10
10
11
11
DQ2
Q1
01
0 1
11
10
Z0
0
0
1
00
MAhellip
Q1=D Q2= Q1 Z=Q1Q2
Moore necessariamente
26
D1 Q1
Q1CKFFD
D2 Q2
Q2CKFFD Z2
D
Clock
Monoimpulsore B
Clock
D
Z2
Q1
Q2
Lrsquoingresso asincrono D agisce direttamente sullrsquouscita Z che quindi risulta asincrona
Qui la rete egrave di tipo Mealy e quindi con ingresso asincrono egrave possibile che vi sia uscita asincrona
27
D Q
QCKFFD Z
D
Clock
Monoimpulsore C
Clock
D
Z
Q
Anche qui lrsquoingresso asincrono D agisce direttamente sullrsquouscita Z che quindi risulta asincronaSi noti che se lrsquoingresso oscilla una volta che il FF ha campionato un 1 e fino a quando non campiona uno 0 lrsquouscita oscilla
Qui la rete egrave di tipo Mealy e quindi con ingresso asincrono egrave possibile che vi sia uscita asincrona
28
Considerazioni sui monoimpulsori A B e C
Il diagramma degli stati corrispondente al funzionamento reale dei due monoimpulsori B e C NON puograve essere tracciato percheacute di fatto le due reti (di tipo Mealy) NON sono sincrone Infatti il diagramma di circuiti sincroni prevede implicitamente un comportamento sincrono anche degli ingressi fatto non verificato nei casi B e C
La cosa non vale per il monoimpulsore A in quanto pur essendo lrsquoingresso asincrono lrsquouscita (rete di tipo Moore) dipende solo dagli stati In altre parole il comportamento della rete rende intrinsecamente sincroni ingressi fisicamente asincroni
Il diagramma degli stati che riflette il comportamento delle due reti B e C puograve essere tracciato solo partendo da una analisi asincrona ldquoaprendordquo quindi i FF D inseriti Ovviamente egrave possibile progettare le due reti senza lrsquouso dei FF D partendo da un diagramma degli stati asincrono ldquotradizionalerdquo
A scopo di esercizio si suggerisce la sintesi e la simulazione con Altera dei tre monoimpulsori come reti asincrone Si tratta di circuiti on due ingressi Ck e D
29
Monoimpulsori A-B-C
30
31
Contatori
A B C D Z
Circuiti senza ingresso (a parte il clock) nella versione piugrave semplice
D0 Q0
Q0CKFFD
MUX
1
0D1 Q1
Q1CKFFD
(Il clock egrave spesso sottinteso nei circuiti sincroni)
U0 U1
Esempio contatore binario x 4 con decodifica del 3
000 010 100 111
OUT
Q1 cambia stato quando Q0 egrave a 1 e passa a 0
CK
u1
u0
OUT (0) (1) (2) (0) (1) (2)(3) (3)
Contatore x 4 con decodifica del 3
33
Contatori binari in base non potenza di 2
A B C D E
000 001 010 011 100Contatore
binario per 5
D0 Q0
Q0CKFFD
MUX
1
0 1D1 Q1
Q1CKFFD
MUX
1
0D Q2
Q2CKFFD
Questo conta x8 ma per contare x5 arrivati a 4 bisogna ritornare a 0
34
D0 Q0
Q0CKFFD D1 Q1
Q1CKFFD
MUX
1
0 D2 Q2
Q2CKFFD
MUX
1
0
ABC
ldquo4rdquo
Contatore x 5
Decoder
La decodifica del 4 porta a zero lrsquouscita del decodificatore e quindi a 0 tutte le uscite degli AND rosa e al successivo fronte positivo del clock i tre FF campionano uno ldquo0rdquo
Per esercizio sintetizzare un contatore x 100 partendo dalla sintesi di un contatore decimale ovvero di un contatore x10 (da sintetizzare) Quanti FF per un contatore decimale I contatori decimali si trovano integrati in Altera
ldquo3rdquo
35
Contatori con ingressi di controllo
Ex Contatore integrato x 16 con Load e Enable
bull Il contatore conta per 16 (0-15) se il segnale EN egrave a 1 Allorchegrave il segnale LD va a 1 il dato presente sugli ingressi D egrave inserito nei 4 FF (lrsquoingresso puograve essere sincrono o asincrono) Nel caso precedente il decodificatore del ldquo3rdquo (uscita vera va portato) allrsquoingresso LD con tutti i Di a zero
bull In generale il contatore fornisce anche unrsquouscita ldquocarryrdquo che va a 1 quando il contatore raggiunge il valore FF Questa uscita puograve essere connessa allrsquoenable di un contatore a valle per ottenere un contatore per 256 cosigrave via (Progettarlo come esercizio)
EN
Q0 Q1 Q2 Q3CKLD
D0 D1 D2 D3
EN
Q0 Q1 Q2 Q3CK
CYLD
D0 D1 D2 D3
bull Esistono contatori UPDOWN nei quali un ingresso (UD) seleziona se il conteggio deve avvenire avanti o indietro Nel caso sia selezionata la modalitagrave ldquoindietrordquo il carry si attiva quando si raggiunge il valore ldquotutti zerirdquo
bull Esiste una molteplicitagrave di contatori ciascuno con le proprie specifiche peculiaritagrave con o senza RESET (che normalmente agisce in modo asincrono) UD con o senza LD etc etc
NB qualunque circuito sincrono (con sequenza non binaria) riconducibile al diagramma degli stati di un contatore egrave sempre un contatore
101 010 000 111 110 Contatore x 5 non binario
36
74163 contatore reale x 16 con Load Reset e Enable (T e P)I segnali di controllo sono sincroni ovvero agiscono sul fronte positivo del clock (rising edge)
74138 decoder 38 con uscite negate se G2A e G2B entrambi a zero e G1 a 1 Altrimenti tutte uscite alte
Direttorio Counter Glitch
Contatore binario x 8 e glitches
37
Glitch
Simulazione timingNB la presenza e la durata del glitch dipende dalle caratteristiche elettriche dei dispositivi
dalla loro tecnologia etc Nel caso dei dispositivi Altera dipende dal tipo di dispositivo sul quale egrave realizzato il circuito Analogamente la sensibilitagrave di eventuali ingressi di clock collegati allrsquouscita con il glitch dipende dalle caratteristiche del dispositivo Se ad esempio nel dispositivo Altera utilizzato si collega allrsquouscita Y6 il clock di un FFD non si ha commutazione del FF ma questo non egrave vero in assoluto
38
Cosa succede al contatore X5 progettato precedentemente se allrsquoaccensione non disponendo di un segnale di RESET i FF si portano in uno stato non facente parte del cicloNB La condizione allrsquoaccensione egrave del tutto casuale e dipende unicamente dalle condizioni elettriche
di realizzazione Ersquo impredicibileSupponiamo che i FF si portino al valore 110 (il numero 6 fuori dal ciclo) Analizziamo il comportamento
D0 Q0Q0CK
FFD D1 Q1Q1CK
FFD
MUX
1
0 D2 Q2Q2CK
FFD
MUX
1
0
ABC
ldquo4rdquo
000 001 010 011 100 110 111
In questo caso ci si riporta nella situazione di conteggio regolare (verificare con la tabella degli stati ) ma il comportamento in generale dipende dalla realizzazione e in altre realizzazione i due stati potrebbero essere separati dal ciclo principale che quindi non verrebbe mai raggiunto Ecco la funzione del RESET
39
Solo come esempio (da non utilizzare ) a scopo didattico vediamo la tabella delle transizioni di un contatore per 6 UpDown con comando di Reset I segnali di ingresso cambiano in modo asincrono ma hanno effetto in modo sincrono
Per compensare allrsquoaccensione
Sintetizzare e simulareCome dovrebbe essere modificato lo schema in Altera per permettere di
ldquopresettarerdquo in modo asincrono il contatore a un particolare valore di ingresso
00 01 11 10UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
111
110
000 101
000
101
y3 y2 y100 01 11 10
UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
000 000111
000 000 000 000110
000 101
000
000 000
101
y3 y2 y1
40
D0Q0
CKFFD
Clocky2
DEC
y3
y2
y1
ldquo1rdquo
ldquo2rdquo
ldquo3rdquo
ldquo4rdquo
1
0
UPDown
Sintesi di y2 in modo ldquodirettordquo
1
0
00 01 11 10UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
000 000111
000 000 000 000110
000 101
000
000 000
101
y3 y2 y1
41
Cassaforte hellipDisponendo di un contatore per 8 (ma anche per 16 etc) con reset sincrono e sempre abilitato al conteggio come potrei realizzare il circuito di apertura della cassaforte (sequenza X1X2 00-01-01-10) con modello Moore
Cx8RES
Q0 Q1 Q2 CK
RES= (ldquo0rdquoX1X2 + ldquo1rdquo X1X2 + ldquo2rdquo X1X2 + ldquo3rdquo X1 X2)Z = ldquo4rdquo (ldquo0rdquordquo1rdquordquo2rdquordquo3rdquordquo4rdquo sono le decodifiche binarie delle tre uscite del contatore)
Il contatore si resetta ogni volta che non si presenta lrsquoingresso giusto relativo al particolare stato Ilcontatore quindi si resetta e rimane resettato se non nelle condizioni espresse dalla funzione RESIl contatore arrivato a 4 (Z=1) si resetta comunque al successivo fronte del clock
Le reti sincrone si progettano sempre come combinazione di blocchi disponibili e logica ldquorandomrdquo
ABC
ldquo0rdquoldquo1rdquoldquo2rdquoldquo3rdquoldquo4rdquo
RLAND-OR
X1X2
RESZ
Cx8RES
Q0 Q1 Q2 CK
42
Contatori
EN
Q0 Q1 Q2 Q3CKCY
RESET
bull Attenzione Consideriamo il contatore di figura (questa volta con RESET asincrono) e supponiamo di utilizzarlo per contare per 5 (NB per il Reset si usa il ldquo5rdquo in questo casohellip glitch)
ABCD
ldquo5rdquo
ldquo1rdquo Percheacute questo schema egrave sbagliato
bull Percheacute presenta una corsa critica Nel momento in cui anche uno solo dei FF si resetta (e non tutti nello stesso istante) viene a mancare la configurazione ldquo4rdquo sul decoder e quindi alcuni FF potrebbero non fare in tempo a resettarsi E allora
EN
Q0 Q1 Q2 Q3CKCY
RESET
ABCD
ldquo5rdquo
ldquo1rdquo
RS
Y ldquo0rdquo
bull Cosigrave facendo il ldquo4rdquo attiva il SET e il FF NON si resetta fino a quando non egrave stato raggiunto la ldquo0rdquo NB lo schema ldquosbagliatordquo si puograve usare solo se si egrave certi della rapiditagrave di reset dei FF del contatore
bull Verificare con Altera
Sintesi cassaforte con moduli
Altera Cassaforte sincrona con moduli
Rete di controllo
Contatore con Reset asincrono e Load sincrono
43
NB In questo progetto la sintesi egrave stata condotta in modo ldquodirettordquo ovvero senza passare per la sintesi formale e utilizzando componenti disponibili e helliphellip materia grigia La sintesi dei circuiti sincroni si fa sempre e unicamente cosigrave
44
Simulazione funzionale (no timing)
NB I segnali di ingresso sono campionati SOLO sul fronte positivo del clock anche se si presentano asincroni Il segnale di uscita si attiva al clock successivo al riconoscimento della sequenza La posizione di ldquoriposordquo del contatore egrave il valore 4 I segnali Yi sono le decodifiche dei segnali di di ingresso X1 e X2
00 01 01 10
45
Simulazione timing
46
NB Si egrave scelto di utilizzare SOLO gli ingressi SINCRONI del contatore per semplicitagrave Il contatore rimane al valore 100 fino a quando non si presenta allrsquoingresso il valore 00 Se la sequenza egrave esatta il contatore continua a contare in avanti fino alla generazione dellrsquouscita (valore 11 del contatore) altrimenti si riporta al valore 100 ovvero Qc=1) Il segnale GN (Gate Not) egrave quello che abilita il conteggio Il sistema riamane stabile a 000 per una sequenza lunga a piacere di X1=0 e X2=0 e si sposta quando dopo 00 si ha 01 Come si evince dalla simulazione se la sequenza non egrave corretta o egrave interrotta il contatore si riporta sempre a 100
00 01 11 10
001 000 000
X1
000000 010 100 100001
000 100 100 011010
100 100 100 100011
000 100 100 100100
000 100 100 100101
000 100 100 100110
000 100 100 100111
0
0
0
1
0
0
0
0
X2
000
NB la tabella delle transizioni derivata della rete realizzata NON ha ovviamente condizioni di indifferenza
47
Progettare un contatore packed BCD updown a 8 bit (due digit)
48
Generazione di forme drsquoondabull Ersquo possibile generare forme drsquoonda periodiche mediante circuiti sincroni di periodo
sottomultiplo intero del clock
Esempio 1Divisore di frequenza per 2
D0k Q0k
CK D Q
CK Clock
Q
Esempio 2 generare una forma drsquoonda periodica con periodo 5T (ove T sia il periodo del clock) in cui in un semiperiodo 3T lrsquouscita sia alta e nellrsquoaltro semiperiodo 2T lrsquouscita sia bassa
Q0 Q1 Q2 CK
Cx5
C
B
A
01234
DecoderDemux
Clock
ZZ T
3T2T
3T
NB una rete logica egrave in grado di effettuare delle divisioni di frequenza e mai delle moltiplicazioni di frequenza (che si possono ottenere solo con circuiti analogici non lineari)
49
Di che circuito si tratta
D0k Q0k
CK D0 Q0
CKQ0
D0k Q0k
CK D1 Q1
CK
D0k Q0k
CK D2 Q2
CKClock
Clock
Q0
Q1
Q2
Ersquo un contatore binario ma non sincrono Infatti i vari FF NON utilizzano lo stesso clock e questo porta a un piccolo disallineamento sulle uscite Non egrave sintetizzabile come una rete sincrona e una sintesi formale sarebbe possibile solo trattando il circuito come asincrono ovvero ldquoaprendordquo i FF Sarebbe possibile trasformarlo in un contatore x6 mantenendo la stessa impostazione
Sintetizzare e simulare con Altera
NB il segnale di clock non egrave in comune
50
7493
51
Altera Contatore asincrono
Contatore asincrono
52
Simulazione timing
53
Come puograve essere utilizzato un FFD per catturare un impulso piugrave breve di un periodo
D2 Q2
Q2CKFFD Z
Clock
D1 Q1
Q1CKFFD
D0 Q00
Q0CKFFD
ldquo1rdquo CL
Lrsquoimpulso breve viene catturato dal FF 0 (purcheacute di larghezza sufficiente per la tecnologia del FF) - che quindi agisce come integratore ndash la cui uscita alimenta il monoimpulsore di tipo A Lrsquoattivazione del FF 1 resetta il FF 0 (supponendo che il segnale di CL sia ldquopositiverdquotruerdquo)
Ci puograve essere un problema se il CL agisce in modo asincrono
NB questo circuito e quello del lucido precedente evidenziano il fatto che nella realtagrave nessuna rete egrave solo sincrona ma bensigrave egrave pressocheacute sempre necessario utilizzare reti di natura diversa anche percheacute vi egrave sempre una interazione fra reti con clock diversi eo con segnali provenienti dal mondo esterno NON sincronizzati con il clock
Monoimpulsore di tipo A ldquorivistordquo
54
bull Uno shift register a sinistra (a destra) egrave un registro composto da FFD che ad ogni clock trasferisce il valore del FF a destra (a sinistra) di ciascun FF nel FF stesso Nel FF piugrave a destra (sinistra) viene immesso uno ldquo0rdquo Questi tipi di registri shift si chiamano ldquologicirdquo
Shift register (registri a traslazione o scorrimento)
D0kQ0k
CK DnQn
CK
D0kQ0k
CK Dn-1Qn-1
CK
D0kQ0k
CK Dn-2Qn-2
CK
D0kQ0k
CK D0Q0
CK
ldquo0rdquo
Shift register a sinistra
bull Anche per i registri a traslazione esistono diverse versioni con ingresso parallelo e uscita seriale con ingresso seriale e uscita parallela con reset con load etc etc
bull Si noti che uno shift register egrave anche un contatore Si immagini per esempio che dopo un reset siano inseriti degli uni a partire da destra Lo shift register si riempie progressivamente di uni e quindi la posizione in cui egrave arrivato lrsquouno indica il valore del conteggio in base a un codice ldquouno su nrdquo (un codice decodificato)
bull Spesso uno stesso registro puograve traslare a destra o a sinistra in funzione di una segnale di controllo Ovviamente questo si ottiene premettendo a ogni ingresso Di un MUX a due vie che preleva in funzione del segnale di controllo Qigrave+1 o Qigrave-1 Con questa configurazione lo shift register diventa anche un contatore avantiindietro
Registro a scorrimento (shift-register) a 3 bit
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
IN
OUT2OUT1OUT0
CK
CK
IN
A_RESET
OUT1
OUT2
OUT0
Registro a scorrimento (shift-register) a 3 bit
57
Esempio 74164 (serial In parallel OUT)
bull In questo registro a traslazione ad ogni fronte positivo del clock i dati sono traslati a destra (Q0 -gt Q1 Q1-gtQ2 etc) Il registro egrave dotato in un Master Reset (vero negato) e il dato inserito nel FF Q0 egrave dato dallrsquoAND dei due ingressi Dsa e Dsb
bull Si noti che lrsquooperazione di shift corrisponde aritmeticamente alle operazioni di divisione e moltiplicazione per 2 Si supponga che in Q0 vi sia il bit meno significativo e in Q7 il meno significativo
0 1 1 0 1 0 1 0
010101102 = 10810
Shift left =gt x2
Shift right =gt 2
101011002 = 21610
001010112 = 5910
NB nel dispositivo i bit sono posti in ordine invertito e quindi un shift left del numero corrisponde a uno shift right sul dispositivo
58
bull Esistono anche i registri a traslazione ldquoaritmeticirdquo In questi shift register a destra anzicheacute fare entrare nel FF piugrave a sinistra lo ldquo0rdquo viene immesso sempre ripetutamente il suo valore logico
Shift aritmetico
Q7 Q6 Q5 Q4 Q3 Q2 Q1 Q0
D7 D6 D5 D4 D3 D2 D1 D0
I LDCK Esempio
11001010SRA
11100101 interpretato in complemento a 2
001101102=5410
C2 C2
000110112=2710
bull Lo shift aritmetico a destra effettua una divisione per 2 mantenendo il segno
59
Rotazione
Nei computer egrave sovente necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register
D0kQ0k
CK DnQn
CK
D0kQ0k
CK Dn-1Qn-1
CK
D0kQ0k
CK Dn-2Qn-2
CK
D0kQ0k
CK D0Q0
CK
Molto spesso nei computer egrave necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register con direzione programmabile In questo caso su D0 ad esempio puograve essere avviato o Q1 o Qn
60
Contatori con shift register ndash Contatore retroazionato EX-OR
Q2Q0
Shift right 3 bitDQ1
110 111 011 101 010 001
Diagramma degli stati disgiunto
Uno shift register con n FF retroazionato con un EX-OR (scelta degli ingressi variabile) egrave un contatore NON binario che conta per 2n-1 (purcheacute presettato a un valore diverso da tutti zeri)
000
100
61
Contatore di Johnson (riempimento e svuotamento)
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
000-gt100-gt110-gt111-gt011-gt001-gt000-gtStati isolati 101-gt010-gt101gt1
Poicheacute configurazioni adiacenti del codice Johnson differiscono di un solo bit il contatore puograve essere utilizzato per generare forme drsquoonda prive di alee
62
Contatore ad anello con un solo 1 (ovvero che genera direttamente il codice 1su n)
FFDD Q
QR
RESET
FFDD Q
QR
RESET
FFDD Q
QPR
RESET
OUT3OUT1OUT0
CK
FFDD Q
QR
RESET
OUT2
0001-gt1000-gt0100-gt0010-gt0010n FF per contare per n (mentre con i contatori binari il numero dei FF egrave il log2m ove m egrave il primo intero maggiore o uguale a n)
63
Barrel shifter (rotore)Un barrel shifter egrave uno shift register in grado di traslare di ldquonrdquo posizioni in un solo clock il contenuto dei suoi FF In figura egrave riportato il barrel shifter della Altera Gli ingressi A-H in presenza dellrsquoattivazione del segnale LDST al primo fronte positivo del clock sono depositati nei FF Quando LDST egrave 0 ad ogni fronte positivo del clock i bit di uscita sono ruotati di n posizioni in senso antiorario (ovvero lrsquouscita H diventa la G la G diventa la Fhellipe lrsquouscita A diventa la H) ove n egrave il valore binario indicato dai segnali S0 S1 e S2
Si noti che il circuito in questione egrave di fatto un registro con 8 FF allrsquoingresso di ciascuno dei quali egrave previsto un MUX a 8 vie che pilotato dai segnali S0 S1 e S2 che seleziona uno degli 8 uscite del dispositivo La struttura interna puograve essere osservata ldquoclikkandordquo due volte sul dispositivo nello schema di Altera
64
Barrel shifter
6565
66
Simulazione timing
67
bull Utilizzando il sistema Altera progettare un orologio con secondi minuti ora partendo da un oscillatore a quarzo con frequenza 500 KHz
bull E se si volesse proseguire e realizzare anche un datario (giorno mese e anno )
bull Come potrebbe essere integrato con una sveglia Si ricordi che lrsquoorologio deve essere anche essere ldquopresettatordquo
bull Quali circuiti utilizzare per la visualizzazione
68
EPROM
X0nZ0m
y0kY0k
Clock
D0kQ0k
FFD0k
CK D0kQ0k CK
Reti sincrone con EPROM
Al posto delle EPROM si utilizzano ora dei PLA ovvero dispositivi nei quali si nei quali le funzioni combinatorie sono ottimizzate ma il principio egrave assolutamente il medesimo
69
Progettare con Altera una rete logica sincrona che utilizzando registri 374 ALU 74181 un contatore e altri dispositivi ritenuti necessari permetta di eseguire in sequenza la somma di due dati di 4 bit senza segno ingresso esegua il complemento a 2 inverta la parte bassa con la parte alta del risultato e infine moltiplichi il tutto logicamente per 2
La soluzione egrave sempre decomponibile in tre sottosistemi il controllo con la sua decodifica (unitagrave di controllo) il percorso dei dati con le unitagrave che li trasformano (datapath) e i registri di deposito e di ingresso dei dati
Questa egrave la struttura base di qualunque unitagrave centrale di qualunque computer
La differenza consiste solo nel fatto che anzicheacute avere una sequenza fissa di operazioni ne viene generata una volta a volta che dipende appunto dalla istruzione che deve essere eseguita Come si vedragrave approfonditamente nel corso di Calcolatori T del II anno (prof Neri e Mattoccia)
Arrivederci al corso di Calcolatori T del II anno (sapendo perfettamente le reti logiche helliphellip)
Alcune considerazioni sulle RSS
bull Lo stato della rete cambia solo in corrispondenza dei fronti di salita del clock che si susseguono con periodo T
bull La rete risponde ogni T se si desidera massimizzare la velocitagrave di risposta della rArruscita egrave necessario adottare il modello di Mealy
bull La sequenza degli stati della rete egrave svincolata dai ritardi della rete combinatoria (purcheacute la distanza fra i fronti positivi del segnale clock sia superiore al massimo ritardo della rete combinatoria) Quindi nessun problema di corse critiche
bull Allrsquointerno di uno stesso progetto (ad esempio un processore) sono tipicamente presenti piugrave RSS e non necessariamente per tutte le RSS il clock egrave lo stesso eo coincide con il clock del processore
bull Le RSS sono piugrave facili da progettare delle RSA
9
Clock gating e glitch sul clockNelle reti sincrone egrave necessario evitare variazioni spurie (glitches) del segnale di clock che possono provocare commutazioni indesiderate dei FFD (che sono sensibili ai fronti)
Ad esempio per via dei ritardi tra gli n segnali I[n-10] eo le alee introdotte dalla rete combinatoria di decodifica a causa del ldquoclock gatingldquo puograve verificarsi quanto segue
CK
P
CK_G
Glitch sul clock rarr possibile commutazione spuria del FFD
X
CK
Q
QFFD
D
CK
Q
QCK_GRete di Decodifica
I[n-10]P
t
NO
10
Naturalmente tutto dipende dalla larghezza dellrsquoimpulso spurio se molto stretto il FF potrebbe non sentirlo Quindi il clock gating non egrave proibito ma egrave un rischio da evitare in caso di incertezza
11
Per transizioni che debbono o meno verificarsi in funzione del valore della rete di decodifica bisogna condizionare il segnale D come in figura Se la rete di decodifica genera il valore 1 lrsquouscita Q assume al clock il valore di X altrimenti lrsquouscita Q copia seacute stessa e rimane invariata
Clock gating e glitch sul clock
X
CK
Q
QFFD
D
CK
Q
Q
I[n-10] P
t
01SEL
01SEL
Rete di Decodifica
Il clock gating oltre a generare potenziali glitch introduceldquoclock-skewrdquo (disallineamento) Ad esempio consideriamo due RSS soggette al FF1 e al FF2
Clock gating e clock-skew
CK
CK_GtAND tAND
I clock delle due reti sono sfasati di un tempo pari al ritardo introdotto dallrsquoAND (in generale dalla eventuale RC) interposto Tale fenomeno (ldquoclock-skewrdquo) egrave potenzialmente dannoso in quanto il FF2 potrebbe fare campionare alla propria RC in presenza dello stesso fronte di clock i nuovi valori prodotti dalla RC alimentata dal FF1
NB Il ldquoclock-skewrdquo non egrave causato solo dal clock gating ma anche (ad esempio) da percorsi elettrici di lunghezza diversa
I1
CK
B
BCK_GP
I2
CK
A
A
tAND
FFD-1D
CK
Q
QFFD-2
D
CK
Q
Q
12
13
Sincronizzazione degli ingressibull Finora si egrave dato implicitamente per scontato che gli ingressi di una rete sincrona commutino
in modo sincrono con il clock
bull Ciograve egrave verificato se gli ingressi provengono da una rete sincrona di tipo Moore nella quale le uscite sono funzione solo dello stato che commuta solo al fronte positivo del clock
Rete combinatoria
X0n
Z0m
y0k
Y0k
Clock
D0kQ0k
FFD0k
CK D0kQ0k CK
Rete combinatoria
bull Nella realtagrave le cose stanno diversamente Si pensi al caso di pulsanti esterni che costituiscano lrsquo ingresso della rete Il cambiamento puograve avvenire in un istante qualsiasi
bull Nella rete di figura (Moore) le uscite sono comunque certamente sincronizzate con il clock e se gli ingressi X0n cambiano in un momento qualsiasi non sincronizzato il cambiamento viene percepito dai FF di retroazione solo al fronte positivo del clock e quindi il comportamento delle uscite della rete egrave il medesimo che si avrebbe se gli ingressi fossero sincronizzati
14
Sincronizzazione degli ingressi
bull La cosa cambia perograve se la rete egrave di tipo Mealy
Rete combinatoria
X0nZ0m
y0kY0k
Clock
D0kQ0k
FFD0k
CK D0kQ0k CK
bull In questo caso un cambiamento asincrono degli ingressi provoca in generale un cambiamento asincrono delle uscite
15
Esempio la cassaforte (dotata di una doppia tastiera - due ingressi) si apre solo se gli ingressi hanno assunto NEL TEMPO le configurazioni
00-01-01-10 Ogni violazione della sequenza riporta il sistema nello stato iniziale NB Essendo gli ingressi campionati la sequenza di ingresso 01-01 egrave possibile e significativa
hellip Cassaforte hellip sincrona hellip
NB si puograve supporre che gli ingressi cambino allo stesso istante delle variabili di stato ma la cosa non egrave necessaria Se la rete egrave di tipo Moore anche se gli ingressi cambiano a metagrave di un periodo di clock il comportamento dal punto di vista degli stati e quindi delle uscite egrave assolutamente lo stesso (ogni variazione egrave rilevata solo alla fine del periodo)
E11101
0111
11
F0
01
01
G0
0000
11 00
11
11
10
1001
10
00
10 0110
01
01
00
Per ogni stato tutte le combinazioni di ingresso
00
10
10
11
C0A0 B0 D0
Gli stati NON sono stabili per gli ingressi che li hanno provocati
00
B
00 01 11 10
F A GA
B C A GB
B D A GCB F A ED
B F A GE
B F AA- GF
B F A GG
0
0
0
0
1
0
0
X1X2
A0 B0 C0 E10011
01
10
0111
11
11
D0 10
F0
01
01
G0
0000
00
00
11
11
10
1001
1010 0110
01
11
00
Cassaforte sincrona
16
01
NB in questo esempio non vi sono condizioni di indifferenza Anzicheacute di stati compatibili si parla qui di stati equivalenti Ove poi due stati per gli stessi ingressi abbiano uscite identiche e portino agli stessi stati si parla di stati indistinguibili Naturalmente la descrizione a parole puograve evidenziare che alcune combinazioni di ingresso per alcuni stati non si presentano In questo caso si ritorna al concetto di compatibilitagrave
00
17
Cassaforte sincrona
Classi di equivalenza [AFG] =gt a[B] =gt b[C] =gt g[D] =gt d[E] =gt e
B
00 01 11 10
F A GA
B C A GB
B D A GCB F A ED
B F A GE
B F AA- GF
B F A GG
0
0
0
0
1
0
0
X1X2
B
C
D
E
F
G
A B C D E F
CF
FD CD
CFGE
CFGE
DFGE
--- CF DF GE
--- C F DF GE --
b
00 01 11 10
a a aa
b g a ab
b d a ag
b a a ed
b a a ae
X1X2
0
0
0
0
1 NB nel caso di tabelle completamente specificate le classi (massime) di equivalenza non hanno mai stati in comune Vanno usate tutte quindi Non esiste problema di chiusura
Ovviamente 5 stati 4 facenti parte della sequenza e uno esterno
18
b
00 01 11 10
a a aa
b g a ab
b d a ag
b a a ed
b a a ae
X1X2
0
0
0
0
1
Cassaforte sincrona
001
00 01 11 10
000 000 000000
001 011 000 000001
001 010 000 000011
001 000 000 100010
001 000 000 000100
X1X2
-- -- -- --101
-- -- -- --111
-- -- -- --110
0
0
0
0
1
--
--
--
Y1Y2 Y3
a =gt 000b =gt 001g =gt 011d =gt 010e =gt 100
D1= X1X2Y2Y3
D2=X1X2Y3
D3=X1X2+X1Y2Y3 Z =Y1
Sintetizzando con FFD la sintesi degli ingressi Di si ottiene sintetizzando le funzioni Yi (Yn+1=Dn)
Nessun problema di corse codifica libera (possibilmente ottima)
19
Sintesi
Direttorio cassaforte sincrona
20
00 01 01 10
Sintesi ndash simulazione funzionale
NB Gli ingressi cambiano in modo NON sincrono con il clock ma lrsquo uscita egrave sincrona essendo la rete di tipo Moore
21
Sintesi ndash simulazione timing
Si notino i ritardi delle uscite dei FF e dei gates da esse dipendenti rispetto al fronte positivo del clock (ad esempio d) se la frequenza del clock fosse eccessiva il sistema NON funzionerebbe piugrave correttamente
d
22
E con Mealy
B
00 01 11 10
F A GA
B C A GB
B D A GCB F A ED
B F A GE
B F AA- GF
B F A GG
0
0
0
0
1
0
0
X1X2
B0
00 01 11 10
F0 A0 G0A
B0 C0 A0 G0B
B0 D0 A0 G0CB0 F0 A0 E1D
B1 F1 A1 G1E
B0 F0 A0A-G0F
B0 F0 A0 G0G
X1X2
Potrei mettere una indifferenza sullrsquouscita Si si possono mettere indifferenze sulle uscite che cambiano Anticipazione o ritardo del cambiamento
Sintetizzare e simulare con Altera
23
bull Allrsquoesame orale egrave necessario portare un esercizio di reti sincrone e uno di reti asincrone NON ldquomutuatordquo da altri hellip
bull I due esercizi debbono essere portati su una chiavetta (o dispositivo equivalente) debbono contenere una spiegazione e anche la progettazionesimulazione con Altera
bull Il candidato deve dimostrare di sapere usare il sistema Altera e spiegare i progetti portati
bull Gli esercizi di reti sincrone hanno spesso il diagramma degli stati ma solo per verificahellip
Monoimpulsore A
D1 Q1
Q1CKFFD
D2 Q2
Q2CKFFD Z1
D
Clock
Clock
D
Z
Q1
Q2
Qui lrsquoingresso asincrono D egrave sincronizzato dai FF Uscita Z sincrona
Generare un impulso di uscita di un periodo di clock per ingresso 1 Un ulteriore impulso viene generato solo se lrsquoingresso torna a 1 dopo essere stato a 0 Lrsquouscita deve essere sincronizzata con il clock
24
25
D1 Q1
Q1CKFFD
D2 Q2
Q2CKFFD Z
D
Clock
Monoimpulsore A
1
0
1
1
0
A0 B1
C0
0
A
A
A
-
B
C
C
-
DQ2
Q1
B
0 1
C
-
Z0
0
1
-
A 00
--
00
00
10
--
11
11
DQ2
Q1
01
0 1
11
10
Z0
0
-
1
0000
10
11
01
B
C
-
A
Q1=D Q2= DQ1 Z=Q1Q2
00
00
01
01
10
10
11
11
DQ2
Q1
01
0 1
11
10
Z0
0
0
1
00
MAhellip
Q1=D Q2= Q1 Z=Q1Q2
Moore necessariamente
26
D1 Q1
Q1CKFFD
D2 Q2
Q2CKFFD Z2
D
Clock
Monoimpulsore B
Clock
D
Z2
Q1
Q2
Lrsquoingresso asincrono D agisce direttamente sullrsquouscita Z che quindi risulta asincrona
Qui la rete egrave di tipo Mealy e quindi con ingresso asincrono egrave possibile che vi sia uscita asincrona
27
D Q
QCKFFD Z
D
Clock
Monoimpulsore C
Clock
D
Z
Q
Anche qui lrsquoingresso asincrono D agisce direttamente sullrsquouscita Z che quindi risulta asincronaSi noti che se lrsquoingresso oscilla una volta che il FF ha campionato un 1 e fino a quando non campiona uno 0 lrsquouscita oscilla
Qui la rete egrave di tipo Mealy e quindi con ingresso asincrono egrave possibile che vi sia uscita asincrona
28
Considerazioni sui monoimpulsori A B e C
Il diagramma degli stati corrispondente al funzionamento reale dei due monoimpulsori B e C NON puograve essere tracciato percheacute di fatto le due reti (di tipo Mealy) NON sono sincrone Infatti il diagramma di circuiti sincroni prevede implicitamente un comportamento sincrono anche degli ingressi fatto non verificato nei casi B e C
La cosa non vale per il monoimpulsore A in quanto pur essendo lrsquoingresso asincrono lrsquouscita (rete di tipo Moore) dipende solo dagli stati In altre parole il comportamento della rete rende intrinsecamente sincroni ingressi fisicamente asincroni
Il diagramma degli stati che riflette il comportamento delle due reti B e C puograve essere tracciato solo partendo da una analisi asincrona ldquoaprendordquo quindi i FF D inseriti Ovviamente egrave possibile progettare le due reti senza lrsquouso dei FF D partendo da un diagramma degli stati asincrono ldquotradizionalerdquo
A scopo di esercizio si suggerisce la sintesi e la simulazione con Altera dei tre monoimpulsori come reti asincrone Si tratta di circuiti on due ingressi Ck e D
29
Monoimpulsori A-B-C
30
31
Contatori
A B C D Z
Circuiti senza ingresso (a parte il clock) nella versione piugrave semplice
D0 Q0
Q0CKFFD
MUX
1
0D1 Q1
Q1CKFFD
(Il clock egrave spesso sottinteso nei circuiti sincroni)
U0 U1
Esempio contatore binario x 4 con decodifica del 3
000 010 100 111
OUT
Q1 cambia stato quando Q0 egrave a 1 e passa a 0
CK
u1
u0
OUT (0) (1) (2) (0) (1) (2)(3) (3)
Contatore x 4 con decodifica del 3
33
Contatori binari in base non potenza di 2
A B C D E
000 001 010 011 100Contatore
binario per 5
D0 Q0
Q0CKFFD
MUX
1
0 1D1 Q1
Q1CKFFD
MUX
1
0D Q2
Q2CKFFD
Questo conta x8 ma per contare x5 arrivati a 4 bisogna ritornare a 0
34
D0 Q0
Q0CKFFD D1 Q1
Q1CKFFD
MUX
1
0 D2 Q2
Q2CKFFD
MUX
1
0
ABC
ldquo4rdquo
Contatore x 5
Decoder
La decodifica del 4 porta a zero lrsquouscita del decodificatore e quindi a 0 tutte le uscite degli AND rosa e al successivo fronte positivo del clock i tre FF campionano uno ldquo0rdquo
Per esercizio sintetizzare un contatore x 100 partendo dalla sintesi di un contatore decimale ovvero di un contatore x10 (da sintetizzare) Quanti FF per un contatore decimale I contatori decimali si trovano integrati in Altera
ldquo3rdquo
35
Contatori con ingressi di controllo
Ex Contatore integrato x 16 con Load e Enable
bull Il contatore conta per 16 (0-15) se il segnale EN egrave a 1 Allorchegrave il segnale LD va a 1 il dato presente sugli ingressi D egrave inserito nei 4 FF (lrsquoingresso puograve essere sincrono o asincrono) Nel caso precedente il decodificatore del ldquo3rdquo (uscita vera va portato) allrsquoingresso LD con tutti i Di a zero
bull In generale il contatore fornisce anche unrsquouscita ldquocarryrdquo che va a 1 quando il contatore raggiunge il valore FF Questa uscita puograve essere connessa allrsquoenable di un contatore a valle per ottenere un contatore per 256 cosigrave via (Progettarlo come esercizio)
EN
Q0 Q1 Q2 Q3CKLD
D0 D1 D2 D3
EN
Q0 Q1 Q2 Q3CK
CYLD
D0 D1 D2 D3
bull Esistono contatori UPDOWN nei quali un ingresso (UD) seleziona se il conteggio deve avvenire avanti o indietro Nel caso sia selezionata la modalitagrave ldquoindietrordquo il carry si attiva quando si raggiunge il valore ldquotutti zerirdquo
bull Esiste una molteplicitagrave di contatori ciascuno con le proprie specifiche peculiaritagrave con o senza RESET (che normalmente agisce in modo asincrono) UD con o senza LD etc etc
NB qualunque circuito sincrono (con sequenza non binaria) riconducibile al diagramma degli stati di un contatore egrave sempre un contatore
101 010 000 111 110 Contatore x 5 non binario
36
74163 contatore reale x 16 con Load Reset e Enable (T e P)I segnali di controllo sono sincroni ovvero agiscono sul fronte positivo del clock (rising edge)
74138 decoder 38 con uscite negate se G2A e G2B entrambi a zero e G1 a 1 Altrimenti tutte uscite alte
Direttorio Counter Glitch
Contatore binario x 8 e glitches
37
Glitch
Simulazione timingNB la presenza e la durata del glitch dipende dalle caratteristiche elettriche dei dispositivi
dalla loro tecnologia etc Nel caso dei dispositivi Altera dipende dal tipo di dispositivo sul quale egrave realizzato il circuito Analogamente la sensibilitagrave di eventuali ingressi di clock collegati allrsquouscita con il glitch dipende dalle caratteristiche del dispositivo Se ad esempio nel dispositivo Altera utilizzato si collega allrsquouscita Y6 il clock di un FFD non si ha commutazione del FF ma questo non egrave vero in assoluto
38
Cosa succede al contatore X5 progettato precedentemente se allrsquoaccensione non disponendo di un segnale di RESET i FF si portano in uno stato non facente parte del cicloNB La condizione allrsquoaccensione egrave del tutto casuale e dipende unicamente dalle condizioni elettriche
di realizzazione Ersquo impredicibileSupponiamo che i FF si portino al valore 110 (il numero 6 fuori dal ciclo) Analizziamo il comportamento
D0 Q0Q0CK
FFD D1 Q1Q1CK
FFD
MUX
1
0 D2 Q2Q2CK
FFD
MUX
1
0
ABC
ldquo4rdquo
000 001 010 011 100 110 111
In questo caso ci si riporta nella situazione di conteggio regolare (verificare con la tabella degli stati ) ma il comportamento in generale dipende dalla realizzazione e in altre realizzazione i due stati potrebbero essere separati dal ciclo principale che quindi non verrebbe mai raggiunto Ecco la funzione del RESET
39
Solo come esempio (da non utilizzare ) a scopo didattico vediamo la tabella delle transizioni di un contatore per 6 UpDown con comando di Reset I segnali di ingresso cambiano in modo asincrono ma hanno effetto in modo sincrono
Per compensare allrsquoaccensione
Sintetizzare e simulareCome dovrebbe essere modificato lo schema in Altera per permettere di
ldquopresettarerdquo in modo asincrono il contatore a un particolare valore di ingresso
00 01 11 10UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
111
110
000 101
000
101
y3 y2 y100 01 11 10
UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
000 000111
000 000 000 000110
000 101
000
000 000
101
y3 y2 y1
40
D0Q0
CKFFD
Clocky2
DEC
y3
y2
y1
ldquo1rdquo
ldquo2rdquo
ldquo3rdquo
ldquo4rdquo
1
0
UPDown
Sintesi di y2 in modo ldquodirettordquo
1
0
00 01 11 10UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
000 000111
000 000 000 000110
000 101
000
000 000
101
y3 y2 y1
41
Cassaforte hellipDisponendo di un contatore per 8 (ma anche per 16 etc) con reset sincrono e sempre abilitato al conteggio come potrei realizzare il circuito di apertura della cassaforte (sequenza X1X2 00-01-01-10) con modello Moore
Cx8RES
Q0 Q1 Q2 CK
RES= (ldquo0rdquoX1X2 + ldquo1rdquo X1X2 + ldquo2rdquo X1X2 + ldquo3rdquo X1 X2)Z = ldquo4rdquo (ldquo0rdquordquo1rdquordquo2rdquordquo3rdquordquo4rdquo sono le decodifiche binarie delle tre uscite del contatore)
Il contatore si resetta ogni volta che non si presenta lrsquoingresso giusto relativo al particolare stato Ilcontatore quindi si resetta e rimane resettato se non nelle condizioni espresse dalla funzione RESIl contatore arrivato a 4 (Z=1) si resetta comunque al successivo fronte del clock
Le reti sincrone si progettano sempre come combinazione di blocchi disponibili e logica ldquorandomrdquo
ABC
ldquo0rdquoldquo1rdquoldquo2rdquoldquo3rdquoldquo4rdquo
RLAND-OR
X1X2
RESZ
Cx8RES
Q0 Q1 Q2 CK
42
Contatori
EN
Q0 Q1 Q2 Q3CKCY
RESET
bull Attenzione Consideriamo il contatore di figura (questa volta con RESET asincrono) e supponiamo di utilizzarlo per contare per 5 (NB per il Reset si usa il ldquo5rdquo in questo casohellip glitch)
ABCD
ldquo5rdquo
ldquo1rdquo Percheacute questo schema egrave sbagliato
bull Percheacute presenta una corsa critica Nel momento in cui anche uno solo dei FF si resetta (e non tutti nello stesso istante) viene a mancare la configurazione ldquo4rdquo sul decoder e quindi alcuni FF potrebbero non fare in tempo a resettarsi E allora
EN
Q0 Q1 Q2 Q3CKCY
RESET
ABCD
ldquo5rdquo
ldquo1rdquo
RS
Y ldquo0rdquo
bull Cosigrave facendo il ldquo4rdquo attiva il SET e il FF NON si resetta fino a quando non egrave stato raggiunto la ldquo0rdquo NB lo schema ldquosbagliatordquo si puograve usare solo se si egrave certi della rapiditagrave di reset dei FF del contatore
bull Verificare con Altera
Sintesi cassaforte con moduli
Altera Cassaforte sincrona con moduli
Rete di controllo
Contatore con Reset asincrono e Load sincrono
43
NB In questo progetto la sintesi egrave stata condotta in modo ldquodirettordquo ovvero senza passare per la sintesi formale e utilizzando componenti disponibili e helliphellip materia grigia La sintesi dei circuiti sincroni si fa sempre e unicamente cosigrave
44
Simulazione funzionale (no timing)
NB I segnali di ingresso sono campionati SOLO sul fronte positivo del clock anche se si presentano asincroni Il segnale di uscita si attiva al clock successivo al riconoscimento della sequenza La posizione di ldquoriposordquo del contatore egrave il valore 4 I segnali Yi sono le decodifiche dei segnali di di ingresso X1 e X2
00 01 01 10
45
Simulazione timing
46
NB Si egrave scelto di utilizzare SOLO gli ingressi SINCRONI del contatore per semplicitagrave Il contatore rimane al valore 100 fino a quando non si presenta allrsquoingresso il valore 00 Se la sequenza egrave esatta il contatore continua a contare in avanti fino alla generazione dellrsquouscita (valore 11 del contatore) altrimenti si riporta al valore 100 ovvero Qc=1) Il segnale GN (Gate Not) egrave quello che abilita il conteggio Il sistema riamane stabile a 000 per una sequenza lunga a piacere di X1=0 e X2=0 e si sposta quando dopo 00 si ha 01 Come si evince dalla simulazione se la sequenza non egrave corretta o egrave interrotta il contatore si riporta sempre a 100
00 01 11 10
001 000 000
X1
000000 010 100 100001
000 100 100 011010
100 100 100 100011
000 100 100 100100
000 100 100 100101
000 100 100 100110
000 100 100 100111
0
0
0
1
0
0
0
0
X2
000
NB la tabella delle transizioni derivata della rete realizzata NON ha ovviamente condizioni di indifferenza
47
Progettare un contatore packed BCD updown a 8 bit (due digit)
48
Generazione di forme drsquoondabull Ersquo possibile generare forme drsquoonda periodiche mediante circuiti sincroni di periodo
sottomultiplo intero del clock
Esempio 1Divisore di frequenza per 2
D0k Q0k
CK D Q
CK Clock
Q
Esempio 2 generare una forma drsquoonda periodica con periodo 5T (ove T sia il periodo del clock) in cui in un semiperiodo 3T lrsquouscita sia alta e nellrsquoaltro semiperiodo 2T lrsquouscita sia bassa
Q0 Q1 Q2 CK
Cx5
C
B
A
01234
DecoderDemux
Clock
ZZ T
3T2T
3T
NB una rete logica egrave in grado di effettuare delle divisioni di frequenza e mai delle moltiplicazioni di frequenza (che si possono ottenere solo con circuiti analogici non lineari)
49
Di che circuito si tratta
D0k Q0k
CK D0 Q0
CKQ0
D0k Q0k
CK D1 Q1
CK
D0k Q0k
CK D2 Q2
CKClock
Clock
Q0
Q1
Q2
Ersquo un contatore binario ma non sincrono Infatti i vari FF NON utilizzano lo stesso clock e questo porta a un piccolo disallineamento sulle uscite Non egrave sintetizzabile come una rete sincrona e una sintesi formale sarebbe possibile solo trattando il circuito come asincrono ovvero ldquoaprendordquo i FF Sarebbe possibile trasformarlo in un contatore x6 mantenendo la stessa impostazione
Sintetizzare e simulare con Altera
NB il segnale di clock non egrave in comune
50
7493
51
Altera Contatore asincrono
Contatore asincrono
52
Simulazione timing
53
Come puograve essere utilizzato un FFD per catturare un impulso piugrave breve di un periodo
D2 Q2
Q2CKFFD Z
Clock
D1 Q1
Q1CKFFD
D0 Q00
Q0CKFFD
ldquo1rdquo CL
Lrsquoimpulso breve viene catturato dal FF 0 (purcheacute di larghezza sufficiente per la tecnologia del FF) - che quindi agisce come integratore ndash la cui uscita alimenta il monoimpulsore di tipo A Lrsquoattivazione del FF 1 resetta il FF 0 (supponendo che il segnale di CL sia ldquopositiverdquotruerdquo)
Ci puograve essere un problema se il CL agisce in modo asincrono
NB questo circuito e quello del lucido precedente evidenziano il fatto che nella realtagrave nessuna rete egrave solo sincrona ma bensigrave egrave pressocheacute sempre necessario utilizzare reti di natura diversa anche percheacute vi egrave sempre una interazione fra reti con clock diversi eo con segnali provenienti dal mondo esterno NON sincronizzati con il clock
Monoimpulsore di tipo A ldquorivistordquo
54
bull Uno shift register a sinistra (a destra) egrave un registro composto da FFD che ad ogni clock trasferisce il valore del FF a destra (a sinistra) di ciascun FF nel FF stesso Nel FF piugrave a destra (sinistra) viene immesso uno ldquo0rdquo Questi tipi di registri shift si chiamano ldquologicirdquo
Shift register (registri a traslazione o scorrimento)
D0kQ0k
CK DnQn
CK
D0kQ0k
CK Dn-1Qn-1
CK
D0kQ0k
CK Dn-2Qn-2
CK
D0kQ0k
CK D0Q0
CK
ldquo0rdquo
Shift register a sinistra
bull Anche per i registri a traslazione esistono diverse versioni con ingresso parallelo e uscita seriale con ingresso seriale e uscita parallela con reset con load etc etc
bull Si noti che uno shift register egrave anche un contatore Si immagini per esempio che dopo un reset siano inseriti degli uni a partire da destra Lo shift register si riempie progressivamente di uni e quindi la posizione in cui egrave arrivato lrsquouno indica il valore del conteggio in base a un codice ldquouno su nrdquo (un codice decodificato)
bull Spesso uno stesso registro puograve traslare a destra o a sinistra in funzione di una segnale di controllo Ovviamente questo si ottiene premettendo a ogni ingresso Di un MUX a due vie che preleva in funzione del segnale di controllo Qigrave+1 o Qigrave-1 Con questa configurazione lo shift register diventa anche un contatore avantiindietro
Registro a scorrimento (shift-register) a 3 bit
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
IN
OUT2OUT1OUT0
CK
CK
IN
A_RESET
OUT1
OUT2
OUT0
Registro a scorrimento (shift-register) a 3 bit
57
Esempio 74164 (serial In parallel OUT)
bull In questo registro a traslazione ad ogni fronte positivo del clock i dati sono traslati a destra (Q0 -gt Q1 Q1-gtQ2 etc) Il registro egrave dotato in un Master Reset (vero negato) e il dato inserito nel FF Q0 egrave dato dallrsquoAND dei due ingressi Dsa e Dsb
bull Si noti che lrsquooperazione di shift corrisponde aritmeticamente alle operazioni di divisione e moltiplicazione per 2 Si supponga che in Q0 vi sia il bit meno significativo e in Q7 il meno significativo
0 1 1 0 1 0 1 0
010101102 = 10810
Shift left =gt x2
Shift right =gt 2
101011002 = 21610
001010112 = 5910
NB nel dispositivo i bit sono posti in ordine invertito e quindi un shift left del numero corrisponde a uno shift right sul dispositivo
58
bull Esistono anche i registri a traslazione ldquoaritmeticirdquo In questi shift register a destra anzicheacute fare entrare nel FF piugrave a sinistra lo ldquo0rdquo viene immesso sempre ripetutamente il suo valore logico
Shift aritmetico
Q7 Q6 Q5 Q4 Q3 Q2 Q1 Q0
D7 D6 D5 D4 D3 D2 D1 D0
I LDCK Esempio
11001010SRA
11100101 interpretato in complemento a 2
001101102=5410
C2 C2
000110112=2710
bull Lo shift aritmetico a destra effettua una divisione per 2 mantenendo il segno
59
Rotazione
Nei computer egrave sovente necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register
D0kQ0k
CK DnQn
CK
D0kQ0k
CK Dn-1Qn-1
CK
D0kQ0k
CK Dn-2Qn-2
CK
D0kQ0k
CK D0Q0
CK
Molto spesso nei computer egrave necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register con direzione programmabile In questo caso su D0 ad esempio puograve essere avviato o Q1 o Qn
60
Contatori con shift register ndash Contatore retroazionato EX-OR
Q2Q0
Shift right 3 bitDQ1
110 111 011 101 010 001
Diagramma degli stati disgiunto
Uno shift register con n FF retroazionato con un EX-OR (scelta degli ingressi variabile) egrave un contatore NON binario che conta per 2n-1 (purcheacute presettato a un valore diverso da tutti zeri)
000
100
61
Contatore di Johnson (riempimento e svuotamento)
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
000-gt100-gt110-gt111-gt011-gt001-gt000-gtStati isolati 101-gt010-gt101gt1
Poicheacute configurazioni adiacenti del codice Johnson differiscono di un solo bit il contatore puograve essere utilizzato per generare forme drsquoonda prive di alee
62
Contatore ad anello con un solo 1 (ovvero che genera direttamente il codice 1su n)
FFDD Q
QR
RESET
FFDD Q
QR
RESET
FFDD Q
QPR
RESET
OUT3OUT1OUT0
CK
FFDD Q
QR
RESET
OUT2
0001-gt1000-gt0100-gt0010-gt0010n FF per contare per n (mentre con i contatori binari il numero dei FF egrave il log2m ove m egrave il primo intero maggiore o uguale a n)
63
Barrel shifter (rotore)Un barrel shifter egrave uno shift register in grado di traslare di ldquonrdquo posizioni in un solo clock il contenuto dei suoi FF In figura egrave riportato il barrel shifter della Altera Gli ingressi A-H in presenza dellrsquoattivazione del segnale LDST al primo fronte positivo del clock sono depositati nei FF Quando LDST egrave 0 ad ogni fronte positivo del clock i bit di uscita sono ruotati di n posizioni in senso antiorario (ovvero lrsquouscita H diventa la G la G diventa la Fhellipe lrsquouscita A diventa la H) ove n egrave il valore binario indicato dai segnali S0 S1 e S2
Si noti che il circuito in questione egrave di fatto un registro con 8 FF allrsquoingresso di ciascuno dei quali egrave previsto un MUX a 8 vie che pilotato dai segnali S0 S1 e S2 che seleziona uno degli 8 uscite del dispositivo La struttura interna puograve essere osservata ldquoclikkandordquo due volte sul dispositivo nello schema di Altera
64
Barrel shifter
6565
66
Simulazione timing
67
bull Utilizzando il sistema Altera progettare un orologio con secondi minuti ora partendo da un oscillatore a quarzo con frequenza 500 KHz
bull E se si volesse proseguire e realizzare anche un datario (giorno mese e anno )
bull Come potrebbe essere integrato con una sveglia Si ricordi che lrsquoorologio deve essere anche essere ldquopresettatordquo
bull Quali circuiti utilizzare per la visualizzazione
68
EPROM
X0nZ0m
y0kY0k
Clock
D0kQ0k
FFD0k
CK D0kQ0k CK
Reti sincrone con EPROM
Al posto delle EPROM si utilizzano ora dei PLA ovvero dispositivi nei quali si nei quali le funzioni combinatorie sono ottimizzate ma il principio egrave assolutamente il medesimo
69
Progettare con Altera una rete logica sincrona che utilizzando registri 374 ALU 74181 un contatore e altri dispositivi ritenuti necessari permetta di eseguire in sequenza la somma di due dati di 4 bit senza segno ingresso esegua il complemento a 2 inverta la parte bassa con la parte alta del risultato e infine moltiplichi il tutto logicamente per 2
La soluzione egrave sempre decomponibile in tre sottosistemi il controllo con la sua decodifica (unitagrave di controllo) il percorso dei dati con le unitagrave che li trasformano (datapath) e i registri di deposito e di ingresso dei dati
Questa egrave la struttura base di qualunque unitagrave centrale di qualunque computer
La differenza consiste solo nel fatto che anzicheacute avere una sequenza fissa di operazioni ne viene generata una volta a volta che dipende appunto dalla istruzione che deve essere eseguita Come si vedragrave approfonditamente nel corso di Calcolatori T del II anno (prof Neri e Mattoccia)
Arrivederci al corso di Calcolatori T del II anno (sapendo perfettamente le reti logiche helliphellip)
Clock gating e glitch sul clockNelle reti sincrone egrave necessario evitare variazioni spurie (glitches) del segnale di clock che possono provocare commutazioni indesiderate dei FFD (che sono sensibili ai fronti)
Ad esempio per via dei ritardi tra gli n segnali I[n-10] eo le alee introdotte dalla rete combinatoria di decodifica a causa del ldquoclock gatingldquo puograve verificarsi quanto segue
CK
P
CK_G
Glitch sul clock rarr possibile commutazione spuria del FFD
X
CK
Q
QFFD
D
CK
Q
QCK_GRete di Decodifica
I[n-10]P
t
NO
10
Naturalmente tutto dipende dalla larghezza dellrsquoimpulso spurio se molto stretto il FF potrebbe non sentirlo Quindi il clock gating non egrave proibito ma egrave un rischio da evitare in caso di incertezza
11
Per transizioni che debbono o meno verificarsi in funzione del valore della rete di decodifica bisogna condizionare il segnale D come in figura Se la rete di decodifica genera il valore 1 lrsquouscita Q assume al clock il valore di X altrimenti lrsquouscita Q copia seacute stessa e rimane invariata
Clock gating e glitch sul clock
X
CK
Q
QFFD
D
CK
Q
Q
I[n-10] P
t
01SEL
01SEL
Rete di Decodifica
Il clock gating oltre a generare potenziali glitch introduceldquoclock-skewrdquo (disallineamento) Ad esempio consideriamo due RSS soggette al FF1 e al FF2
Clock gating e clock-skew
CK
CK_GtAND tAND
I clock delle due reti sono sfasati di un tempo pari al ritardo introdotto dallrsquoAND (in generale dalla eventuale RC) interposto Tale fenomeno (ldquoclock-skewrdquo) egrave potenzialmente dannoso in quanto il FF2 potrebbe fare campionare alla propria RC in presenza dello stesso fronte di clock i nuovi valori prodotti dalla RC alimentata dal FF1
NB Il ldquoclock-skewrdquo non egrave causato solo dal clock gating ma anche (ad esempio) da percorsi elettrici di lunghezza diversa
I1
CK
B
BCK_GP
I2
CK
A
A
tAND
FFD-1D
CK
Q
QFFD-2
D
CK
Q
Q
12
13
Sincronizzazione degli ingressibull Finora si egrave dato implicitamente per scontato che gli ingressi di una rete sincrona commutino
in modo sincrono con il clock
bull Ciograve egrave verificato se gli ingressi provengono da una rete sincrona di tipo Moore nella quale le uscite sono funzione solo dello stato che commuta solo al fronte positivo del clock
Rete combinatoria
X0n
Z0m
y0k
Y0k
Clock
D0kQ0k
FFD0k
CK D0kQ0k CK
Rete combinatoria
bull Nella realtagrave le cose stanno diversamente Si pensi al caso di pulsanti esterni che costituiscano lrsquo ingresso della rete Il cambiamento puograve avvenire in un istante qualsiasi
bull Nella rete di figura (Moore) le uscite sono comunque certamente sincronizzate con il clock e se gli ingressi X0n cambiano in un momento qualsiasi non sincronizzato il cambiamento viene percepito dai FF di retroazione solo al fronte positivo del clock e quindi il comportamento delle uscite della rete egrave il medesimo che si avrebbe se gli ingressi fossero sincronizzati
14
Sincronizzazione degli ingressi
bull La cosa cambia perograve se la rete egrave di tipo Mealy
Rete combinatoria
X0nZ0m
y0kY0k
Clock
D0kQ0k
FFD0k
CK D0kQ0k CK
bull In questo caso un cambiamento asincrono degli ingressi provoca in generale un cambiamento asincrono delle uscite
15
Esempio la cassaforte (dotata di una doppia tastiera - due ingressi) si apre solo se gli ingressi hanno assunto NEL TEMPO le configurazioni
00-01-01-10 Ogni violazione della sequenza riporta il sistema nello stato iniziale NB Essendo gli ingressi campionati la sequenza di ingresso 01-01 egrave possibile e significativa
hellip Cassaforte hellip sincrona hellip
NB si puograve supporre che gli ingressi cambino allo stesso istante delle variabili di stato ma la cosa non egrave necessaria Se la rete egrave di tipo Moore anche se gli ingressi cambiano a metagrave di un periodo di clock il comportamento dal punto di vista degli stati e quindi delle uscite egrave assolutamente lo stesso (ogni variazione egrave rilevata solo alla fine del periodo)
E11101
0111
11
F0
01
01
G0
0000
11 00
11
11
10
1001
10
00
10 0110
01
01
00
Per ogni stato tutte le combinazioni di ingresso
00
10
10
11
C0A0 B0 D0
Gli stati NON sono stabili per gli ingressi che li hanno provocati
00
B
00 01 11 10
F A GA
B C A GB
B D A GCB F A ED
B F A GE
B F AA- GF
B F A GG
0
0
0
0
1
0
0
X1X2
A0 B0 C0 E10011
01
10
0111
11
11
D0 10
F0
01
01
G0
0000
00
00
11
11
10
1001
1010 0110
01
11
00
Cassaforte sincrona
16
01
NB in questo esempio non vi sono condizioni di indifferenza Anzicheacute di stati compatibili si parla qui di stati equivalenti Ove poi due stati per gli stessi ingressi abbiano uscite identiche e portino agli stessi stati si parla di stati indistinguibili Naturalmente la descrizione a parole puograve evidenziare che alcune combinazioni di ingresso per alcuni stati non si presentano In questo caso si ritorna al concetto di compatibilitagrave
00
17
Cassaforte sincrona
Classi di equivalenza [AFG] =gt a[B] =gt b[C] =gt g[D] =gt d[E] =gt e
B
00 01 11 10
F A GA
B C A GB
B D A GCB F A ED
B F A GE
B F AA- GF
B F A GG
0
0
0
0
1
0
0
X1X2
B
C
D
E
F
G
A B C D E F
CF
FD CD
CFGE
CFGE
DFGE
--- CF DF GE
--- C F DF GE --
b
00 01 11 10
a a aa
b g a ab
b d a ag
b a a ed
b a a ae
X1X2
0
0
0
0
1 NB nel caso di tabelle completamente specificate le classi (massime) di equivalenza non hanno mai stati in comune Vanno usate tutte quindi Non esiste problema di chiusura
Ovviamente 5 stati 4 facenti parte della sequenza e uno esterno
18
b
00 01 11 10
a a aa
b g a ab
b d a ag
b a a ed
b a a ae
X1X2
0
0
0
0
1
Cassaforte sincrona
001
00 01 11 10
000 000 000000
001 011 000 000001
001 010 000 000011
001 000 000 100010
001 000 000 000100
X1X2
-- -- -- --101
-- -- -- --111
-- -- -- --110
0
0
0
0
1
--
--
--
Y1Y2 Y3
a =gt 000b =gt 001g =gt 011d =gt 010e =gt 100
D1= X1X2Y2Y3
D2=X1X2Y3
D3=X1X2+X1Y2Y3 Z =Y1
Sintetizzando con FFD la sintesi degli ingressi Di si ottiene sintetizzando le funzioni Yi (Yn+1=Dn)
Nessun problema di corse codifica libera (possibilmente ottima)
19
Sintesi
Direttorio cassaforte sincrona
20
00 01 01 10
Sintesi ndash simulazione funzionale
NB Gli ingressi cambiano in modo NON sincrono con il clock ma lrsquo uscita egrave sincrona essendo la rete di tipo Moore
21
Sintesi ndash simulazione timing
Si notino i ritardi delle uscite dei FF e dei gates da esse dipendenti rispetto al fronte positivo del clock (ad esempio d) se la frequenza del clock fosse eccessiva il sistema NON funzionerebbe piugrave correttamente
d
22
E con Mealy
B
00 01 11 10
F A GA
B C A GB
B D A GCB F A ED
B F A GE
B F AA- GF
B F A GG
0
0
0
0
1
0
0
X1X2
B0
00 01 11 10
F0 A0 G0A
B0 C0 A0 G0B
B0 D0 A0 G0CB0 F0 A0 E1D
B1 F1 A1 G1E
B0 F0 A0A-G0F
B0 F0 A0 G0G
X1X2
Potrei mettere una indifferenza sullrsquouscita Si si possono mettere indifferenze sulle uscite che cambiano Anticipazione o ritardo del cambiamento
Sintetizzare e simulare con Altera
23
bull Allrsquoesame orale egrave necessario portare un esercizio di reti sincrone e uno di reti asincrone NON ldquomutuatordquo da altri hellip
bull I due esercizi debbono essere portati su una chiavetta (o dispositivo equivalente) debbono contenere una spiegazione e anche la progettazionesimulazione con Altera
bull Il candidato deve dimostrare di sapere usare il sistema Altera e spiegare i progetti portati
bull Gli esercizi di reti sincrone hanno spesso il diagramma degli stati ma solo per verificahellip
Monoimpulsore A
D1 Q1
Q1CKFFD
D2 Q2
Q2CKFFD Z1
D
Clock
Clock
D
Z
Q1
Q2
Qui lrsquoingresso asincrono D egrave sincronizzato dai FF Uscita Z sincrona
Generare un impulso di uscita di un periodo di clock per ingresso 1 Un ulteriore impulso viene generato solo se lrsquoingresso torna a 1 dopo essere stato a 0 Lrsquouscita deve essere sincronizzata con il clock
24
25
D1 Q1
Q1CKFFD
D2 Q2
Q2CKFFD Z
D
Clock
Monoimpulsore A
1
0
1
1
0
A0 B1
C0
0
A
A
A
-
B
C
C
-
DQ2
Q1
B
0 1
C
-
Z0
0
1
-
A 00
--
00
00
10
--
11
11
DQ2
Q1
01
0 1
11
10
Z0
0
-
1
0000
10
11
01
B
C
-
A
Q1=D Q2= DQ1 Z=Q1Q2
00
00
01
01
10
10
11
11
DQ2
Q1
01
0 1
11
10
Z0
0
0
1
00
MAhellip
Q1=D Q2= Q1 Z=Q1Q2
Moore necessariamente
26
D1 Q1
Q1CKFFD
D2 Q2
Q2CKFFD Z2
D
Clock
Monoimpulsore B
Clock
D
Z2
Q1
Q2
Lrsquoingresso asincrono D agisce direttamente sullrsquouscita Z che quindi risulta asincrona
Qui la rete egrave di tipo Mealy e quindi con ingresso asincrono egrave possibile che vi sia uscita asincrona
27
D Q
QCKFFD Z
D
Clock
Monoimpulsore C
Clock
D
Z
Q
Anche qui lrsquoingresso asincrono D agisce direttamente sullrsquouscita Z che quindi risulta asincronaSi noti che se lrsquoingresso oscilla una volta che il FF ha campionato un 1 e fino a quando non campiona uno 0 lrsquouscita oscilla
Qui la rete egrave di tipo Mealy e quindi con ingresso asincrono egrave possibile che vi sia uscita asincrona
28
Considerazioni sui monoimpulsori A B e C
Il diagramma degli stati corrispondente al funzionamento reale dei due monoimpulsori B e C NON puograve essere tracciato percheacute di fatto le due reti (di tipo Mealy) NON sono sincrone Infatti il diagramma di circuiti sincroni prevede implicitamente un comportamento sincrono anche degli ingressi fatto non verificato nei casi B e C
La cosa non vale per il monoimpulsore A in quanto pur essendo lrsquoingresso asincrono lrsquouscita (rete di tipo Moore) dipende solo dagli stati In altre parole il comportamento della rete rende intrinsecamente sincroni ingressi fisicamente asincroni
Il diagramma degli stati che riflette il comportamento delle due reti B e C puograve essere tracciato solo partendo da una analisi asincrona ldquoaprendordquo quindi i FF D inseriti Ovviamente egrave possibile progettare le due reti senza lrsquouso dei FF D partendo da un diagramma degli stati asincrono ldquotradizionalerdquo
A scopo di esercizio si suggerisce la sintesi e la simulazione con Altera dei tre monoimpulsori come reti asincrone Si tratta di circuiti on due ingressi Ck e D
29
Monoimpulsori A-B-C
30
31
Contatori
A B C D Z
Circuiti senza ingresso (a parte il clock) nella versione piugrave semplice
D0 Q0
Q0CKFFD
MUX
1
0D1 Q1
Q1CKFFD
(Il clock egrave spesso sottinteso nei circuiti sincroni)
U0 U1
Esempio contatore binario x 4 con decodifica del 3
000 010 100 111
OUT
Q1 cambia stato quando Q0 egrave a 1 e passa a 0
CK
u1
u0
OUT (0) (1) (2) (0) (1) (2)(3) (3)
Contatore x 4 con decodifica del 3
33
Contatori binari in base non potenza di 2
A B C D E
000 001 010 011 100Contatore
binario per 5
D0 Q0
Q0CKFFD
MUX
1
0 1D1 Q1
Q1CKFFD
MUX
1
0D Q2
Q2CKFFD
Questo conta x8 ma per contare x5 arrivati a 4 bisogna ritornare a 0
34
D0 Q0
Q0CKFFD D1 Q1
Q1CKFFD
MUX
1
0 D2 Q2
Q2CKFFD
MUX
1
0
ABC
ldquo4rdquo
Contatore x 5
Decoder
La decodifica del 4 porta a zero lrsquouscita del decodificatore e quindi a 0 tutte le uscite degli AND rosa e al successivo fronte positivo del clock i tre FF campionano uno ldquo0rdquo
Per esercizio sintetizzare un contatore x 100 partendo dalla sintesi di un contatore decimale ovvero di un contatore x10 (da sintetizzare) Quanti FF per un contatore decimale I contatori decimali si trovano integrati in Altera
ldquo3rdquo
35
Contatori con ingressi di controllo
Ex Contatore integrato x 16 con Load e Enable
bull Il contatore conta per 16 (0-15) se il segnale EN egrave a 1 Allorchegrave il segnale LD va a 1 il dato presente sugli ingressi D egrave inserito nei 4 FF (lrsquoingresso puograve essere sincrono o asincrono) Nel caso precedente il decodificatore del ldquo3rdquo (uscita vera va portato) allrsquoingresso LD con tutti i Di a zero
bull In generale il contatore fornisce anche unrsquouscita ldquocarryrdquo che va a 1 quando il contatore raggiunge il valore FF Questa uscita puograve essere connessa allrsquoenable di un contatore a valle per ottenere un contatore per 256 cosigrave via (Progettarlo come esercizio)
EN
Q0 Q1 Q2 Q3CKLD
D0 D1 D2 D3
EN
Q0 Q1 Q2 Q3CK
CYLD
D0 D1 D2 D3
bull Esistono contatori UPDOWN nei quali un ingresso (UD) seleziona se il conteggio deve avvenire avanti o indietro Nel caso sia selezionata la modalitagrave ldquoindietrordquo il carry si attiva quando si raggiunge il valore ldquotutti zerirdquo
bull Esiste una molteplicitagrave di contatori ciascuno con le proprie specifiche peculiaritagrave con o senza RESET (che normalmente agisce in modo asincrono) UD con o senza LD etc etc
NB qualunque circuito sincrono (con sequenza non binaria) riconducibile al diagramma degli stati di un contatore egrave sempre un contatore
101 010 000 111 110 Contatore x 5 non binario
36
74163 contatore reale x 16 con Load Reset e Enable (T e P)I segnali di controllo sono sincroni ovvero agiscono sul fronte positivo del clock (rising edge)
74138 decoder 38 con uscite negate se G2A e G2B entrambi a zero e G1 a 1 Altrimenti tutte uscite alte
Direttorio Counter Glitch
Contatore binario x 8 e glitches
37
Glitch
Simulazione timingNB la presenza e la durata del glitch dipende dalle caratteristiche elettriche dei dispositivi
dalla loro tecnologia etc Nel caso dei dispositivi Altera dipende dal tipo di dispositivo sul quale egrave realizzato il circuito Analogamente la sensibilitagrave di eventuali ingressi di clock collegati allrsquouscita con il glitch dipende dalle caratteristiche del dispositivo Se ad esempio nel dispositivo Altera utilizzato si collega allrsquouscita Y6 il clock di un FFD non si ha commutazione del FF ma questo non egrave vero in assoluto
38
Cosa succede al contatore X5 progettato precedentemente se allrsquoaccensione non disponendo di un segnale di RESET i FF si portano in uno stato non facente parte del cicloNB La condizione allrsquoaccensione egrave del tutto casuale e dipende unicamente dalle condizioni elettriche
di realizzazione Ersquo impredicibileSupponiamo che i FF si portino al valore 110 (il numero 6 fuori dal ciclo) Analizziamo il comportamento
D0 Q0Q0CK
FFD D1 Q1Q1CK
FFD
MUX
1
0 D2 Q2Q2CK
FFD
MUX
1
0
ABC
ldquo4rdquo
000 001 010 011 100 110 111
In questo caso ci si riporta nella situazione di conteggio regolare (verificare con la tabella degli stati ) ma il comportamento in generale dipende dalla realizzazione e in altre realizzazione i due stati potrebbero essere separati dal ciclo principale che quindi non verrebbe mai raggiunto Ecco la funzione del RESET
39
Solo come esempio (da non utilizzare ) a scopo didattico vediamo la tabella delle transizioni di un contatore per 6 UpDown con comando di Reset I segnali di ingresso cambiano in modo asincrono ma hanno effetto in modo sincrono
Per compensare allrsquoaccensione
Sintetizzare e simulareCome dovrebbe essere modificato lo schema in Altera per permettere di
ldquopresettarerdquo in modo asincrono il contatore a un particolare valore di ingresso
00 01 11 10UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
111
110
000 101
000
101
y3 y2 y100 01 11 10
UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
000 000111
000 000 000 000110
000 101
000
000 000
101
y3 y2 y1
40
D0Q0
CKFFD
Clocky2
DEC
y3
y2
y1
ldquo1rdquo
ldquo2rdquo
ldquo3rdquo
ldquo4rdquo
1
0
UPDown
Sintesi di y2 in modo ldquodirettordquo
1
0
00 01 11 10UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
000 000111
000 000 000 000110
000 101
000
000 000
101
y3 y2 y1
41
Cassaforte hellipDisponendo di un contatore per 8 (ma anche per 16 etc) con reset sincrono e sempre abilitato al conteggio come potrei realizzare il circuito di apertura della cassaforte (sequenza X1X2 00-01-01-10) con modello Moore
Cx8RES
Q0 Q1 Q2 CK
RES= (ldquo0rdquoX1X2 + ldquo1rdquo X1X2 + ldquo2rdquo X1X2 + ldquo3rdquo X1 X2)Z = ldquo4rdquo (ldquo0rdquordquo1rdquordquo2rdquordquo3rdquordquo4rdquo sono le decodifiche binarie delle tre uscite del contatore)
Il contatore si resetta ogni volta che non si presenta lrsquoingresso giusto relativo al particolare stato Ilcontatore quindi si resetta e rimane resettato se non nelle condizioni espresse dalla funzione RESIl contatore arrivato a 4 (Z=1) si resetta comunque al successivo fronte del clock
Le reti sincrone si progettano sempre come combinazione di blocchi disponibili e logica ldquorandomrdquo
ABC
ldquo0rdquoldquo1rdquoldquo2rdquoldquo3rdquoldquo4rdquo
RLAND-OR
X1X2
RESZ
Cx8RES
Q0 Q1 Q2 CK
42
Contatori
EN
Q0 Q1 Q2 Q3CKCY
RESET
bull Attenzione Consideriamo il contatore di figura (questa volta con RESET asincrono) e supponiamo di utilizzarlo per contare per 5 (NB per il Reset si usa il ldquo5rdquo in questo casohellip glitch)
ABCD
ldquo5rdquo
ldquo1rdquo Percheacute questo schema egrave sbagliato
bull Percheacute presenta una corsa critica Nel momento in cui anche uno solo dei FF si resetta (e non tutti nello stesso istante) viene a mancare la configurazione ldquo4rdquo sul decoder e quindi alcuni FF potrebbero non fare in tempo a resettarsi E allora
EN
Q0 Q1 Q2 Q3CKCY
RESET
ABCD
ldquo5rdquo
ldquo1rdquo
RS
Y ldquo0rdquo
bull Cosigrave facendo il ldquo4rdquo attiva il SET e il FF NON si resetta fino a quando non egrave stato raggiunto la ldquo0rdquo NB lo schema ldquosbagliatordquo si puograve usare solo se si egrave certi della rapiditagrave di reset dei FF del contatore
bull Verificare con Altera
Sintesi cassaforte con moduli
Altera Cassaforte sincrona con moduli
Rete di controllo
Contatore con Reset asincrono e Load sincrono
43
NB In questo progetto la sintesi egrave stata condotta in modo ldquodirettordquo ovvero senza passare per la sintesi formale e utilizzando componenti disponibili e helliphellip materia grigia La sintesi dei circuiti sincroni si fa sempre e unicamente cosigrave
44
Simulazione funzionale (no timing)
NB I segnali di ingresso sono campionati SOLO sul fronte positivo del clock anche se si presentano asincroni Il segnale di uscita si attiva al clock successivo al riconoscimento della sequenza La posizione di ldquoriposordquo del contatore egrave il valore 4 I segnali Yi sono le decodifiche dei segnali di di ingresso X1 e X2
00 01 01 10
45
Simulazione timing
46
NB Si egrave scelto di utilizzare SOLO gli ingressi SINCRONI del contatore per semplicitagrave Il contatore rimane al valore 100 fino a quando non si presenta allrsquoingresso il valore 00 Se la sequenza egrave esatta il contatore continua a contare in avanti fino alla generazione dellrsquouscita (valore 11 del contatore) altrimenti si riporta al valore 100 ovvero Qc=1) Il segnale GN (Gate Not) egrave quello che abilita il conteggio Il sistema riamane stabile a 000 per una sequenza lunga a piacere di X1=0 e X2=0 e si sposta quando dopo 00 si ha 01 Come si evince dalla simulazione se la sequenza non egrave corretta o egrave interrotta il contatore si riporta sempre a 100
00 01 11 10
001 000 000
X1
000000 010 100 100001
000 100 100 011010
100 100 100 100011
000 100 100 100100
000 100 100 100101
000 100 100 100110
000 100 100 100111
0
0
0
1
0
0
0
0
X2
000
NB la tabella delle transizioni derivata della rete realizzata NON ha ovviamente condizioni di indifferenza
47
Progettare un contatore packed BCD updown a 8 bit (due digit)
48
Generazione di forme drsquoondabull Ersquo possibile generare forme drsquoonda periodiche mediante circuiti sincroni di periodo
sottomultiplo intero del clock
Esempio 1Divisore di frequenza per 2
D0k Q0k
CK D Q
CK Clock
Q
Esempio 2 generare una forma drsquoonda periodica con periodo 5T (ove T sia il periodo del clock) in cui in un semiperiodo 3T lrsquouscita sia alta e nellrsquoaltro semiperiodo 2T lrsquouscita sia bassa
Q0 Q1 Q2 CK
Cx5
C
B
A
01234
DecoderDemux
Clock
ZZ T
3T2T
3T
NB una rete logica egrave in grado di effettuare delle divisioni di frequenza e mai delle moltiplicazioni di frequenza (che si possono ottenere solo con circuiti analogici non lineari)
49
Di che circuito si tratta
D0k Q0k
CK D0 Q0
CKQ0
D0k Q0k
CK D1 Q1
CK
D0k Q0k
CK D2 Q2
CKClock
Clock
Q0
Q1
Q2
Ersquo un contatore binario ma non sincrono Infatti i vari FF NON utilizzano lo stesso clock e questo porta a un piccolo disallineamento sulle uscite Non egrave sintetizzabile come una rete sincrona e una sintesi formale sarebbe possibile solo trattando il circuito come asincrono ovvero ldquoaprendordquo i FF Sarebbe possibile trasformarlo in un contatore x6 mantenendo la stessa impostazione
Sintetizzare e simulare con Altera
NB il segnale di clock non egrave in comune
50
7493
51
Altera Contatore asincrono
Contatore asincrono
52
Simulazione timing
53
Come puograve essere utilizzato un FFD per catturare un impulso piugrave breve di un periodo
D2 Q2
Q2CKFFD Z
Clock
D1 Q1
Q1CKFFD
D0 Q00
Q0CKFFD
ldquo1rdquo CL
Lrsquoimpulso breve viene catturato dal FF 0 (purcheacute di larghezza sufficiente per la tecnologia del FF) - che quindi agisce come integratore ndash la cui uscita alimenta il monoimpulsore di tipo A Lrsquoattivazione del FF 1 resetta il FF 0 (supponendo che il segnale di CL sia ldquopositiverdquotruerdquo)
Ci puograve essere un problema se il CL agisce in modo asincrono
NB questo circuito e quello del lucido precedente evidenziano il fatto che nella realtagrave nessuna rete egrave solo sincrona ma bensigrave egrave pressocheacute sempre necessario utilizzare reti di natura diversa anche percheacute vi egrave sempre una interazione fra reti con clock diversi eo con segnali provenienti dal mondo esterno NON sincronizzati con il clock
Monoimpulsore di tipo A ldquorivistordquo
54
bull Uno shift register a sinistra (a destra) egrave un registro composto da FFD che ad ogni clock trasferisce il valore del FF a destra (a sinistra) di ciascun FF nel FF stesso Nel FF piugrave a destra (sinistra) viene immesso uno ldquo0rdquo Questi tipi di registri shift si chiamano ldquologicirdquo
Shift register (registri a traslazione o scorrimento)
D0kQ0k
CK DnQn
CK
D0kQ0k
CK Dn-1Qn-1
CK
D0kQ0k
CK Dn-2Qn-2
CK
D0kQ0k
CK D0Q0
CK
ldquo0rdquo
Shift register a sinistra
bull Anche per i registri a traslazione esistono diverse versioni con ingresso parallelo e uscita seriale con ingresso seriale e uscita parallela con reset con load etc etc
bull Si noti che uno shift register egrave anche un contatore Si immagini per esempio che dopo un reset siano inseriti degli uni a partire da destra Lo shift register si riempie progressivamente di uni e quindi la posizione in cui egrave arrivato lrsquouno indica il valore del conteggio in base a un codice ldquouno su nrdquo (un codice decodificato)
bull Spesso uno stesso registro puograve traslare a destra o a sinistra in funzione di una segnale di controllo Ovviamente questo si ottiene premettendo a ogni ingresso Di un MUX a due vie che preleva in funzione del segnale di controllo Qigrave+1 o Qigrave-1 Con questa configurazione lo shift register diventa anche un contatore avantiindietro
Registro a scorrimento (shift-register) a 3 bit
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
IN
OUT2OUT1OUT0
CK
CK
IN
A_RESET
OUT1
OUT2
OUT0
Registro a scorrimento (shift-register) a 3 bit
57
Esempio 74164 (serial In parallel OUT)
bull In questo registro a traslazione ad ogni fronte positivo del clock i dati sono traslati a destra (Q0 -gt Q1 Q1-gtQ2 etc) Il registro egrave dotato in un Master Reset (vero negato) e il dato inserito nel FF Q0 egrave dato dallrsquoAND dei due ingressi Dsa e Dsb
bull Si noti che lrsquooperazione di shift corrisponde aritmeticamente alle operazioni di divisione e moltiplicazione per 2 Si supponga che in Q0 vi sia il bit meno significativo e in Q7 il meno significativo
0 1 1 0 1 0 1 0
010101102 = 10810
Shift left =gt x2
Shift right =gt 2
101011002 = 21610
001010112 = 5910
NB nel dispositivo i bit sono posti in ordine invertito e quindi un shift left del numero corrisponde a uno shift right sul dispositivo
58
bull Esistono anche i registri a traslazione ldquoaritmeticirdquo In questi shift register a destra anzicheacute fare entrare nel FF piugrave a sinistra lo ldquo0rdquo viene immesso sempre ripetutamente il suo valore logico
Shift aritmetico
Q7 Q6 Q5 Q4 Q3 Q2 Q1 Q0
D7 D6 D5 D4 D3 D2 D1 D0
I LDCK Esempio
11001010SRA
11100101 interpretato in complemento a 2
001101102=5410
C2 C2
000110112=2710
bull Lo shift aritmetico a destra effettua una divisione per 2 mantenendo il segno
59
Rotazione
Nei computer egrave sovente necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register
D0kQ0k
CK DnQn
CK
D0kQ0k
CK Dn-1Qn-1
CK
D0kQ0k
CK Dn-2Qn-2
CK
D0kQ0k
CK D0Q0
CK
Molto spesso nei computer egrave necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register con direzione programmabile In questo caso su D0 ad esempio puograve essere avviato o Q1 o Qn
60
Contatori con shift register ndash Contatore retroazionato EX-OR
Q2Q0
Shift right 3 bitDQ1
110 111 011 101 010 001
Diagramma degli stati disgiunto
Uno shift register con n FF retroazionato con un EX-OR (scelta degli ingressi variabile) egrave un contatore NON binario che conta per 2n-1 (purcheacute presettato a un valore diverso da tutti zeri)
000
100
61
Contatore di Johnson (riempimento e svuotamento)
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
000-gt100-gt110-gt111-gt011-gt001-gt000-gtStati isolati 101-gt010-gt101gt1
Poicheacute configurazioni adiacenti del codice Johnson differiscono di un solo bit il contatore puograve essere utilizzato per generare forme drsquoonda prive di alee
62
Contatore ad anello con un solo 1 (ovvero che genera direttamente il codice 1su n)
FFDD Q
QR
RESET
FFDD Q
QR
RESET
FFDD Q
QPR
RESET
OUT3OUT1OUT0
CK
FFDD Q
QR
RESET
OUT2
0001-gt1000-gt0100-gt0010-gt0010n FF per contare per n (mentre con i contatori binari il numero dei FF egrave il log2m ove m egrave il primo intero maggiore o uguale a n)
63
Barrel shifter (rotore)Un barrel shifter egrave uno shift register in grado di traslare di ldquonrdquo posizioni in un solo clock il contenuto dei suoi FF In figura egrave riportato il barrel shifter della Altera Gli ingressi A-H in presenza dellrsquoattivazione del segnale LDST al primo fronte positivo del clock sono depositati nei FF Quando LDST egrave 0 ad ogni fronte positivo del clock i bit di uscita sono ruotati di n posizioni in senso antiorario (ovvero lrsquouscita H diventa la G la G diventa la Fhellipe lrsquouscita A diventa la H) ove n egrave il valore binario indicato dai segnali S0 S1 e S2
Si noti che il circuito in questione egrave di fatto un registro con 8 FF allrsquoingresso di ciascuno dei quali egrave previsto un MUX a 8 vie che pilotato dai segnali S0 S1 e S2 che seleziona uno degli 8 uscite del dispositivo La struttura interna puograve essere osservata ldquoclikkandordquo due volte sul dispositivo nello schema di Altera
64
Barrel shifter
6565
66
Simulazione timing
67
bull Utilizzando il sistema Altera progettare un orologio con secondi minuti ora partendo da un oscillatore a quarzo con frequenza 500 KHz
bull E se si volesse proseguire e realizzare anche un datario (giorno mese e anno )
bull Come potrebbe essere integrato con una sveglia Si ricordi che lrsquoorologio deve essere anche essere ldquopresettatordquo
bull Quali circuiti utilizzare per la visualizzazione
68
EPROM
X0nZ0m
y0kY0k
Clock
D0kQ0k
FFD0k
CK D0kQ0k CK
Reti sincrone con EPROM
Al posto delle EPROM si utilizzano ora dei PLA ovvero dispositivi nei quali si nei quali le funzioni combinatorie sono ottimizzate ma il principio egrave assolutamente il medesimo
69
Progettare con Altera una rete logica sincrona che utilizzando registri 374 ALU 74181 un contatore e altri dispositivi ritenuti necessari permetta di eseguire in sequenza la somma di due dati di 4 bit senza segno ingresso esegua il complemento a 2 inverta la parte bassa con la parte alta del risultato e infine moltiplichi il tutto logicamente per 2
La soluzione egrave sempre decomponibile in tre sottosistemi il controllo con la sua decodifica (unitagrave di controllo) il percorso dei dati con le unitagrave che li trasformano (datapath) e i registri di deposito e di ingresso dei dati
Questa egrave la struttura base di qualunque unitagrave centrale di qualunque computer
La differenza consiste solo nel fatto che anzicheacute avere una sequenza fissa di operazioni ne viene generata una volta a volta che dipende appunto dalla istruzione che deve essere eseguita Come si vedragrave approfonditamente nel corso di Calcolatori T del II anno (prof Neri e Mattoccia)
Arrivederci al corso di Calcolatori T del II anno (sapendo perfettamente le reti logiche helliphellip)
11
Per transizioni che debbono o meno verificarsi in funzione del valore della rete di decodifica bisogna condizionare il segnale D come in figura Se la rete di decodifica genera il valore 1 lrsquouscita Q assume al clock il valore di X altrimenti lrsquouscita Q copia seacute stessa e rimane invariata
Clock gating e glitch sul clock
X
CK
Q
QFFD
D
CK
Q
Q
I[n-10] P
t
01SEL
01SEL
Rete di Decodifica
Il clock gating oltre a generare potenziali glitch introduceldquoclock-skewrdquo (disallineamento) Ad esempio consideriamo due RSS soggette al FF1 e al FF2
Clock gating e clock-skew
CK
CK_GtAND tAND
I clock delle due reti sono sfasati di un tempo pari al ritardo introdotto dallrsquoAND (in generale dalla eventuale RC) interposto Tale fenomeno (ldquoclock-skewrdquo) egrave potenzialmente dannoso in quanto il FF2 potrebbe fare campionare alla propria RC in presenza dello stesso fronte di clock i nuovi valori prodotti dalla RC alimentata dal FF1
NB Il ldquoclock-skewrdquo non egrave causato solo dal clock gating ma anche (ad esempio) da percorsi elettrici di lunghezza diversa
I1
CK
B
BCK_GP
I2
CK
A
A
tAND
FFD-1D
CK
Q
QFFD-2
D
CK
Q
Q
12
13
Sincronizzazione degli ingressibull Finora si egrave dato implicitamente per scontato che gli ingressi di una rete sincrona commutino
in modo sincrono con il clock
bull Ciograve egrave verificato se gli ingressi provengono da una rete sincrona di tipo Moore nella quale le uscite sono funzione solo dello stato che commuta solo al fronte positivo del clock
Rete combinatoria
X0n
Z0m
y0k
Y0k
Clock
D0kQ0k
FFD0k
CK D0kQ0k CK
Rete combinatoria
bull Nella realtagrave le cose stanno diversamente Si pensi al caso di pulsanti esterni che costituiscano lrsquo ingresso della rete Il cambiamento puograve avvenire in un istante qualsiasi
bull Nella rete di figura (Moore) le uscite sono comunque certamente sincronizzate con il clock e se gli ingressi X0n cambiano in un momento qualsiasi non sincronizzato il cambiamento viene percepito dai FF di retroazione solo al fronte positivo del clock e quindi il comportamento delle uscite della rete egrave il medesimo che si avrebbe se gli ingressi fossero sincronizzati
14
Sincronizzazione degli ingressi
bull La cosa cambia perograve se la rete egrave di tipo Mealy
Rete combinatoria
X0nZ0m
y0kY0k
Clock
D0kQ0k
FFD0k
CK D0kQ0k CK
bull In questo caso un cambiamento asincrono degli ingressi provoca in generale un cambiamento asincrono delle uscite
15
Esempio la cassaforte (dotata di una doppia tastiera - due ingressi) si apre solo se gli ingressi hanno assunto NEL TEMPO le configurazioni
00-01-01-10 Ogni violazione della sequenza riporta il sistema nello stato iniziale NB Essendo gli ingressi campionati la sequenza di ingresso 01-01 egrave possibile e significativa
hellip Cassaforte hellip sincrona hellip
NB si puograve supporre che gli ingressi cambino allo stesso istante delle variabili di stato ma la cosa non egrave necessaria Se la rete egrave di tipo Moore anche se gli ingressi cambiano a metagrave di un periodo di clock il comportamento dal punto di vista degli stati e quindi delle uscite egrave assolutamente lo stesso (ogni variazione egrave rilevata solo alla fine del periodo)
E11101
0111
11
F0
01
01
G0
0000
11 00
11
11
10
1001
10
00
10 0110
01
01
00
Per ogni stato tutte le combinazioni di ingresso
00
10
10
11
C0A0 B0 D0
Gli stati NON sono stabili per gli ingressi che li hanno provocati
00
B
00 01 11 10
F A GA
B C A GB
B D A GCB F A ED
B F A GE
B F AA- GF
B F A GG
0
0
0
0
1
0
0
X1X2
A0 B0 C0 E10011
01
10
0111
11
11
D0 10
F0
01
01
G0
0000
00
00
11
11
10
1001
1010 0110
01
11
00
Cassaforte sincrona
16
01
NB in questo esempio non vi sono condizioni di indifferenza Anzicheacute di stati compatibili si parla qui di stati equivalenti Ove poi due stati per gli stessi ingressi abbiano uscite identiche e portino agli stessi stati si parla di stati indistinguibili Naturalmente la descrizione a parole puograve evidenziare che alcune combinazioni di ingresso per alcuni stati non si presentano In questo caso si ritorna al concetto di compatibilitagrave
00
17
Cassaforte sincrona
Classi di equivalenza [AFG] =gt a[B] =gt b[C] =gt g[D] =gt d[E] =gt e
B
00 01 11 10
F A GA
B C A GB
B D A GCB F A ED
B F A GE
B F AA- GF
B F A GG
0
0
0
0
1
0
0
X1X2
B
C
D
E
F
G
A B C D E F
CF
FD CD
CFGE
CFGE
DFGE
--- CF DF GE
--- C F DF GE --
b
00 01 11 10
a a aa
b g a ab
b d a ag
b a a ed
b a a ae
X1X2
0
0
0
0
1 NB nel caso di tabelle completamente specificate le classi (massime) di equivalenza non hanno mai stati in comune Vanno usate tutte quindi Non esiste problema di chiusura
Ovviamente 5 stati 4 facenti parte della sequenza e uno esterno
18
b
00 01 11 10
a a aa
b g a ab
b d a ag
b a a ed
b a a ae
X1X2
0
0
0
0
1
Cassaforte sincrona
001
00 01 11 10
000 000 000000
001 011 000 000001
001 010 000 000011
001 000 000 100010
001 000 000 000100
X1X2
-- -- -- --101
-- -- -- --111
-- -- -- --110
0
0
0
0
1
--
--
--
Y1Y2 Y3
a =gt 000b =gt 001g =gt 011d =gt 010e =gt 100
D1= X1X2Y2Y3
D2=X1X2Y3
D3=X1X2+X1Y2Y3 Z =Y1
Sintetizzando con FFD la sintesi degli ingressi Di si ottiene sintetizzando le funzioni Yi (Yn+1=Dn)
Nessun problema di corse codifica libera (possibilmente ottima)
19
Sintesi
Direttorio cassaforte sincrona
20
00 01 01 10
Sintesi ndash simulazione funzionale
NB Gli ingressi cambiano in modo NON sincrono con il clock ma lrsquo uscita egrave sincrona essendo la rete di tipo Moore
21
Sintesi ndash simulazione timing
Si notino i ritardi delle uscite dei FF e dei gates da esse dipendenti rispetto al fronte positivo del clock (ad esempio d) se la frequenza del clock fosse eccessiva il sistema NON funzionerebbe piugrave correttamente
d
22
E con Mealy
B
00 01 11 10
F A GA
B C A GB
B D A GCB F A ED
B F A GE
B F AA- GF
B F A GG
0
0
0
0
1
0
0
X1X2
B0
00 01 11 10
F0 A0 G0A
B0 C0 A0 G0B
B0 D0 A0 G0CB0 F0 A0 E1D
B1 F1 A1 G1E
B0 F0 A0A-G0F
B0 F0 A0 G0G
X1X2
Potrei mettere una indifferenza sullrsquouscita Si si possono mettere indifferenze sulle uscite che cambiano Anticipazione o ritardo del cambiamento
Sintetizzare e simulare con Altera
23
bull Allrsquoesame orale egrave necessario portare un esercizio di reti sincrone e uno di reti asincrone NON ldquomutuatordquo da altri hellip
bull I due esercizi debbono essere portati su una chiavetta (o dispositivo equivalente) debbono contenere una spiegazione e anche la progettazionesimulazione con Altera
bull Il candidato deve dimostrare di sapere usare il sistema Altera e spiegare i progetti portati
bull Gli esercizi di reti sincrone hanno spesso il diagramma degli stati ma solo per verificahellip
Monoimpulsore A
D1 Q1
Q1CKFFD
D2 Q2
Q2CKFFD Z1
D
Clock
Clock
D
Z
Q1
Q2
Qui lrsquoingresso asincrono D egrave sincronizzato dai FF Uscita Z sincrona
Generare un impulso di uscita di un periodo di clock per ingresso 1 Un ulteriore impulso viene generato solo se lrsquoingresso torna a 1 dopo essere stato a 0 Lrsquouscita deve essere sincronizzata con il clock
24
25
D1 Q1
Q1CKFFD
D2 Q2
Q2CKFFD Z
D
Clock
Monoimpulsore A
1
0
1
1
0
A0 B1
C0
0
A
A
A
-
B
C
C
-
DQ2
Q1
B
0 1
C
-
Z0
0
1
-
A 00
--
00
00
10
--
11
11
DQ2
Q1
01
0 1
11
10
Z0
0
-
1
0000
10
11
01
B
C
-
A
Q1=D Q2= DQ1 Z=Q1Q2
00
00
01
01
10
10
11
11
DQ2
Q1
01
0 1
11
10
Z0
0
0
1
00
MAhellip
Q1=D Q2= Q1 Z=Q1Q2
Moore necessariamente
26
D1 Q1
Q1CKFFD
D2 Q2
Q2CKFFD Z2
D
Clock
Monoimpulsore B
Clock
D
Z2
Q1
Q2
Lrsquoingresso asincrono D agisce direttamente sullrsquouscita Z che quindi risulta asincrona
Qui la rete egrave di tipo Mealy e quindi con ingresso asincrono egrave possibile che vi sia uscita asincrona
27
D Q
QCKFFD Z
D
Clock
Monoimpulsore C
Clock
D
Z
Q
Anche qui lrsquoingresso asincrono D agisce direttamente sullrsquouscita Z che quindi risulta asincronaSi noti che se lrsquoingresso oscilla una volta che il FF ha campionato un 1 e fino a quando non campiona uno 0 lrsquouscita oscilla
Qui la rete egrave di tipo Mealy e quindi con ingresso asincrono egrave possibile che vi sia uscita asincrona
28
Considerazioni sui monoimpulsori A B e C
Il diagramma degli stati corrispondente al funzionamento reale dei due monoimpulsori B e C NON puograve essere tracciato percheacute di fatto le due reti (di tipo Mealy) NON sono sincrone Infatti il diagramma di circuiti sincroni prevede implicitamente un comportamento sincrono anche degli ingressi fatto non verificato nei casi B e C
La cosa non vale per il monoimpulsore A in quanto pur essendo lrsquoingresso asincrono lrsquouscita (rete di tipo Moore) dipende solo dagli stati In altre parole il comportamento della rete rende intrinsecamente sincroni ingressi fisicamente asincroni
Il diagramma degli stati che riflette il comportamento delle due reti B e C puograve essere tracciato solo partendo da una analisi asincrona ldquoaprendordquo quindi i FF D inseriti Ovviamente egrave possibile progettare le due reti senza lrsquouso dei FF D partendo da un diagramma degli stati asincrono ldquotradizionalerdquo
A scopo di esercizio si suggerisce la sintesi e la simulazione con Altera dei tre monoimpulsori come reti asincrone Si tratta di circuiti on due ingressi Ck e D
29
Monoimpulsori A-B-C
30
31
Contatori
A B C D Z
Circuiti senza ingresso (a parte il clock) nella versione piugrave semplice
D0 Q0
Q0CKFFD
MUX
1
0D1 Q1
Q1CKFFD
(Il clock egrave spesso sottinteso nei circuiti sincroni)
U0 U1
Esempio contatore binario x 4 con decodifica del 3
000 010 100 111
OUT
Q1 cambia stato quando Q0 egrave a 1 e passa a 0
CK
u1
u0
OUT (0) (1) (2) (0) (1) (2)(3) (3)
Contatore x 4 con decodifica del 3
33
Contatori binari in base non potenza di 2
A B C D E
000 001 010 011 100Contatore
binario per 5
D0 Q0
Q0CKFFD
MUX
1
0 1D1 Q1
Q1CKFFD
MUX
1
0D Q2
Q2CKFFD
Questo conta x8 ma per contare x5 arrivati a 4 bisogna ritornare a 0
34
D0 Q0
Q0CKFFD D1 Q1
Q1CKFFD
MUX
1
0 D2 Q2
Q2CKFFD
MUX
1
0
ABC
ldquo4rdquo
Contatore x 5
Decoder
La decodifica del 4 porta a zero lrsquouscita del decodificatore e quindi a 0 tutte le uscite degli AND rosa e al successivo fronte positivo del clock i tre FF campionano uno ldquo0rdquo
Per esercizio sintetizzare un contatore x 100 partendo dalla sintesi di un contatore decimale ovvero di un contatore x10 (da sintetizzare) Quanti FF per un contatore decimale I contatori decimali si trovano integrati in Altera
ldquo3rdquo
35
Contatori con ingressi di controllo
Ex Contatore integrato x 16 con Load e Enable
bull Il contatore conta per 16 (0-15) se il segnale EN egrave a 1 Allorchegrave il segnale LD va a 1 il dato presente sugli ingressi D egrave inserito nei 4 FF (lrsquoingresso puograve essere sincrono o asincrono) Nel caso precedente il decodificatore del ldquo3rdquo (uscita vera va portato) allrsquoingresso LD con tutti i Di a zero
bull In generale il contatore fornisce anche unrsquouscita ldquocarryrdquo che va a 1 quando il contatore raggiunge il valore FF Questa uscita puograve essere connessa allrsquoenable di un contatore a valle per ottenere un contatore per 256 cosigrave via (Progettarlo come esercizio)
EN
Q0 Q1 Q2 Q3CKLD
D0 D1 D2 D3
EN
Q0 Q1 Q2 Q3CK
CYLD
D0 D1 D2 D3
bull Esistono contatori UPDOWN nei quali un ingresso (UD) seleziona se il conteggio deve avvenire avanti o indietro Nel caso sia selezionata la modalitagrave ldquoindietrordquo il carry si attiva quando si raggiunge il valore ldquotutti zerirdquo
bull Esiste una molteplicitagrave di contatori ciascuno con le proprie specifiche peculiaritagrave con o senza RESET (che normalmente agisce in modo asincrono) UD con o senza LD etc etc
NB qualunque circuito sincrono (con sequenza non binaria) riconducibile al diagramma degli stati di un contatore egrave sempre un contatore
101 010 000 111 110 Contatore x 5 non binario
36
74163 contatore reale x 16 con Load Reset e Enable (T e P)I segnali di controllo sono sincroni ovvero agiscono sul fronte positivo del clock (rising edge)
74138 decoder 38 con uscite negate se G2A e G2B entrambi a zero e G1 a 1 Altrimenti tutte uscite alte
Direttorio Counter Glitch
Contatore binario x 8 e glitches
37
Glitch
Simulazione timingNB la presenza e la durata del glitch dipende dalle caratteristiche elettriche dei dispositivi
dalla loro tecnologia etc Nel caso dei dispositivi Altera dipende dal tipo di dispositivo sul quale egrave realizzato il circuito Analogamente la sensibilitagrave di eventuali ingressi di clock collegati allrsquouscita con il glitch dipende dalle caratteristiche del dispositivo Se ad esempio nel dispositivo Altera utilizzato si collega allrsquouscita Y6 il clock di un FFD non si ha commutazione del FF ma questo non egrave vero in assoluto
38
Cosa succede al contatore X5 progettato precedentemente se allrsquoaccensione non disponendo di un segnale di RESET i FF si portano in uno stato non facente parte del cicloNB La condizione allrsquoaccensione egrave del tutto casuale e dipende unicamente dalle condizioni elettriche
di realizzazione Ersquo impredicibileSupponiamo che i FF si portino al valore 110 (il numero 6 fuori dal ciclo) Analizziamo il comportamento
D0 Q0Q0CK
FFD D1 Q1Q1CK
FFD
MUX
1
0 D2 Q2Q2CK
FFD
MUX
1
0
ABC
ldquo4rdquo
000 001 010 011 100 110 111
In questo caso ci si riporta nella situazione di conteggio regolare (verificare con la tabella degli stati ) ma il comportamento in generale dipende dalla realizzazione e in altre realizzazione i due stati potrebbero essere separati dal ciclo principale che quindi non verrebbe mai raggiunto Ecco la funzione del RESET
39
Solo come esempio (da non utilizzare ) a scopo didattico vediamo la tabella delle transizioni di un contatore per 6 UpDown con comando di Reset I segnali di ingresso cambiano in modo asincrono ma hanno effetto in modo sincrono
Per compensare allrsquoaccensione
Sintetizzare e simulareCome dovrebbe essere modificato lo schema in Altera per permettere di
ldquopresettarerdquo in modo asincrono il contatore a un particolare valore di ingresso
00 01 11 10UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
111
110
000 101
000
101
y3 y2 y100 01 11 10
UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
000 000111
000 000 000 000110
000 101
000
000 000
101
y3 y2 y1
40
D0Q0
CKFFD
Clocky2
DEC
y3
y2
y1
ldquo1rdquo
ldquo2rdquo
ldquo3rdquo
ldquo4rdquo
1
0
UPDown
Sintesi di y2 in modo ldquodirettordquo
1
0
00 01 11 10UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
000 000111
000 000 000 000110
000 101
000
000 000
101
y3 y2 y1
41
Cassaforte hellipDisponendo di un contatore per 8 (ma anche per 16 etc) con reset sincrono e sempre abilitato al conteggio come potrei realizzare il circuito di apertura della cassaforte (sequenza X1X2 00-01-01-10) con modello Moore
Cx8RES
Q0 Q1 Q2 CK
RES= (ldquo0rdquoX1X2 + ldquo1rdquo X1X2 + ldquo2rdquo X1X2 + ldquo3rdquo X1 X2)Z = ldquo4rdquo (ldquo0rdquordquo1rdquordquo2rdquordquo3rdquordquo4rdquo sono le decodifiche binarie delle tre uscite del contatore)
Il contatore si resetta ogni volta che non si presenta lrsquoingresso giusto relativo al particolare stato Ilcontatore quindi si resetta e rimane resettato se non nelle condizioni espresse dalla funzione RESIl contatore arrivato a 4 (Z=1) si resetta comunque al successivo fronte del clock
Le reti sincrone si progettano sempre come combinazione di blocchi disponibili e logica ldquorandomrdquo
ABC
ldquo0rdquoldquo1rdquoldquo2rdquoldquo3rdquoldquo4rdquo
RLAND-OR
X1X2
RESZ
Cx8RES
Q0 Q1 Q2 CK
42
Contatori
EN
Q0 Q1 Q2 Q3CKCY
RESET
bull Attenzione Consideriamo il contatore di figura (questa volta con RESET asincrono) e supponiamo di utilizzarlo per contare per 5 (NB per il Reset si usa il ldquo5rdquo in questo casohellip glitch)
ABCD
ldquo5rdquo
ldquo1rdquo Percheacute questo schema egrave sbagliato
bull Percheacute presenta una corsa critica Nel momento in cui anche uno solo dei FF si resetta (e non tutti nello stesso istante) viene a mancare la configurazione ldquo4rdquo sul decoder e quindi alcuni FF potrebbero non fare in tempo a resettarsi E allora
EN
Q0 Q1 Q2 Q3CKCY
RESET
ABCD
ldquo5rdquo
ldquo1rdquo
RS
Y ldquo0rdquo
bull Cosigrave facendo il ldquo4rdquo attiva il SET e il FF NON si resetta fino a quando non egrave stato raggiunto la ldquo0rdquo NB lo schema ldquosbagliatordquo si puograve usare solo se si egrave certi della rapiditagrave di reset dei FF del contatore
bull Verificare con Altera
Sintesi cassaforte con moduli
Altera Cassaforte sincrona con moduli
Rete di controllo
Contatore con Reset asincrono e Load sincrono
43
NB In questo progetto la sintesi egrave stata condotta in modo ldquodirettordquo ovvero senza passare per la sintesi formale e utilizzando componenti disponibili e helliphellip materia grigia La sintesi dei circuiti sincroni si fa sempre e unicamente cosigrave
44
Simulazione funzionale (no timing)
NB I segnali di ingresso sono campionati SOLO sul fronte positivo del clock anche se si presentano asincroni Il segnale di uscita si attiva al clock successivo al riconoscimento della sequenza La posizione di ldquoriposordquo del contatore egrave il valore 4 I segnali Yi sono le decodifiche dei segnali di di ingresso X1 e X2
00 01 01 10
45
Simulazione timing
46
NB Si egrave scelto di utilizzare SOLO gli ingressi SINCRONI del contatore per semplicitagrave Il contatore rimane al valore 100 fino a quando non si presenta allrsquoingresso il valore 00 Se la sequenza egrave esatta il contatore continua a contare in avanti fino alla generazione dellrsquouscita (valore 11 del contatore) altrimenti si riporta al valore 100 ovvero Qc=1) Il segnale GN (Gate Not) egrave quello che abilita il conteggio Il sistema riamane stabile a 000 per una sequenza lunga a piacere di X1=0 e X2=0 e si sposta quando dopo 00 si ha 01 Come si evince dalla simulazione se la sequenza non egrave corretta o egrave interrotta il contatore si riporta sempre a 100
00 01 11 10
001 000 000
X1
000000 010 100 100001
000 100 100 011010
100 100 100 100011
000 100 100 100100
000 100 100 100101
000 100 100 100110
000 100 100 100111
0
0
0
1
0
0
0
0
X2
000
NB la tabella delle transizioni derivata della rete realizzata NON ha ovviamente condizioni di indifferenza
47
Progettare un contatore packed BCD updown a 8 bit (due digit)
48
Generazione di forme drsquoondabull Ersquo possibile generare forme drsquoonda periodiche mediante circuiti sincroni di periodo
sottomultiplo intero del clock
Esempio 1Divisore di frequenza per 2
D0k Q0k
CK D Q
CK Clock
Q
Esempio 2 generare una forma drsquoonda periodica con periodo 5T (ove T sia il periodo del clock) in cui in un semiperiodo 3T lrsquouscita sia alta e nellrsquoaltro semiperiodo 2T lrsquouscita sia bassa
Q0 Q1 Q2 CK
Cx5
C
B
A
01234
DecoderDemux
Clock
ZZ T
3T2T
3T
NB una rete logica egrave in grado di effettuare delle divisioni di frequenza e mai delle moltiplicazioni di frequenza (che si possono ottenere solo con circuiti analogici non lineari)
49
Di che circuito si tratta
D0k Q0k
CK D0 Q0
CKQ0
D0k Q0k
CK D1 Q1
CK
D0k Q0k
CK D2 Q2
CKClock
Clock
Q0
Q1
Q2
Ersquo un contatore binario ma non sincrono Infatti i vari FF NON utilizzano lo stesso clock e questo porta a un piccolo disallineamento sulle uscite Non egrave sintetizzabile come una rete sincrona e una sintesi formale sarebbe possibile solo trattando il circuito come asincrono ovvero ldquoaprendordquo i FF Sarebbe possibile trasformarlo in un contatore x6 mantenendo la stessa impostazione
Sintetizzare e simulare con Altera
NB il segnale di clock non egrave in comune
50
7493
51
Altera Contatore asincrono
Contatore asincrono
52
Simulazione timing
53
Come puograve essere utilizzato un FFD per catturare un impulso piugrave breve di un periodo
D2 Q2
Q2CKFFD Z
Clock
D1 Q1
Q1CKFFD
D0 Q00
Q0CKFFD
ldquo1rdquo CL
Lrsquoimpulso breve viene catturato dal FF 0 (purcheacute di larghezza sufficiente per la tecnologia del FF) - che quindi agisce come integratore ndash la cui uscita alimenta il monoimpulsore di tipo A Lrsquoattivazione del FF 1 resetta il FF 0 (supponendo che il segnale di CL sia ldquopositiverdquotruerdquo)
Ci puograve essere un problema se il CL agisce in modo asincrono
NB questo circuito e quello del lucido precedente evidenziano il fatto che nella realtagrave nessuna rete egrave solo sincrona ma bensigrave egrave pressocheacute sempre necessario utilizzare reti di natura diversa anche percheacute vi egrave sempre una interazione fra reti con clock diversi eo con segnali provenienti dal mondo esterno NON sincronizzati con il clock
Monoimpulsore di tipo A ldquorivistordquo
54
bull Uno shift register a sinistra (a destra) egrave un registro composto da FFD che ad ogni clock trasferisce il valore del FF a destra (a sinistra) di ciascun FF nel FF stesso Nel FF piugrave a destra (sinistra) viene immesso uno ldquo0rdquo Questi tipi di registri shift si chiamano ldquologicirdquo
Shift register (registri a traslazione o scorrimento)
D0kQ0k
CK DnQn
CK
D0kQ0k
CK Dn-1Qn-1
CK
D0kQ0k
CK Dn-2Qn-2
CK
D0kQ0k
CK D0Q0
CK
ldquo0rdquo
Shift register a sinistra
bull Anche per i registri a traslazione esistono diverse versioni con ingresso parallelo e uscita seriale con ingresso seriale e uscita parallela con reset con load etc etc
bull Si noti che uno shift register egrave anche un contatore Si immagini per esempio che dopo un reset siano inseriti degli uni a partire da destra Lo shift register si riempie progressivamente di uni e quindi la posizione in cui egrave arrivato lrsquouno indica il valore del conteggio in base a un codice ldquouno su nrdquo (un codice decodificato)
bull Spesso uno stesso registro puograve traslare a destra o a sinistra in funzione di una segnale di controllo Ovviamente questo si ottiene premettendo a ogni ingresso Di un MUX a due vie che preleva in funzione del segnale di controllo Qigrave+1 o Qigrave-1 Con questa configurazione lo shift register diventa anche un contatore avantiindietro
Registro a scorrimento (shift-register) a 3 bit
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
IN
OUT2OUT1OUT0
CK
CK
IN
A_RESET
OUT1
OUT2
OUT0
Registro a scorrimento (shift-register) a 3 bit
57
Esempio 74164 (serial In parallel OUT)
bull In questo registro a traslazione ad ogni fronte positivo del clock i dati sono traslati a destra (Q0 -gt Q1 Q1-gtQ2 etc) Il registro egrave dotato in un Master Reset (vero negato) e il dato inserito nel FF Q0 egrave dato dallrsquoAND dei due ingressi Dsa e Dsb
bull Si noti che lrsquooperazione di shift corrisponde aritmeticamente alle operazioni di divisione e moltiplicazione per 2 Si supponga che in Q0 vi sia il bit meno significativo e in Q7 il meno significativo
0 1 1 0 1 0 1 0
010101102 = 10810
Shift left =gt x2
Shift right =gt 2
101011002 = 21610
001010112 = 5910
NB nel dispositivo i bit sono posti in ordine invertito e quindi un shift left del numero corrisponde a uno shift right sul dispositivo
58
bull Esistono anche i registri a traslazione ldquoaritmeticirdquo In questi shift register a destra anzicheacute fare entrare nel FF piugrave a sinistra lo ldquo0rdquo viene immesso sempre ripetutamente il suo valore logico
Shift aritmetico
Q7 Q6 Q5 Q4 Q3 Q2 Q1 Q0
D7 D6 D5 D4 D3 D2 D1 D0
I LDCK Esempio
11001010SRA
11100101 interpretato in complemento a 2
001101102=5410
C2 C2
000110112=2710
bull Lo shift aritmetico a destra effettua una divisione per 2 mantenendo il segno
59
Rotazione
Nei computer egrave sovente necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register
D0kQ0k
CK DnQn
CK
D0kQ0k
CK Dn-1Qn-1
CK
D0kQ0k
CK Dn-2Qn-2
CK
D0kQ0k
CK D0Q0
CK
Molto spesso nei computer egrave necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register con direzione programmabile In questo caso su D0 ad esempio puograve essere avviato o Q1 o Qn
60
Contatori con shift register ndash Contatore retroazionato EX-OR
Q2Q0
Shift right 3 bitDQ1
110 111 011 101 010 001
Diagramma degli stati disgiunto
Uno shift register con n FF retroazionato con un EX-OR (scelta degli ingressi variabile) egrave un contatore NON binario che conta per 2n-1 (purcheacute presettato a un valore diverso da tutti zeri)
000
100
61
Contatore di Johnson (riempimento e svuotamento)
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
000-gt100-gt110-gt111-gt011-gt001-gt000-gtStati isolati 101-gt010-gt101gt1
Poicheacute configurazioni adiacenti del codice Johnson differiscono di un solo bit il contatore puograve essere utilizzato per generare forme drsquoonda prive di alee
62
Contatore ad anello con un solo 1 (ovvero che genera direttamente il codice 1su n)
FFDD Q
QR
RESET
FFDD Q
QR
RESET
FFDD Q
QPR
RESET
OUT3OUT1OUT0
CK
FFDD Q
QR
RESET
OUT2
0001-gt1000-gt0100-gt0010-gt0010n FF per contare per n (mentre con i contatori binari il numero dei FF egrave il log2m ove m egrave il primo intero maggiore o uguale a n)
63
Barrel shifter (rotore)Un barrel shifter egrave uno shift register in grado di traslare di ldquonrdquo posizioni in un solo clock il contenuto dei suoi FF In figura egrave riportato il barrel shifter della Altera Gli ingressi A-H in presenza dellrsquoattivazione del segnale LDST al primo fronte positivo del clock sono depositati nei FF Quando LDST egrave 0 ad ogni fronte positivo del clock i bit di uscita sono ruotati di n posizioni in senso antiorario (ovvero lrsquouscita H diventa la G la G diventa la Fhellipe lrsquouscita A diventa la H) ove n egrave il valore binario indicato dai segnali S0 S1 e S2
Si noti che il circuito in questione egrave di fatto un registro con 8 FF allrsquoingresso di ciascuno dei quali egrave previsto un MUX a 8 vie che pilotato dai segnali S0 S1 e S2 che seleziona uno degli 8 uscite del dispositivo La struttura interna puograve essere osservata ldquoclikkandordquo due volte sul dispositivo nello schema di Altera
64
Barrel shifter
6565
66
Simulazione timing
67
bull Utilizzando il sistema Altera progettare un orologio con secondi minuti ora partendo da un oscillatore a quarzo con frequenza 500 KHz
bull E se si volesse proseguire e realizzare anche un datario (giorno mese e anno )
bull Come potrebbe essere integrato con una sveglia Si ricordi che lrsquoorologio deve essere anche essere ldquopresettatordquo
bull Quali circuiti utilizzare per la visualizzazione
68
EPROM
X0nZ0m
y0kY0k
Clock
D0kQ0k
FFD0k
CK D0kQ0k CK
Reti sincrone con EPROM
Al posto delle EPROM si utilizzano ora dei PLA ovvero dispositivi nei quali si nei quali le funzioni combinatorie sono ottimizzate ma il principio egrave assolutamente il medesimo
69
Progettare con Altera una rete logica sincrona che utilizzando registri 374 ALU 74181 un contatore e altri dispositivi ritenuti necessari permetta di eseguire in sequenza la somma di due dati di 4 bit senza segno ingresso esegua il complemento a 2 inverta la parte bassa con la parte alta del risultato e infine moltiplichi il tutto logicamente per 2
La soluzione egrave sempre decomponibile in tre sottosistemi il controllo con la sua decodifica (unitagrave di controllo) il percorso dei dati con le unitagrave che li trasformano (datapath) e i registri di deposito e di ingresso dei dati
Questa egrave la struttura base di qualunque unitagrave centrale di qualunque computer
La differenza consiste solo nel fatto che anzicheacute avere una sequenza fissa di operazioni ne viene generata una volta a volta che dipende appunto dalla istruzione che deve essere eseguita Come si vedragrave approfonditamente nel corso di Calcolatori T del II anno (prof Neri e Mattoccia)
Arrivederci al corso di Calcolatori T del II anno (sapendo perfettamente le reti logiche helliphellip)
Il clock gating oltre a generare potenziali glitch introduceldquoclock-skewrdquo (disallineamento) Ad esempio consideriamo due RSS soggette al FF1 e al FF2
Clock gating e clock-skew
CK
CK_GtAND tAND
I clock delle due reti sono sfasati di un tempo pari al ritardo introdotto dallrsquoAND (in generale dalla eventuale RC) interposto Tale fenomeno (ldquoclock-skewrdquo) egrave potenzialmente dannoso in quanto il FF2 potrebbe fare campionare alla propria RC in presenza dello stesso fronte di clock i nuovi valori prodotti dalla RC alimentata dal FF1
NB Il ldquoclock-skewrdquo non egrave causato solo dal clock gating ma anche (ad esempio) da percorsi elettrici di lunghezza diversa
I1
CK
B
BCK_GP
I2
CK
A
A
tAND
FFD-1D
CK
Q
QFFD-2
D
CK
Q
Q
12
13
Sincronizzazione degli ingressibull Finora si egrave dato implicitamente per scontato che gli ingressi di una rete sincrona commutino
in modo sincrono con il clock
bull Ciograve egrave verificato se gli ingressi provengono da una rete sincrona di tipo Moore nella quale le uscite sono funzione solo dello stato che commuta solo al fronte positivo del clock
Rete combinatoria
X0n
Z0m
y0k
Y0k
Clock
D0kQ0k
FFD0k
CK D0kQ0k CK
Rete combinatoria
bull Nella realtagrave le cose stanno diversamente Si pensi al caso di pulsanti esterni che costituiscano lrsquo ingresso della rete Il cambiamento puograve avvenire in un istante qualsiasi
bull Nella rete di figura (Moore) le uscite sono comunque certamente sincronizzate con il clock e se gli ingressi X0n cambiano in un momento qualsiasi non sincronizzato il cambiamento viene percepito dai FF di retroazione solo al fronte positivo del clock e quindi il comportamento delle uscite della rete egrave il medesimo che si avrebbe se gli ingressi fossero sincronizzati
14
Sincronizzazione degli ingressi
bull La cosa cambia perograve se la rete egrave di tipo Mealy
Rete combinatoria
X0nZ0m
y0kY0k
Clock
D0kQ0k
FFD0k
CK D0kQ0k CK
bull In questo caso un cambiamento asincrono degli ingressi provoca in generale un cambiamento asincrono delle uscite
15
Esempio la cassaforte (dotata di una doppia tastiera - due ingressi) si apre solo se gli ingressi hanno assunto NEL TEMPO le configurazioni
00-01-01-10 Ogni violazione della sequenza riporta il sistema nello stato iniziale NB Essendo gli ingressi campionati la sequenza di ingresso 01-01 egrave possibile e significativa
hellip Cassaforte hellip sincrona hellip
NB si puograve supporre che gli ingressi cambino allo stesso istante delle variabili di stato ma la cosa non egrave necessaria Se la rete egrave di tipo Moore anche se gli ingressi cambiano a metagrave di un periodo di clock il comportamento dal punto di vista degli stati e quindi delle uscite egrave assolutamente lo stesso (ogni variazione egrave rilevata solo alla fine del periodo)
E11101
0111
11
F0
01
01
G0
0000
11 00
11
11
10
1001
10
00
10 0110
01
01
00
Per ogni stato tutte le combinazioni di ingresso
00
10
10
11
C0A0 B0 D0
Gli stati NON sono stabili per gli ingressi che li hanno provocati
00
B
00 01 11 10
F A GA
B C A GB
B D A GCB F A ED
B F A GE
B F AA- GF
B F A GG
0
0
0
0
1
0
0
X1X2
A0 B0 C0 E10011
01
10
0111
11
11
D0 10
F0
01
01
G0
0000
00
00
11
11
10
1001
1010 0110
01
11
00
Cassaforte sincrona
16
01
NB in questo esempio non vi sono condizioni di indifferenza Anzicheacute di stati compatibili si parla qui di stati equivalenti Ove poi due stati per gli stessi ingressi abbiano uscite identiche e portino agli stessi stati si parla di stati indistinguibili Naturalmente la descrizione a parole puograve evidenziare che alcune combinazioni di ingresso per alcuni stati non si presentano In questo caso si ritorna al concetto di compatibilitagrave
00
17
Cassaforte sincrona
Classi di equivalenza [AFG] =gt a[B] =gt b[C] =gt g[D] =gt d[E] =gt e
B
00 01 11 10
F A GA
B C A GB
B D A GCB F A ED
B F A GE
B F AA- GF
B F A GG
0
0
0
0
1
0
0
X1X2
B
C
D
E
F
G
A B C D E F
CF
FD CD
CFGE
CFGE
DFGE
--- CF DF GE
--- C F DF GE --
b
00 01 11 10
a a aa
b g a ab
b d a ag
b a a ed
b a a ae
X1X2
0
0
0
0
1 NB nel caso di tabelle completamente specificate le classi (massime) di equivalenza non hanno mai stati in comune Vanno usate tutte quindi Non esiste problema di chiusura
Ovviamente 5 stati 4 facenti parte della sequenza e uno esterno
18
b
00 01 11 10
a a aa
b g a ab
b d a ag
b a a ed
b a a ae
X1X2
0
0
0
0
1
Cassaforte sincrona
001
00 01 11 10
000 000 000000
001 011 000 000001
001 010 000 000011
001 000 000 100010
001 000 000 000100
X1X2
-- -- -- --101
-- -- -- --111
-- -- -- --110
0
0
0
0
1
--
--
--
Y1Y2 Y3
a =gt 000b =gt 001g =gt 011d =gt 010e =gt 100
D1= X1X2Y2Y3
D2=X1X2Y3
D3=X1X2+X1Y2Y3 Z =Y1
Sintetizzando con FFD la sintesi degli ingressi Di si ottiene sintetizzando le funzioni Yi (Yn+1=Dn)
Nessun problema di corse codifica libera (possibilmente ottima)
19
Sintesi
Direttorio cassaforte sincrona
20
00 01 01 10
Sintesi ndash simulazione funzionale
NB Gli ingressi cambiano in modo NON sincrono con il clock ma lrsquo uscita egrave sincrona essendo la rete di tipo Moore
21
Sintesi ndash simulazione timing
Si notino i ritardi delle uscite dei FF e dei gates da esse dipendenti rispetto al fronte positivo del clock (ad esempio d) se la frequenza del clock fosse eccessiva il sistema NON funzionerebbe piugrave correttamente
d
22
E con Mealy
B
00 01 11 10
F A GA
B C A GB
B D A GCB F A ED
B F A GE
B F AA- GF
B F A GG
0
0
0
0
1
0
0
X1X2
B0
00 01 11 10
F0 A0 G0A
B0 C0 A0 G0B
B0 D0 A0 G0CB0 F0 A0 E1D
B1 F1 A1 G1E
B0 F0 A0A-G0F
B0 F0 A0 G0G
X1X2
Potrei mettere una indifferenza sullrsquouscita Si si possono mettere indifferenze sulle uscite che cambiano Anticipazione o ritardo del cambiamento
Sintetizzare e simulare con Altera
23
bull Allrsquoesame orale egrave necessario portare un esercizio di reti sincrone e uno di reti asincrone NON ldquomutuatordquo da altri hellip
bull I due esercizi debbono essere portati su una chiavetta (o dispositivo equivalente) debbono contenere una spiegazione e anche la progettazionesimulazione con Altera
bull Il candidato deve dimostrare di sapere usare il sistema Altera e spiegare i progetti portati
bull Gli esercizi di reti sincrone hanno spesso il diagramma degli stati ma solo per verificahellip
Monoimpulsore A
D1 Q1
Q1CKFFD
D2 Q2
Q2CKFFD Z1
D
Clock
Clock
D
Z
Q1
Q2
Qui lrsquoingresso asincrono D egrave sincronizzato dai FF Uscita Z sincrona
Generare un impulso di uscita di un periodo di clock per ingresso 1 Un ulteriore impulso viene generato solo se lrsquoingresso torna a 1 dopo essere stato a 0 Lrsquouscita deve essere sincronizzata con il clock
24
25
D1 Q1
Q1CKFFD
D2 Q2
Q2CKFFD Z
D
Clock
Monoimpulsore A
1
0
1
1
0
A0 B1
C0
0
A
A
A
-
B
C
C
-
DQ2
Q1
B
0 1
C
-
Z0
0
1
-
A 00
--
00
00
10
--
11
11
DQ2
Q1
01
0 1
11
10
Z0
0
-
1
0000
10
11
01
B
C
-
A
Q1=D Q2= DQ1 Z=Q1Q2
00
00
01
01
10
10
11
11
DQ2
Q1
01
0 1
11
10
Z0
0
0
1
00
MAhellip
Q1=D Q2= Q1 Z=Q1Q2
Moore necessariamente
26
D1 Q1
Q1CKFFD
D2 Q2
Q2CKFFD Z2
D
Clock
Monoimpulsore B
Clock
D
Z2
Q1
Q2
Lrsquoingresso asincrono D agisce direttamente sullrsquouscita Z che quindi risulta asincrona
Qui la rete egrave di tipo Mealy e quindi con ingresso asincrono egrave possibile che vi sia uscita asincrona
27
D Q
QCKFFD Z
D
Clock
Monoimpulsore C
Clock
D
Z
Q
Anche qui lrsquoingresso asincrono D agisce direttamente sullrsquouscita Z che quindi risulta asincronaSi noti che se lrsquoingresso oscilla una volta che il FF ha campionato un 1 e fino a quando non campiona uno 0 lrsquouscita oscilla
Qui la rete egrave di tipo Mealy e quindi con ingresso asincrono egrave possibile che vi sia uscita asincrona
28
Considerazioni sui monoimpulsori A B e C
Il diagramma degli stati corrispondente al funzionamento reale dei due monoimpulsori B e C NON puograve essere tracciato percheacute di fatto le due reti (di tipo Mealy) NON sono sincrone Infatti il diagramma di circuiti sincroni prevede implicitamente un comportamento sincrono anche degli ingressi fatto non verificato nei casi B e C
La cosa non vale per il monoimpulsore A in quanto pur essendo lrsquoingresso asincrono lrsquouscita (rete di tipo Moore) dipende solo dagli stati In altre parole il comportamento della rete rende intrinsecamente sincroni ingressi fisicamente asincroni
Il diagramma degli stati che riflette il comportamento delle due reti B e C puograve essere tracciato solo partendo da una analisi asincrona ldquoaprendordquo quindi i FF D inseriti Ovviamente egrave possibile progettare le due reti senza lrsquouso dei FF D partendo da un diagramma degli stati asincrono ldquotradizionalerdquo
A scopo di esercizio si suggerisce la sintesi e la simulazione con Altera dei tre monoimpulsori come reti asincrone Si tratta di circuiti on due ingressi Ck e D
29
Monoimpulsori A-B-C
30
31
Contatori
A B C D Z
Circuiti senza ingresso (a parte il clock) nella versione piugrave semplice
D0 Q0
Q0CKFFD
MUX
1
0D1 Q1
Q1CKFFD
(Il clock egrave spesso sottinteso nei circuiti sincroni)
U0 U1
Esempio contatore binario x 4 con decodifica del 3
000 010 100 111
OUT
Q1 cambia stato quando Q0 egrave a 1 e passa a 0
CK
u1
u0
OUT (0) (1) (2) (0) (1) (2)(3) (3)
Contatore x 4 con decodifica del 3
33
Contatori binari in base non potenza di 2
A B C D E
000 001 010 011 100Contatore
binario per 5
D0 Q0
Q0CKFFD
MUX
1
0 1D1 Q1
Q1CKFFD
MUX
1
0D Q2
Q2CKFFD
Questo conta x8 ma per contare x5 arrivati a 4 bisogna ritornare a 0
34
D0 Q0
Q0CKFFD D1 Q1
Q1CKFFD
MUX
1
0 D2 Q2
Q2CKFFD
MUX
1
0
ABC
ldquo4rdquo
Contatore x 5
Decoder
La decodifica del 4 porta a zero lrsquouscita del decodificatore e quindi a 0 tutte le uscite degli AND rosa e al successivo fronte positivo del clock i tre FF campionano uno ldquo0rdquo
Per esercizio sintetizzare un contatore x 100 partendo dalla sintesi di un contatore decimale ovvero di un contatore x10 (da sintetizzare) Quanti FF per un contatore decimale I contatori decimali si trovano integrati in Altera
ldquo3rdquo
35
Contatori con ingressi di controllo
Ex Contatore integrato x 16 con Load e Enable
bull Il contatore conta per 16 (0-15) se il segnale EN egrave a 1 Allorchegrave il segnale LD va a 1 il dato presente sugli ingressi D egrave inserito nei 4 FF (lrsquoingresso puograve essere sincrono o asincrono) Nel caso precedente il decodificatore del ldquo3rdquo (uscita vera va portato) allrsquoingresso LD con tutti i Di a zero
bull In generale il contatore fornisce anche unrsquouscita ldquocarryrdquo che va a 1 quando il contatore raggiunge il valore FF Questa uscita puograve essere connessa allrsquoenable di un contatore a valle per ottenere un contatore per 256 cosigrave via (Progettarlo come esercizio)
EN
Q0 Q1 Q2 Q3CKLD
D0 D1 D2 D3
EN
Q0 Q1 Q2 Q3CK
CYLD
D0 D1 D2 D3
bull Esistono contatori UPDOWN nei quali un ingresso (UD) seleziona se il conteggio deve avvenire avanti o indietro Nel caso sia selezionata la modalitagrave ldquoindietrordquo il carry si attiva quando si raggiunge il valore ldquotutti zerirdquo
bull Esiste una molteplicitagrave di contatori ciascuno con le proprie specifiche peculiaritagrave con o senza RESET (che normalmente agisce in modo asincrono) UD con o senza LD etc etc
NB qualunque circuito sincrono (con sequenza non binaria) riconducibile al diagramma degli stati di un contatore egrave sempre un contatore
101 010 000 111 110 Contatore x 5 non binario
36
74163 contatore reale x 16 con Load Reset e Enable (T e P)I segnali di controllo sono sincroni ovvero agiscono sul fronte positivo del clock (rising edge)
74138 decoder 38 con uscite negate se G2A e G2B entrambi a zero e G1 a 1 Altrimenti tutte uscite alte
Direttorio Counter Glitch
Contatore binario x 8 e glitches
37
Glitch
Simulazione timingNB la presenza e la durata del glitch dipende dalle caratteristiche elettriche dei dispositivi
dalla loro tecnologia etc Nel caso dei dispositivi Altera dipende dal tipo di dispositivo sul quale egrave realizzato il circuito Analogamente la sensibilitagrave di eventuali ingressi di clock collegati allrsquouscita con il glitch dipende dalle caratteristiche del dispositivo Se ad esempio nel dispositivo Altera utilizzato si collega allrsquouscita Y6 il clock di un FFD non si ha commutazione del FF ma questo non egrave vero in assoluto
38
Cosa succede al contatore X5 progettato precedentemente se allrsquoaccensione non disponendo di un segnale di RESET i FF si portano in uno stato non facente parte del cicloNB La condizione allrsquoaccensione egrave del tutto casuale e dipende unicamente dalle condizioni elettriche
di realizzazione Ersquo impredicibileSupponiamo che i FF si portino al valore 110 (il numero 6 fuori dal ciclo) Analizziamo il comportamento
D0 Q0Q0CK
FFD D1 Q1Q1CK
FFD
MUX
1
0 D2 Q2Q2CK
FFD
MUX
1
0
ABC
ldquo4rdquo
000 001 010 011 100 110 111
In questo caso ci si riporta nella situazione di conteggio regolare (verificare con la tabella degli stati ) ma il comportamento in generale dipende dalla realizzazione e in altre realizzazione i due stati potrebbero essere separati dal ciclo principale che quindi non verrebbe mai raggiunto Ecco la funzione del RESET
39
Solo come esempio (da non utilizzare ) a scopo didattico vediamo la tabella delle transizioni di un contatore per 6 UpDown con comando di Reset I segnali di ingresso cambiano in modo asincrono ma hanno effetto in modo sincrono
Per compensare allrsquoaccensione
Sintetizzare e simulareCome dovrebbe essere modificato lo schema in Altera per permettere di
ldquopresettarerdquo in modo asincrono il contatore a un particolare valore di ingresso
00 01 11 10UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
111
110
000 101
000
101
y3 y2 y100 01 11 10
UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
000 000111
000 000 000 000110
000 101
000
000 000
101
y3 y2 y1
40
D0Q0
CKFFD
Clocky2
DEC
y3
y2
y1
ldquo1rdquo
ldquo2rdquo
ldquo3rdquo
ldquo4rdquo
1
0
UPDown
Sintesi di y2 in modo ldquodirettordquo
1
0
00 01 11 10UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
000 000111
000 000 000 000110
000 101
000
000 000
101
y3 y2 y1
41
Cassaforte hellipDisponendo di un contatore per 8 (ma anche per 16 etc) con reset sincrono e sempre abilitato al conteggio come potrei realizzare il circuito di apertura della cassaforte (sequenza X1X2 00-01-01-10) con modello Moore
Cx8RES
Q0 Q1 Q2 CK
RES= (ldquo0rdquoX1X2 + ldquo1rdquo X1X2 + ldquo2rdquo X1X2 + ldquo3rdquo X1 X2)Z = ldquo4rdquo (ldquo0rdquordquo1rdquordquo2rdquordquo3rdquordquo4rdquo sono le decodifiche binarie delle tre uscite del contatore)
Il contatore si resetta ogni volta che non si presenta lrsquoingresso giusto relativo al particolare stato Ilcontatore quindi si resetta e rimane resettato se non nelle condizioni espresse dalla funzione RESIl contatore arrivato a 4 (Z=1) si resetta comunque al successivo fronte del clock
Le reti sincrone si progettano sempre come combinazione di blocchi disponibili e logica ldquorandomrdquo
ABC
ldquo0rdquoldquo1rdquoldquo2rdquoldquo3rdquoldquo4rdquo
RLAND-OR
X1X2
RESZ
Cx8RES
Q0 Q1 Q2 CK
42
Contatori
EN
Q0 Q1 Q2 Q3CKCY
RESET
bull Attenzione Consideriamo il contatore di figura (questa volta con RESET asincrono) e supponiamo di utilizzarlo per contare per 5 (NB per il Reset si usa il ldquo5rdquo in questo casohellip glitch)
ABCD
ldquo5rdquo
ldquo1rdquo Percheacute questo schema egrave sbagliato
bull Percheacute presenta una corsa critica Nel momento in cui anche uno solo dei FF si resetta (e non tutti nello stesso istante) viene a mancare la configurazione ldquo4rdquo sul decoder e quindi alcuni FF potrebbero non fare in tempo a resettarsi E allora
EN
Q0 Q1 Q2 Q3CKCY
RESET
ABCD
ldquo5rdquo
ldquo1rdquo
RS
Y ldquo0rdquo
bull Cosigrave facendo il ldquo4rdquo attiva il SET e il FF NON si resetta fino a quando non egrave stato raggiunto la ldquo0rdquo NB lo schema ldquosbagliatordquo si puograve usare solo se si egrave certi della rapiditagrave di reset dei FF del contatore
bull Verificare con Altera
Sintesi cassaforte con moduli
Altera Cassaforte sincrona con moduli
Rete di controllo
Contatore con Reset asincrono e Load sincrono
43
NB In questo progetto la sintesi egrave stata condotta in modo ldquodirettordquo ovvero senza passare per la sintesi formale e utilizzando componenti disponibili e helliphellip materia grigia La sintesi dei circuiti sincroni si fa sempre e unicamente cosigrave
44
Simulazione funzionale (no timing)
NB I segnali di ingresso sono campionati SOLO sul fronte positivo del clock anche se si presentano asincroni Il segnale di uscita si attiva al clock successivo al riconoscimento della sequenza La posizione di ldquoriposordquo del contatore egrave il valore 4 I segnali Yi sono le decodifiche dei segnali di di ingresso X1 e X2
00 01 01 10
45
Simulazione timing
46
NB Si egrave scelto di utilizzare SOLO gli ingressi SINCRONI del contatore per semplicitagrave Il contatore rimane al valore 100 fino a quando non si presenta allrsquoingresso il valore 00 Se la sequenza egrave esatta il contatore continua a contare in avanti fino alla generazione dellrsquouscita (valore 11 del contatore) altrimenti si riporta al valore 100 ovvero Qc=1) Il segnale GN (Gate Not) egrave quello che abilita il conteggio Il sistema riamane stabile a 000 per una sequenza lunga a piacere di X1=0 e X2=0 e si sposta quando dopo 00 si ha 01 Come si evince dalla simulazione se la sequenza non egrave corretta o egrave interrotta il contatore si riporta sempre a 100
00 01 11 10
001 000 000
X1
000000 010 100 100001
000 100 100 011010
100 100 100 100011
000 100 100 100100
000 100 100 100101
000 100 100 100110
000 100 100 100111
0
0
0
1
0
0
0
0
X2
000
NB la tabella delle transizioni derivata della rete realizzata NON ha ovviamente condizioni di indifferenza
47
Progettare un contatore packed BCD updown a 8 bit (due digit)
48
Generazione di forme drsquoondabull Ersquo possibile generare forme drsquoonda periodiche mediante circuiti sincroni di periodo
sottomultiplo intero del clock
Esempio 1Divisore di frequenza per 2
D0k Q0k
CK D Q
CK Clock
Q
Esempio 2 generare una forma drsquoonda periodica con periodo 5T (ove T sia il periodo del clock) in cui in un semiperiodo 3T lrsquouscita sia alta e nellrsquoaltro semiperiodo 2T lrsquouscita sia bassa
Q0 Q1 Q2 CK
Cx5
C
B
A
01234
DecoderDemux
Clock
ZZ T
3T2T
3T
NB una rete logica egrave in grado di effettuare delle divisioni di frequenza e mai delle moltiplicazioni di frequenza (che si possono ottenere solo con circuiti analogici non lineari)
49
Di che circuito si tratta
D0k Q0k
CK D0 Q0
CKQ0
D0k Q0k
CK D1 Q1
CK
D0k Q0k
CK D2 Q2
CKClock
Clock
Q0
Q1
Q2
Ersquo un contatore binario ma non sincrono Infatti i vari FF NON utilizzano lo stesso clock e questo porta a un piccolo disallineamento sulle uscite Non egrave sintetizzabile come una rete sincrona e una sintesi formale sarebbe possibile solo trattando il circuito come asincrono ovvero ldquoaprendordquo i FF Sarebbe possibile trasformarlo in un contatore x6 mantenendo la stessa impostazione
Sintetizzare e simulare con Altera
NB il segnale di clock non egrave in comune
50
7493
51
Altera Contatore asincrono
Contatore asincrono
52
Simulazione timing
53
Come puograve essere utilizzato un FFD per catturare un impulso piugrave breve di un periodo
D2 Q2
Q2CKFFD Z
Clock
D1 Q1
Q1CKFFD
D0 Q00
Q0CKFFD
ldquo1rdquo CL
Lrsquoimpulso breve viene catturato dal FF 0 (purcheacute di larghezza sufficiente per la tecnologia del FF) - che quindi agisce come integratore ndash la cui uscita alimenta il monoimpulsore di tipo A Lrsquoattivazione del FF 1 resetta il FF 0 (supponendo che il segnale di CL sia ldquopositiverdquotruerdquo)
Ci puograve essere un problema se il CL agisce in modo asincrono
NB questo circuito e quello del lucido precedente evidenziano il fatto che nella realtagrave nessuna rete egrave solo sincrona ma bensigrave egrave pressocheacute sempre necessario utilizzare reti di natura diversa anche percheacute vi egrave sempre una interazione fra reti con clock diversi eo con segnali provenienti dal mondo esterno NON sincronizzati con il clock
Monoimpulsore di tipo A ldquorivistordquo
54
bull Uno shift register a sinistra (a destra) egrave un registro composto da FFD che ad ogni clock trasferisce il valore del FF a destra (a sinistra) di ciascun FF nel FF stesso Nel FF piugrave a destra (sinistra) viene immesso uno ldquo0rdquo Questi tipi di registri shift si chiamano ldquologicirdquo
Shift register (registri a traslazione o scorrimento)
D0kQ0k
CK DnQn
CK
D0kQ0k
CK Dn-1Qn-1
CK
D0kQ0k
CK Dn-2Qn-2
CK
D0kQ0k
CK D0Q0
CK
ldquo0rdquo
Shift register a sinistra
bull Anche per i registri a traslazione esistono diverse versioni con ingresso parallelo e uscita seriale con ingresso seriale e uscita parallela con reset con load etc etc
bull Si noti che uno shift register egrave anche un contatore Si immagini per esempio che dopo un reset siano inseriti degli uni a partire da destra Lo shift register si riempie progressivamente di uni e quindi la posizione in cui egrave arrivato lrsquouno indica il valore del conteggio in base a un codice ldquouno su nrdquo (un codice decodificato)
bull Spesso uno stesso registro puograve traslare a destra o a sinistra in funzione di una segnale di controllo Ovviamente questo si ottiene premettendo a ogni ingresso Di un MUX a due vie che preleva in funzione del segnale di controllo Qigrave+1 o Qigrave-1 Con questa configurazione lo shift register diventa anche un contatore avantiindietro
Registro a scorrimento (shift-register) a 3 bit
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
IN
OUT2OUT1OUT0
CK
CK
IN
A_RESET
OUT1
OUT2
OUT0
Registro a scorrimento (shift-register) a 3 bit
57
Esempio 74164 (serial In parallel OUT)
bull In questo registro a traslazione ad ogni fronte positivo del clock i dati sono traslati a destra (Q0 -gt Q1 Q1-gtQ2 etc) Il registro egrave dotato in un Master Reset (vero negato) e il dato inserito nel FF Q0 egrave dato dallrsquoAND dei due ingressi Dsa e Dsb
bull Si noti che lrsquooperazione di shift corrisponde aritmeticamente alle operazioni di divisione e moltiplicazione per 2 Si supponga che in Q0 vi sia il bit meno significativo e in Q7 il meno significativo
0 1 1 0 1 0 1 0
010101102 = 10810
Shift left =gt x2
Shift right =gt 2
101011002 = 21610
001010112 = 5910
NB nel dispositivo i bit sono posti in ordine invertito e quindi un shift left del numero corrisponde a uno shift right sul dispositivo
58
bull Esistono anche i registri a traslazione ldquoaritmeticirdquo In questi shift register a destra anzicheacute fare entrare nel FF piugrave a sinistra lo ldquo0rdquo viene immesso sempre ripetutamente il suo valore logico
Shift aritmetico
Q7 Q6 Q5 Q4 Q3 Q2 Q1 Q0
D7 D6 D5 D4 D3 D2 D1 D0
I LDCK Esempio
11001010SRA
11100101 interpretato in complemento a 2
001101102=5410
C2 C2
000110112=2710
bull Lo shift aritmetico a destra effettua una divisione per 2 mantenendo il segno
59
Rotazione
Nei computer egrave sovente necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register
D0kQ0k
CK DnQn
CK
D0kQ0k
CK Dn-1Qn-1
CK
D0kQ0k
CK Dn-2Qn-2
CK
D0kQ0k
CK D0Q0
CK
Molto spesso nei computer egrave necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register con direzione programmabile In questo caso su D0 ad esempio puograve essere avviato o Q1 o Qn
60
Contatori con shift register ndash Contatore retroazionato EX-OR
Q2Q0
Shift right 3 bitDQ1
110 111 011 101 010 001
Diagramma degli stati disgiunto
Uno shift register con n FF retroazionato con un EX-OR (scelta degli ingressi variabile) egrave un contatore NON binario che conta per 2n-1 (purcheacute presettato a un valore diverso da tutti zeri)
000
100
61
Contatore di Johnson (riempimento e svuotamento)
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
000-gt100-gt110-gt111-gt011-gt001-gt000-gtStati isolati 101-gt010-gt101gt1
Poicheacute configurazioni adiacenti del codice Johnson differiscono di un solo bit il contatore puograve essere utilizzato per generare forme drsquoonda prive di alee
62
Contatore ad anello con un solo 1 (ovvero che genera direttamente il codice 1su n)
FFDD Q
QR
RESET
FFDD Q
QR
RESET
FFDD Q
QPR
RESET
OUT3OUT1OUT0
CK
FFDD Q
QR
RESET
OUT2
0001-gt1000-gt0100-gt0010-gt0010n FF per contare per n (mentre con i contatori binari il numero dei FF egrave il log2m ove m egrave il primo intero maggiore o uguale a n)
63
Barrel shifter (rotore)Un barrel shifter egrave uno shift register in grado di traslare di ldquonrdquo posizioni in un solo clock il contenuto dei suoi FF In figura egrave riportato il barrel shifter della Altera Gli ingressi A-H in presenza dellrsquoattivazione del segnale LDST al primo fronte positivo del clock sono depositati nei FF Quando LDST egrave 0 ad ogni fronte positivo del clock i bit di uscita sono ruotati di n posizioni in senso antiorario (ovvero lrsquouscita H diventa la G la G diventa la Fhellipe lrsquouscita A diventa la H) ove n egrave il valore binario indicato dai segnali S0 S1 e S2
Si noti che il circuito in questione egrave di fatto un registro con 8 FF allrsquoingresso di ciascuno dei quali egrave previsto un MUX a 8 vie che pilotato dai segnali S0 S1 e S2 che seleziona uno degli 8 uscite del dispositivo La struttura interna puograve essere osservata ldquoclikkandordquo due volte sul dispositivo nello schema di Altera
64
Barrel shifter
6565
66
Simulazione timing
67
bull Utilizzando il sistema Altera progettare un orologio con secondi minuti ora partendo da un oscillatore a quarzo con frequenza 500 KHz
bull E se si volesse proseguire e realizzare anche un datario (giorno mese e anno )
bull Come potrebbe essere integrato con una sveglia Si ricordi che lrsquoorologio deve essere anche essere ldquopresettatordquo
bull Quali circuiti utilizzare per la visualizzazione
68
EPROM
X0nZ0m
y0kY0k
Clock
D0kQ0k
FFD0k
CK D0kQ0k CK
Reti sincrone con EPROM
Al posto delle EPROM si utilizzano ora dei PLA ovvero dispositivi nei quali si nei quali le funzioni combinatorie sono ottimizzate ma il principio egrave assolutamente il medesimo
69
Progettare con Altera una rete logica sincrona che utilizzando registri 374 ALU 74181 un contatore e altri dispositivi ritenuti necessari permetta di eseguire in sequenza la somma di due dati di 4 bit senza segno ingresso esegua il complemento a 2 inverta la parte bassa con la parte alta del risultato e infine moltiplichi il tutto logicamente per 2
La soluzione egrave sempre decomponibile in tre sottosistemi il controllo con la sua decodifica (unitagrave di controllo) il percorso dei dati con le unitagrave che li trasformano (datapath) e i registri di deposito e di ingresso dei dati
Questa egrave la struttura base di qualunque unitagrave centrale di qualunque computer
La differenza consiste solo nel fatto che anzicheacute avere una sequenza fissa di operazioni ne viene generata una volta a volta che dipende appunto dalla istruzione che deve essere eseguita Come si vedragrave approfonditamente nel corso di Calcolatori T del II anno (prof Neri e Mattoccia)
Arrivederci al corso di Calcolatori T del II anno (sapendo perfettamente le reti logiche helliphellip)
13
Sincronizzazione degli ingressibull Finora si egrave dato implicitamente per scontato che gli ingressi di una rete sincrona commutino
in modo sincrono con il clock
bull Ciograve egrave verificato se gli ingressi provengono da una rete sincrona di tipo Moore nella quale le uscite sono funzione solo dello stato che commuta solo al fronte positivo del clock
Rete combinatoria
X0n
Z0m
y0k
Y0k
Clock
D0kQ0k
FFD0k
CK D0kQ0k CK
Rete combinatoria
bull Nella realtagrave le cose stanno diversamente Si pensi al caso di pulsanti esterni che costituiscano lrsquo ingresso della rete Il cambiamento puograve avvenire in un istante qualsiasi
bull Nella rete di figura (Moore) le uscite sono comunque certamente sincronizzate con il clock e se gli ingressi X0n cambiano in un momento qualsiasi non sincronizzato il cambiamento viene percepito dai FF di retroazione solo al fronte positivo del clock e quindi il comportamento delle uscite della rete egrave il medesimo che si avrebbe se gli ingressi fossero sincronizzati
14
Sincronizzazione degli ingressi
bull La cosa cambia perograve se la rete egrave di tipo Mealy
Rete combinatoria
X0nZ0m
y0kY0k
Clock
D0kQ0k
FFD0k
CK D0kQ0k CK
bull In questo caso un cambiamento asincrono degli ingressi provoca in generale un cambiamento asincrono delle uscite
15
Esempio la cassaforte (dotata di una doppia tastiera - due ingressi) si apre solo se gli ingressi hanno assunto NEL TEMPO le configurazioni
00-01-01-10 Ogni violazione della sequenza riporta il sistema nello stato iniziale NB Essendo gli ingressi campionati la sequenza di ingresso 01-01 egrave possibile e significativa
hellip Cassaforte hellip sincrona hellip
NB si puograve supporre che gli ingressi cambino allo stesso istante delle variabili di stato ma la cosa non egrave necessaria Se la rete egrave di tipo Moore anche se gli ingressi cambiano a metagrave di un periodo di clock il comportamento dal punto di vista degli stati e quindi delle uscite egrave assolutamente lo stesso (ogni variazione egrave rilevata solo alla fine del periodo)
E11101
0111
11
F0
01
01
G0
0000
11 00
11
11
10
1001
10
00
10 0110
01
01
00
Per ogni stato tutte le combinazioni di ingresso
00
10
10
11
C0A0 B0 D0
Gli stati NON sono stabili per gli ingressi che li hanno provocati
00
B
00 01 11 10
F A GA
B C A GB
B D A GCB F A ED
B F A GE
B F AA- GF
B F A GG
0
0
0
0
1
0
0
X1X2
A0 B0 C0 E10011
01
10
0111
11
11
D0 10
F0
01
01
G0
0000
00
00
11
11
10
1001
1010 0110
01
11
00
Cassaforte sincrona
16
01
NB in questo esempio non vi sono condizioni di indifferenza Anzicheacute di stati compatibili si parla qui di stati equivalenti Ove poi due stati per gli stessi ingressi abbiano uscite identiche e portino agli stessi stati si parla di stati indistinguibili Naturalmente la descrizione a parole puograve evidenziare che alcune combinazioni di ingresso per alcuni stati non si presentano In questo caso si ritorna al concetto di compatibilitagrave
00
17
Cassaforte sincrona
Classi di equivalenza [AFG] =gt a[B] =gt b[C] =gt g[D] =gt d[E] =gt e
B
00 01 11 10
F A GA
B C A GB
B D A GCB F A ED
B F A GE
B F AA- GF
B F A GG
0
0
0
0
1
0
0
X1X2
B
C
D
E
F
G
A B C D E F
CF
FD CD
CFGE
CFGE
DFGE
--- CF DF GE
--- C F DF GE --
b
00 01 11 10
a a aa
b g a ab
b d a ag
b a a ed
b a a ae
X1X2
0
0
0
0
1 NB nel caso di tabelle completamente specificate le classi (massime) di equivalenza non hanno mai stati in comune Vanno usate tutte quindi Non esiste problema di chiusura
Ovviamente 5 stati 4 facenti parte della sequenza e uno esterno
18
b
00 01 11 10
a a aa
b g a ab
b d a ag
b a a ed
b a a ae
X1X2
0
0
0
0
1
Cassaforte sincrona
001
00 01 11 10
000 000 000000
001 011 000 000001
001 010 000 000011
001 000 000 100010
001 000 000 000100
X1X2
-- -- -- --101
-- -- -- --111
-- -- -- --110
0
0
0
0
1
--
--
--
Y1Y2 Y3
a =gt 000b =gt 001g =gt 011d =gt 010e =gt 100
D1= X1X2Y2Y3
D2=X1X2Y3
D3=X1X2+X1Y2Y3 Z =Y1
Sintetizzando con FFD la sintesi degli ingressi Di si ottiene sintetizzando le funzioni Yi (Yn+1=Dn)
Nessun problema di corse codifica libera (possibilmente ottima)
19
Sintesi
Direttorio cassaforte sincrona
20
00 01 01 10
Sintesi ndash simulazione funzionale
NB Gli ingressi cambiano in modo NON sincrono con il clock ma lrsquo uscita egrave sincrona essendo la rete di tipo Moore
21
Sintesi ndash simulazione timing
Si notino i ritardi delle uscite dei FF e dei gates da esse dipendenti rispetto al fronte positivo del clock (ad esempio d) se la frequenza del clock fosse eccessiva il sistema NON funzionerebbe piugrave correttamente
d
22
E con Mealy
B
00 01 11 10
F A GA
B C A GB
B D A GCB F A ED
B F A GE
B F AA- GF
B F A GG
0
0
0
0
1
0
0
X1X2
B0
00 01 11 10
F0 A0 G0A
B0 C0 A0 G0B
B0 D0 A0 G0CB0 F0 A0 E1D
B1 F1 A1 G1E
B0 F0 A0A-G0F
B0 F0 A0 G0G
X1X2
Potrei mettere una indifferenza sullrsquouscita Si si possono mettere indifferenze sulle uscite che cambiano Anticipazione o ritardo del cambiamento
Sintetizzare e simulare con Altera
23
bull Allrsquoesame orale egrave necessario portare un esercizio di reti sincrone e uno di reti asincrone NON ldquomutuatordquo da altri hellip
bull I due esercizi debbono essere portati su una chiavetta (o dispositivo equivalente) debbono contenere una spiegazione e anche la progettazionesimulazione con Altera
bull Il candidato deve dimostrare di sapere usare il sistema Altera e spiegare i progetti portati
bull Gli esercizi di reti sincrone hanno spesso il diagramma degli stati ma solo per verificahellip
Monoimpulsore A
D1 Q1
Q1CKFFD
D2 Q2
Q2CKFFD Z1
D
Clock
Clock
D
Z
Q1
Q2
Qui lrsquoingresso asincrono D egrave sincronizzato dai FF Uscita Z sincrona
Generare un impulso di uscita di un periodo di clock per ingresso 1 Un ulteriore impulso viene generato solo se lrsquoingresso torna a 1 dopo essere stato a 0 Lrsquouscita deve essere sincronizzata con il clock
24
25
D1 Q1
Q1CKFFD
D2 Q2
Q2CKFFD Z
D
Clock
Monoimpulsore A
1
0
1
1
0
A0 B1
C0
0
A
A
A
-
B
C
C
-
DQ2
Q1
B
0 1
C
-
Z0
0
1
-
A 00
--
00
00
10
--
11
11
DQ2
Q1
01
0 1
11
10
Z0
0
-
1
0000
10
11
01
B
C
-
A
Q1=D Q2= DQ1 Z=Q1Q2
00
00
01
01
10
10
11
11
DQ2
Q1
01
0 1
11
10
Z0
0
0
1
00
MAhellip
Q1=D Q2= Q1 Z=Q1Q2
Moore necessariamente
26
D1 Q1
Q1CKFFD
D2 Q2
Q2CKFFD Z2
D
Clock
Monoimpulsore B
Clock
D
Z2
Q1
Q2
Lrsquoingresso asincrono D agisce direttamente sullrsquouscita Z che quindi risulta asincrona
Qui la rete egrave di tipo Mealy e quindi con ingresso asincrono egrave possibile che vi sia uscita asincrona
27
D Q
QCKFFD Z
D
Clock
Monoimpulsore C
Clock
D
Z
Q
Anche qui lrsquoingresso asincrono D agisce direttamente sullrsquouscita Z che quindi risulta asincronaSi noti che se lrsquoingresso oscilla una volta che il FF ha campionato un 1 e fino a quando non campiona uno 0 lrsquouscita oscilla
Qui la rete egrave di tipo Mealy e quindi con ingresso asincrono egrave possibile che vi sia uscita asincrona
28
Considerazioni sui monoimpulsori A B e C
Il diagramma degli stati corrispondente al funzionamento reale dei due monoimpulsori B e C NON puograve essere tracciato percheacute di fatto le due reti (di tipo Mealy) NON sono sincrone Infatti il diagramma di circuiti sincroni prevede implicitamente un comportamento sincrono anche degli ingressi fatto non verificato nei casi B e C
La cosa non vale per il monoimpulsore A in quanto pur essendo lrsquoingresso asincrono lrsquouscita (rete di tipo Moore) dipende solo dagli stati In altre parole il comportamento della rete rende intrinsecamente sincroni ingressi fisicamente asincroni
Il diagramma degli stati che riflette il comportamento delle due reti B e C puograve essere tracciato solo partendo da una analisi asincrona ldquoaprendordquo quindi i FF D inseriti Ovviamente egrave possibile progettare le due reti senza lrsquouso dei FF D partendo da un diagramma degli stati asincrono ldquotradizionalerdquo
A scopo di esercizio si suggerisce la sintesi e la simulazione con Altera dei tre monoimpulsori come reti asincrone Si tratta di circuiti on due ingressi Ck e D
29
Monoimpulsori A-B-C
30
31
Contatori
A B C D Z
Circuiti senza ingresso (a parte il clock) nella versione piugrave semplice
D0 Q0
Q0CKFFD
MUX
1
0D1 Q1
Q1CKFFD
(Il clock egrave spesso sottinteso nei circuiti sincroni)
U0 U1
Esempio contatore binario x 4 con decodifica del 3
000 010 100 111
OUT
Q1 cambia stato quando Q0 egrave a 1 e passa a 0
CK
u1
u0
OUT (0) (1) (2) (0) (1) (2)(3) (3)
Contatore x 4 con decodifica del 3
33
Contatori binari in base non potenza di 2
A B C D E
000 001 010 011 100Contatore
binario per 5
D0 Q0
Q0CKFFD
MUX
1
0 1D1 Q1
Q1CKFFD
MUX
1
0D Q2
Q2CKFFD
Questo conta x8 ma per contare x5 arrivati a 4 bisogna ritornare a 0
34
D0 Q0
Q0CKFFD D1 Q1
Q1CKFFD
MUX
1
0 D2 Q2
Q2CKFFD
MUX
1
0
ABC
ldquo4rdquo
Contatore x 5
Decoder
La decodifica del 4 porta a zero lrsquouscita del decodificatore e quindi a 0 tutte le uscite degli AND rosa e al successivo fronte positivo del clock i tre FF campionano uno ldquo0rdquo
Per esercizio sintetizzare un contatore x 100 partendo dalla sintesi di un contatore decimale ovvero di un contatore x10 (da sintetizzare) Quanti FF per un contatore decimale I contatori decimali si trovano integrati in Altera
ldquo3rdquo
35
Contatori con ingressi di controllo
Ex Contatore integrato x 16 con Load e Enable
bull Il contatore conta per 16 (0-15) se il segnale EN egrave a 1 Allorchegrave il segnale LD va a 1 il dato presente sugli ingressi D egrave inserito nei 4 FF (lrsquoingresso puograve essere sincrono o asincrono) Nel caso precedente il decodificatore del ldquo3rdquo (uscita vera va portato) allrsquoingresso LD con tutti i Di a zero
bull In generale il contatore fornisce anche unrsquouscita ldquocarryrdquo che va a 1 quando il contatore raggiunge il valore FF Questa uscita puograve essere connessa allrsquoenable di un contatore a valle per ottenere un contatore per 256 cosigrave via (Progettarlo come esercizio)
EN
Q0 Q1 Q2 Q3CKLD
D0 D1 D2 D3
EN
Q0 Q1 Q2 Q3CK
CYLD
D0 D1 D2 D3
bull Esistono contatori UPDOWN nei quali un ingresso (UD) seleziona se il conteggio deve avvenire avanti o indietro Nel caso sia selezionata la modalitagrave ldquoindietrordquo il carry si attiva quando si raggiunge il valore ldquotutti zerirdquo
bull Esiste una molteplicitagrave di contatori ciascuno con le proprie specifiche peculiaritagrave con o senza RESET (che normalmente agisce in modo asincrono) UD con o senza LD etc etc
NB qualunque circuito sincrono (con sequenza non binaria) riconducibile al diagramma degli stati di un contatore egrave sempre un contatore
101 010 000 111 110 Contatore x 5 non binario
36
74163 contatore reale x 16 con Load Reset e Enable (T e P)I segnali di controllo sono sincroni ovvero agiscono sul fronte positivo del clock (rising edge)
74138 decoder 38 con uscite negate se G2A e G2B entrambi a zero e G1 a 1 Altrimenti tutte uscite alte
Direttorio Counter Glitch
Contatore binario x 8 e glitches
37
Glitch
Simulazione timingNB la presenza e la durata del glitch dipende dalle caratteristiche elettriche dei dispositivi
dalla loro tecnologia etc Nel caso dei dispositivi Altera dipende dal tipo di dispositivo sul quale egrave realizzato il circuito Analogamente la sensibilitagrave di eventuali ingressi di clock collegati allrsquouscita con il glitch dipende dalle caratteristiche del dispositivo Se ad esempio nel dispositivo Altera utilizzato si collega allrsquouscita Y6 il clock di un FFD non si ha commutazione del FF ma questo non egrave vero in assoluto
38
Cosa succede al contatore X5 progettato precedentemente se allrsquoaccensione non disponendo di un segnale di RESET i FF si portano in uno stato non facente parte del cicloNB La condizione allrsquoaccensione egrave del tutto casuale e dipende unicamente dalle condizioni elettriche
di realizzazione Ersquo impredicibileSupponiamo che i FF si portino al valore 110 (il numero 6 fuori dal ciclo) Analizziamo il comportamento
D0 Q0Q0CK
FFD D1 Q1Q1CK
FFD
MUX
1
0 D2 Q2Q2CK
FFD
MUX
1
0
ABC
ldquo4rdquo
000 001 010 011 100 110 111
In questo caso ci si riporta nella situazione di conteggio regolare (verificare con la tabella degli stati ) ma il comportamento in generale dipende dalla realizzazione e in altre realizzazione i due stati potrebbero essere separati dal ciclo principale che quindi non verrebbe mai raggiunto Ecco la funzione del RESET
39
Solo come esempio (da non utilizzare ) a scopo didattico vediamo la tabella delle transizioni di un contatore per 6 UpDown con comando di Reset I segnali di ingresso cambiano in modo asincrono ma hanno effetto in modo sincrono
Per compensare allrsquoaccensione
Sintetizzare e simulareCome dovrebbe essere modificato lo schema in Altera per permettere di
ldquopresettarerdquo in modo asincrono il contatore a un particolare valore di ingresso
00 01 11 10UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
111
110
000 101
000
101
y3 y2 y100 01 11 10
UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
000 000111
000 000 000 000110
000 101
000
000 000
101
y3 y2 y1
40
D0Q0
CKFFD
Clocky2
DEC
y3
y2
y1
ldquo1rdquo
ldquo2rdquo
ldquo3rdquo
ldquo4rdquo
1
0
UPDown
Sintesi di y2 in modo ldquodirettordquo
1
0
00 01 11 10UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
000 000111
000 000 000 000110
000 101
000
000 000
101
y3 y2 y1
41
Cassaforte hellipDisponendo di un contatore per 8 (ma anche per 16 etc) con reset sincrono e sempre abilitato al conteggio come potrei realizzare il circuito di apertura della cassaforte (sequenza X1X2 00-01-01-10) con modello Moore
Cx8RES
Q0 Q1 Q2 CK
RES= (ldquo0rdquoX1X2 + ldquo1rdquo X1X2 + ldquo2rdquo X1X2 + ldquo3rdquo X1 X2)Z = ldquo4rdquo (ldquo0rdquordquo1rdquordquo2rdquordquo3rdquordquo4rdquo sono le decodifiche binarie delle tre uscite del contatore)
Il contatore si resetta ogni volta che non si presenta lrsquoingresso giusto relativo al particolare stato Ilcontatore quindi si resetta e rimane resettato se non nelle condizioni espresse dalla funzione RESIl contatore arrivato a 4 (Z=1) si resetta comunque al successivo fronte del clock
Le reti sincrone si progettano sempre come combinazione di blocchi disponibili e logica ldquorandomrdquo
ABC
ldquo0rdquoldquo1rdquoldquo2rdquoldquo3rdquoldquo4rdquo
RLAND-OR
X1X2
RESZ
Cx8RES
Q0 Q1 Q2 CK
42
Contatori
EN
Q0 Q1 Q2 Q3CKCY
RESET
bull Attenzione Consideriamo il contatore di figura (questa volta con RESET asincrono) e supponiamo di utilizzarlo per contare per 5 (NB per il Reset si usa il ldquo5rdquo in questo casohellip glitch)
ABCD
ldquo5rdquo
ldquo1rdquo Percheacute questo schema egrave sbagliato
bull Percheacute presenta una corsa critica Nel momento in cui anche uno solo dei FF si resetta (e non tutti nello stesso istante) viene a mancare la configurazione ldquo4rdquo sul decoder e quindi alcuni FF potrebbero non fare in tempo a resettarsi E allora
EN
Q0 Q1 Q2 Q3CKCY
RESET
ABCD
ldquo5rdquo
ldquo1rdquo
RS
Y ldquo0rdquo
bull Cosigrave facendo il ldquo4rdquo attiva il SET e il FF NON si resetta fino a quando non egrave stato raggiunto la ldquo0rdquo NB lo schema ldquosbagliatordquo si puograve usare solo se si egrave certi della rapiditagrave di reset dei FF del contatore
bull Verificare con Altera
Sintesi cassaforte con moduli
Altera Cassaforte sincrona con moduli
Rete di controllo
Contatore con Reset asincrono e Load sincrono
43
NB In questo progetto la sintesi egrave stata condotta in modo ldquodirettordquo ovvero senza passare per la sintesi formale e utilizzando componenti disponibili e helliphellip materia grigia La sintesi dei circuiti sincroni si fa sempre e unicamente cosigrave
44
Simulazione funzionale (no timing)
NB I segnali di ingresso sono campionati SOLO sul fronte positivo del clock anche se si presentano asincroni Il segnale di uscita si attiva al clock successivo al riconoscimento della sequenza La posizione di ldquoriposordquo del contatore egrave il valore 4 I segnali Yi sono le decodifiche dei segnali di di ingresso X1 e X2
00 01 01 10
45
Simulazione timing
46
NB Si egrave scelto di utilizzare SOLO gli ingressi SINCRONI del contatore per semplicitagrave Il contatore rimane al valore 100 fino a quando non si presenta allrsquoingresso il valore 00 Se la sequenza egrave esatta il contatore continua a contare in avanti fino alla generazione dellrsquouscita (valore 11 del contatore) altrimenti si riporta al valore 100 ovvero Qc=1) Il segnale GN (Gate Not) egrave quello che abilita il conteggio Il sistema riamane stabile a 000 per una sequenza lunga a piacere di X1=0 e X2=0 e si sposta quando dopo 00 si ha 01 Come si evince dalla simulazione se la sequenza non egrave corretta o egrave interrotta il contatore si riporta sempre a 100
00 01 11 10
001 000 000
X1
000000 010 100 100001
000 100 100 011010
100 100 100 100011
000 100 100 100100
000 100 100 100101
000 100 100 100110
000 100 100 100111
0
0
0
1
0
0
0
0
X2
000
NB la tabella delle transizioni derivata della rete realizzata NON ha ovviamente condizioni di indifferenza
47
Progettare un contatore packed BCD updown a 8 bit (due digit)
48
Generazione di forme drsquoondabull Ersquo possibile generare forme drsquoonda periodiche mediante circuiti sincroni di periodo
sottomultiplo intero del clock
Esempio 1Divisore di frequenza per 2
D0k Q0k
CK D Q
CK Clock
Q
Esempio 2 generare una forma drsquoonda periodica con periodo 5T (ove T sia il periodo del clock) in cui in un semiperiodo 3T lrsquouscita sia alta e nellrsquoaltro semiperiodo 2T lrsquouscita sia bassa
Q0 Q1 Q2 CK
Cx5
C
B
A
01234
DecoderDemux
Clock
ZZ T
3T2T
3T
NB una rete logica egrave in grado di effettuare delle divisioni di frequenza e mai delle moltiplicazioni di frequenza (che si possono ottenere solo con circuiti analogici non lineari)
49
Di che circuito si tratta
D0k Q0k
CK D0 Q0
CKQ0
D0k Q0k
CK D1 Q1
CK
D0k Q0k
CK D2 Q2
CKClock
Clock
Q0
Q1
Q2
Ersquo un contatore binario ma non sincrono Infatti i vari FF NON utilizzano lo stesso clock e questo porta a un piccolo disallineamento sulle uscite Non egrave sintetizzabile come una rete sincrona e una sintesi formale sarebbe possibile solo trattando il circuito come asincrono ovvero ldquoaprendordquo i FF Sarebbe possibile trasformarlo in un contatore x6 mantenendo la stessa impostazione
Sintetizzare e simulare con Altera
NB il segnale di clock non egrave in comune
50
7493
51
Altera Contatore asincrono
Contatore asincrono
52
Simulazione timing
53
Come puograve essere utilizzato un FFD per catturare un impulso piugrave breve di un periodo
D2 Q2
Q2CKFFD Z
Clock
D1 Q1
Q1CKFFD
D0 Q00
Q0CKFFD
ldquo1rdquo CL
Lrsquoimpulso breve viene catturato dal FF 0 (purcheacute di larghezza sufficiente per la tecnologia del FF) - che quindi agisce come integratore ndash la cui uscita alimenta il monoimpulsore di tipo A Lrsquoattivazione del FF 1 resetta il FF 0 (supponendo che il segnale di CL sia ldquopositiverdquotruerdquo)
Ci puograve essere un problema se il CL agisce in modo asincrono
NB questo circuito e quello del lucido precedente evidenziano il fatto che nella realtagrave nessuna rete egrave solo sincrona ma bensigrave egrave pressocheacute sempre necessario utilizzare reti di natura diversa anche percheacute vi egrave sempre una interazione fra reti con clock diversi eo con segnali provenienti dal mondo esterno NON sincronizzati con il clock
Monoimpulsore di tipo A ldquorivistordquo
54
bull Uno shift register a sinistra (a destra) egrave un registro composto da FFD che ad ogni clock trasferisce il valore del FF a destra (a sinistra) di ciascun FF nel FF stesso Nel FF piugrave a destra (sinistra) viene immesso uno ldquo0rdquo Questi tipi di registri shift si chiamano ldquologicirdquo
Shift register (registri a traslazione o scorrimento)
D0kQ0k
CK DnQn
CK
D0kQ0k
CK Dn-1Qn-1
CK
D0kQ0k
CK Dn-2Qn-2
CK
D0kQ0k
CK D0Q0
CK
ldquo0rdquo
Shift register a sinistra
bull Anche per i registri a traslazione esistono diverse versioni con ingresso parallelo e uscita seriale con ingresso seriale e uscita parallela con reset con load etc etc
bull Si noti che uno shift register egrave anche un contatore Si immagini per esempio che dopo un reset siano inseriti degli uni a partire da destra Lo shift register si riempie progressivamente di uni e quindi la posizione in cui egrave arrivato lrsquouno indica il valore del conteggio in base a un codice ldquouno su nrdquo (un codice decodificato)
bull Spesso uno stesso registro puograve traslare a destra o a sinistra in funzione di una segnale di controllo Ovviamente questo si ottiene premettendo a ogni ingresso Di un MUX a due vie che preleva in funzione del segnale di controllo Qigrave+1 o Qigrave-1 Con questa configurazione lo shift register diventa anche un contatore avantiindietro
Registro a scorrimento (shift-register) a 3 bit
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
IN
OUT2OUT1OUT0
CK
CK
IN
A_RESET
OUT1
OUT2
OUT0
Registro a scorrimento (shift-register) a 3 bit
57
Esempio 74164 (serial In parallel OUT)
bull In questo registro a traslazione ad ogni fronte positivo del clock i dati sono traslati a destra (Q0 -gt Q1 Q1-gtQ2 etc) Il registro egrave dotato in un Master Reset (vero negato) e il dato inserito nel FF Q0 egrave dato dallrsquoAND dei due ingressi Dsa e Dsb
bull Si noti che lrsquooperazione di shift corrisponde aritmeticamente alle operazioni di divisione e moltiplicazione per 2 Si supponga che in Q0 vi sia il bit meno significativo e in Q7 il meno significativo
0 1 1 0 1 0 1 0
010101102 = 10810
Shift left =gt x2
Shift right =gt 2
101011002 = 21610
001010112 = 5910
NB nel dispositivo i bit sono posti in ordine invertito e quindi un shift left del numero corrisponde a uno shift right sul dispositivo
58
bull Esistono anche i registri a traslazione ldquoaritmeticirdquo In questi shift register a destra anzicheacute fare entrare nel FF piugrave a sinistra lo ldquo0rdquo viene immesso sempre ripetutamente il suo valore logico
Shift aritmetico
Q7 Q6 Q5 Q4 Q3 Q2 Q1 Q0
D7 D6 D5 D4 D3 D2 D1 D0
I LDCK Esempio
11001010SRA
11100101 interpretato in complemento a 2
001101102=5410
C2 C2
000110112=2710
bull Lo shift aritmetico a destra effettua una divisione per 2 mantenendo il segno
59
Rotazione
Nei computer egrave sovente necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register
D0kQ0k
CK DnQn
CK
D0kQ0k
CK Dn-1Qn-1
CK
D0kQ0k
CK Dn-2Qn-2
CK
D0kQ0k
CK D0Q0
CK
Molto spesso nei computer egrave necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register con direzione programmabile In questo caso su D0 ad esempio puograve essere avviato o Q1 o Qn
60
Contatori con shift register ndash Contatore retroazionato EX-OR
Q2Q0
Shift right 3 bitDQ1
110 111 011 101 010 001
Diagramma degli stati disgiunto
Uno shift register con n FF retroazionato con un EX-OR (scelta degli ingressi variabile) egrave un contatore NON binario che conta per 2n-1 (purcheacute presettato a un valore diverso da tutti zeri)
000
100
61
Contatore di Johnson (riempimento e svuotamento)
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
000-gt100-gt110-gt111-gt011-gt001-gt000-gtStati isolati 101-gt010-gt101gt1
Poicheacute configurazioni adiacenti del codice Johnson differiscono di un solo bit il contatore puograve essere utilizzato per generare forme drsquoonda prive di alee
62
Contatore ad anello con un solo 1 (ovvero che genera direttamente il codice 1su n)
FFDD Q
QR
RESET
FFDD Q
QR
RESET
FFDD Q
QPR
RESET
OUT3OUT1OUT0
CK
FFDD Q
QR
RESET
OUT2
0001-gt1000-gt0100-gt0010-gt0010n FF per contare per n (mentre con i contatori binari il numero dei FF egrave il log2m ove m egrave il primo intero maggiore o uguale a n)
63
Barrel shifter (rotore)Un barrel shifter egrave uno shift register in grado di traslare di ldquonrdquo posizioni in un solo clock il contenuto dei suoi FF In figura egrave riportato il barrel shifter della Altera Gli ingressi A-H in presenza dellrsquoattivazione del segnale LDST al primo fronte positivo del clock sono depositati nei FF Quando LDST egrave 0 ad ogni fronte positivo del clock i bit di uscita sono ruotati di n posizioni in senso antiorario (ovvero lrsquouscita H diventa la G la G diventa la Fhellipe lrsquouscita A diventa la H) ove n egrave il valore binario indicato dai segnali S0 S1 e S2
Si noti che il circuito in questione egrave di fatto un registro con 8 FF allrsquoingresso di ciascuno dei quali egrave previsto un MUX a 8 vie che pilotato dai segnali S0 S1 e S2 che seleziona uno degli 8 uscite del dispositivo La struttura interna puograve essere osservata ldquoclikkandordquo due volte sul dispositivo nello schema di Altera
64
Barrel shifter
6565
66
Simulazione timing
67
bull Utilizzando il sistema Altera progettare un orologio con secondi minuti ora partendo da un oscillatore a quarzo con frequenza 500 KHz
bull E se si volesse proseguire e realizzare anche un datario (giorno mese e anno )
bull Come potrebbe essere integrato con una sveglia Si ricordi che lrsquoorologio deve essere anche essere ldquopresettatordquo
bull Quali circuiti utilizzare per la visualizzazione
68
EPROM
X0nZ0m
y0kY0k
Clock
D0kQ0k
FFD0k
CK D0kQ0k CK
Reti sincrone con EPROM
Al posto delle EPROM si utilizzano ora dei PLA ovvero dispositivi nei quali si nei quali le funzioni combinatorie sono ottimizzate ma il principio egrave assolutamente il medesimo
69
Progettare con Altera una rete logica sincrona che utilizzando registri 374 ALU 74181 un contatore e altri dispositivi ritenuti necessari permetta di eseguire in sequenza la somma di due dati di 4 bit senza segno ingresso esegua il complemento a 2 inverta la parte bassa con la parte alta del risultato e infine moltiplichi il tutto logicamente per 2
La soluzione egrave sempre decomponibile in tre sottosistemi il controllo con la sua decodifica (unitagrave di controllo) il percorso dei dati con le unitagrave che li trasformano (datapath) e i registri di deposito e di ingresso dei dati
Questa egrave la struttura base di qualunque unitagrave centrale di qualunque computer
La differenza consiste solo nel fatto che anzicheacute avere una sequenza fissa di operazioni ne viene generata una volta a volta che dipende appunto dalla istruzione che deve essere eseguita Come si vedragrave approfonditamente nel corso di Calcolatori T del II anno (prof Neri e Mattoccia)
Arrivederci al corso di Calcolatori T del II anno (sapendo perfettamente le reti logiche helliphellip)
14
Sincronizzazione degli ingressi
bull La cosa cambia perograve se la rete egrave di tipo Mealy
Rete combinatoria
X0nZ0m
y0kY0k
Clock
D0kQ0k
FFD0k
CK D0kQ0k CK
bull In questo caso un cambiamento asincrono degli ingressi provoca in generale un cambiamento asincrono delle uscite
15
Esempio la cassaforte (dotata di una doppia tastiera - due ingressi) si apre solo se gli ingressi hanno assunto NEL TEMPO le configurazioni
00-01-01-10 Ogni violazione della sequenza riporta il sistema nello stato iniziale NB Essendo gli ingressi campionati la sequenza di ingresso 01-01 egrave possibile e significativa
hellip Cassaforte hellip sincrona hellip
NB si puograve supporre che gli ingressi cambino allo stesso istante delle variabili di stato ma la cosa non egrave necessaria Se la rete egrave di tipo Moore anche se gli ingressi cambiano a metagrave di un periodo di clock il comportamento dal punto di vista degli stati e quindi delle uscite egrave assolutamente lo stesso (ogni variazione egrave rilevata solo alla fine del periodo)
E11101
0111
11
F0
01
01
G0
0000
11 00
11
11
10
1001
10
00
10 0110
01
01
00
Per ogni stato tutte le combinazioni di ingresso
00
10
10
11
C0A0 B0 D0
Gli stati NON sono stabili per gli ingressi che li hanno provocati
00
B
00 01 11 10
F A GA
B C A GB
B D A GCB F A ED
B F A GE
B F AA- GF
B F A GG
0
0
0
0
1
0
0
X1X2
A0 B0 C0 E10011
01
10
0111
11
11
D0 10
F0
01
01
G0
0000
00
00
11
11
10
1001
1010 0110
01
11
00
Cassaforte sincrona
16
01
NB in questo esempio non vi sono condizioni di indifferenza Anzicheacute di stati compatibili si parla qui di stati equivalenti Ove poi due stati per gli stessi ingressi abbiano uscite identiche e portino agli stessi stati si parla di stati indistinguibili Naturalmente la descrizione a parole puograve evidenziare che alcune combinazioni di ingresso per alcuni stati non si presentano In questo caso si ritorna al concetto di compatibilitagrave
00
17
Cassaforte sincrona
Classi di equivalenza [AFG] =gt a[B] =gt b[C] =gt g[D] =gt d[E] =gt e
B
00 01 11 10
F A GA
B C A GB
B D A GCB F A ED
B F A GE
B F AA- GF
B F A GG
0
0
0
0
1
0
0
X1X2
B
C
D
E
F
G
A B C D E F
CF
FD CD
CFGE
CFGE
DFGE
--- CF DF GE
--- C F DF GE --
b
00 01 11 10
a a aa
b g a ab
b d a ag
b a a ed
b a a ae
X1X2
0
0
0
0
1 NB nel caso di tabelle completamente specificate le classi (massime) di equivalenza non hanno mai stati in comune Vanno usate tutte quindi Non esiste problema di chiusura
Ovviamente 5 stati 4 facenti parte della sequenza e uno esterno
18
b
00 01 11 10
a a aa
b g a ab
b d a ag
b a a ed
b a a ae
X1X2
0
0
0
0
1
Cassaforte sincrona
001
00 01 11 10
000 000 000000
001 011 000 000001
001 010 000 000011
001 000 000 100010
001 000 000 000100
X1X2
-- -- -- --101
-- -- -- --111
-- -- -- --110
0
0
0
0
1
--
--
--
Y1Y2 Y3
a =gt 000b =gt 001g =gt 011d =gt 010e =gt 100
D1= X1X2Y2Y3
D2=X1X2Y3
D3=X1X2+X1Y2Y3 Z =Y1
Sintetizzando con FFD la sintesi degli ingressi Di si ottiene sintetizzando le funzioni Yi (Yn+1=Dn)
Nessun problema di corse codifica libera (possibilmente ottima)
19
Sintesi
Direttorio cassaforte sincrona
20
00 01 01 10
Sintesi ndash simulazione funzionale
NB Gli ingressi cambiano in modo NON sincrono con il clock ma lrsquo uscita egrave sincrona essendo la rete di tipo Moore
21
Sintesi ndash simulazione timing
Si notino i ritardi delle uscite dei FF e dei gates da esse dipendenti rispetto al fronte positivo del clock (ad esempio d) se la frequenza del clock fosse eccessiva il sistema NON funzionerebbe piugrave correttamente
d
22
E con Mealy
B
00 01 11 10
F A GA
B C A GB
B D A GCB F A ED
B F A GE
B F AA- GF
B F A GG
0
0
0
0
1
0
0
X1X2
B0
00 01 11 10
F0 A0 G0A
B0 C0 A0 G0B
B0 D0 A0 G0CB0 F0 A0 E1D
B1 F1 A1 G1E
B0 F0 A0A-G0F
B0 F0 A0 G0G
X1X2
Potrei mettere una indifferenza sullrsquouscita Si si possono mettere indifferenze sulle uscite che cambiano Anticipazione o ritardo del cambiamento
Sintetizzare e simulare con Altera
23
bull Allrsquoesame orale egrave necessario portare un esercizio di reti sincrone e uno di reti asincrone NON ldquomutuatordquo da altri hellip
bull I due esercizi debbono essere portati su una chiavetta (o dispositivo equivalente) debbono contenere una spiegazione e anche la progettazionesimulazione con Altera
bull Il candidato deve dimostrare di sapere usare il sistema Altera e spiegare i progetti portati
bull Gli esercizi di reti sincrone hanno spesso il diagramma degli stati ma solo per verificahellip
Monoimpulsore A
D1 Q1
Q1CKFFD
D2 Q2
Q2CKFFD Z1
D
Clock
Clock
D
Z
Q1
Q2
Qui lrsquoingresso asincrono D egrave sincronizzato dai FF Uscita Z sincrona
Generare un impulso di uscita di un periodo di clock per ingresso 1 Un ulteriore impulso viene generato solo se lrsquoingresso torna a 1 dopo essere stato a 0 Lrsquouscita deve essere sincronizzata con il clock
24
25
D1 Q1
Q1CKFFD
D2 Q2
Q2CKFFD Z
D
Clock
Monoimpulsore A
1
0
1
1
0
A0 B1
C0
0
A
A
A
-
B
C
C
-
DQ2
Q1
B
0 1
C
-
Z0
0
1
-
A 00
--
00
00
10
--
11
11
DQ2
Q1
01
0 1
11
10
Z0
0
-
1
0000
10
11
01
B
C
-
A
Q1=D Q2= DQ1 Z=Q1Q2
00
00
01
01
10
10
11
11
DQ2
Q1
01
0 1
11
10
Z0
0
0
1
00
MAhellip
Q1=D Q2= Q1 Z=Q1Q2
Moore necessariamente
26
D1 Q1
Q1CKFFD
D2 Q2
Q2CKFFD Z2
D
Clock
Monoimpulsore B
Clock
D
Z2
Q1
Q2
Lrsquoingresso asincrono D agisce direttamente sullrsquouscita Z che quindi risulta asincrona
Qui la rete egrave di tipo Mealy e quindi con ingresso asincrono egrave possibile che vi sia uscita asincrona
27
D Q
QCKFFD Z
D
Clock
Monoimpulsore C
Clock
D
Z
Q
Anche qui lrsquoingresso asincrono D agisce direttamente sullrsquouscita Z che quindi risulta asincronaSi noti che se lrsquoingresso oscilla una volta che il FF ha campionato un 1 e fino a quando non campiona uno 0 lrsquouscita oscilla
Qui la rete egrave di tipo Mealy e quindi con ingresso asincrono egrave possibile che vi sia uscita asincrona
28
Considerazioni sui monoimpulsori A B e C
Il diagramma degli stati corrispondente al funzionamento reale dei due monoimpulsori B e C NON puograve essere tracciato percheacute di fatto le due reti (di tipo Mealy) NON sono sincrone Infatti il diagramma di circuiti sincroni prevede implicitamente un comportamento sincrono anche degli ingressi fatto non verificato nei casi B e C
La cosa non vale per il monoimpulsore A in quanto pur essendo lrsquoingresso asincrono lrsquouscita (rete di tipo Moore) dipende solo dagli stati In altre parole il comportamento della rete rende intrinsecamente sincroni ingressi fisicamente asincroni
Il diagramma degli stati che riflette il comportamento delle due reti B e C puograve essere tracciato solo partendo da una analisi asincrona ldquoaprendordquo quindi i FF D inseriti Ovviamente egrave possibile progettare le due reti senza lrsquouso dei FF D partendo da un diagramma degli stati asincrono ldquotradizionalerdquo
A scopo di esercizio si suggerisce la sintesi e la simulazione con Altera dei tre monoimpulsori come reti asincrone Si tratta di circuiti on due ingressi Ck e D
29
Monoimpulsori A-B-C
30
31
Contatori
A B C D Z
Circuiti senza ingresso (a parte il clock) nella versione piugrave semplice
D0 Q0
Q0CKFFD
MUX
1
0D1 Q1
Q1CKFFD
(Il clock egrave spesso sottinteso nei circuiti sincroni)
U0 U1
Esempio contatore binario x 4 con decodifica del 3
000 010 100 111
OUT
Q1 cambia stato quando Q0 egrave a 1 e passa a 0
CK
u1
u0
OUT (0) (1) (2) (0) (1) (2)(3) (3)
Contatore x 4 con decodifica del 3
33
Contatori binari in base non potenza di 2
A B C D E
000 001 010 011 100Contatore
binario per 5
D0 Q0
Q0CKFFD
MUX
1
0 1D1 Q1
Q1CKFFD
MUX
1
0D Q2
Q2CKFFD
Questo conta x8 ma per contare x5 arrivati a 4 bisogna ritornare a 0
34
D0 Q0
Q0CKFFD D1 Q1
Q1CKFFD
MUX
1
0 D2 Q2
Q2CKFFD
MUX
1
0
ABC
ldquo4rdquo
Contatore x 5
Decoder
La decodifica del 4 porta a zero lrsquouscita del decodificatore e quindi a 0 tutte le uscite degli AND rosa e al successivo fronte positivo del clock i tre FF campionano uno ldquo0rdquo
Per esercizio sintetizzare un contatore x 100 partendo dalla sintesi di un contatore decimale ovvero di un contatore x10 (da sintetizzare) Quanti FF per un contatore decimale I contatori decimali si trovano integrati in Altera
ldquo3rdquo
35
Contatori con ingressi di controllo
Ex Contatore integrato x 16 con Load e Enable
bull Il contatore conta per 16 (0-15) se il segnale EN egrave a 1 Allorchegrave il segnale LD va a 1 il dato presente sugli ingressi D egrave inserito nei 4 FF (lrsquoingresso puograve essere sincrono o asincrono) Nel caso precedente il decodificatore del ldquo3rdquo (uscita vera va portato) allrsquoingresso LD con tutti i Di a zero
bull In generale il contatore fornisce anche unrsquouscita ldquocarryrdquo che va a 1 quando il contatore raggiunge il valore FF Questa uscita puograve essere connessa allrsquoenable di un contatore a valle per ottenere un contatore per 256 cosigrave via (Progettarlo come esercizio)
EN
Q0 Q1 Q2 Q3CKLD
D0 D1 D2 D3
EN
Q0 Q1 Q2 Q3CK
CYLD
D0 D1 D2 D3
bull Esistono contatori UPDOWN nei quali un ingresso (UD) seleziona se il conteggio deve avvenire avanti o indietro Nel caso sia selezionata la modalitagrave ldquoindietrordquo il carry si attiva quando si raggiunge il valore ldquotutti zerirdquo
bull Esiste una molteplicitagrave di contatori ciascuno con le proprie specifiche peculiaritagrave con o senza RESET (che normalmente agisce in modo asincrono) UD con o senza LD etc etc
NB qualunque circuito sincrono (con sequenza non binaria) riconducibile al diagramma degli stati di un contatore egrave sempre un contatore
101 010 000 111 110 Contatore x 5 non binario
36
74163 contatore reale x 16 con Load Reset e Enable (T e P)I segnali di controllo sono sincroni ovvero agiscono sul fronte positivo del clock (rising edge)
74138 decoder 38 con uscite negate se G2A e G2B entrambi a zero e G1 a 1 Altrimenti tutte uscite alte
Direttorio Counter Glitch
Contatore binario x 8 e glitches
37
Glitch
Simulazione timingNB la presenza e la durata del glitch dipende dalle caratteristiche elettriche dei dispositivi
dalla loro tecnologia etc Nel caso dei dispositivi Altera dipende dal tipo di dispositivo sul quale egrave realizzato il circuito Analogamente la sensibilitagrave di eventuali ingressi di clock collegati allrsquouscita con il glitch dipende dalle caratteristiche del dispositivo Se ad esempio nel dispositivo Altera utilizzato si collega allrsquouscita Y6 il clock di un FFD non si ha commutazione del FF ma questo non egrave vero in assoluto
38
Cosa succede al contatore X5 progettato precedentemente se allrsquoaccensione non disponendo di un segnale di RESET i FF si portano in uno stato non facente parte del cicloNB La condizione allrsquoaccensione egrave del tutto casuale e dipende unicamente dalle condizioni elettriche
di realizzazione Ersquo impredicibileSupponiamo che i FF si portino al valore 110 (il numero 6 fuori dal ciclo) Analizziamo il comportamento
D0 Q0Q0CK
FFD D1 Q1Q1CK
FFD
MUX
1
0 D2 Q2Q2CK
FFD
MUX
1
0
ABC
ldquo4rdquo
000 001 010 011 100 110 111
In questo caso ci si riporta nella situazione di conteggio regolare (verificare con la tabella degli stati ) ma il comportamento in generale dipende dalla realizzazione e in altre realizzazione i due stati potrebbero essere separati dal ciclo principale che quindi non verrebbe mai raggiunto Ecco la funzione del RESET
39
Solo come esempio (da non utilizzare ) a scopo didattico vediamo la tabella delle transizioni di un contatore per 6 UpDown con comando di Reset I segnali di ingresso cambiano in modo asincrono ma hanno effetto in modo sincrono
Per compensare allrsquoaccensione
Sintetizzare e simulareCome dovrebbe essere modificato lo schema in Altera per permettere di
ldquopresettarerdquo in modo asincrono il contatore a un particolare valore di ingresso
00 01 11 10UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
111
110
000 101
000
101
y3 y2 y100 01 11 10
UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
000 000111
000 000 000 000110
000 101
000
000 000
101
y3 y2 y1
40
D0Q0
CKFFD
Clocky2
DEC
y3
y2
y1
ldquo1rdquo
ldquo2rdquo
ldquo3rdquo
ldquo4rdquo
1
0
UPDown
Sintesi di y2 in modo ldquodirettordquo
1
0
00 01 11 10UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
000 000111
000 000 000 000110
000 101
000
000 000
101
y3 y2 y1
41
Cassaforte hellipDisponendo di un contatore per 8 (ma anche per 16 etc) con reset sincrono e sempre abilitato al conteggio come potrei realizzare il circuito di apertura della cassaforte (sequenza X1X2 00-01-01-10) con modello Moore
Cx8RES
Q0 Q1 Q2 CK
RES= (ldquo0rdquoX1X2 + ldquo1rdquo X1X2 + ldquo2rdquo X1X2 + ldquo3rdquo X1 X2)Z = ldquo4rdquo (ldquo0rdquordquo1rdquordquo2rdquordquo3rdquordquo4rdquo sono le decodifiche binarie delle tre uscite del contatore)
Il contatore si resetta ogni volta che non si presenta lrsquoingresso giusto relativo al particolare stato Ilcontatore quindi si resetta e rimane resettato se non nelle condizioni espresse dalla funzione RESIl contatore arrivato a 4 (Z=1) si resetta comunque al successivo fronte del clock
Le reti sincrone si progettano sempre come combinazione di blocchi disponibili e logica ldquorandomrdquo
ABC
ldquo0rdquoldquo1rdquoldquo2rdquoldquo3rdquoldquo4rdquo
RLAND-OR
X1X2
RESZ
Cx8RES
Q0 Q1 Q2 CK
42
Contatori
EN
Q0 Q1 Q2 Q3CKCY
RESET
bull Attenzione Consideriamo il contatore di figura (questa volta con RESET asincrono) e supponiamo di utilizzarlo per contare per 5 (NB per il Reset si usa il ldquo5rdquo in questo casohellip glitch)
ABCD
ldquo5rdquo
ldquo1rdquo Percheacute questo schema egrave sbagliato
bull Percheacute presenta una corsa critica Nel momento in cui anche uno solo dei FF si resetta (e non tutti nello stesso istante) viene a mancare la configurazione ldquo4rdquo sul decoder e quindi alcuni FF potrebbero non fare in tempo a resettarsi E allora
EN
Q0 Q1 Q2 Q3CKCY
RESET
ABCD
ldquo5rdquo
ldquo1rdquo
RS
Y ldquo0rdquo
bull Cosigrave facendo il ldquo4rdquo attiva il SET e il FF NON si resetta fino a quando non egrave stato raggiunto la ldquo0rdquo NB lo schema ldquosbagliatordquo si puograve usare solo se si egrave certi della rapiditagrave di reset dei FF del contatore
bull Verificare con Altera
Sintesi cassaforte con moduli
Altera Cassaforte sincrona con moduli
Rete di controllo
Contatore con Reset asincrono e Load sincrono
43
NB In questo progetto la sintesi egrave stata condotta in modo ldquodirettordquo ovvero senza passare per la sintesi formale e utilizzando componenti disponibili e helliphellip materia grigia La sintesi dei circuiti sincroni si fa sempre e unicamente cosigrave
44
Simulazione funzionale (no timing)
NB I segnali di ingresso sono campionati SOLO sul fronte positivo del clock anche se si presentano asincroni Il segnale di uscita si attiva al clock successivo al riconoscimento della sequenza La posizione di ldquoriposordquo del contatore egrave il valore 4 I segnali Yi sono le decodifiche dei segnali di di ingresso X1 e X2
00 01 01 10
45
Simulazione timing
46
NB Si egrave scelto di utilizzare SOLO gli ingressi SINCRONI del contatore per semplicitagrave Il contatore rimane al valore 100 fino a quando non si presenta allrsquoingresso il valore 00 Se la sequenza egrave esatta il contatore continua a contare in avanti fino alla generazione dellrsquouscita (valore 11 del contatore) altrimenti si riporta al valore 100 ovvero Qc=1) Il segnale GN (Gate Not) egrave quello che abilita il conteggio Il sistema riamane stabile a 000 per una sequenza lunga a piacere di X1=0 e X2=0 e si sposta quando dopo 00 si ha 01 Come si evince dalla simulazione se la sequenza non egrave corretta o egrave interrotta il contatore si riporta sempre a 100
00 01 11 10
001 000 000
X1
000000 010 100 100001
000 100 100 011010
100 100 100 100011
000 100 100 100100
000 100 100 100101
000 100 100 100110
000 100 100 100111
0
0
0
1
0
0
0
0
X2
000
NB la tabella delle transizioni derivata della rete realizzata NON ha ovviamente condizioni di indifferenza
47
Progettare un contatore packed BCD updown a 8 bit (due digit)
48
Generazione di forme drsquoondabull Ersquo possibile generare forme drsquoonda periodiche mediante circuiti sincroni di periodo
sottomultiplo intero del clock
Esempio 1Divisore di frequenza per 2
D0k Q0k
CK D Q
CK Clock
Q
Esempio 2 generare una forma drsquoonda periodica con periodo 5T (ove T sia il periodo del clock) in cui in un semiperiodo 3T lrsquouscita sia alta e nellrsquoaltro semiperiodo 2T lrsquouscita sia bassa
Q0 Q1 Q2 CK
Cx5
C
B
A
01234
DecoderDemux
Clock
ZZ T
3T2T
3T
NB una rete logica egrave in grado di effettuare delle divisioni di frequenza e mai delle moltiplicazioni di frequenza (che si possono ottenere solo con circuiti analogici non lineari)
49
Di che circuito si tratta
D0k Q0k
CK D0 Q0
CKQ0
D0k Q0k
CK D1 Q1
CK
D0k Q0k
CK D2 Q2
CKClock
Clock
Q0
Q1
Q2
Ersquo un contatore binario ma non sincrono Infatti i vari FF NON utilizzano lo stesso clock e questo porta a un piccolo disallineamento sulle uscite Non egrave sintetizzabile come una rete sincrona e una sintesi formale sarebbe possibile solo trattando il circuito come asincrono ovvero ldquoaprendordquo i FF Sarebbe possibile trasformarlo in un contatore x6 mantenendo la stessa impostazione
Sintetizzare e simulare con Altera
NB il segnale di clock non egrave in comune
50
7493
51
Altera Contatore asincrono
Contatore asincrono
52
Simulazione timing
53
Come puograve essere utilizzato un FFD per catturare un impulso piugrave breve di un periodo
D2 Q2
Q2CKFFD Z
Clock
D1 Q1
Q1CKFFD
D0 Q00
Q0CKFFD
ldquo1rdquo CL
Lrsquoimpulso breve viene catturato dal FF 0 (purcheacute di larghezza sufficiente per la tecnologia del FF) - che quindi agisce come integratore ndash la cui uscita alimenta il monoimpulsore di tipo A Lrsquoattivazione del FF 1 resetta il FF 0 (supponendo che il segnale di CL sia ldquopositiverdquotruerdquo)
Ci puograve essere un problema se il CL agisce in modo asincrono
NB questo circuito e quello del lucido precedente evidenziano il fatto che nella realtagrave nessuna rete egrave solo sincrona ma bensigrave egrave pressocheacute sempre necessario utilizzare reti di natura diversa anche percheacute vi egrave sempre una interazione fra reti con clock diversi eo con segnali provenienti dal mondo esterno NON sincronizzati con il clock
Monoimpulsore di tipo A ldquorivistordquo
54
bull Uno shift register a sinistra (a destra) egrave un registro composto da FFD che ad ogni clock trasferisce il valore del FF a destra (a sinistra) di ciascun FF nel FF stesso Nel FF piugrave a destra (sinistra) viene immesso uno ldquo0rdquo Questi tipi di registri shift si chiamano ldquologicirdquo
Shift register (registri a traslazione o scorrimento)
D0kQ0k
CK DnQn
CK
D0kQ0k
CK Dn-1Qn-1
CK
D0kQ0k
CK Dn-2Qn-2
CK
D0kQ0k
CK D0Q0
CK
ldquo0rdquo
Shift register a sinistra
bull Anche per i registri a traslazione esistono diverse versioni con ingresso parallelo e uscita seriale con ingresso seriale e uscita parallela con reset con load etc etc
bull Si noti che uno shift register egrave anche un contatore Si immagini per esempio che dopo un reset siano inseriti degli uni a partire da destra Lo shift register si riempie progressivamente di uni e quindi la posizione in cui egrave arrivato lrsquouno indica il valore del conteggio in base a un codice ldquouno su nrdquo (un codice decodificato)
bull Spesso uno stesso registro puograve traslare a destra o a sinistra in funzione di una segnale di controllo Ovviamente questo si ottiene premettendo a ogni ingresso Di un MUX a due vie che preleva in funzione del segnale di controllo Qigrave+1 o Qigrave-1 Con questa configurazione lo shift register diventa anche un contatore avantiindietro
Registro a scorrimento (shift-register) a 3 bit
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
IN
OUT2OUT1OUT0
CK
CK
IN
A_RESET
OUT1
OUT2
OUT0
Registro a scorrimento (shift-register) a 3 bit
57
Esempio 74164 (serial In parallel OUT)
bull In questo registro a traslazione ad ogni fronte positivo del clock i dati sono traslati a destra (Q0 -gt Q1 Q1-gtQ2 etc) Il registro egrave dotato in un Master Reset (vero negato) e il dato inserito nel FF Q0 egrave dato dallrsquoAND dei due ingressi Dsa e Dsb
bull Si noti che lrsquooperazione di shift corrisponde aritmeticamente alle operazioni di divisione e moltiplicazione per 2 Si supponga che in Q0 vi sia il bit meno significativo e in Q7 il meno significativo
0 1 1 0 1 0 1 0
010101102 = 10810
Shift left =gt x2
Shift right =gt 2
101011002 = 21610
001010112 = 5910
NB nel dispositivo i bit sono posti in ordine invertito e quindi un shift left del numero corrisponde a uno shift right sul dispositivo
58
bull Esistono anche i registri a traslazione ldquoaritmeticirdquo In questi shift register a destra anzicheacute fare entrare nel FF piugrave a sinistra lo ldquo0rdquo viene immesso sempre ripetutamente il suo valore logico
Shift aritmetico
Q7 Q6 Q5 Q4 Q3 Q2 Q1 Q0
D7 D6 D5 D4 D3 D2 D1 D0
I LDCK Esempio
11001010SRA
11100101 interpretato in complemento a 2
001101102=5410
C2 C2
000110112=2710
bull Lo shift aritmetico a destra effettua una divisione per 2 mantenendo il segno
59
Rotazione
Nei computer egrave sovente necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register
D0kQ0k
CK DnQn
CK
D0kQ0k
CK Dn-1Qn-1
CK
D0kQ0k
CK Dn-2Qn-2
CK
D0kQ0k
CK D0Q0
CK
Molto spesso nei computer egrave necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register con direzione programmabile In questo caso su D0 ad esempio puograve essere avviato o Q1 o Qn
60
Contatori con shift register ndash Contatore retroazionato EX-OR
Q2Q0
Shift right 3 bitDQ1
110 111 011 101 010 001
Diagramma degli stati disgiunto
Uno shift register con n FF retroazionato con un EX-OR (scelta degli ingressi variabile) egrave un contatore NON binario che conta per 2n-1 (purcheacute presettato a un valore diverso da tutti zeri)
000
100
61
Contatore di Johnson (riempimento e svuotamento)
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
000-gt100-gt110-gt111-gt011-gt001-gt000-gtStati isolati 101-gt010-gt101gt1
Poicheacute configurazioni adiacenti del codice Johnson differiscono di un solo bit il contatore puograve essere utilizzato per generare forme drsquoonda prive di alee
62
Contatore ad anello con un solo 1 (ovvero che genera direttamente il codice 1su n)
FFDD Q
QR
RESET
FFDD Q
QR
RESET
FFDD Q
QPR
RESET
OUT3OUT1OUT0
CK
FFDD Q
QR
RESET
OUT2
0001-gt1000-gt0100-gt0010-gt0010n FF per contare per n (mentre con i contatori binari il numero dei FF egrave il log2m ove m egrave il primo intero maggiore o uguale a n)
63
Barrel shifter (rotore)Un barrel shifter egrave uno shift register in grado di traslare di ldquonrdquo posizioni in un solo clock il contenuto dei suoi FF In figura egrave riportato il barrel shifter della Altera Gli ingressi A-H in presenza dellrsquoattivazione del segnale LDST al primo fronte positivo del clock sono depositati nei FF Quando LDST egrave 0 ad ogni fronte positivo del clock i bit di uscita sono ruotati di n posizioni in senso antiorario (ovvero lrsquouscita H diventa la G la G diventa la Fhellipe lrsquouscita A diventa la H) ove n egrave il valore binario indicato dai segnali S0 S1 e S2
Si noti che il circuito in questione egrave di fatto un registro con 8 FF allrsquoingresso di ciascuno dei quali egrave previsto un MUX a 8 vie che pilotato dai segnali S0 S1 e S2 che seleziona uno degli 8 uscite del dispositivo La struttura interna puograve essere osservata ldquoclikkandordquo due volte sul dispositivo nello schema di Altera
64
Barrel shifter
6565
66
Simulazione timing
67
bull Utilizzando il sistema Altera progettare un orologio con secondi minuti ora partendo da un oscillatore a quarzo con frequenza 500 KHz
bull E se si volesse proseguire e realizzare anche un datario (giorno mese e anno )
bull Come potrebbe essere integrato con una sveglia Si ricordi che lrsquoorologio deve essere anche essere ldquopresettatordquo
bull Quali circuiti utilizzare per la visualizzazione
68
EPROM
X0nZ0m
y0kY0k
Clock
D0kQ0k
FFD0k
CK D0kQ0k CK
Reti sincrone con EPROM
Al posto delle EPROM si utilizzano ora dei PLA ovvero dispositivi nei quali si nei quali le funzioni combinatorie sono ottimizzate ma il principio egrave assolutamente il medesimo
69
Progettare con Altera una rete logica sincrona che utilizzando registri 374 ALU 74181 un contatore e altri dispositivi ritenuti necessari permetta di eseguire in sequenza la somma di due dati di 4 bit senza segno ingresso esegua il complemento a 2 inverta la parte bassa con la parte alta del risultato e infine moltiplichi il tutto logicamente per 2
La soluzione egrave sempre decomponibile in tre sottosistemi il controllo con la sua decodifica (unitagrave di controllo) il percorso dei dati con le unitagrave che li trasformano (datapath) e i registri di deposito e di ingresso dei dati
Questa egrave la struttura base di qualunque unitagrave centrale di qualunque computer
La differenza consiste solo nel fatto che anzicheacute avere una sequenza fissa di operazioni ne viene generata una volta a volta che dipende appunto dalla istruzione che deve essere eseguita Come si vedragrave approfonditamente nel corso di Calcolatori T del II anno (prof Neri e Mattoccia)
Arrivederci al corso di Calcolatori T del II anno (sapendo perfettamente le reti logiche helliphellip)
15
Esempio la cassaforte (dotata di una doppia tastiera - due ingressi) si apre solo se gli ingressi hanno assunto NEL TEMPO le configurazioni
00-01-01-10 Ogni violazione della sequenza riporta il sistema nello stato iniziale NB Essendo gli ingressi campionati la sequenza di ingresso 01-01 egrave possibile e significativa
hellip Cassaforte hellip sincrona hellip
NB si puograve supporre che gli ingressi cambino allo stesso istante delle variabili di stato ma la cosa non egrave necessaria Se la rete egrave di tipo Moore anche se gli ingressi cambiano a metagrave di un periodo di clock il comportamento dal punto di vista degli stati e quindi delle uscite egrave assolutamente lo stesso (ogni variazione egrave rilevata solo alla fine del periodo)
E11101
0111
11
F0
01
01
G0
0000
11 00
11
11
10
1001
10
00
10 0110
01
01
00
Per ogni stato tutte le combinazioni di ingresso
00
10
10
11
C0A0 B0 D0
Gli stati NON sono stabili per gli ingressi che li hanno provocati
00
B
00 01 11 10
F A GA
B C A GB
B D A GCB F A ED
B F A GE
B F AA- GF
B F A GG
0
0
0
0
1
0
0
X1X2
A0 B0 C0 E10011
01
10
0111
11
11
D0 10
F0
01
01
G0
0000
00
00
11
11
10
1001
1010 0110
01
11
00
Cassaforte sincrona
16
01
NB in questo esempio non vi sono condizioni di indifferenza Anzicheacute di stati compatibili si parla qui di stati equivalenti Ove poi due stati per gli stessi ingressi abbiano uscite identiche e portino agli stessi stati si parla di stati indistinguibili Naturalmente la descrizione a parole puograve evidenziare che alcune combinazioni di ingresso per alcuni stati non si presentano In questo caso si ritorna al concetto di compatibilitagrave
00
17
Cassaforte sincrona
Classi di equivalenza [AFG] =gt a[B] =gt b[C] =gt g[D] =gt d[E] =gt e
B
00 01 11 10
F A GA
B C A GB
B D A GCB F A ED
B F A GE
B F AA- GF
B F A GG
0
0
0
0
1
0
0
X1X2
B
C
D
E
F
G
A B C D E F
CF
FD CD
CFGE
CFGE
DFGE
--- CF DF GE
--- C F DF GE --
b
00 01 11 10
a a aa
b g a ab
b d a ag
b a a ed
b a a ae
X1X2
0
0
0
0
1 NB nel caso di tabelle completamente specificate le classi (massime) di equivalenza non hanno mai stati in comune Vanno usate tutte quindi Non esiste problema di chiusura
Ovviamente 5 stati 4 facenti parte della sequenza e uno esterno
18
b
00 01 11 10
a a aa
b g a ab
b d a ag
b a a ed
b a a ae
X1X2
0
0
0
0
1
Cassaforte sincrona
001
00 01 11 10
000 000 000000
001 011 000 000001
001 010 000 000011
001 000 000 100010
001 000 000 000100
X1X2
-- -- -- --101
-- -- -- --111
-- -- -- --110
0
0
0
0
1
--
--
--
Y1Y2 Y3
a =gt 000b =gt 001g =gt 011d =gt 010e =gt 100
D1= X1X2Y2Y3
D2=X1X2Y3
D3=X1X2+X1Y2Y3 Z =Y1
Sintetizzando con FFD la sintesi degli ingressi Di si ottiene sintetizzando le funzioni Yi (Yn+1=Dn)
Nessun problema di corse codifica libera (possibilmente ottima)
19
Sintesi
Direttorio cassaforte sincrona
20
00 01 01 10
Sintesi ndash simulazione funzionale
NB Gli ingressi cambiano in modo NON sincrono con il clock ma lrsquo uscita egrave sincrona essendo la rete di tipo Moore
21
Sintesi ndash simulazione timing
Si notino i ritardi delle uscite dei FF e dei gates da esse dipendenti rispetto al fronte positivo del clock (ad esempio d) se la frequenza del clock fosse eccessiva il sistema NON funzionerebbe piugrave correttamente
d
22
E con Mealy
B
00 01 11 10
F A GA
B C A GB
B D A GCB F A ED
B F A GE
B F AA- GF
B F A GG
0
0
0
0
1
0
0
X1X2
B0
00 01 11 10
F0 A0 G0A
B0 C0 A0 G0B
B0 D0 A0 G0CB0 F0 A0 E1D
B1 F1 A1 G1E
B0 F0 A0A-G0F
B0 F0 A0 G0G
X1X2
Potrei mettere una indifferenza sullrsquouscita Si si possono mettere indifferenze sulle uscite che cambiano Anticipazione o ritardo del cambiamento
Sintetizzare e simulare con Altera
23
bull Allrsquoesame orale egrave necessario portare un esercizio di reti sincrone e uno di reti asincrone NON ldquomutuatordquo da altri hellip
bull I due esercizi debbono essere portati su una chiavetta (o dispositivo equivalente) debbono contenere una spiegazione e anche la progettazionesimulazione con Altera
bull Il candidato deve dimostrare di sapere usare il sistema Altera e spiegare i progetti portati
bull Gli esercizi di reti sincrone hanno spesso il diagramma degli stati ma solo per verificahellip
Monoimpulsore A
D1 Q1
Q1CKFFD
D2 Q2
Q2CKFFD Z1
D
Clock
Clock
D
Z
Q1
Q2
Qui lrsquoingresso asincrono D egrave sincronizzato dai FF Uscita Z sincrona
Generare un impulso di uscita di un periodo di clock per ingresso 1 Un ulteriore impulso viene generato solo se lrsquoingresso torna a 1 dopo essere stato a 0 Lrsquouscita deve essere sincronizzata con il clock
24
25
D1 Q1
Q1CKFFD
D2 Q2
Q2CKFFD Z
D
Clock
Monoimpulsore A
1
0
1
1
0
A0 B1
C0
0
A
A
A
-
B
C
C
-
DQ2
Q1
B
0 1
C
-
Z0
0
1
-
A 00
--
00
00
10
--
11
11
DQ2
Q1
01
0 1
11
10
Z0
0
-
1
0000
10
11
01
B
C
-
A
Q1=D Q2= DQ1 Z=Q1Q2
00
00
01
01
10
10
11
11
DQ2
Q1
01
0 1
11
10
Z0
0
0
1
00
MAhellip
Q1=D Q2= Q1 Z=Q1Q2
Moore necessariamente
26
D1 Q1
Q1CKFFD
D2 Q2
Q2CKFFD Z2
D
Clock
Monoimpulsore B
Clock
D
Z2
Q1
Q2
Lrsquoingresso asincrono D agisce direttamente sullrsquouscita Z che quindi risulta asincrona
Qui la rete egrave di tipo Mealy e quindi con ingresso asincrono egrave possibile che vi sia uscita asincrona
27
D Q
QCKFFD Z
D
Clock
Monoimpulsore C
Clock
D
Z
Q
Anche qui lrsquoingresso asincrono D agisce direttamente sullrsquouscita Z che quindi risulta asincronaSi noti che se lrsquoingresso oscilla una volta che il FF ha campionato un 1 e fino a quando non campiona uno 0 lrsquouscita oscilla
Qui la rete egrave di tipo Mealy e quindi con ingresso asincrono egrave possibile che vi sia uscita asincrona
28
Considerazioni sui monoimpulsori A B e C
Il diagramma degli stati corrispondente al funzionamento reale dei due monoimpulsori B e C NON puograve essere tracciato percheacute di fatto le due reti (di tipo Mealy) NON sono sincrone Infatti il diagramma di circuiti sincroni prevede implicitamente un comportamento sincrono anche degli ingressi fatto non verificato nei casi B e C
La cosa non vale per il monoimpulsore A in quanto pur essendo lrsquoingresso asincrono lrsquouscita (rete di tipo Moore) dipende solo dagli stati In altre parole il comportamento della rete rende intrinsecamente sincroni ingressi fisicamente asincroni
Il diagramma degli stati che riflette il comportamento delle due reti B e C puograve essere tracciato solo partendo da una analisi asincrona ldquoaprendordquo quindi i FF D inseriti Ovviamente egrave possibile progettare le due reti senza lrsquouso dei FF D partendo da un diagramma degli stati asincrono ldquotradizionalerdquo
A scopo di esercizio si suggerisce la sintesi e la simulazione con Altera dei tre monoimpulsori come reti asincrone Si tratta di circuiti on due ingressi Ck e D
29
Monoimpulsori A-B-C
30
31
Contatori
A B C D Z
Circuiti senza ingresso (a parte il clock) nella versione piugrave semplice
D0 Q0
Q0CKFFD
MUX
1
0D1 Q1
Q1CKFFD
(Il clock egrave spesso sottinteso nei circuiti sincroni)
U0 U1
Esempio contatore binario x 4 con decodifica del 3
000 010 100 111
OUT
Q1 cambia stato quando Q0 egrave a 1 e passa a 0
CK
u1
u0
OUT (0) (1) (2) (0) (1) (2)(3) (3)
Contatore x 4 con decodifica del 3
33
Contatori binari in base non potenza di 2
A B C D E
000 001 010 011 100Contatore
binario per 5
D0 Q0
Q0CKFFD
MUX
1
0 1D1 Q1
Q1CKFFD
MUX
1
0D Q2
Q2CKFFD
Questo conta x8 ma per contare x5 arrivati a 4 bisogna ritornare a 0
34
D0 Q0
Q0CKFFD D1 Q1
Q1CKFFD
MUX
1
0 D2 Q2
Q2CKFFD
MUX
1
0
ABC
ldquo4rdquo
Contatore x 5
Decoder
La decodifica del 4 porta a zero lrsquouscita del decodificatore e quindi a 0 tutte le uscite degli AND rosa e al successivo fronte positivo del clock i tre FF campionano uno ldquo0rdquo
Per esercizio sintetizzare un contatore x 100 partendo dalla sintesi di un contatore decimale ovvero di un contatore x10 (da sintetizzare) Quanti FF per un contatore decimale I contatori decimali si trovano integrati in Altera
ldquo3rdquo
35
Contatori con ingressi di controllo
Ex Contatore integrato x 16 con Load e Enable
bull Il contatore conta per 16 (0-15) se il segnale EN egrave a 1 Allorchegrave il segnale LD va a 1 il dato presente sugli ingressi D egrave inserito nei 4 FF (lrsquoingresso puograve essere sincrono o asincrono) Nel caso precedente il decodificatore del ldquo3rdquo (uscita vera va portato) allrsquoingresso LD con tutti i Di a zero
bull In generale il contatore fornisce anche unrsquouscita ldquocarryrdquo che va a 1 quando il contatore raggiunge il valore FF Questa uscita puograve essere connessa allrsquoenable di un contatore a valle per ottenere un contatore per 256 cosigrave via (Progettarlo come esercizio)
EN
Q0 Q1 Q2 Q3CKLD
D0 D1 D2 D3
EN
Q0 Q1 Q2 Q3CK
CYLD
D0 D1 D2 D3
bull Esistono contatori UPDOWN nei quali un ingresso (UD) seleziona se il conteggio deve avvenire avanti o indietro Nel caso sia selezionata la modalitagrave ldquoindietrordquo il carry si attiva quando si raggiunge il valore ldquotutti zerirdquo
bull Esiste una molteplicitagrave di contatori ciascuno con le proprie specifiche peculiaritagrave con o senza RESET (che normalmente agisce in modo asincrono) UD con o senza LD etc etc
NB qualunque circuito sincrono (con sequenza non binaria) riconducibile al diagramma degli stati di un contatore egrave sempre un contatore
101 010 000 111 110 Contatore x 5 non binario
36
74163 contatore reale x 16 con Load Reset e Enable (T e P)I segnali di controllo sono sincroni ovvero agiscono sul fronte positivo del clock (rising edge)
74138 decoder 38 con uscite negate se G2A e G2B entrambi a zero e G1 a 1 Altrimenti tutte uscite alte
Direttorio Counter Glitch
Contatore binario x 8 e glitches
37
Glitch
Simulazione timingNB la presenza e la durata del glitch dipende dalle caratteristiche elettriche dei dispositivi
dalla loro tecnologia etc Nel caso dei dispositivi Altera dipende dal tipo di dispositivo sul quale egrave realizzato il circuito Analogamente la sensibilitagrave di eventuali ingressi di clock collegati allrsquouscita con il glitch dipende dalle caratteristiche del dispositivo Se ad esempio nel dispositivo Altera utilizzato si collega allrsquouscita Y6 il clock di un FFD non si ha commutazione del FF ma questo non egrave vero in assoluto
38
Cosa succede al contatore X5 progettato precedentemente se allrsquoaccensione non disponendo di un segnale di RESET i FF si portano in uno stato non facente parte del cicloNB La condizione allrsquoaccensione egrave del tutto casuale e dipende unicamente dalle condizioni elettriche
di realizzazione Ersquo impredicibileSupponiamo che i FF si portino al valore 110 (il numero 6 fuori dal ciclo) Analizziamo il comportamento
D0 Q0Q0CK
FFD D1 Q1Q1CK
FFD
MUX
1
0 D2 Q2Q2CK
FFD
MUX
1
0
ABC
ldquo4rdquo
000 001 010 011 100 110 111
In questo caso ci si riporta nella situazione di conteggio regolare (verificare con la tabella degli stati ) ma il comportamento in generale dipende dalla realizzazione e in altre realizzazione i due stati potrebbero essere separati dal ciclo principale che quindi non verrebbe mai raggiunto Ecco la funzione del RESET
39
Solo come esempio (da non utilizzare ) a scopo didattico vediamo la tabella delle transizioni di un contatore per 6 UpDown con comando di Reset I segnali di ingresso cambiano in modo asincrono ma hanno effetto in modo sincrono
Per compensare allrsquoaccensione
Sintetizzare e simulareCome dovrebbe essere modificato lo schema in Altera per permettere di
ldquopresettarerdquo in modo asincrono il contatore a un particolare valore di ingresso
00 01 11 10UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
111
110
000 101
000
101
y3 y2 y100 01 11 10
UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
000 000111
000 000 000 000110
000 101
000
000 000
101
y3 y2 y1
40
D0Q0
CKFFD
Clocky2
DEC
y3
y2
y1
ldquo1rdquo
ldquo2rdquo
ldquo3rdquo
ldquo4rdquo
1
0
UPDown
Sintesi di y2 in modo ldquodirettordquo
1
0
00 01 11 10UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
000 000111
000 000 000 000110
000 101
000
000 000
101
y3 y2 y1
41
Cassaforte hellipDisponendo di un contatore per 8 (ma anche per 16 etc) con reset sincrono e sempre abilitato al conteggio come potrei realizzare il circuito di apertura della cassaforte (sequenza X1X2 00-01-01-10) con modello Moore
Cx8RES
Q0 Q1 Q2 CK
RES= (ldquo0rdquoX1X2 + ldquo1rdquo X1X2 + ldquo2rdquo X1X2 + ldquo3rdquo X1 X2)Z = ldquo4rdquo (ldquo0rdquordquo1rdquordquo2rdquordquo3rdquordquo4rdquo sono le decodifiche binarie delle tre uscite del contatore)
Il contatore si resetta ogni volta che non si presenta lrsquoingresso giusto relativo al particolare stato Ilcontatore quindi si resetta e rimane resettato se non nelle condizioni espresse dalla funzione RESIl contatore arrivato a 4 (Z=1) si resetta comunque al successivo fronte del clock
Le reti sincrone si progettano sempre come combinazione di blocchi disponibili e logica ldquorandomrdquo
ABC
ldquo0rdquoldquo1rdquoldquo2rdquoldquo3rdquoldquo4rdquo
RLAND-OR
X1X2
RESZ
Cx8RES
Q0 Q1 Q2 CK
42
Contatori
EN
Q0 Q1 Q2 Q3CKCY
RESET
bull Attenzione Consideriamo il contatore di figura (questa volta con RESET asincrono) e supponiamo di utilizzarlo per contare per 5 (NB per il Reset si usa il ldquo5rdquo in questo casohellip glitch)
ABCD
ldquo5rdquo
ldquo1rdquo Percheacute questo schema egrave sbagliato
bull Percheacute presenta una corsa critica Nel momento in cui anche uno solo dei FF si resetta (e non tutti nello stesso istante) viene a mancare la configurazione ldquo4rdquo sul decoder e quindi alcuni FF potrebbero non fare in tempo a resettarsi E allora
EN
Q0 Q1 Q2 Q3CKCY
RESET
ABCD
ldquo5rdquo
ldquo1rdquo
RS
Y ldquo0rdquo
bull Cosigrave facendo il ldquo4rdquo attiva il SET e il FF NON si resetta fino a quando non egrave stato raggiunto la ldquo0rdquo NB lo schema ldquosbagliatordquo si puograve usare solo se si egrave certi della rapiditagrave di reset dei FF del contatore
bull Verificare con Altera
Sintesi cassaforte con moduli
Altera Cassaforte sincrona con moduli
Rete di controllo
Contatore con Reset asincrono e Load sincrono
43
NB In questo progetto la sintesi egrave stata condotta in modo ldquodirettordquo ovvero senza passare per la sintesi formale e utilizzando componenti disponibili e helliphellip materia grigia La sintesi dei circuiti sincroni si fa sempre e unicamente cosigrave
44
Simulazione funzionale (no timing)
NB I segnali di ingresso sono campionati SOLO sul fronte positivo del clock anche se si presentano asincroni Il segnale di uscita si attiva al clock successivo al riconoscimento della sequenza La posizione di ldquoriposordquo del contatore egrave il valore 4 I segnali Yi sono le decodifiche dei segnali di di ingresso X1 e X2
00 01 01 10
45
Simulazione timing
46
NB Si egrave scelto di utilizzare SOLO gli ingressi SINCRONI del contatore per semplicitagrave Il contatore rimane al valore 100 fino a quando non si presenta allrsquoingresso il valore 00 Se la sequenza egrave esatta il contatore continua a contare in avanti fino alla generazione dellrsquouscita (valore 11 del contatore) altrimenti si riporta al valore 100 ovvero Qc=1) Il segnale GN (Gate Not) egrave quello che abilita il conteggio Il sistema riamane stabile a 000 per una sequenza lunga a piacere di X1=0 e X2=0 e si sposta quando dopo 00 si ha 01 Come si evince dalla simulazione se la sequenza non egrave corretta o egrave interrotta il contatore si riporta sempre a 100
00 01 11 10
001 000 000
X1
000000 010 100 100001
000 100 100 011010
100 100 100 100011
000 100 100 100100
000 100 100 100101
000 100 100 100110
000 100 100 100111
0
0
0
1
0
0
0
0
X2
000
NB la tabella delle transizioni derivata della rete realizzata NON ha ovviamente condizioni di indifferenza
47
Progettare un contatore packed BCD updown a 8 bit (due digit)
48
Generazione di forme drsquoondabull Ersquo possibile generare forme drsquoonda periodiche mediante circuiti sincroni di periodo
sottomultiplo intero del clock
Esempio 1Divisore di frequenza per 2
D0k Q0k
CK D Q
CK Clock
Q
Esempio 2 generare una forma drsquoonda periodica con periodo 5T (ove T sia il periodo del clock) in cui in un semiperiodo 3T lrsquouscita sia alta e nellrsquoaltro semiperiodo 2T lrsquouscita sia bassa
Q0 Q1 Q2 CK
Cx5
C
B
A
01234
DecoderDemux
Clock
ZZ T
3T2T
3T
NB una rete logica egrave in grado di effettuare delle divisioni di frequenza e mai delle moltiplicazioni di frequenza (che si possono ottenere solo con circuiti analogici non lineari)
49
Di che circuito si tratta
D0k Q0k
CK D0 Q0
CKQ0
D0k Q0k
CK D1 Q1
CK
D0k Q0k
CK D2 Q2
CKClock
Clock
Q0
Q1
Q2
Ersquo un contatore binario ma non sincrono Infatti i vari FF NON utilizzano lo stesso clock e questo porta a un piccolo disallineamento sulle uscite Non egrave sintetizzabile come una rete sincrona e una sintesi formale sarebbe possibile solo trattando il circuito come asincrono ovvero ldquoaprendordquo i FF Sarebbe possibile trasformarlo in un contatore x6 mantenendo la stessa impostazione
Sintetizzare e simulare con Altera
NB il segnale di clock non egrave in comune
50
7493
51
Altera Contatore asincrono
Contatore asincrono
52
Simulazione timing
53
Come puograve essere utilizzato un FFD per catturare un impulso piugrave breve di un periodo
D2 Q2
Q2CKFFD Z
Clock
D1 Q1
Q1CKFFD
D0 Q00
Q0CKFFD
ldquo1rdquo CL
Lrsquoimpulso breve viene catturato dal FF 0 (purcheacute di larghezza sufficiente per la tecnologia del FF) - che quindi agisce come integratore ndash la cui uscita alimenta il monoimpulsore di tipo A Lrsquoattivazione del FF 1 resetta il FF 0 (supponendo che il segnale di CL sia ldquopositiverdquotruerdquo)
Ci puograve essere un problema se il CL agisce in modo asincrono
NB questo circuito e quello del lucido precedente evidenziano il fatto che nella realtagrave nessuna rete egrave solo sincrona ma bensigrave egrave pressocheacute sempre necessario utilizzare reti di natura diversa anche percheacute vi egrave sempre una interazione fra reti con clock diversi eo con segnali provenienti dal mondo esterno NON sincronizzati con il clock
Monoimpulsore di tipo A ldquorivistordquo
54
bull Uno shift register a sinistra (a destra) egrave un registro composto da FFD che ad ogni clock trasferisce il valore del FF a destra (a sinistra) di ciascun FF nel FF stesso Nel FF piugrave a destra (sinistra) viene immesso uno ldquo0rdquo Questi tipi di registri shift si chiamano ldquologicirdquo
Shift register (registri a traslazione o scorrimento)
D0kQ0k
CK DnQn
CK
D0kQ0k
CK Dn-1Qn-1
CK
D0kQ0k
CK Dn-2Qn-2
CK
D0kQ0k
CK D0Q0
CK
ldquo0rdquo
Shift register a sinistra
bull Anche per i registri a traslazione esistono diverse versioni con ingresso parallelo e uscita seriale con ingresso seriale e uscita parallela con reset con load etc etc
bull Si noti che uno shift register egrave anche un contatore Si immagini per esempio che dopo un reset siano inseriti degli uni a partire da destra Lo shift register si riempie progressivamente di uni e quindi la posizione in cui egrave arrivato lrsquouno indica il valore del conteggio in base a un codice ldquouno su nrdquo (un codice decodificato)
bull Spesso uno stesso registro puograve traslare a destra o a sinistra in funzione di una segnale di controllo Ovviamente questo si ottiene premettendo a ogni ingresso Di un MUX a due vie che preleva in funzione del segnale di controllo Qigrave+1 o Qigrave-1 Con questa configurazione lo shift register diventa anche un contatore avantiindietro
Registro a scorrimento (shift-register) a 3 bit
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
IN
OUT2OUT1OUT0
CK
CK
IN
A_RESET
OUT1
OUT2
OUT0
Registro a scorrimento (shift-register) a 3 bit
57
Esempio 74164 (serial In parallel OUT)
bull In questo registro a traslazione ad ogni fronte positivo del clock i dati sono traslati a destra (Q0 -gt Q1 Q1-gtQ2 etc) Il registro egrave dotato in un Master Reset (vero negato) e il dato inserito nel FF Q0 egrave dato dallrsquoAND dei due ingressi Dsa e Dsb
bull Si noti che lrsquooperazione di shift corrisponde aritmeticamente alle operazioni di divisione e moltiplicazione per 2 Si supponga che in Q0 vi sia il bit meno significativo e in Q7 il meno significativo
0 1 1 0 1 0 1 0
010101102 = 10810
Shift left =gt x2
Shift right =gt 2
101011002 = 21610
001010112 = 5910
NB nel dispositivo i bit sono posti in ordine invertito e quindi un shift left del numero corrisponde a uno shift right sul dispositivo
58
bull Esistono anche i registri a traslazione ldquoaritmeticirdquo In questi shift register a destra anzicheacute fare entrare nel FF piugrave a sinistra lo ldquo0rdquo viene immesso sempre ripetutamente il suo valore logico
Shift aritmetico
Q7 Q6 Q5 Q4 Q3 Q2 Q1 Q0
D7 D6 D5 D4 D3 D2 D1 D0
I LDCK Esempio
11001010SRA
11100101 interpretato in complemento a 2
001101102=5410
C2 C2
000110112=2710
bull Lo shift aritmetico a destra effettua una divisione per 2 mantenendo il segno
59
Rotazione
Nei computer egrave sovente necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register
D0kQ0k
CK DnQn
CK
D0kQ0k
CK Dn-1Qn-1
CK
D0kQ0k
CK Dn-2Qn-2
CK
D0kQ0k
CK D0Q0
CK
Molto spesso nei computer egrave necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register con direzione programmabile In questo caso su D0 ad esempio puograve essere avviato o Q1 o Qn
60
Contatori con shift register ndash Contatore retroazionato EX-OR
Q2Q0
Shift right 3 bitDQ1
110 111 011 101 010 001
Diagramma degli stati disgiunto
Uno shift register con n FF retroazionato con un EX-OR (scelta degli ingressi variabile) egrave un contatore NON binario che conta per 2n-1 (purcheacute presettato a un valore diverso da tutti zeri)
000
100
61
Contatore di Johnson (riempimento e svuotamento)
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
000-gt100-gt110-gt111-gt011-gt001-gt000-gtStati isolati 101-gt010-gt101gt1
Poicheacute configurazioni adiacenti del codice Johnson differiscono di un solo bit il contatore puograve essere utilizzato per generare forme drsquoonda prive di alee
62
Contatore ad anello con un solo 1 (ovvero che genera direttamente il codice 1su n)
FFDD Q
QR
RESET
FFDD Q
QR
RESET
FFDD Q
QPR
RESET
OUT3OUT1OUT0
CK
FFDD Q
QR
RESET
OUT2
0001-gt1000-gt0100-gt0010-gt0010n FF per contare per n (mentre con i contatori binari il numero dei FF egrave il log2m ove m egrave il primo intero maggiore o uguale a n)
63
Barrel shifter (rotore)Un barrel shifter egrave uno shift register in grado di traslare di ldquonrdquo posizioni in un solo clock il contenuto dei suoi FF In figura egrave riportato il barrel shifter della Altera Gli ingressi A-H in presenza dellrsquoattivazione del segnale LDST al primo fronte positivo del clock sono depositati nei FF Quando LDST egrave 0 ad ogni fronte positivo del clock i bit di uscita sono ruotati di n posizioni in senso antiorario (ovvero lrsquouscita H diventa la G la G diventa la Fhellipe lrsquouscita A diventa la H) ove n egrave il valore binario indicato dai segnali S0 S1 e S2
Si noti che il circuito in questione egrave di fatto un registro con 8 FF allrsquoingresso di ciascuno dei quali egrave previsto un MUX a 8 vie che pilotato dai segnali S0 S1 e S2 che seleziona uno degli 8 uscite del dispositivo La struttura interna puograve essere osservata ldquoclikkandordquo due volte sul dispositivo nello schema di Altera
64
Barrel shifter
6565
66
Simulazione timing
67
bull Utilizzando il sistema Altera progettare un orologio con secondi minuti ora partendo da un oscillatore a quarzo con frequenza 500 KHz
bull E se si volesse proseguire e realizzare anche un datario (giorno mese e anno )
bull Come potrebbe essere integrato con una sveglia Si ricordi che lrsquoorologio deve essere anche essere ldquopresettatordquo
bull Quali circuiti utilizzare per la visualizzazione
68
EPROM
X0nZ0m
y0kY0k
Clock
D0kQ0k
FFD0k
CK D0kQ0k CK
Reti sincrone con EPROM
Al posto delle EPROM si utilizzano ora dei PLA ovvero dispositivi nei quali si nei quali le funzioni combinatorie sono ottimizzate ma il principio egrave assolutamente il medesimo
69
Progettare con Altera una rete logica sincrona che utilizzando registri 374 ALU 74181 un contatore e altri dispositivi ritenuti necessari permetta di eseguire in sequenza la somma di due dati di 4 bit senza segno ingresso esegua il complemento a 2 inverta la parte bassa con la parte alta del risultato e infine moltiplichi il tutto logicamente per 2
La soluzione egrave sempre decomponibile in tre sottosistemi il controllo con la sua decodifica (unitagrave di controllo) il percorso dei dati con le unitagrave che li trasformano (datapath) e i registri di deposito e di ingresso dei dati
Questa egrave la struttura base di qualunque unitagrave centrale di qualunque computer
La differenza consiste solo nel fatto che anzicheacute avere una sequenza fissa di operazioni ne viene generata una volta a volta che dipende appunto dalla istruzione che deve essere eseguita Come si vedragrave approfonditamente nel corso di Calcolatori T del II anno (prof Neri e Mattoccia)
Arrivederci al corso di Calcolatori T del II anno (sapendo perfettamente le reti logiche helliphellip)
B
00 01 11 10
F A GA
B C A GB
B D A GCB F A ED
B F A GE
B F AA- GF
B F A GG
0
0
0
0
1
0
0
X1X2
A0 B0 C0 E10011
01
10
0111
11
11
D0 10
F0
01
01
G0
0000
00
00
11
11
10
1001
1010 0110
01
11
00
Cassaforte sincrona
16
01
NB in questo esempio non vi sono condizioni di indifferenza Anzicheacute di stati compatibili si parla qui di stati equivalenti Ove poi due stati per gli stessi ingressi abbiano uscite identiche e portino agli stessi stati si parla di stati indistinguibili Naturalmente la descrizione a parole puograve evidenziare che alcune combinazioni di ingresso per alcuni stati non si presentano In questo caso si ritorna al concetto di compatibilitagrave
00
17
Cassaforte sincrona
Classi di equivalenza [AFG] =gt a[B] =gt b[C] =gt g[D] =gt d[E] =gt e
B
00 01 11 10
F A GA
B C A GB
B D A GCB F A ED
B F A GE
B F AA- GF
B F A GG
0
0
0
0
1
0
0
X1X2
B
C
D
E
F
G
A B C D E F
CF
FD CD
CFGE
CFGE
DFGE
--- CF DF GE
--- C F DF GE --
b
00 01 11 10
a a aa
b g a ab
b d a ag
b a a ed
b a a ae
X1X2
0
0
0
0
1 NB nel caso di tabelle completamente specificate le classi (massime) di equivalenza non hanno mai stati in comune Vanno usate tutte quindi Non esiste problema di chiusura
Ovviamente 5 stati 4 facenti parte della sequenza e uno esterno
18
b
00 01 11 10
a a aa
b g a ab
b d a ag
b a a ed
b a a ae
X1X2
0
0
0
0
1
Cassaforte sincrona
001
00 01 11 10
000 000 000000
001 011 000 000001
001 010 000 000011
001 000 000 100010
001 000 000 000100
X1X2
-- -- -- --101
-- -- -- --111
-- -- -- --110
0
0
0
0
1
--
--
--
Y1Y2 Y3
a =gt 000b =gt 001g =gt 011d =gt 010e =gt 100
D1= X1X2Y2Y3
D2=X1X2Y3
D3=X1X2+X1Y2Y3 Z =Y1
Sintetizzando con FFD la sintesi degli ingressi Di si ottiene sintetizzando le funzioni Yi (Yn+1=Dn)
Nessun problema di corse codifica libera (possibilmente ottima)
19
Sintesi
Direttorio cassaforte sincrona
20
00 01 01 10
Sintesi ndash simulazione funzionale
NB Gli ingressi cambiano in modo NON sincrono con il clock ma lrsquo uscita egrave sincrona essendo la rete di tipo Moore
21
Sintesi ndash simulazione timing
Si notino i ritardi delle uscite dei FF e dei gates da esse dipendenti rispetto al fronte positivo del clock (ad esempio d) se la frequenza del clock fosse eccessiva il sistema NON funzionerebbe piugrave correttamente
d
22
E con Mealy
B
00 01 11 10
F A GA
B C A GB
B D A GCB F A ED
B F A GE
B F AA- GF
B F A GG
0
0
0
0
1
0
0
X1X2
B0
00 01 11 10
F0 A0 G0A
B0 C0 A0 G0B
B0 D0 A0 G0CB0 F0 A0 E1D
B1 F1 A1 G1E
B0 F0 A0A-G0F
B0 F0 A0 G0G
X1X2
Potrei mettere una indifferenza sullrsquouscita Si si possono mettere indifferenze sulle uscite che cambiano Anticipazione o ritardo del cambiamento
Sintetizzare e simulare con Altera
23
bull Allrsquoesame orale egrave necessario portare un esercizio di reti sincrone e uno di reti asincrone NON ldquomutuatordquo da altri hellip
bull I due esercizi debbono essere portati su una chiavetta (o dispositivo equivalente) debbono contenere una spiegazione e anche la progettazionesimulazione con Altera
bull Il candidato deve dimostrare di sapere usare il sistema Altera e spiegare i progetti portati
bull Gli esercizi di reti sincrone hanno spesso il diagramma degli stati ma solo per verificahellip
Monoimpulsore A
D1 Q1
Q1CKFFD
D2 Q2
Q2CKFFD Z1
D
Clock
Clock
D
Z
Q1
Q2
Qui lrsquoingresso asincrono D egrave sincronizzato dai FF Uscita Z sincrona
Generare un impulso di uscita di un periodo di clock per ingresso 1 Un ulteriore impulso viene generato solo se lrsquoingresso torna a 1 dopo essere stato a 0 Lrsquouscita deve essere sincronizzata con il clock
24
25
D1 Q1
Q1CKFFD
D2 Q2
Q2CKFFD Z
D
Clock
Monoimpulsore A
1
0
1
1
0
A0 B1
C0
0
A
A
A
-
B
C
C
-
DQ2
Q1
B
0 1
C
-
Z0
0
1
-
A 00
--
00
00
10
--
11
11
DQ2
Q1
01
0 1
11
10
Z0
0
-
1
0000
10
11
01
B
C
-
A
Q1=D Q2= DQ1 Z=Q1Q2
00
00
01
01
10
10
11
11
DQ2
Q1
01
0 1
11
10
Z0
0
0
1
00
MAhellip
Q1=D Q2= Q1 Z=Q1Q2
Moore necessariamente
26
D1 Q1
Q1CKFFD
D2 Q2
Q2CKFFD Z2
D
Clock
Monoimpulsore B
Clock
D
Z2
Q1
Q2
Lrsquoingresso asincrono D agisce direttamente sullrsquouscita Z che quindi risulta asincrona
Qui la rete egrave di tipo Mealy e quindi con ingresso asincrono egrave possibile che vi sia uscita asincrona
27
D Q
QCKFFD Z
D
Clock
Monoimpulsore C
Clock
D
Z
Q
Anche qui lrsquoingresso asincrono D agisce direttamente sullrsquouscita Z che quindi risulta asincronaSi noti che se lrsquoingresso oscilla una volta che il FF ha campionato un 1 e fino a quando non campiona uno 0 lrsquouscita oscilla
Qui la rete egrave di tipo Mealy e quindi con ingresso asincrono egrave possibile che vi sia uscita asincrona
28
Considerazioni sui monoimpulsori A B e C
Il diagramma degli stati corrispondente al funzionamento reale dei due monoimpulsori B e C NON puograve essere tracciato percheacute di fatto le due reti (di tipo Mealy) NON sono sincrone Infatti il diagramma di circuiti sincroni prevede implicitamente un comportamento sincrono anche degli ingressi fatto non verificato nei casi B e C
La cosa non vale per il monoimpulsore A in quanto pur essendo lrsquoingresso asincrono lrsquouscita (rete di tipo Moore) dipende solo dagli stati In altre parole il comportamento della rete rende intrinsecamente sincroni ingressi fisicamente asincroni
Il diagramma degli stati che riflette il comportamento delle due reti B e C puograve essere tracciato solo partendo da una analisi asincrona ldquoaprendordquo quindi i FF D inseriti Ovviamente egrave possibile progettare le due reti senza lrsquouso dei FF D partendo da un diagramma degli stati asincrono ldquotradizionalerdquo
A scopo di esercizio si suggerisce la sintesi e la simulazione con Altera dei tre monoimpulsori come reti asincrone Si tratta di circuiti on due ingressi Ck e D
29
Monoimpulsori A-B-C
30
31
Contatori
A B C D Z
Circuiti senza ingresso (a parte il clock) nella versione piugrave semplice
D0 Q0
Q0CKFFD
MUX
1
0D1 Q1
Q1CKFFD
(Il clock egrave spesso sottinteso nei circuiti sincroni)
U0 U1
Esempio contatore binario x 4 con decodifica del 3
000 010 100 111
OUT
Q1 cambia stato quando Q0 egrave a 1 e passa a 0
CK
u1
u0
OUT (0) (1) (2) (0) (1) (2)(3) (3)
Contatore x 4 con decodifica del 3
33
Contatori binari in base non potenza di 2
A B C D E
000 001 010 011 100Contatore
binario per 5
D0 Q0
Q0CKFFD
MUX
1
0 1D1 Q1
Q1CKFFD
MUX
1
0D Q2
Q2CKFFD
Questo conta x8 ma per contare x5 arrivati a 4 bisogna ritornare a 0
34
D0 Q0
Q0CKFFD D1 Q1
Q1CKFFD
MUX
1
0 D2 Q2
Q2CKFFD
MUX
1
0
ABC
ldquo4rdquo
Contatore x 5
Decoder
La decodifica del 4 porta a zero lrsquouscita del decodificatore e quindi a 0 tutte le uscite degli AND rosa e al successivo fronte positivo del clock i tre FF campionano uno ldquo0rdquo
Per esercizio sintetizzare un contatore x 100 partendo dalla sintesi di un contatore decimale ovvero di un contatore x10 (da sintetizzare) Quanti FF per un contatore decimale I contatori decimali si trovano integrati in Altera
ldquo3rdquo
35
Contatori con ingressi di controllo
Ex Contatore integrato x 16 con Load e Enable
bull Il contatore conta per 16 (0-15) se il segnale EN egrave a 1 Allorchegrave il segnale LD va a 1 il dato presente sugli ingressi D egrave inserito nei 4 FF (lrsquoingresso puograve essere sincrono o asincrono) Nel caso precedente il decodificatore del ldquo3rdquo (uscita vera va portato) allrsquoingresso LD con tutti i Di a zero
bull In generale il contatore fornisce anche unrsquouscita ldquocarryrdquo che va a 1 quando il contatore raggiunge il valore FF Questa uscita puograve essere connessa allrsquoenable di un contatore a valle per ottenere un contatore per 256 cosigrave via (Progettarlo come esercizio)
EN
Q0 Q1 Q2 Q3CKLD
D0 D1 D2 D3
EN
Q0 Q1 Q2 Q3CK
CYLD
D0 D1 D2 D3
bull Esistono contatori UPDOWN nei quali un ingresso (UD) seleziona se il conteggio deve avvenire avanti o indietro Nel caso sia selezionata la modalitagrave ldquoindietrordquo il carry si attiva quando si raggiunge il valore ldquotutti zerirdquo
bull Esiste una molteplicitagrave di contatori ciascuno con le proprie specifiche peculiaritagrave con o senza RESET (che normalmente agisce in modo asincrono) UD con o senza LD etc etc
NB qualunque circuito sincrono (con sequenza non binaria) riconducibile al diagramma degli stati di un contatore egrave sempre un contatore
101 010 000 111 110 Contatore x 5 non binario
36
74163 contatore reale x 16 con Load Reset e Enable (T e P)I segnali di controllo sono sincroni ovvero agiscono sul fronte positivo del clock (rising edge)
74138 decoder 38 con uscite negate se G2A e G2B entrambi a zero e G1 a 1 Altrimenti tutte uscite alte
Direttorio Counter Glitch
Contatore binario x 8 e glitches
37
Glitch
Simulazione timingNB la presenza e la durata del glitch dipende dalle caratteristiche elettriche dei dispositivi
dalla loro tecnologia etc Nel caso dei dispositivi Altera dipende dal tipo di dispositivo sul quale egrave realizzato il circuito Analogamente la sensibilitagrave di eventuali ingressi di clock collegati allrsquouscita con il glitch dipende dalle caratteristiche del dispositivo Se ad esempio nel dispositivo Altera utilizzato si collega allrsquouscita Y6 il clock di un FFD non si ha commutazione del FF ma questo non egrave vero in assoluto
38
Cosa succede al contatore X5 progettato precedentemente se allrsquoaccensione non disponendo di un segnale di RESET i FF si portano in uno stato non facente parte del cicloNB La condizione allrsquoaccensione egrave del tutto casuale e dipende unicamente dalle condizioni elettriche
di realizzazione Ersquo impredicibileSupponiamo che i FF si portino al valore 110 (il numero 6 fuori dal ciclo) Analizziamo il comportamento
D0 Q0Q0CK
FFD D1 Q1Q1CK
FFD
MUX
1
0 D2 Q2Q2CK
FFD
MUX
1
0
ABC
ldquo4rdquo
000 001 010 011 100 110 111
In questo caso ci si riporta nella situazione di conteggio regolare (verificare con la tabella degli stati ) ma il comportamento in generale dipende dalla realizzazione e in altre realizzazione i due stati potrebbero essere separati dal ciclo principale che quindi non verrebbe mai raggiunto Ecco la funzione del RESET
39
Solo come esempio (da non utilizzare ) a scopo didattico vediamo la tabella delle transizioni di un contatore per 6 UpDown con comando di Reset I segnali di ingresso cambiano in modo asincrono ma hanno effetto in modo sincrono
Per compensare allrsquoaccensione
Sintetizzare e simulareCome dovrebbe essere modificato lo schema in Altera per permettere di
ldquopresettarerdquo in modo asincrono il contatore a un particolare valore di ingresso
00 01 11 10UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
111
110
000 101
000
101
y3 y2 y100 01 11 10
UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
000 000111
000 000 000 000110
000 101
000
000 000
101
y3 y2 y1
40
D0Q0
CKFFD
Clocky2
DEC
y3
y2
y1
ldquo1rdquo
ldquo2rdquo
ldquo3rdquo
ldquo4rdquo
1
0
UPDown
Sintesi di y2 in modo ldquodirettordquo
1
0
00 01 11 10UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
000 000111
000 000 000 000110
000 101
000
000 000
101
y3 y2 y1
41
Cassaforte hellipDisponendo di un contatore per 8 (ma anche per 16 etc) con reset sincrono e sempre abilitato al conteggio come potrei realizzare il circuito di apertura della cassaforte (sequenza X1X2 00-01-01-10) con modello Moore
Cx8RES
Q0 Q1 Q2 CK
RES= (ldquo0rdquoX1X2 + ldquo1rdquo X1X2 + ldquo2rdquo X1X2 + ldquo3rdquo X1 X2)Z = ldquo4rdquo (ldquo0rdquordquo1rdquordquo2rdquordquo3rdquordquo4rdquo sono le decodifiche binarie delle tre uscite del contatore)
Il contatore si resetta ogni volta che non si presenta lrsquoingresso giusto relativo al particolare stato Ilcontatore quindi si resetta e rimane resettato se non nelle condizioni espresse dalla funzione RESIl contatore arrivato a 4 (Z=1) si resetta comunque al successivo fronte del clock
Le reti sincrone si progettano sempre come combinazione di blocchi disponibili e logica ldquorandomrdquo
ABC
ldquo0rdquoldquo1rdquoldquo2rdquoldquo3rdquoldquo4rdquo
RLAND-OR
X1X2
RESZ
Cx8RES
Q0 Q1 Q2 CK
42
Contatori
EN
Q0 Q1 Q2 Q3CKCY
RESET
bull Attenzione Consideriamo il contatore di figura (questa volta con RESET asincrono) e supponiamo di utilizzarlo per contare per 5 (NB per il Reset si usa il ldquo5rdquo in questo casohellip glitch)
ABCD
ldquo5rdquo
ldquo1rdquo Percheacute questo schema egrave sbagliato
bull Percheacute presenta una corsa critica Nel momento in cui anche uno solo dei FF si resetta (e non tutti nello stesso istante) viene a mancare la configurazione ldquo4rdquo sul decoder e quindi alcuni FF potrebbero non fare in tempo a resettarsi E allora
EN
Q0 Q1 Q2 Q3CKCY
RESET
ABCD
ldquo5rdquo
ldquo1rdquo
RS
Y ldquo0rdquo
bull Cosigrave facendo il ldquo4rdquo attiva il SET e il FF NON si resetta fino a quando non egrave stato raggiunto la ldquo0rdquo NB lo schema ldquosbagliatordquo si puograve usare solo se si egrave certi della rapiditagrave di reset dei FF del contatore
bull Verificare con Altera
Sintesi cassaforte con moduli
Altera Cassaforte sincrona con moduli
Rete di controllo
Contatore con Reset asincrono e Load sincrono
43
NB In questo progetto la sintesi egrave stata condotta in modo ldquodirettordquo ovvero senza passare per la sintesi formale e utilizzando componenti disponibili e helliphellip materia grigia La sintesi dei circuiti sincroni si fa sempre e unicamente cosigrave
44
Simulazione funzionale (no timing)
NB I segnali di ingresso sono campionati SOLO sul fronte positivo del clock anche se si presentano asincroni Il segnale di uscita si attiva al clock successivo al riconoscimento della sequenza La posizione di ldquoriposordquo del contatore egrave il valore 4 I segnali Yi sono le decodifiche dei segnali di di ingresso X1 e X2
00 01 01 10
45
Simulazione timing
46
NB Si egrave scelto di utilizzare SOLO gli ingressi SINCRONI del contatore per semplicitagrave Il contatore rimane al valore 100 fino a quando non si presenta allrsquoingresso il valore 00 Se la sequenza egrave esatta il contatore continua a contare in avanti fino alla generazione dellrsquouscita (valore 11 del contatore) altrimenti si riporta al valore 100 ovvero Qc=1) Il segnale GN (Gate Not) egrave quello che abilita il conteggio Il sistema riamane stabile a 000 per una sequenza lunga a piacere di X1=0 e X2=0 e si sposta quando dopo 00 si ha 01 Come si evince dalla simulazione se la sequenza non egrave corretta o egrave interrotta il contatore si riporta sempre a 100
00 01 11 10
001 000 000
X1
000000 010 100 100001
000 100 100 011010
100 100 100 100011
000 100 100 100100
000 100 100 100101
000 100 100 100110
000 100 100 100111
0
0
0
1
0
0
0
0
X2
000
NB la tabella delle transizioni derivata della rete realizzata NON ha ovviamente condizioni di indifferenza
47
Progettare un contatore packed BCD updown a 8 bit (due digit)
48
Generazione di forme drsquoondabull Ersquo possibile generare forme drsquoonda periodiche mediante circuiti sincroni di periodo
sottomultiplo intero del clock
Esempio 1Divisore di frequenza per 2
D0k Q0k
CK D Q
CK Clock
Q
Esempio 2 generare una forma drsquoonda periodica con periodo 5T (ove T sia il periodo del clock) in cui in un semiperiodo 3T lrsquouscita sia alta e nellrsquoaltro semiperiodo 2T lrsquouscita sia bassa
Q0 Q1 Q2 CK
Cx5
C
B
A
01234
DecoderDemux
Clock
ZZ T
3T2T
3T
NB una rete logica egrave in grado di effettuare delle divisioni di frequenza e mai delle moltiplicazioni di frequenza (che si possono ottenere solo con circuiti analogici non lineari)
49
Di che circuito si tratta
D0k Q0k
CK D0 Q0
CKQ0
D0k Q0k
CK D1 Q1
CK
D0k Q0k
CK D2 Q2
CKClock
Clock
Q0
Q1
Q2
Ersquo un contatore binario ma non sincrono Infatti i vari FF NON utilizzano lo stesso clock e questo porta a un piccolo disallineamento sulle uscite Non egrave sintetizzabile come una rete sincrona e una sintesi formale sarebbe possibile solo trattando il circuito come asincrono ovvero ldquoaprendordquo i FF Sarebbe possibile trasformarlo in un contatore x6 mantenendo la stessa impostazione
Sintetizzare e simulare con Altera
NB il segnale di clock non egrave in comune
50
7493
51
Altera Contatore asincrono
Contatore asincrono
52
Simulazione timing
53
Come puograve essere utilizzato un FFD per catturare un impulso piugrave breve di un periodo
D2 Q2
Q2CKFFD Z
Clock
D1 Q1
Q1CKFFD
D0 Q00
Q0CKFFD
ldquo1rdquo CL
Lrsquoimpulso breve viene catturato dal FF 0 (purcheacute di larghezza sufficiente per la tecnologia del FF) - che quindi agisce come integratore ndash la cui uscita alimenta il monoimpulsore di tipo A Lrsquoattivazione del FF 1 resetta il FF 0 (supponendo che il segnale di CL sia ldquopositiverdquotruerdquo)
Ci puograve essere un problema se il CL agisce in modo asincrono
NB questo circuito e quello del lucido precedente evidenziano il fatto che nella realtagrave nessuna rete egrave solo sincrona ma bensigrave egrave pressocheacute sempre necessario utilizzare reti di natura diversa anche percheacute vi egrave sempre una interazione fra reti con clock diversi eo con segnali provenienti dal mondo esterno NON sincronizzati con il clock
Monoimpulsore di tipo A ldquorivistordquo
54
bull Uno shift register a sinistra (a destra) egrave un registro composto da FFD che ad ogni clock trasferisce il valore del FF a destra (a sinistra) di ciascun FF nel FF stesso Nel FF piugrave a destra (sinistra) viene immesso uno ldquo0rdquo Questi tipi di registri shift si chiamano ldquologicirdquo
Shift register (registri a traslazione o scorrimento)
D0kQ0k
CK DnQn
CK
D0kQ0k
CK Dn-1Qn-1
CK
D0kQ0k
CK Dn-2Qn-2
CK
D0kQ0k
CK D0Q0
CK
ldquo0rdquo
Shift register a sinistra
bull Anche per i registri a traslazione esistono diverse versioni con ingresso parallelo e uscita seriale con ingresso seriale e uscita parallela con reset con load etc etc
bull Si noti che uno shift register egrave anche un contatore Si immagini per esempio che dopo un reset siano inseriti degli uni a partire da destra Lo shift register si riempie progressivamente di uni e quindi la posizione in cui egrave arrivato lrsquouno indica il valore del conteggio in base a un codice ldquouno su nrdquo (un codice decodificato)
bull Spesso uno stesso registro puograve traslare a destra o a sinistra in funzione di una segnale di controllo Ovviamente questo si ottiene premettendo a ogni ingresso Di un MUX a due vie che preleva in funzione del segnale di controllo Qigrave+1 o Qigrave-1 Con questa configurazione lo shift register diventa anche un contatore avantiindietro
Registro a scorrimento (shift-register) a 3 bit
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
IN
OUT2OUT1OUT0
CK
CK
IN
A_RESET
OUT1
OUT2
OUT0
Registro a scorrimento (shift-register) a 3 bit
57
Esempio 74164 (serial In parallel OUT)
bull In questo registro a traslazione ad ogni fronte positivo del clock i dati sono traslati a destra (Q0 -gt Q1 Q1-gtQ2 etc) Il registro egrave dotato in un Master Reset (vero negato) e il dato inserito nel FF Q0 egrave dato dallrsquoAND dei due ingressi Dsa e Dsb
bull Si noti che lrsquooperazione di shift corrisponde aritmeticamente alle operazioni di divisione e moltiplicazione per 2 Si supponga che in Q0 vi sia il bit meno significativo e in Q7 il meno significativo
0 1 1 0 1 0 1 0
010101102 = 10810
Shift left =gt x2
Shift right =gt 2
101011002 = 21610
001010112 = 5910
NB nel dispositivo i bit sono posti in ordine invertito e quindi un shift left del numero corrisponde a uno shift right sul dispositivo
58
bull Esistono anche i registri a traslazione ldquoaritmeticirdquo In questi shift register a destra anzicheacute fare entrare nel FF piugrave a sinistra lo ldquo0rdquo viene immesso sempre ripetutamente il suo valore logico
Shift aritmetico
Q7 Q6 Q5 Q4 Q3 Q2 Q1 Q0
D7 D6 D5 D4 D3 D2 D1 D0
I LDCK Esempio
11001010SRA
11100101 interpretato in complemento a 2
001101102=5410
C2 C2
000110112=2710
bull Lo shift aritmetico a destra effettua una divisione per 2 mantenendo il segno
59
Rotazione
Nei computer egrave sovente necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register
D0kQ0k
CK DnQn
CK
D0kQ0k
CK Dn-1Qn-1
CK
D0kQ0k
CK Dn-2Qn-2
CK
D0kQ0k
CK D0Q0
CK
Molto spesso nei computer egrave necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register con direzione programmabile In questo caso su D0 ad esempio puograve essere avviato o Q1 o Qn
60
Contatori con shift register ndash Contatore retroazionato EX-OR
Q2Q0
Shift right 3 bitDQ1
110 111 011 101 010 001
Diagramma degli stati disgiunto
Uno shift register con n FF retroazionato con un EX-OR (scelta degli ingressi variabile) egrave un contatore NON binario che conta per 2n-1 (purcheacute presettato a un valore diverso da tutti zeri)
000
100
61
Contatore di Johnson (riempimento e svuotamento)
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
000-gt100-gt110-gt111-gt011-gt001-gt000-gtStati isolati 101-gt010-gt101gt1
Poicheacute configurazioni adiacenti del codice Johnson differiscono di un solo bit il contatore puograve essere utilizzato per generare forme drsquoonda prive di alee
62
Contatore ad anello con un solo 1 (ovvero che genera direttamente il codice 1su n)
FFDD Q
QR
RESET
FFDD Q
QR
RESET
FFDD Q
QPR
RESET
OUT3OUT1OUT0
CK
FFDD Q
QR
RESET
OUT2
0001-gt1000-gt0100-gt0010-gt0010n FF per contare per n (mentre con i contatori binari il numero dei FF egrave il log2m ove m egrave il primo intero maggiore o uguale a n)
63
Barrel shifter (rotore)Un barrel shifter egrave uno shift register in grado di traslare di ldquonrdquo posizioni in un solo clock il contenuto dei suoi FF In figura egrave riportato il barrel shifter della Altera Gli ingressi A-H in presenza dellrsquoattivazione del segnale LDST al primo fronte positivo del clock sono depositati nei FF Quando LDST egrave 0 ad ogni fronte positivo del clock i bit di uscita sono ruotati di n posizioni in senso antiorario (ovvero lrsquouscita H diventa la G la G diventa la Fhellipe lrsquouscita A diventa la H) ove n egrave il valore binario indicato dai segnali S0 S1 e S2
Si noti che il circuito in questione egrave di fatto un registro con 8 FF allrsquoingresso di ciascuno dei quali egrave previsto un MUX a 8 vie che pilotato dai segnali S0 S1 e S2 che seleziona uno degli 8 uscite del dispositivo La struttura interna puograve essere osservata ldquoclikkandordquo due volte sul dispositivo nello schema di Altera
64
Barrel shifter
6565
66
Simulazione timing
67
bull Utilizzando il sistema Altera progettare un orologio con secondi minuti ora partendo da un oscillatore a quarzo con frequenza 500 KHz
bull E se si volesse proseguire e realizzare anche un datario (giorno mese e anno )
bull Come potrebbe essere integrato con una sveglia Si ricordi che lrsquoorologio deve essere anche essere ldquopresettatordquo
bull Quali circuiti utilizzare per la visualizzazione
68
EPROM
X0nZ0m
y0kY0k
Clock
D0kQ0k
FFD0k
CK D0kQ0k CK
Reti sincrone con EPROM
Al posto delle EPROM si utilizzano ora dei PLA ovvero dispositivi nei quali si nei quali le funzioni combinatorie sono ottimizzate ma il principio egrave assolutamente il medesimo
69
Progettare con Altera una rete logica sincrona che utilizzando registri 374 ALU 74181 un contatore e altri dispositivi ritenuti necessari permetta di eseguire in sequenza la somma di due dati di 4 bit senza segno ingresso esegua il complemento a 2 inverta la parte bassa con la parte alta del risultato e infine moltiplichi il tutto logicamente per 2
La soluzione egrave sempre decomponibile in tre sottosistemi il controllo con la sua decodifica (unitagrave di controllo) il percorso dei dati con le unitagrave che li trasformano (datapath) e i registri di deposito e di ingresso dei dati
Questa egrave la struttura base di qualunque unitagrave centrale di qualunque computer
La differenza consiste solo nel fatto che anzicheacute avere una sequenza fissa di operazioni ne viene generata una volta a volta che dipende appunto dalla istruzione che deve essere eseguita Come si vedragrave approfonditamente nel corso di Calcolatori T del II anno (prof Neri e Mattoccia)
Arrivederci al corso di Calcolatori T del II anno (sapendo perfettamente le reti logiche helliphellip)
17
Cassaforte sincrona
Classi di equivalenza [AFG] =gt a[B] =gt b[C] =gt g[D] =gt d[E] =gt e
B
00 01 11 10
F A GA
B C A GB
B D A GCB F A ED
B F A GE
B F AA- GF
B F A GG
0
0
0
0
1
0
0
X1X2
B
C
D
E
F
G
A B C D E F
CF
FD CD
CFGE
CFGE
DFGE
--- CF DF GE
--- C F DF GE --
b
00 01 11 10
a a aa
b g a ab
b d a ag
b a a ed
b a a ae
X1X2
0
0
0
0
1 NB nel caso di tabelle completamente specificate le classi (massime) di equivalenza non hanno mai stati in comune Vanno usate tutte quindi Non esiste problema di chiusura
Ovviamente 5 stati 4 facenti parte della sequenza e uno esterno
18
b
00 01 11 10
a a aa
b g a ab
b d a ag
b a a ed
b a a ae
X1X2
0
0
0
0
1
Cassaforte sincrona
001
00 01 11 10
000 000 000000
001 011 000 000001
001 010 000 000011
001 000 000 100010
001 000 000 000100
X1X2
-- -- -- --101
-- -- -- --111
-- -- -- --110
0
0
0
0
1
--
--
--
Y1Y2 Y3
a =gt 000b =gt 001g =gt 011d =gt 010e =gt 100
D1= X1X2Y2Y3
D2=X1X2Y3
D3=X1X2+X1Y2Y3 Z =Y1
Sintetizzando con FFD la sintesi degli ingressi Di si ottiene sintetizzando le funzioni Yi (Yn+1=Dn)
Nessun problema di corse codifica libera (possibilmente ottima)
19
Sintesi
Direttorio cassaforte sincrona
20
00 01 01 10
Sintesi ndash simulazione funzionale
NB Gli ingressi cambiano in modo NON sincrono con il clock ma lrsquo uscita egrave sincrona essendo la rete di tipo Moore
21
Sintesi ndash simulazione timing
Si notino i ritardi delle uscite dei FF e dei gates da esse dipendenti rispetto al fronte positivo del clock (ad esempio d) se la frequenza del clock fosse eccessiva il sistema NON funzionerebbe piugrave correttamente
d
22
E con Mealy
B
00 01 11 10
F A GA
B C A GB
B D A GCB F A ED
B F A GE
B F AA- GF
B F A GG
0
0
0
0
1
0
0
X1X2
B0
00 01 11 10
F0 A0 G0A
B0 C0 A0 G0B
B0 D0 A0 G0CB0 F0 A0 E1D
B1 F1 A1 G1E
B0 F0 A0A-G0F
B0 F0 A0 G0G
X1X2
Potrei mettere una indifferenza sullrsquouscita Si si possono mettere indifferenze sulle uscite che cambiano Anticipazione o ritardo del cambiamento
Sintetizzare e simulare con Altera
23
bull Allrsquoesame orale egrave necessario portare un esercizio di reti sincrone e uno di reti asincrone NON ldquomutuatordquo da altri hellip
bull I due esercizi debbono essere portati su una chiavetta (o dispositivo equivalente) debbono contenere una spiegazione e anche la progettazionesimulazione con Altera
bull Il candidato deve dimostrare di sapere usare il sistema Altera e spiegare i progetti portati
bull Gli esercizi di reti sincrone hanno spesso il diagramma degli stati ma solo per verificahellip
Monoimpulsore A
D1 Q1
Q1CKFFD
D2 Q2
Q2CKFFD Z1
D
Clock
Clock
D
Z
Q1
Q2
Qui lrsquoingresso asincrono D egrave sincronizzato dai FF Uscita Z sincrona
Generare un impulso di uscita di un periodo di clock per ingresso 1 Un ulteriore impulso viene generato solo se lrsquoingresso torna a 1 dopo essere stato a 0 Lrsquouscita deve essere sincronizzata con il clock
24
25
D1 Q1
Q1CKFFD
D2 Q2
Q2CKFFD Z
D
Clock
Monoimpulsore A
1
0
1
1
0
A0 B1
C0
0
A
A
A
-
B
C
C
-
DQ2
Q1
B
0 1
C
-
Z0
0
1
-
A 00
--
00
00
10
--
11
11
DQ2
Q1
01
0 1
11
10
Z0
0
-
1
0000
10
11
01
B
C
-
A
Q1=D Q2= DQ1 Z=Q1Q2
00
00
01
01
10
10
11
11
DQ2
Q1
01
0 1
11
10
Z0
0
0
1
00
MAhellip
Q1=D Q2= Q1 Z=Q1Q2
Moore necessariamente
26
D1 Q1
Q1CKFFD
D2 Q2
Q2CKFFD Z2
D
Clock
Monoimpulsore B
Clock
D
Z2
Q1
Q2
Lrsquoingresso asincrono D agisce direttamente sullrsquouscita Z che quindi risulta asincrona
Qui la rete egrave di tipo Mealy e quindi con ingresso asincrono egrave possibile che vi sia uscita asincrona
27
D Q
QCKFFD Z
D
Clock
Monoimpulsore C
Clock
D
Z
Q
Anche qui lrsquoingresso asincrono D agisce direttamente sullrsquouscita Z che quindi risulta asincronaSi noti che se lrsquoingresso oscilla una volta che il FF ha campionato un 1 e fino a quando non campiona uno 0 lrsquouscita oscilla
Qui la rete egrave di tipo Mealy e quindi con ingresso asincrono egrave possibile che vi sia uscita asincrona
28
Considerazioni sui monoimpulsori A B e C
Il diagramma degli stati corrispondente al funzionamento reale dei due monoimpulsori B e C NON puograve essere tracciato percheacute di fatto le due reti (di tipo Mealy) NON sono sincrone Infatti il diagramma di circuiti sincroni prevede implicitamente un comportamento sincrono anche degli ingressi fatto non verificato nei casi B e C
La cosa non vale per il monoimpulsore A in quanto pur essendo lrsquoingresso asincrono lrsquouscita (rete di tipo Moore) dipende solo dagli stati In altre parole il comportamento della rete rende intrinsecamente sincroni ingressi fisicamente asincroni
Il diagramma degli stati che riflette il comportamento delle due reti B e C puograve essere tracciato solo partendo da una analisi asincrona ldquoaprendordquo quindi i FF D inseriti Ovviamente egrave possibile progettare le due reti senza lrsquouso dei FF D partendo da un diagramma degli stati asincrono ldquotradizionalerdquo
A scopo di esercizio si suggerisce la sintesi e la simulazione con Altera dei tre monoimpulsori come reti asincrone Si tratta di circuiti on due ingressi Ck e D
29
Monoimpulsori A-B-C
30
31
Contatori
A B C D Z
Circuiti senza ingresso (a parte il clock) nella versione piugrave semplice
D0 Q0
Q0CKFFD
MUX
1
0D1 Q1
Q1CKFFD
(Il clock egrave spesso sottinteso nei circuiti sincroni)
U0 U1
Esempio contatore binario x 4 con decodifica del 3
000 010 100 111
OUT
Q1 cambia stato quando Q0 egrave a 1 e passa a 0
CK
u1
u0
OUT (0) (1) (2) (0) (1) (2)(3) (3)
Contatore x 4 con decodifica del 3
33
Contatori binari in base non potenza di 2
A B C D E
000 001 010 011 100Contatore
binario per 5
D0 Q0
Q0CKFFD
MUX
1
0 1D1 Q1
Q1CKFFD
MUX
1
0D Q2
Q2CKFFD
Questo conta x8 ma per contare x5 arrivati a 4 bisogna ritornare a 0
34
D0 Q0
Q0CKFFD D1 Q1
Q1CKFFD
MUX
1
0 D2 Q2
Q2CKFFD
MUX
1
0
ABC
ldquo4rdquo
Contatore x 5
Decoder
La decodifica del 4 porta a zero lrsquouscita del decodificatore e quindi a 0 tutte le uscite degli AND rosa e al successivo fronte positivo del clock i tre FF campionano uno ldquo0rdquo
Per esercizio sintetizzare un contatore x 100 partendo dalla sintesi di un contatore decimale ovvero di un contatore x10 (da sintetizzare) Quanti FF per un contatore decimale I contatori decimali si trovano integrati in Altera
ldquo3rdquo
35
Contatori con ingressi di controllo
Ex Contatore integrato x 16 con Load e Enable
bull Il contatore conta per 16 (0-15) se il segnale EN egrave a 1 Allorchegrave il segnale LD va a 1 il dato presente sugli ingressi D egrave inserito nei 4 FF (lrsquoingresso puograve essere sincrono o asincrono) Nel caso precedente il decodificatore del ldquo3rdquo (uscita vera va portato) allrsquoingresso LD con tutti i Di a zero
bull In generale il contatore fornisce anche unrsquouscita ldquocarryrdquo che va a 1 quando il contatore raggiunge il valore FF Questa uscita puograve essere connessa allrsquoenable di un contatore a valle per ottenere un contatore per 256 cosigrave via (Progettarlo come esercizio)
EN
Q0 Q1 Q2 Q3CKLD
D0 D1 D2 D3
EN
Q0 Q1 Q2 Q3CK
CYLD
D0 D1 D2 D3
bull Esistono contatori UPDOWN nei quali un ingresso (UD) seleziona se il conteggio deve avvenire avanti o indietro Nel caso sia selezionata la modalitagrave ldquoindietrordquo il carry si attiva quando si raggiunge il valore ldquotutti zerirdquo
bull Esiste una molteplicitagrave di contatori ciascuno con le proprie specifiche peculiaritagrave con o senza RESET (che normalmente agisce in modo asincrono) UD con o senza LD etc etc
NB qualunque circuito sincrono (con sequenza non binaria) riconducibile al diagramma degli stati di un contatore egrave sempre un contatore
101 010 000 111 110 Contatore x 5 non binario
36
74163 contatore reale x 16 con Load Reset e Enable (T e P)I segnali di controllo sono sincroni ovvero agiscono sul fronte positivo del clock (rising edge)
74138 decoder 38 con uscite negate se G2A e G2B entrambi a zero e G1 a 1 Altrimenti tutte uscite alte
Direttorio Counter Glitch
Contatore binario x 8 e glitches
37
Glitch
Simulazione timingNB la presenza e la durata del glitch dipende dalle caratteristiche elettriche dei dispositivi
dalla loro tecnologia etc Nel caso dei dispositivi Altera dipende dal tipo di dispositivo sul quale egrave realizzato il circuito Analogamente la sensibilitagrave di eventuali ingressi di clock collegati allrsquouscita con il glitch dipende dalle caratteristiche del dispositivo Se ad esempio nel dispositivo Altera utilizzato si collega allrsquouscita Y6 il clock di un FFD non si ha commutazione del FF ma questo non egrave vero in assoluto
38
Cosa succede al contatore X5 progettato precedentemente se allrsquoaccensione non disponendo di un segnale di RESET i FF si portano in uno stato non facente parte del cicloNB La condizione allrsquoaccensione egrave del tutto casuale e dipende unicamente dalle condizioni elettriche
di realizzazione Ersquo impredicibileSupponiamo che i FF si portino al valore 110 (il numero 6 fuori dal ciclo) Analizziamo il comportamento
D0 Q0Q0CK
FFD D1 Q1Q1CK
FFD
MUX
1
0 D2 Q2Q2CK
FFD
MUX
1
0
ABC
ldquo4rdquo
000 001 010 011 100 110 111
In questo caso ci si riporta nella situazione di conteggio regolare (verificare con la tabella degli stati ) ma il comportamento in generale dipende dalla realizzazione e in altre realizzazione i due stati potrebbero essere separati dal ciclo principale che quindi non verrebbe mai raggiunto Ecco la funzione del RESET
39
Solo come esempio (da non utilizzare ) a scopo didattico vediamo la tabella delle transizioni di un contatore per 6 UpDown con comando di Reset I segnali di ingresso cambiano in modo asincrono ma hanno effetto in modo sincrono
Per compensare allrsquoaccensione
Sintetizzare e simulareCome dovrebbe essere modificato lo schema in Altera per permettere di
ldquopresettarerdquo in modo asincrono il contatore a un particolare valore di ingresso
00 01 11 10UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
111
110
000 101
000
101
y3 y2 y100 01 11 10
UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
000 000111
000 000 000 000110
000 101
000
000 000
101
y3 y2 y1
40
D0Q0
CKFFD
Clocky2
DEC
y3
y2
y1
ldquo1rdquo
ldquo2rdquo
ldquo3rdquo
ldquo4rdquo
1
0
UPDown
Sintesi di y2 in modo ldquodirettordquo
1
0
00 01 11 10UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
000 000111
000 000 000 000110
000 101
000
000 000
101
y3 y2 y1
41
Cassaforte hellipDisponendo di un contatore per 8 (ma anche per 16 etc) con reset sincrono e sempre abilitato al conteggio come potrei realizzare il circuito di apertura della cassaforte (sequenza X1X2 00-01-01-10) con modello Moore
Cx8RES
Q0 Q1 Q2 CK
RES= (ldquo0rdquoX1X2 + ldquo1rdquo X1X2 + ldquo2rdquo X1X2 + ldquo3rdquo X1 X2)Z = ldquo4rdquo (ldquo0rdquordquo1rdquordquo2rdquordquo3rdquordquo4rdquo sono le decodifiche binarie delle tre uscite del contatore)
Il contatore si resetta ogni volta che non si presenta lrsquoingresso giusto relativo al particolare stato Ilcontatore quindi si resetta e rimane resettato se non nelle condizioni espresse dalla funzione RESIl contatore arrivato a 4 (Z=1) si resetta comunque al successivo fronte del clock
Le reti sincrone si progettano sempre come combinazione di blocchi disponibili e logica ldquorandomrdquo
ABC
ldquo0rdquoldquo1rdquoldquo2rdquoldquo3rdquoldquo4rdquo
RLAND-OR
X1X2
RESZ
Cx8RES
Q0 Q1 Q2 CK
42
Contatori
EN
Q0 Q1 Q2 Q3CKCY
RESET
bull Attenzione Consideriamo il contatore di figura (questa volta con RESET asincrono) e supponiamo di utilizzarlo per contare per 5 (NB per il Reset si usa il ldquo5rdquo in questo casohellip glitch)
ABCD
ldquo5rdquo
ldquo1rdquo Percheacute questo schema egrave sbagliato
bull Percheacute presenta una corsa critica Nel momento in cui anche uno solo dei FF si resetta (e non tutti nello stesso istante) viene a mancare la configurazione ldquo4rdquo sul decoder e quindi alcuni FF potrebbero non fare in tempo a resettarsi E allora
EN
Q0 Q1 Q2 Q3CKCY
RESET
ABCD
ldquo5rdquo
ldquo1rdquo
RS
Y ldquo0rdquo
bull Cosigrave facendo il ldquo4rdquo attiva il SET e il FF NON si resetta fino a quando non egrave stato raggiunto la ldquo0rdquo NB lo schema ldquosbagliatordquo si puograve usare solo se si egrave certi della rapiditagrave di reset dei FF del contatore
bull Verificare con Altera
Sintesi cassaforte con moduli
Altera Cassaforte sincrona con moduli
Rete di controllo
Contatore con Reset asincrono e Load sincrono
43
NB In questo progetto la sintesi egrave stata condotta in modo ldquodirettordquo ovvero senza passare per la sintesi formale e utilizzando componenti disponibili e helliphellip materia grigia La sintesi dei circuiti sincroni si fa sempre e unicamente cosigrave
44
Simulazione funzionale (no timing)
NB I segnali di ingresso sono campionati SOLO sul fronte positivo del clock anche se si presentano asincroni Il segnale di uscita si attiva al clock successivo al riconoscimento della sequenza La posizione di ldquoriposordquo del contatore egrave il valore 4 I segnali Yi sono le decodifiche dei segnali di di ingresso X1 e X2
00 01 01 10
45
Simulazione timing
46
NB Si egrave scelto di utilizzare SOLO gli ingressi SINCRONI del contatore per semplicitagrave Il contatore rimane al valore 100 fino a quando non si presenta allrsquoingresso il valore 00 Se la sequenza egrave esatta il contatore continua a contare in avanti fino alla generazione dellrsquouscita (valore 11 del contatore) altrimenti si riporta al valore 100 ovvero Qc=1) Il segnale GN (Gate Not) egrave quello che abilita il conteggio Il sistema riamane stabile a 000 per una sequenza lunga a piacere di X1=0 e X2=0 e si sposta quando dopo 00 si ha 01 Come si evince dalla simulazione se la sequenza non egrave corretta o egrave interrotta il contatore si riporta sempre a 100
00 01 11 10
001 000 000
X1
000000 010 100 100001
000 100 100 011010
100 100 100 100011
000 100 100 100100
000 100 100 100101
000 100 100 100110
000 100 100 100111
0
0
0
1
0
0
0
0
X2
000
NB la tabella delle transizioni derivata della rete realizzata NON ha ovviamente condizioni di indifferenza
47
Progettare un contatore packed BCD updown a 8 bit (due digit)
48
Generazione di forme drsquoondabull Ersquo possibile generare forme drsquoonda periodiche mediante circuiti sincroni di periodo
sottomultiplo intero del clock
Esempio 1Divisore di frequenza per 2
D0k Q0k
CK D Q
CK Clock
Q
Esempio 2 generare una forma drsquoonda periodica con periodo 5T (ove T sia il periodo del clock) in cui in un semiperiodo 3T lrsquouscita sia alta e nellrsquoaltro semiperiodo 2T lrsquouscita sia bassa
Q0 Q1 Q2 CK
Cx5
C
B
A
01234
DecoderDemux
Clock
ZZ T
3T2T
3T
NB una rete logica egrave in grado di effettuare delle divisioni di frequenza e mai delle moltiplicazioni di frequenza (che si possono ottenere solo con circuiti analogici non lineari)
49
Di che circuito si tratta
D0k Q0k
CK D0 Q0
CKQ0
D0k Q0k
CK D1 Q1
CK
D0k Q0k
CK D2 Q2
CKClock
Clock
Q0
Q1
Q2
Ersquo un contatore binario ma non sincrono Infatti i vari FF NON utilizzano lo stesso clock e questo porta a un piccolo disallineamento sulle uscite Non egrave sintetizzabile come una rete sincrona e una sintesi formale sarebbe possibile solo trattando il circuito come asincrono ovvero ldquoaprendordquo i FF Sarebbe possibile trasformarlo in un contatore x6 mantenendo la stessa impostazione
Sintetizzare e simulare con Altera
NB il segnale di clock non egrave in comune
50
7493
51
Altera Contatore asincrono
Contatore asincrono
52
Simulazione timing
53
Come puograve essere utilizzato un FFD per catturare un impulso piugrave breve di un periodo
D2 Q2
Q2CKFFD Z
Clock
D1 Q1
Q1CKFFD
D0 Q00
Q0CKFFD
ldquo1rdquo CL
Lrsquoimpulso breve viene catturato dal FF 0 (purcheacute di larghezza sufficiente per la tecnologia del FF) - che quindi agisce come integratore ndash la cui uscita alimenta il monoimpulsore di tipo A Lrsquoattivazione del FF 1 resetta il FF 0 (supponendo che il segnale di CL sia ldquopositiverdquotruerdquo)
Ci puograve essere un problema se il CL agisce in modo asincrono
NB questo circuito e quello del lucido precedente evidenziano il fatto che nella realtagrave nessuna rete egrave solo sincrona ma bensigrave egrave pressocheacute sempre necessario utilizzare reti di natura diversa anche percheacute vi egrave sempre una interazione fra reti con clock diversi eo con segnali provenienti dal mondo esterno NON sincronizzati con il clock
Monoimpulsore di tipo A ldquorivistordquo
54
bull Uno shift register a sinistra (a destra) egrave un registro composto da FFD che ad ogni clock trasferisce il valore del FF a destra (a sinistra) di ciascun FF nel FF stesso Nel FF piugrave a destra (sinistra) viene immesso uno ldquo0rdquo Questi tipi di registri shift si chiamano ldquologicirdquo
Shift register (registri a traslazione o scorrimento)
D0kQ0k
CK DnQn
CK
D0kQ0k
CK Dn-1Qn-1
CK
D0kQ0k
CK Dn-2Qn-2
CK
D0kQ0k
CK D0Q0
CK
ldquo0rdquo
Shift register a sinistra
bull Anche per i registri a traslazione esistono diverse versioni con ingresso parallelo e uscita seriale con ingresso seriale e uscita parallela con reset con load etc etc
bull Si noti che uno shift register egrave anche un contatore Si immagini per esempio che dopo un reset siano inseriti degli uni a partire da destra Lo shift register si riempie progressivamente di uni e quindi la posizione in cui egrave arrivato lrsquouno indica il valore del conteggio in base a un codice ldquouno su nrdquo (un codice decodificato)
bull Spesso uno stesso registro puograve traslare a destra o a sinistra in funzione di una segnale di controllo Ovviamente questo si ottiene premettendo a ogni ingresso Di un MUX a due vie che preleva in funzione del segnale di controllo Qigrave+1 o Qigrave-1 Con questa configurazione lo shift register diventa anche un contatore avantiindietro
Registro a scorrimento (shift-register) a 3 bit
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
IN
OUT2OUT1OUT0
CK
CK
IN
A_RESET
OUT1
OUT2
OUT0
Registro a scorrimento (shift-register) a 3 bit
57
Esempio 74164 (serial In parallel OUT)
bull In questo registro a traslazione ad ogni fronte positivo del clock i dati sono traslati a destra (Q0 -gt Q1 Q1-gtQ2 etc) Il registro egrave dotato in un Master Reset (vero negato) e il dato inserito nel FF Q0 egrave dato dallrsquoAND dei due ingressi Dsa e Dsb
bull Si noti che lrsquooperazione di shift corrisponde aritmeticamente alle operazioni di divisione e moltiplicazione per 2 Si supponga che in Q0 vi sia il bit meno significativo e in Q7 il meno significativo
0 1 1 0 1 0 1 0
010101102 = 10810
Shift left =gt x2
Shift right =gt 2
101011002 = 21610
001010112 = 5910
NB nel dispositivo i bit sono posti in ordine invertito e quindi un shift left del numero corrisponde a uno shift right sul dispositivo
58
bull Esistono anche i registri a traslazione ldquoaritmeticirdquo In questi shift register a destra anzicheacute fare entrare nel FF piugrave a sinistra lo ldquo0rdquo viene immesso sempre ripetutamente il suo valore logico
Shift aritmetico
Q7 Q6 Q5 Q4 Q3 Q2 Q1 Q0
D7 D6 D5 D4 D3 D2 D1 D0
I LDCK Esempio
11001010SRA
11100101 interpretato in complemento a 2
001101102=5410
C2 C2
000110112=2710
bull Lo shift aritmetico a destra effettua una divisione per 2 mantenendo il segno
59
Rotazione
Nei computer egrave sovente necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register
D0kQ0k
CK DnQn
CK
D0kQ0k
CK Dn-1Qn-1
CK
D0kQ0k
CK Dn-2Qn-2
CK
D0kQ0k
CK D0Q0
CK
Molto spesso nei computer egrave necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register con direzione programmabile In questo caso su D0 ad esempio puograve essere avviato o Q1 o Qn
60
Contatori con shift register ndash Contatore retroazionato EX-OR
Q2Q0
Shift right 3 bitDQ1
110 111 011 101 010 001
Diagramma degli stati disgiunto
Uno shift register con n FF retroazionato con un EX-OR (scelta degli ingressi variabile) egrave un contatore NON binario che conta per 2n-1 (purcheacute presettato a un valore diverso da tutti zeri)
000
100
61
Contatore di Johnson (riempimento e svuotamento)
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
000-gt100-gt110-gt111-gt011-gt001-gt000-gtStati isolati 101-gt010-gt101gt1
Poicheacute configurazioni adiacenti del codice Johnson differiscono di un solo bit il contatore puograve essere utilizzato per generare forme drsquoonda prive di alee
62
Contatore ad anello con un solo 1 (ovvero che genera direttamente il codice 1su n)
FFDD Q
QR
RESET
FFDD Q
QR
RESET
FFDD Q
QPR
RESET
OUT3OUT1OUT0
CK
FFDD Q
QR
RESET
OUT2
0001-gt1000-gt0100-gt0010-gt0010n FF per contare per n (mentre con i contatori binari il numero dei FF egrave il log2m ove m egrave il primo intero maggiore o uguale a n)
63
Barrel shifter (rotore)Un barrel shifter egrave uno shift register in grado di traslare di ldquonrdquo posizioni in un solo clock il contenuto dei suoi FF In figura egrave riportato il barrel shifter della Altera Gli ingressi A-H in presenza dellrsquoattivazione del segnale LDST al primo fronte positivo del clock sono depositati nei FF Quando LDST egrave 0 ad ogni fronte positivo del clock i bit di uscita sono ruotati di n posizioni in senso antiorario (ovvero lrsquouscita H diventa la G la G diventa la Fhellipe lrsquouscita A diventa la H) ove n egrave il valore binario indicato dai segnali S0 S1 e S2
Si noti che il circuito in questione egrave di fatto un registro con 8 FF allrsquoingresso di ciascuno dei quali egrave previsto un MUX a 8 vie che pilotato dai segnali S0 S1 e S2 che seleziona uno degli 8 uscite del dispositivo La struttura interna puograve essere osservata ldquoclikkandordquo due volte sul dispositivo nello schema di Altera
64
Barrel shifter
6565
66
Simulazione timing
67
bull Utilizzando il sistema Altera progettare un orologio con secondi minuti ora partendo da un oscillatore a quarzo con frequenza 500 KHz
bull E se si volesse proseguire e realizzare anche un datario (giorno mese e anno )
bull Come potrebbe essere integrato con una sveglia Si ricordi che lrsquoorologio deve essere anche essere ldquopresettatordquo
bull Quali circuiti utilizzare per la visualizzazione
68
EPROM
X0nZ0m
y0kY0k
Clock
D0kQ0k
FFD0k
CK D0kQ0k CK
Reti sincrone con EPROM
Al posto delle EPROM si utilizzano ora dei PLA ovvero dispositivi nei quali si nei quali le funzioni combinatorie sono ottimizzate ma il principio egrave assolutamente il medesimo
69
Progettare con Altera una rete logica sincrona che utilizzando registri 374 ALU 74181 un contatore e altri dispositivi ritenuti necessari permetta di eseguire in sequenza la somma di due dati di 4 bit senza segno ingresso esegua il complemento a 2 inverta la parte bassa con la parte alta del risultato e infine moltiplichi il tutto logicamente per 2
La soluzione egrave sempre decomponibile in tre sottosistemi il controllo con la sua decodifica (unitagrave di controllo) il percorso dei dati con le unitagrave che li trasformano (datapath) e i registri di deposito e di ingresso dei dati
Questa egrave la struttura base di qualunque unitagrave centrale di qualunque computer
La differenza consiste solo nel fatto che anzicheacute avere una sequenza fissa di operazioni ne viene generata una volta a volta che dipende appunto dalla istruzione che deve essere eseguita Come si vedragrave approfonditamente nel corso di Calcolatori T del II anno (prof Neri e Mattoccia)
Arrivederci al corso di Calcolatori T del II anno (sapendo perfettamente le reti logiche helliphellip)
18
b
00 01 11 10
a a aa
b g a ab
b d a ag
b a a ed
b a a ae
X1X2
0
0
0
0
1
Cassaforte sincrona
001
00 01 11 10
000 000 000000
001 011 000 000001
001 010 000 000011
001 000 000 100010
001 000 000 000100
X1X2
-- -- -- --101
-- -- -- --111
-- -- -- --110
0
0
0
0
1
--
--
--
Y1Y2 Y3
a =gt 000b =gt 001g =gt 011d =gt 010e =gt 100
D1= X1X2Y2Y3
D2=X1X2Y3
D3=X1X2+X1Y2Y3 Z =Y1
Sintetizzando con FFD la sintesi degli ingressi Di si ottiene sintetizzando le funzioni Yi (Yn+1=Dn)
Nessun problema di corse codifica libera (possibilmente ottima)
19
Sintesi
Direttorio cassaforte sincrona
20
00 01 01 10
Sintesi ndash simulazione funzionale
NB Gli ingressi cambiano in modo NON sincrono con il clock ma lrsquo uscita egrave sincrona essendo la rete di tipo Moore
21
Sintesi ndash simulazione timing
Si notino i ritardi delle uscite dei FF e dei gates da esse dipendenti rispetto al fronte positivo del clock (ad esempio d) se la frequenza del clock fosse eccessiva il sistema NON funzionerebbe piugrave correttamente
d
22
E con Mealy
B
00 01 11 10
F A GA
B C A GB
B D A GCB F A ED
B F A GE
B F AA- GF
B F A GG
0
0
0
0
1
0
0
X1X2
B0
00 01 11 10
F0 A0 G0A
B0 C0 A0 G0B
B0 D0 A0 G0CB0 F0 A0 E1D
B1 F1 A1 G1E
B0 F0 A0A-G0F
B0 F0 A0 G0G
X1X2
Potrei mettere una indifferenza sullrsquouscita Si si possono mettere indifferenze sulle uscite che cambiano Anticipazione o ritardo del cambiamento
Sintetizzare e simulare con Altera
23
bull Allrsquoesame orale egrave necessario portare un esercizio di reti sincrone e uno di reti asincrone NON ldquomutuatordquo da altri hellip
bull I due esercizi debbono essere portati su una chiavetta (o dispositivo equivalente) debbono contenere una spiegazione e anche la progettazionesimulazione con Altera
bull Il candidato deve dimostrare di sapere usare il sistema Altera e spiegare i progetti portati
bull Gli esercizi di reti sincrone hanno spesso il diagramma degli stati ma solo per verificahellip
Monoimpulsore A
D1 Q1
Q1CKFFD
D2 Q2
Q2CKFFD Z1
D
Clock
Clock
D
Z
Q1
Q2
Qui lrsquoingresso asincrono D egrave sincronizzato dai FF Uscita Z sincrona
Generare un impulso di uscita di un periodo di clock per ingresso 1 Un ulteriore impulso viene generato solo se lrsquoingresso torna a 1 dopo essere stato a 0 Lrsquouscita deve essere sincronizzata con il clock
24
25
D1 Q1
Q1CKFFD
D2 Q2
Q2CKFFD Z
D
Clock
Monoimpulsore A
1
0
1
1
0
A0 B1
C0
0
A
A
A
-
B
C
C
-
DQ2
Q1
B
0 1
C
-
Z0
0
1
-
A 00
--
00
00
10
--
11
11
DQ2
Q1
01
0 1
11
10
Z0
0
-
1
0000
10
11
01
B
C
-
A
Q1=D Q2= DQ1 Z=Q1Q2
00
00
01
01
10
10
11
11
DQ2
Q1
01
0 1
11
10
Z0
0
0
1
00
MAhellip
Q1=D Q2= Q1 Z=Q1Q2
Moore necessariamente
26
D1 Q1
Q1CKFFD
D2 Q2
Q2CKFFD Z2
D
Clock
Monoimpulsore B
Clock
D
Z2
Q1
Q2
Lrsquoingresso asincrono D agisce direttamente sullrsquouscita Z che quindi risulta asincrona
Qui la rete egrave di tipo Mealy e quindi con ingresso asincrono egrave possibile che vi sia uscita asincrona
27
D Q
QCKFFD Z
D
Clock
Monoimpulsore C
Clock
D
Z
Q
Anche qui lrsquoingresso asincrono D agisce direttamente sullrsquouscita Z che quindi risulta asincronaSi noti che se lrsquoingresso oscilla una volta che il FF ha campionato un 1 e fino a quando non campiona uno 0 lrsquouscita oscilla
Qui la rete egrave di tipo Mealy e quindi con ingresso asincrono egrave possibile che vi sia uscita asincrona
28
Considerazioni sui monoimpulsori A B e C
Il diagramma degli stati corrispondente al funzionamento reale dei due monoimpulsori B e C NON puograve essere tracciato percheacute di fatto le due reti (di tipo Mealy) NON sono sincrone Infatti il diagramma di circuiti sincroni prevede implicitamente un comportamento sincrono anche degli ingressi fatto non verificato nei casi B e C
La cosa non vale per il monoimpulsore A in quanto pur essendo lrsquoingresso asincrono lrsquouscita (rete di tipo Moore) dipende solo dagli stati In altre parole il comportamento della rete rende intrinsecamente sincroni ingressi fisicamente asincroni
Il diagramma degli stati che riflette il comportamento delle due reti B e C puograve essere tracciato solo partendo da una analisi asincrona ldquoaprendordquo quindi i FF D inseriti Ovviamente egrave possibile progettare le due reti senza lrsquouso dei FF D partendo da un diagramma degli stati asincrono ldquotradizionalerdquo
A scopo di esercizio si suggerisce la sintesi e la simulazione con Altera dei tre monoimpulsori come reti asincrone Si tratta di circuiti on due ingressi Ck e D
29
Monoimpulsori A-B-C
30
31
Contatori
A B C D Z
Circuiti senza ingresso (a parte il clock) nella versione piugrave semplice
D0 Q0
Q0CKFFD
MUX
1
0D1 Q1
Q1CKFFD
(Il clock egrave spesso sottinteso nei circuiti sincroni)
U0 U1
Esempio contatore binario x 4 con decodifica del 3
000 010 100 111
OUT
Q1 cambia stato quando Q0 egrave a 1 e passa a 0
CK
u1
u0
OUT (0) (1) (2) (0) (1) (2)(3) (3)
Contatore x 4 con decodifica del 3
33
Contatori binari in base non potenza di 2
A B C D E
000 001 010 011 100Contatore
binario per 5
D0 Q0
Q0CKFFD
MUX
1
0 1D1 Q1
Q1CKFFD
MUX
1
0D Q2
Q2CKFFD
Questo conta x8 ma per contare x5 arrivati a 4 bisogna ritornare a 0
34
D0 Q0
Q0CKFFD D1 Q1
Q1CKFFD
MUX
1
0 D2 Q2
Q2CKFFD
MUX
1
0
ABC
ldquo4rdquo
Contatore x 5
Decoder
La decodifica del 4 porta a zero lrsquouscita del decodificatore e quindi a 0 tutte le uscite degli AND rosa e al successivo fronte positivo del clock i tre FF campionano uno ldquo0rdquo
Per esercizio sintetizzare un contatore x 100 partendo dalla sintesi di un contatore decimale ovvero di un contatore x10 (da sintetizzare) Quanti FF per un contatore decimale I contatori decimali si trovano integrati in Altera
ldquo3rdquo
35
Contatori con ingressi di controllo
Ex Contatore integrato x 16 con Load e Enable
bull Il contatore conta per 16 (0-15) se il segnale EN egrave a 1 Allorchegrave il segnale LD va a 1 il dato presente sugli ingressi D egrave inserito nei 4 FF (lrsquoingresso puograve essere sincrono o asincrono) Nel caso precedente il decodificatore del ldquo3rdquo (uscita vera va portato) allrsquoingresso LD con tutti i Di a zero
bull In generale il contatore fornisce anche unrsquouscita ldquocarryrdquo che va a 1 quando il contatore raggiunge il valore FF Questa uscita puograve essere connessa allrsquoenable di un contatore a valle per ottenere un contatore per 256 cosigrave via (Progettarlo come esercizio)
EN
Q0 Q1 Q2 Q3CKLD
D0 D1 D2 D3
EN
Q0 Q1 Q2 Q3CK
CYLD
D0 D1 D2 D3
bull Esistono contatori UPDOWN nei quali un ingresso (UD) seleziona se il conteggio deve avvenire avanti o indietro Nel caso sia selezionata la modalitagrave ldquoindietrordquo il carry si attiva quando si raggiunge il valore ldquotutti zerirdquo
bull Esiste una molteplicitagrave di contatori ciascuno con le proprie specifiche peculiaritagrave con o senza RESET (che normalmente agisce in modo asincrono) UD con o senza LD etc etc
NB qualunque circuito sincrono (con sequenza non binaria) riconducibile al diagramma degli stati di un contatore egrave sempre un contatore
101 010 000 111 110 Contatore x 5 non binario
36
74163 contatore reale x 16 con Load Reset e Enable (T e P)I segnali di controllo sono sincroni ovvero agiscono sul fronte positivo del clock (rising edge)
74138 decoder 38 con uscite negate se G2A e G2B entrambi a zero e G1 a 1 Altrimenti tutte uscite alte
Direttorio Counter Glitch
Contatore binario x 8 e glitches
37
Glitch
Simulazione timingNB la presenza e la durata del glitch dipende dalle caratteristiche elettriche dei dispositivi
dalla loro tecnologia etc Nel caso dei dispositivi Altera dipende dal tipo di dispositivo sul quale egrave realizzato il circuito Analogamente la sensibilitagrave di eventuali ingressi di clock collegati allrsquouscita con il glitch dipende dalle caratteristiche del dispositivo Se ad esempio nel dispositivo Altera utilizzato si collega allrsquouscita Y6 il clock di un FFD non si ha commutazione del FF ma questo non egrave vero in assoluto
38
Cosa succede al contatore X5 progettato precedentemente se allrsquoaccensione non disponendo di un segnale di RESET i FF si portano in uno stato non facente parte del cicloNB La condizione allrsquoaccensione egrave del tutto casuale e dipende unicamente dalle condizioni elettriche
di realizzazione Ersquo impredicibileSupponiamo che i FF si portino al valore 110 (il numero 6 fuori dal ciclo) Analizziamo il comportamento
D0 Q0Q0CK
FFD D1 Q1Q1CK
FFD
MUX
1
0 D2 Q2Q2CK
FFD
MUX
1
0
ABC
ldquo4rdquo
000 001 010 011 100 110 111
In questo caso ci si riporta nella situazione di conteggio regolare (verificare con la tabella degli stati ) ma il comportamento in generale dipende dalla realizzazione e in altre realizzazione i due stati potrebbero essere separati dal ciclo principale che quindi non verrebbe mai raggiunto Ecco la funzione del RESET
39
Solo come esempio (da non utilizzare ) a scopo didattico vediamo la tabella delle transizioni di un contatore per 6 UpDown con comando di Reset I segnali di ingresso cambiano in modo asincrono ma hanno effetto in modo sincrono
Per compensare allrsquoaccensione
Sintetizzare e simulareCome dovrebbe essere modificato lo schema in Altera per permettere di
ldquopresettarerdquo in modo asincrono il contatore a un particolare valore di ingresso
00 01 11 10UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
111
110
000 101
000
101
y3 y2 y100 01 11 10
UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
000 000111
000 000 000 000110
000 101
000
000 000
101
y3 y2 y1
40
D0Q0
CKFFD
Clocky2
DEC
y3
y2
y1
ldquo1rdquo
ldquo2rdquo
ldquo3rdquo
ldquo4rdquo
1
0
UPDown
Sintesi di y2 in modo ldquodirettordquo
1
0
00 01 11 10UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
000 000111
000 000 000 000110
000 101
000
000 000
101
y3 y2 y1
41
Cassaforte hellipDisponendo di un contatore per 8 (ma anche per 16 etc) con reset sincrono e sempre abilitato al conteggio come potrei realizzare il circuito di apertura della cassaforte (sequenza X1X2 00-01-01-10) con modello Moore
Cx8RES
Q0 Q1 Q2 CK
RES= (ldquo0rdquoX1X2 + ldquo1rdquo X1X2 + ldquo2rdquo X1X2 + ldquo3rdquo X1 X2)Z = ldquo4rdquo (ldquo0rdquordquo1rdquordquo2rdquordquo3rdquordquo4rdquo sono le decodifiche binarie delle tre uscite del contatore)
Il contatore si resetta ogni volta che non si presenta lrsquoingresso giusto relativo al particolare stato Ilcontatore quindi si resetta e rimane resettato se non nelle condizioni espresse dalla funzione RESIl contatore arrivato a 4 (Z=1) si resetta comunque al successivo fronte del clock
Le reti sincrone si progettano sempre come combinazione di blocchi disponibili e logica ldquorandomrdquo
ABC
ldquo0rdquoldquo1rdquoldquo2rdquoldquo3rdquoldquo4rdquo
RLAND-OR
X1X2
RESZ
Cx8RES
Q0 Q1 Q2 CK
42
Contatori
EN
Q0 Q1 Q2 Q3CKCY
RESET
bull Attenzione Consideriamo il contatore di figura (questa volta con RESET asincrono) e supponiamo di utilizzarlo per contare per 5 (NB per il Reset si usa il ldquo5rdquo in questo casohellip glitch)
ABCD
ldquo5rdquo
ldquo1rdquo Percheacute questo schema egrave sbagliato
bull Percheacute presenta una corsa critica Nel momento in cui anche uno solo dei FF si resetta (e non tutti nello stesso istante) viene a mancare la configurazione ldquo4rdquo sul decoder e quindi alcuni FF potrebbero non fare in tempo a resettarsi E allora
EN
Q0 Q1 Q2 Q3CKCY
RESET
ABCD
ldquo5rdquo
ldquo1rdquo
RS
Y ldquo0rdquo
bull Cosigrave facendo il ldquo4rdquo attiva il SET e il FF NON si resetta fino a quando non egrave stato raggiunto la ldquo0rdquo NB lo schema ldquosbagliatordquo si puograve usare solo se si egrave certi della rapiditagrave di reset dei FF del contatore
bull Verificare con Altera
Sintesi cassaforte con moduli
Altera Cassaforte sincrona con moduli
Rete di controllo
Contatore con Reset asincrono e Load sincrono
43
NB In questo progetto la sintesi egrave stata condotta in modo ldquodirettordquo ovvero senza passare per la sintesi formale e utilizzando componenti disponibili e helliphellip materia grigia La sintesi dei circuiti sincroni si fa sempre e unicamente cosigrave
44
Simulazione funzionale (no timing)
NB I segnali di ingresso sono campionati SOLO sul fronte positivo del clock anche se si presentano asincroni Il segnale di uscita si attiva al clock successivo al riconoscimento della sequenza La posizione di ldquoriposordquo del contatore egrave il valore 4 I segnali Yi sono le decodifiche dei segnali di di ingresso X1 e X2
00 01 01 10
45
Simulazione timing
46
NB Si egrave scelto di utilizzare SOLO gli ingressi SINCRONI del contatore per semplicitagrave Il contatore rimane al valore 100 fino a quando non si presenta allrsquoingresso il valore 00 Se la sequenza egrave esatta il contatore continua a contare in avanti fino alla generazione dellrsquouscita (valore 11 del contatore) altrimenti si riporta al valore 100 ovvero Qc=1) Il segnale GN (Gate Not) egrave quello che abilita il conteggio Il sistema riamane stabile a 000 per una sequenza lunga a piacere di X1=0 e X2=0 e si sposta quando dopo 00 si ha 01 Come si evince dalla simulazione se la sequenza non egrave corretta o egrave interrotta il contatore si riporta sempre a 100
00 01 11 10
001 000 000
X1
000000 010 100 100001
000 100 100 011010
100 100 100 100011
000 100 100 100100
000 100 100 100101
000 100 100 100110
000 100 100 100111
0
0
0
1
0
0
0
0
X2
000
NB la tabella delle transizioni derivata della rete realizzata NON ha ovviamente condizioni di indifferenza
47
Progettare un contatore packed BCD updown a 8 bit (due digit)
48
Generazione di forme drsquoondabull Ersquo possibile generare forme drsquoonda periodiche mediante circuiti sincroni di periodo
sottomultiplo intero del clock
Esempio 1Divisore di frequenza per 2
D0k Q0k
CK D Q
CK Clock
Q
Esempio 2 generare una forma drsquoonda periodica con periodo 5T (ove T sia il periodo del clock) in cui in un semiperiodo 3T lrsquouscita sia alta e nellrsquoaltro semiperiodo 2T lrsquouscita sia bassa
Q0 Q1 Q2 CK
Cx5
C
B
A
01234
DecoderDemux
Clock
ZZ T
3T2T
3T
NB una rete logica egrave in grado di effettuare delle divisioni di frequenza e mai delle moltiplicazioni di frequenza (che si possono ottenere solo con circuiti analogici non lineari)
49
Di che circuito si tratta
D0k Q0k
CK D0 Q0
CKQ0
D0k Q0k
CK D1 Q1
CK
D0k Q0k
CK D2 Q2
CKClock
Clock
Q0
Q1
Q2
Ersquo un contatore binario ma non sincrono Infatti i vari FF NON utilizzano lo stesso clock e questo porta a un piccolo disallineamento sulle uscite Non egrave sintetizzabile come una rete sincrona e una sintesi formale sarebbe possibile solo trattando il circuito come asincrono ovvero ldquoaprendordquo i FF Sarebbe possibile trasformarlo in un contatore x6 mantenendo la stessa impostazione
Sintetizzare e simulare con Altera
NB il segnale di clock non egrave in comune
50
7493
51
Altera Contatore asincrono
Contatore asincrono
52
Simulazione timing
53
Come puograve essere utilizzato un FFD per catturare un impulso piugrave breve di un periodo
D2 Q2
Q2CKFFD Z
Clock
D1 Q1
Q1CKFFD
D0 Q00
Q0CKFFD
ldquo1rdquo CL
Lrsquoimpulso breve viene catturato dal FF 0 (purcheacute di larghezza sufficiente per la tecnologia del FF) - che quindi agisce come integratore ndash la cui uscita alimenta il monoimpulsore di tipo A Lrsquoattivazione del FF 1 resetta il FF 0 (supponendo che il segnale di CL sia ldquopositiverdquotruerdquo)
Ci puograve essere un problema se il CL agisce in modo asincrono
NB questo circuito e quello del lucido precedente evidenziano il fatto che nella realtagrave nessuna rete egrave solo sincrona ma bensigrave egrave pressocheacute sempre necessario utilizzare reti di natura diversa anche percheacute vi egrave sempre una interazione fra reti con clock diversi eo con segnali provenienti dal mondo esterno NON sincronizzati con il clock
Monoimpulsore di tipo A ldquorivistordquo
54
bull Uno shift register a sinistra (a destra) egrave un registro composto da FFD che ad ogni clock trasferisce il valore del FF a destra (a sinistra) di ciascun FF nel FF stesso Nel FF piugrave a destra (sinistra) viene immesso uno ldquo0rdquo Questi tipi di registri shift si chiamano ldquologicirdquo
Shift register (registri a traslazione o scorrimento)
D0kQ0k
CK DnQn
CK
D0kQ0k
CK Dn-1Qn-1
CK
D0kQ0k
CK Dn-2Qn-2
CK
D0kQ0k
CK D0Q0
CK
ldquo0rdquo
Shift register a sinistra
bull Anche per i registri a traslazione esistono diverse versioni con ingresso parallelo e uscita seriale con ingresso seriale e uscita parallela con reset con load etc etc
bull Si noti che uno shift register egrave anche un contatore Si immagini per esempio che dopo un reset siano inseriti degli uni a partire da destra Lo shift register si riempie progressivamente di uni e quindi la posizione in cui egrave arrivato lrsquouno indica il valore del conteggio in base a un codice ldquouno su nrdquo (un codice decodificato)
bull Spesso uno stesso registro puograve traslare a destra o a sinistra in funzione di una segnale di controllo Ovviamente questo si ottiene premettendo a ogni ingresso Di un MUX a due vie che preleva in funzione del segnale di controllo Qigrave+1 o Qigrave-1 Con questa configurazione lo shift register diventa anche un contatore avantiindietro
Registro a scorrimento (shift-register) a 3 bit
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
IN
OUT2OUT1OUT0
CK
CK
IN
A_RESET
OUT1
OUT2
OUT0
Registro a scorrimento (shift-register) a 3 bit
57
Esempio 74164 (serial In parallel OUT)
bull In questo registro a traslazione ad ogni fronte positivo del clock i dati sono traslati a destra (Q0 -gt Q1 Q1-gtQ2 etc) Il registro egrave dotato in un Master Reset (vero negato) e il dato inserito nel FF Q0 egrave dato dallrsquoAND dei due ingressi Dsa e Dsb
bull Si noti che lrsquooperazione di shift corrisponde aritmeticamente alle operazioni di divisione e moltiplicazione per 2 Si supponga che in Q0 vi sia il bit meno significativo e in Q7 il meno significativo
0 1 1 0 1 0 1 0
010101102 = 10810
Shift left =gt x2
Shift right =gt 2
101011002 = 21610
001010112 = 5910
NB nel dispositivo i bit sono posti in ordine invertito e quindi un shift left del numero corrisponde a uno shift right sul dispositivo
58
bull Esistono anche i registri a traslazione ldquoaritmeticirdquo In questi shift register a destra anzicheacute fare entrare nel FF piugrave a sinistra lo ldquo0rdquo viene immesso sempre ripetutamente il suo valore logico
Shift aritmetico
Q7 Q6 Q5 Q4 Q3 Q2 Q1 Q0
D7 D6 D5 D4 D3 D2 D1 D0
I LDCK Esempio
11001010SRA
11100101 interpretato in complemento a 2
001101102=5410
C2 C2
000110112=2710
bull Lo shift aritmetico a destra effettua una divisione per 2 mantenendo il segno
59
Rotazione
Nei computer egrave sovente necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register
D0kQ0k
CK DnQn
CK
D0kQ0k
CK Dn-1Qn-1
CK
D0kQ0k
CK Dn-2Qn-2
CK
D0kQ0k
CK D0Q0
CK
Molto spesso nei computer egrave necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register con direzione programmabile In questo caso su D0 ad esempio puograve essere avviato o Q1 o Qn
60
Contatori con shift register ndash Contatore retroazionato EX-OR
Q2Q0
Shift right 3 bitDQ1
110 111 011 101 010 001
Diagramma degli stati disgiunto
Uno shift register con n FF retroazionato con un EX-OR (scelta degli ingressi variabile) egrave un contatore NON binario che conta per 2n-1 (purcheacute presettato a un valore diverso da tutti zeri)
000
100
61
Contatore di Johnson (riempimento e svuotamento)
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
000-gt100-gt110-gt111-gt011-gt001-gt000-gtStati isolati 101-gt010-gt101gt1
Poicheacute configurazioni adiacenti del codice Johnson differiscono di un solo bit il contatore puograve essere utilizzato per generare forme drsquoonda prive di alee
62
Contatore ad anello con un solo 1 (ovvero che genera direttamente il codice 1su n)
FFDD Q
QR
RESET
FFDD Q
QR
RESET
FFDD Q
QPR
RESET
OUT3OUT1OUT0
CK
FFDD Q
QR
RESET
OUT2
0001-gt1000-gt0100-gt0010-gt0010n FF per contare per n (mentre con i contatori binari il numero dei FF egrave il log2m ove m egrave il primo intero maggiore o uguale a n)
63
Barrel shifter (rotore)Un barrel shifter egrave uno shift register in grado di traslare di ldquonrdquo posizioni in un solo clock il contenuto dei suoi FF In figura egrave riportato il barrel shifter della Altera Gli ingressi A-H in presenza dellrsquoattivazione del segnale LDST al primo fronte positivo del clock sono depositati nei FF Quando LDST egrave 0 ad ogni fronte positivo del clock i bit di uscita sono ruotati di n posizioni in senso antiorario (ovvero lrsquouscita H diventa la G la G diventa la Fhellipe lrsquouscita A diventa la H) ove n egrave il valore binario indicato dai segnali S0 S1 e S2
Si noti che il circuito in questione egrave di fatto un registro con 8 FF allrsquoingresso di ciascuno dei quali egrave previsto un MUX a 8 vie che pilotato dai segnali S0 S1 e S2 che seleziona uno degli 8 uscite del dispositivo La struttura interna puograve essere osservata ldquoclikkandordquo due volte sul dispositivo nello schema di Altera
64
Barrel shifter
6565
66
Simulazione timing
67
bull Utilizzando il sistema Altera progettare un orologio con secondi minuti ora partendo da un oscillatore a quarzo con frequenza 500 KHz
bull E se si volesse proseguire e realizzare anche un datario (giorno mese e anno )
bull Come potrebbe essere integrato con una sveglia Si ricordi che lrsquoorologio deve essere anche essere ldquopresettatordquo
bull Quali circuiti utilizzare per la visualizzazione
68
EPROM
X0nZ0m
y0kY0k
Clock
D0kQ0k
FFD0k
CK D0kQ0k CK
Reti sincrone con EPROM
Al posto delle EPROM si utilizzano ora dei PLA ovvero dispositivi nei quali si nei quali le funzioni combinatorie sono ottimizzate ma il principio egrave assolutamente il medesimo
69
Progettare con Altera una rete logica sincrona che utilizzando registri 374 ALU 74181 un contatore e altri dispositivi ritenuti necessari permetta di eseguire in sequenza la somma di due dati di 4 bit senza segno ingresso esegua il complemento a 2 inverta la parte bassa con la parte alta del risultato e infine moltiplichi il tutto logicamente per 2
La soluzione egrave sempre decomponibile in tre sottosistemi il controllo con la sua decodifica (unitagrave di controllo) il percorso dei dati con le unitagrave che li trasformano (datapath) e i registri di deposito e di ingresso dei dati
Questa egrave la struttura base di qualunque unitagrave centrale di qualunque computer
La differenza consiste solo nel fatto che anzicheacute avere una sequenza fissa di operazioni ne viene generata una volta a volta che dipende appunto dalla istruzione che deve essere eseguita Come si vedragrave approfonditamente nel corso di Calcolatori T del II anno (prof Neri e Mattoccia)
Arrivederci al corso di Calcolatori T del II anno (sapendo perfettamente le reti logiche helliphellip)
19
Sintesi
Direttorio cassaforte sincrona
20
00 01 01 10
Sintesi ndash simulazione funzionale
NB Gli ingressi cambiano in modo NON sincrono con il clock ma lrsquo uscita egrave sincrona essendo la rete di tipo Moore
21
Sintesi ndash simulazione timing
Si notino i ritardi delle uscite dei FF e dei gates da esse dipendenti rispetto al fronte positivo del clock (ad esempio d) se la frequenza del clock fosse eccessiva il sistema NON funzionerebbe piugrave correttamente
d
22
E con Mealy
B
00 01 11 10
F A GA
B C A GB
B D A GCB F A ED
B F A GE
B F AA- GF
B F A GG
0
0
0
0
1
0
0
X1X2
B0
00 01 11 10
F0 A0 G0A
B0 C0 A0 G0B
B0 D0 A0 G0CB0 F0 A0 E1D
B1 F1 A1 G1E
B0 F0 A0A-G0F
B0 F0 A0 G0G
X1X2
Potrei mettere una indifferenza sullrsquouscita Si si possono mettere indifferenze sulle uscite che cambiano Anticipazione o ritardo del cambiamento
Sintetizzare e simulare con Altera
23
bull Allrsquoesame orale egrave necessario portare un esercizio di reti sincrone e uno di reti asincrone NON ldquomutuatordquo da altri hellip
bull I due esercizi debbono essere portati su una chiavetta (o dispositivo equivalente) debbono contenere una spiegazione e anche la progettazionesimulazione con Altera
bull Il candidato deve dimostrare di sapere usare il sistema Altera e spiegare i progetti portati
bull Gli esercizi di reti sincrone hanno spesso il diagramma degli stati ma solo per verificahellip
Monoimpulsore A
D1 Q1
Q1CKFFD
D2 Q2
Q2CKFFD Z1
D
Clock
Clock
D
Z
Q1
Q2
Qui lrsquoingresso asincrono D egrave sincronizzato dai FF Uscita Z sincrona
Generare un impulso di uscita di un periodo di clock per ingresso 1 Un ulteriore impulso viene generato solo se lrsquoingresso torna a 1 dopo essere stato a 0 Lrsquouscita deve essere sincronizzata con il clock
24
25
D1 Q1
Q1CKFFD
D2 Q2
Q2CKFFD Z
D
Clock
Monoimpulsore A
1
0
1
1
0
A0 B1
C0
0
A
A
A
-
B
C
C
-
DQ2
Q1
B
0 1
C
-
Z0
0
1
-
A 00
--
00
00
10
--
11
11
DQ2
Q1
01
0 1
11
10
Z0
0
-
1
0000
10
11
01
B
C
-
A
Q1=D Q2= DQ1 Z=Q1Q2
00
00
01
01
10
10
11
11
DQ2
Q1
01
0 1
11
10
Z0
0
0
1
00
MAhellip
Q1=D Q2= Q1 Z=Q1Q2
Moore necessariamente
26
D1 Q1
Q1CKFFD
D2 Q2
Q2CKFFD Z2
D
Clock
Monoimpulsore B
Clock
D
Z2
Q1
Q2
Lrsquoingresso asincrono D agisce direttamente sullrsquouscita Z che quindi risulta asincrona
Qui la rete egrave di tipo Mealy e quindi con ingresso asincrono egrave possibile che vi sia uscita asincrona
27
D Q
QCKFFD Z
D
Clock
Monoimpulsore C
Clock
D
Z
Q
Anche qui lrsquoingresso asincrono D agisce direttamente sullrsquouscita Z che quindi risulta asincronaSi noti che se lrsquoingresso oscilla una volta che il FF ha campionato un 1 e fino a quando non campiona uno 0 lrsquouscita oscilla
Qui la rete egrave di tipo Mealy e quindi con ingresso asincrono egrave possibile che vi sia uscita asincrona
28
Considerazioni sui monoimpulsori A B e C
Il diagramma degli stati corrispondente al funzionamento reale dei due monoimpulsori B e C NON puograve essere tracciato percheacute di fatto le due reti (di tipo Mealy) NON sono sincrone Infatti il diagramma di circuiti sincroni prevede implicitamente un comportamento sincrono anche degli ingressi fatto non verificato nei casi B e C
La cosa non vale per il monoimpulsore A in quanto pur essendo lrsquoingresso asincrono lrsquouscita (rete di tipo Moore) dipende solo dagli stati In altre parole il comportamento della rete rende intrinsecamente sincroni ingressi fisicamente asincroni
Il diagramma degli stati che riflette il comportamento delle due reti B e C puograve essere tracciato solo partendo da una analisi asincrona ldquoaprendordquo quindi i FF D inseriti Ovviamente egrave possibile progettare le due reti senza lrsquouso dei FF D partendo da un diagramma degli stati asincrono ldquotradizionalerdquo
A scopo di esercizio si suggerisce la sintesi e la simulazione con Altera dei tre monoimpulsori come reti asincrone Si tratta di circuiti on due ingressi Ck e D
29
Monoimpulsori A-B-C
30
31
Contatori
A B C D Z
Circuiti senza ingresso (a parte il clock) nella versione piugrave semplice
D0 Q0
Q0CKFFD
MUX
1
0D1 Q1
Q1CKFFD
(Il clock egrave spesso sottinteso nei circuiti sincroni)
U0 U1
Esempio contatore binario x 4 con decodifica del 3
000 010 100 111
OUT
Q1 cambia stato quando Q0 egrave a 1 e passa a 0
CK
u1
u0
OUT (0) (1) (2) (0) (1) (2)(3) (3)
Contatore x 4 con decodifica del 3
33
Contatori binari in base non potenza di 2
A B C D E
000 001 010 011 100Contatore
binario per 5
D0 Q0
Q0CKFFD
MUX
1
0 1D1 Q1
Q1CKFFD
MUX
1
0D Q2
Q2CKFFD
Questo conta x8 ma per contare x5 arrivati a 4 bisogna ritornare a 0
34
D0 Q0
Q0CKFFD D1 Q1
Q1CKFFD
MUX
1
0 D2 Q2
Q2CKFFD
MUX
1
0
ABC
ldquo4rdquo
Contatore x 5
Decoder
La decodifica del 4 porta a zero lrsquouscita del decodificatore e quindi a 0 tutte le uscite degli AND rosa e al successivo fronte positivo del clock i tre FF campionano uno ldquo0rdquo
Per esercizio sintetizzare un contatore x 100 partendo dalla sintesi di un contatore decimale ovvero di un contatore x10 (da sintetizzare) Quanti FF per un contatore decimale I contatori decimali si trovano integrati in Altera
ldquo3rdquo
35
Contatori con ingressi di controllo
Ex Contatore integrato x 16 con Load e Enable
bull Il contatore conta per 16 (0-15) se il segnale EN egrave a 1 Allorchegrave il segnale LD va a 1 il dato presente sugli ingressi D egrave inserito nei 4 FF (lrsquoingresso puograve essere sincrono o asincrono) Nel caso precedente il decodificatore del ldquo3rdquo (uscita vera va portato) allrsquoingresso LD con tutti i Di a zero
bull In generale il contatore fornisce anche unrsquouscita ldquocarryrdquo che va a 1 quando il contatore raggiunge il valore FF Questa uscita puograve essere connessa allrsquoenable di un contatore a valle per ottenere un contatore per 256 cosigrave via (Progettarlo come esercizio)
EN
Q0 Q1 Q2 Q3CKLD
D0 D1 D2 D3
EN
Q0 Q1 Q2 Q3CK
CYLD
D0 D1 D2 D3
bull Esistono contatori UPDOWN nei quali un ingresso (UD) seleziona se il conteggio deve avvenire avanti o indietro Nel caso sia selezionata la modalitagrave ldquoindietrordquo il carry si attiva quando si raggiunge il valore ldquotutti zerirdquo
bull Esiste una molteplicitagrave di contatori ciascuno con le proprie specifiche peculiaritagrave con o senza RESET (che normalmente agisce in modo asincrono) UD con o senza LD etc etc
NB qualunque circuito sincrono (con sequenza non binaria) riconducibile al diagramma degli stati di un contatore egrave sempre un contatore
101 010 000 111 110 Contatore x 5 non binario
36
74163 contatore reale x 16 con Load Reset e Enable (T e P)I segnali di controllo sono sincroni ovvero agiscono sul fronte positivo del clock (rising edge)
74138 decoder 38 con uscite negate se G2A e G2B entrambi a zero e G1 a 1 Altrimenti tutte uscite alte
Direttorio Counter Glitch
Contatore binario x 8 e glitches
37
Glitch
Simulazione timingNB la presenza e la durata del glitch dipende dalle caratteristiche elettriche dei dispositivi
dalla loro tecnologia etc Nel caso dei dispositivi Altera dipende dal tipo di dispositivo sul quale egrave realizzato il circuito Analogamente la sensibilitagrave di eventuali ingressi di clock collegati allrsquouscita con il glitch dipende dalle caratteristiche del dispositivo Se ad esempio nel dispositivo Altera utilizzato si collega allrsquouscita Y6 il clock di un FFD non si ha commutazione del FF ma questo non egrave vero in assoluto
38
Cosa succede al contatore X5 progettato precedentemente se allrsquoaccensione non disponendo di un segnale di RESET i FF si portano in uno stato non facente parte del cicloNB La condizione allrsquoaccensione egrave del tutto casuale e dipende unicamente dalle condizioni elettriche
di realizzazione Ersquo impredicibileSupponiamo che i FF si portino al valore 110 (il numero 6 fuori dal ciclo) Analizziamo il comportamento
D0 Q0Q0CK
FFD D1 Q1Q1CK
FFD
MUX
1
0 D2 Q2Q2CK
FFD
MUX
1
0
ABC
ldquo4rdquo
000 001 010 011 100 110 111
In questo caso ci si riporta nella situazione di conteggio regolare (verificare con la tabella degli stati ) ma il comportamento in generale dipende dalla realizzazione e in altre realizzazione i due stati potrebbero essere separati dal ciclo principale che quindi non verrebbe mai raggiunto Ecco la funzione del RESET
39
Solo come esempio (da non utilizzare ) a scopo didattico vediamo la tabella delle transizioni di un contatore per 6 UpDown con comando di Reset I segnali di ingresso cambiano in modo asincrono ma hanno effetto in modo sincrono
Per compensare allrsquoaccensione
Sintetizzare e simulareCome dovrebbe essere modificato lo schema in Altera per permettere di
ldquopresettarerdquo in modo asincrono il contatore a un particolare valore di ingresso
00 01 11 10UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
111
110
000 101
000
101
y3 y2 y100 01 11 10
UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
000 000111
000 000 000 000110
000 101
000
000 000
101
y3 y2 y1
40
D0Q0
CKFFD
Clocky2
DEC
y3
y2
y1
ldquo1rdquo
ldquo2rdquo
ldquo3rdquo
ldquo4rdquo
1
0
UPDown
Sintesi di y2 in modo ldquodirettordquo
1
0
00 01 11 10UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
000 000111
000 000 000 000110
000 101
000
000 000
101
y3 y2 y1
41
Cassaforte hellipDisponendo di un contatore per 8 (ma anche per 16 etc) con reset sincrono e sempre abilitato al conteggio come potrei realizzare il circuito di apertura della cassaforte (sequenza X1X2 00-01-01-10) con modello Moore
Cx8RES
Q0 Q1 Q2 CK
RES= (ldquo0rdquoX1X2 + ldquo1rdquo X1X2 + ldquo2rdquo X1X2 + ldquo3rdquo X1 X2)Z = ldquo4rdquo (ldquo0rdquordquo1rdquordquo2rdquordquo3rdquordquo4rdquo sono le decodifiche binarie delle tre uscite del contatore)
Il contatore si resetta ogni volta che non si presenta lrsquoingresso giusto relativo al particolare stato Ilcontatore quindi si resetta e rimane resettato se non nelle condizioni espresse dalla funzione RESIl contatore arrivato a 4 (Z=1) si resetta comunque al successivo fronte del clock
Le reti sincrone si progettano sempre come combinazione di blocchi disponibili e logica ldquorandomrdquo
ABC
ldquo0rdquoldquo1rdquoldquo2rdquoldquo3rdquoldquo4rdquo
RLAND-OR
X1X2
RESZ
Cx8RES
Q0 Q1 Q2 CK
42
Contatori
EN
Q0 Q1 Q2 Q3CKCY
RESET
bull Attenzione Consideriamo il contatore di figura (questa volta con RESET asincrono) e supponiamo di utilizzarlo per contare per 5 (NB per il Reset si usa il ldquo5rdquo in questo casohellip glitch)
ABCD
ldquo5rdquo
ldquo1rdquo Percheacute questo schema egrave sbagliato
bull Percheacute presenta una corsa critica Nel momento in cui anche uno solo dei FF si resetta (e non tutti nello stesso istante) viene a mancare la configurazione ldquo4rdquo sul decoder e quindi alcuni FF potrebbero non fare in tempo a resettarsi E allora
EN
Q0 Q1 Q2 Q3CKCY
RESET
ABCD
ldquo5rdquo
ldquo1rdquo
RS
Y ldquo0rdquo
bull Cosigrave facendo il ldquo4rdquo attiva il SET e il FF NON si resetta fino a quando non egrave stato raggiunto la ldquo0rdquo NB lo schema ldquosbagliatordquo si puograve usare solo se si egrave certi della rapiditagrave di reset dei FF del contatore
bull Verificare con Altera
Sintesi cassaforte con moduli
Altera Cassaforte sincrona con moduli
Rete di controllo
Contatore con Reset asincrono e Load sincrono
43
NB In questo progetto la sintesi egrave stata condotta in modo ldquodirettordquo ovvero senza passare per la sintesi formale e utilizzando componenti disponibili e helliphellip materia grigia La sintesi dei circuiti sincroni si fa sempre e unicamente cosigrave
44
Simulazione funzionale (no timing)
NB I segnali di ingresso sono campionati SOLO sul fronte positivo del clock anche se si presentano asincroni Il segnale di uscita si attiva al clock successivo al riconoscimento della sequenza La posizione di ldquoriposordquo del contatore egrave il valore 4 I segnali Yi sono le decodifiche dei segnali di di ingresso X1 e X2
00 01 01 10
45
Simulazione timing
46
NB Si egrave scelto di utilizzare SOLO gli ingressi SINCRONI del contatore per semplicitagrave Il contatore rimane al valore 100 fino a quando non si presenta allrsquoingresso il valore 00 Se la sequenza egrave esatta il contatore continua a contare in avanti fino alla generazione dellrsquouscita (valore 11 del contatore) altrimenti si riporta al valore 100 ovvero Qc=1) Il segnale GN (Gate Not) egrave quello che abilita il conteggio Il sistema riamane stabile a 000 per una sequenza lunga a piacere di X1=0 e X2=0 e si sposta quando dopo 00 si ha 01 Come si evince dalla simulazione se la sequenza non egrave corretta o egrave interrotta il contatore si riporta sempre a 100
00 01 11 10
001 000 000
X1
000000 010 100 100001
000 100 100 011010
100 100 100 100011
000 100 100 100100
000 100 100 100101
000 100 100 100110
000 100 100 100111
0
0
0
1
0
0
0
0
X2
000
NB la tabella delle transizioni derivata della rete realizzata NON ha ovviamente condizioni di indifferenza
47
Progettare un contatore packed BCD updown a 8 bit (due digit)
48
Generazione di forme drsquoondabull Ersquo possibile generare forme drsquoonda periodiche mediante circuiti sincroni di periodo
sottomultiplo intero del clock
Esempio 1Divisore di frequenza per 2
D0k Q0k
CK D Q
CK Clock
Q
Esempio 2 generare una forma drsquoonda periodica con periodo 5T (ove T sia il periodo del clock) in cui in un semiperiodo 3T lrsquouscita sia alta e nellrsquoaltro semiperiodo 2T lrsquouscita sia bassa
Q0 Q1 Q2 CK
Cx5
C
B
A
01234
DecoderDemux
Clock
ZZ T
3T2T
3T
NB una rete logica egrave in grado di effettuare delle divisioni di frequenza e mai delle moltiplicazioni di frequenza (che si possono ottenere solo con circuiti analogici non lineari)
49
Di che circuito si tratta
D0k Q0k
CK D0 Q0
CKQ0
D0k Q0k
CK D1 Q1
CK
D0k Q0k
CK D2 Q2
CKClock
Clock
Q0
Q1
Q2
Ersquo un contatore binario ma non sincrono Infatti i vari FF NON utilizzano lo stesso clock e questo porta a un piccolo disallineamento sulle uscite Non egrave sintetizzabile come una rete sincrona e una sintesi formale sarebbe possibile solo trattando il circuito come asincrono ovvero ldquoaprendordquo i FF Sarebbe possibile trasformarlo in un contatore x6 mantenendo la stessa impostazione
Sintetizzare e simulare con Altera
NB il segnale di clock non egrave in comune
50
7493
51
Altera Contatore asincrono
Contatore asincrono
52
Simulazione timing
53
Come puograve essere utilizzato un FFD per catturare un impulso piugrave breve di un periodo
D2 Q2
Q2CKFFD Z
Clock
D1 Q1
Q1CKFFD
D0 Q00
Q0CKFFD
ldquo1rdquo CL
Lrsquoimpulso breve viene catturato dal FF 0 (purcheacute di larghezza sufficiente per la tecnologia del FF) - che quindi agisce come integratore ndash la cui uscita alimenta il monoimpulsore di tipo A Lrsquoattivazione del FF 1 resetta il FF 0 (supponendo che il segnale di CL sia ldquopositiverdquotruerdquo)
Ci puograve essere un problema se il CL agisce in modo asincrono
NB questo circuito e quello del lucido precedente evidenziano il fatto che nella realtagrave nessuna rete egrave solo sincrona ma bensigrave egrave pressocheacute sempre necessario utilizzare reti di natura diversa anche percheacute vi egrave sempre una interazione fra reti con clock diversi eo con segnali provenienti dal mondo esterno NON sincronizzati con il clock
Monoimpulsore di tipo A ldquorivistordquo
54
bull Uno shift register a sinistra (a destra) egrave un registro composto da FFD che ad ogni clock trasferisce il valore del FF a destra (a sinistra) di ciascun FF nel FF stesso Nel FF piugrave a destra (sinistra) viene immesso uno ldquo0rdquo Questi tipi di registri shift si chiamano ldquologicirdquo
Shift register (registri a traslazione o scorrimento)
D0kQ0k
CK DnQn
CK
D0kQ0k
CK Dn-1Qn-1
CK
D0kQ0k
CK Dn-2Qn-2
CK
D0kQ0k
CK D0Q0
CK
ldquo0rdquo
Shift register a sinistra
bull Anche per i registri a traslazione esistono diverse versioni con ingresso parallelo e uscita seriale con ingresso seriale e uscita parallela con reset con load etc etc
bull Si noti che uno shift register egrave anche un contatore Si immagini per esempio che dopo un reset siano inseriti degli uni a partire da destra Lo shift register si riempie progressivamente di uni e quindi la posizione in cui egrave arrivato lrsquouno indica il valore del conteggio in base a un codice ldquouno su nrdquo (un codice decodificato)
bull Spesso uno stesso registro puograve traslare a destra o a sinistra in funzione di una segnale di controllo Ovviamente questo si ottiene premettendo a ogni ingresso Di un MUX a due vie che preleva in funzione del segnale di controllo Qigrave+1 o Qigrave-1 Con questa configurazione lo shift register diventa anche un contatore avantiindietro
Registro a scorrimento (shift-register) a 3 bit
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
IN
OUT2OUT1OUT0
CK
CK
IN
A_RESET
OUT1
OUT2
OUT0
Registro a scorrimento (shift-register) a 3 bit
57
Esempio 74164 (serial In parallel OUT)
bull In questo registro a traslazione ad ogni fronte positivo del clock i dati sono traslati a destra (Q0 -gt Q1 Q1-gtQ2 etc) Il registro egrave dotato in un Master Reset (vero negato) e il dato inserito nel FF Q0 egrave dato dallrsquoAND dei due ingressi Dsa e Dsb
bull Si noti che lrsquooperazione di shift corrisponde aritmeticamente alle operazioni di divisione e moltiplicazione per 2 Si supponga che in Q0 vi sia il bit meno significativo e in Q7 il meno significativo
0 1 1 0 1 0 1 0
010101102 = 10810
Shift left =gt x2
Shift right =gt 2
101011002 = 21610
001010112 = 5910
NB nel dispositivo i bit sono posti in ordine invertito e quindi un shift left del numero corrisponde a uno shift right sul dispositivo
58
bull Esistono anche i registri a traslazione ldquoaritmeticirdquo In questi shift register a destra anzicheacute fare entrare nel FF piugrave a sinistra lo ldquo0rdquo viene immesso sempre ripetutamente il suo valore logico
Shift aritmetico
Q7 Q6 Q5 Q4 Q3 Q2 Q1 Q0
D7 D6 D5 D4 D3 D2 D1 D0
I LDCK Esempio
11001010SRA
11100101 interpretato in complemento a 2
001101102=5410
C2 C2
000110112=2710
bull Lo shift aritmetico a destra effettua una divisione per 2 mantenendo il segno
59
Rotazione
Nei computer egrave sovente necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register
D0kQ0k
CK DnQn
CK
D0kQ0k
CK Dn-1Qn-1
CK
D0kQ0k
CK Dn-2Qn-2
CK
D0kQ0k
CK D0Q0
CK
Molto spesso nei computer egrave necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register con direzione programmabile In questo caso su D0 ad esempio puograve essere avviato o Q1 o Qn
60
Contatori con shift register ndash Contatore retroazionato EX-OR
Q2Q0
Shift right 3 bitDQ1
110 111 011 101 010 001
Diagramma degli stati disgiunto
Uno shift register con n FF retroazionato con un EX-OR (scelta degli ingressi variabile) egrave un contatore NON binario che conta per 2n-1 (purcheacute presettato a un valore diverso da tutti zeri)
000
100
61
Contatore di Johnson (riempimento e svuotamento)
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
000-gt100-gt110-gt111-gt011-gt001-gt000-gtStati isolati 101-gt010-gt101gt1
Poicheacute configurazioni adiacenti del codice Johnson differiscono di un solo bit il contatore puograve essere utilizzato per generare forme drsquoonda prive di alee
62
Contatore ad anello con un solo 1 (ovvero che genera direttamente il codice 1su n)
FFDD Q
QR
RESET
FFDD Q
QR
RESET
FFDD Q
QPR
RESET
OUT3OUT1OUT0
CK
FFDD Q
QR
RESET
OUT2
0001-gt1000-gt0100-gt0010-gt0010n FF per contare per n (mentre con i contatori binari il numero dei FF egrave il log2m ove m egrave il primo intero maggiore o uguale a n)
63
Barrel shifter (rotore)Un barrel shifter egrave uno shift register in grado di traslare di ldquonrdquo posizioni in un solo clock il contenuto dei suoi FF In figura egrave riportato il barrel shifter della Altera Gli ingressi A-H in presenza dellrsquoattivazione del segnale LDST al primo fronte positivo del clock sono depositati nei FF Quando LDST egrave 0 ad ogni fronte positivo del clock i bit di uscita sono ruotati di n posizioni in senso antiorario (ovvero lrsquouscita H diventa la G la G diventa la Fhellipe lrsquouscita A diventa la H) ove n egrave il valore binario indicato dai segnali S0 S1 e S2
Si noti che il circuito in questione egrave di fatto un registro con 8 FF allrsquoingresso di ciascuno dei quali egrave previsto un MUX a 8 vie che pilotato dai segnali S0 S1 e S2 che seleziona uno degli 8 uscite del dispositivo La struttura interna puograve essere osservata ldquoclikkandordquo due volte sul dispositivo nello schema di Altera
64
Barrel shifter
6565
66
Simulazione timing
67
bull Utilizzando il sistema Altera progettare un orologio con secondi minuti ora partendo da un oscillatore a quarzo con frequenza 500 KHz
bull E se si volesse proseguire e realizzare anche un datario (giorno mese e anno )
bull Come potrebbe essere integrato con una sveglia Si ricordi che lrsquoorologio deve essere anche essere ldquopresettatordquo
bull Quali circuiti utilizzare per la visualizzazione
68
EPROM
X0nZ0m
y0kY0k
Clock
D0kQ0k
FFD0k
CK D0kQ0k CK
Reti sincrone con EPROM
Al posto delle EPROM si utilizzano ora dei PLA ovvero dispositivi nei quali si nei quali le funzioni combinatorie sono ottimizzate ma il principio egrave assolutamente il medesimo
69
Progettare con Altera una rete logica sincrona che utilizzando registri 374 ALU 74181 un contatore e altri dispositivi ritenuti necessari permetta di eseguire in sequenza la somma di due dati di 4 bit senza segno ingresso esegua il complemento a 2 inverta la parte bassa con la parte alta del risultato e infine moltiplichi il tutto logicamente per 2
La soluzione egrave sempre decomponibile in tre sottosistemi il controllo con la sua decodifica (unitagrave di controllo) il percorso dei dati con le unitagrave che li trasformano (datapath) e i registri di deposito e di ingresso dei dati
Questa egrave la struttura base di qualunque unitagrave centrale di qualunque computer
La differenza consiste solo nel fatto che anzicheacute avere una sequenza fissa di operazioni ne viene generata una volta a volta che dipende appunto dalla istruzione che deve essere eseguita Come si vedragrave approfonditamente nel corso di Calcolatori T del II anno (prof Neri e Mattoccia)
Arrivederci al corso di Calcolatori T del II anno (sapendo perfettamente le reti logiche helliphellip)
20
00 01 01 10
Sintesi ndash simulazione funzionale
NB Gli ingressi cambiano in modo NON sincrono con il clock ma lrsquo uscita egrave sincrona essendo la rete di tipo Moore
21
Sintesi ndash simulazione timing
Si notino i ritardi delle uscite dei FF e dei gates da esse dipendenti rispetto al fronte positivo del clock (ad esempio d) se la frequenza del clock fosse eccessiva il sistema NON funzionerebbe piugrave correttamente
d
22
E con Mealy
B
00 01 11 10
F A GA
B C A GB
B D A GCB F A ED
B F A GE
B F AA- GF
B F A GG
0
0
0
0
1
0
0
X1X2
B0
00 01 11 10
F0 A0 G0A
B0 C0 A0 G0B
B0 D0 A0 G0CB0 F0 A0 E1D
B1 F1 A1 G1E
B0 F0 A0A-G0F
B0 F0 A0 G0G
X1X2
Potrei mettere una indifferenza sullrsquouscita Si si possono mettere indifferenze sulle uscite che cambiano Anticipazione o ritardo del cambiamento
Sintetizzare e simulare con Altera
23
bull Allrsquoesame orale egrave necessario portare un esercizio di reti sincrone e uno di reti asincrone NON ldquomutuatordquo da altri hellip
bull I due esercizi debbono essere portati su una chiavetta (o dispositivo equivalente) debbono contenere una spiegazione e anche la progettazionesimulazione con Altera
bull Il candidato deve dimostrare di sapere usare il sistema Altera e spiegare i progetti portati
bull Gli esercizi di reti sincrone hanno spesso il diagramma degli stati ma solo per verificahellip
Monoimpulsore A
D1 Q1
Q1CKFFD
D2 Q2
Q2CKFFD Z1
D
Clock
Clock
D
Z
Q1
Q2
Qui lrsquoingresso asincrono D egrave sincronizzato dai FF Uscita Z sincrona
Generare un impulso di uscita di un periodo di clock per ingresso 1 Un ulteriore impulso viene generato solo se lrsquoingresso torna a 1 dopo essere stato a 0 Lrsquouscita deve essere sincronizzata con il clock
24
25
D1 Q1
Q1CKFFD
D2 Q2
Q2CKFFD Z
D
Clock
Monoimpulsore A
1
0
1
1
0
A0 B1
C0
0
A
A
A
-
B
C
C
-
DQ2
Q1
B
0 1
C
-
Z0
0
1
-
A 00
--
00
00
10
--
11
11
DQ2
Q1
01
0 1
11
10
Z0
0
-
1
0000
10
11
01
B
C
-
A
Q1=D Q2= DQ1 Z=Q1Q2
00
00
01
01
10
10
11
11
DQ2
Q1
01
0 1
11
10
Z0
0
0
1
00
MAhellip
Q1=D Q2= Q1 Z=Q1Q2
Moore necessariamente
26
D1 Q1
Q1CKFFD
D2 Q2
Q2CKFFD Z2
D
Clock
Monoimpulsore B
Clock
D
Z2
Q1
Q2
Lrsquoingresso asincrono D agisce direttamente sullrsquouscita Z che quindi risulta asincrona
Qui la rete egrave di tipo Mealy e quindi con ingresso asincrono egrave possibile che vi sia uscita asincrona
27
D Q
QCKFFD Z
D
Clock
Monoimpulsore C
Clock
D
Z
Q
Anche qui lrsquoingresso asincrono D agisce direttamente sullrsquouscita Z che quindi risulta asincronaSi noti che se lrsquoingresso oscilla una volta che il FF ha campionato un 1 e fino a quando non campiona uno 0 lrsquouscita oscilla
Qui la rete egrave di tipo Mealy e quindi con ingresso asincrono egrave possibile che vi sia uscita asincrona
28
Considerazioni sui monoimpulsori A B e C
Il diagramma degli stati corrispondente al funzionamento reale dei due monoimpulsori B e C NON puograve essere tracciato percheacute di fatto le due reti (di tipo Mealy) NON sono sincrone Infatti il diagramma di circuiti sincroni prevede implicitamente un comportamento sincrono anche degli ingressi fatto non verificato nei casi B e C
La cosa non vale per il monoimpulsore A in quanto pur essendo lrsquoingresso asincrono lrsquouscita (rete di tipo Moore) dipende solo dagli stati In altre parole il comportamento della rete rende intrinsecamente sincroni ingressi fisicamente asincroni
Il diagramma degli stati che riflette il comportamento delle due reti B e C puograve essere tracciato solo partendo da una analisi asincrona ldquoaprendordquo quindi i FF D inseriti Ovviamente egrave possibile progettare le due reti senza lrsquouso dei FF D partendo da un diagramma degli stati asincrono ldquotradizionalerdquo
A scopo di esercizio si suggerisce la sintesi e la simulazione con Altera dei tre monoimpulsori come reti asincrone Si tratta di circuiti on due ingressi Ck e D
29
Monoimpulsori A-B-C
30
31
Contatori
A B C D Z
Circuiti senza ingresso (a parte il clock) nella versione piugrave semplice
D0 Q0
Q0CKFFD
MUX
1
0D1 Q1
Q1CKFFD
(Il clock egrave spesso sottinteso nei circuiti sincroni)
U0 U1
Esempio contatore binario x 4 con decodifica del 3
000 010 100 111
OUT
Q1 cambia stato quando Q0 egrave a 1 e passa a 0
CK
u1
u0
OUT (0) (1) (2) (0) (1) (2)(3) (3)
Contatore x 4 con decodifica del 3
33
Contatori binari in base non potenza di 2
A B C D E
000 001 010 011 100Contatore
binario per 5
D0 Q0
Q0CKFFD
MUX
1
0 1D1 Q1
Q1CKFFD
MUX
1
0D Q2
Q2CKFFD
Questo conta x8 ma per contare x5 arrivati a 4 bisogna ritornare a 0
34
D0 Q0
Q0CKFFD D1 Q1
Q1CKFFD
MUX
1
0 D2 Q2
Q2CKFFD
MUX
1
0
ABC
ldquo4rdquo
Contatore x 5
Decoder
La decodifica del 4 porta a zero lrsquouscita del decodificatore e quindi a 0 tutte le uscite degli AND rosa e al successivo fronte positivo del clock i tre FF campionano uno ldquo0rdquo
Per esercizio sintetizzare un contatore x 100 partendo dalla sintesi di un contatore decimale ovvero di un contatore x10 (da sintetizzare) Quanti FF per un contatore decimale I contatori decimali si trovano integrati in Altera
ldquo3rdquo
35
Contatori con ingressi di controllo
Ex Contatore integrato x 16 con Load e Enable
bull Il contatore conta per 16 (0-15) se il segnale EN egrave a 1 Allorchegrave il segnale LD va a 1 il dato presente sugli ingressi D egrave inserito nei 4 FF (lrsquoingresso puograve essere sincrono o asincrono) Nel caso precedente il decodificatore del ldquo3rdquo (uscita vera va portato) allrsquoingresso LD con tutti i Di a zero
bull In generale il contatore fornisce anche unrsquouscita ldquocarryrdquo che va a 1 quando il contatore raggiunge il valore FF Questa uscita puograve essere connessa allrsquoenable di un contatore a valle per ottenere un contatore per 256 cosigrave via (Progettarlo come esercizio)
EN
Q0 Q1 Q2 Q3CKLD
D0 D1 D2 D3
EN
Q0 Q1 Q2 Q3CK
CYLD
D0 D1 D2 D3
bull Esistono contatori UPDOWN nei quali un ingresso (UD) seleziona se il conteggio deve avvenire avanti o indietro Nel caso sia selezionata la modalitagrave ldquoindietrordquo il carry si attiva quando si raggiunge il valore ldquotutti zerirdquo
bull Esiste una molteplicitagrave di contatori ciascuno con le proprie specifiche peculiaritagrave con o senza RESET (che normalmente agisce in modo asincrono) UD con o senza LD etc etc
NB qualunque circuito sincrono (con sequenza non binaria) riconducibile al diagramma degli stati di un contatore egrave sempre un contatore
101 010 000 111 110 Contatore x 5 non binario
36
74163 contatore reale x 16 con Load Reset e Enable (T e P)I segnali di controllo sono sincroni ovvero agiscono sul fronte positivo del clock (rising edge)
74138 decoder 38 con uscite negate se G2A e G2B entrambi a zero e G1 a 1 Altrimenti tutte uscite alte
Direttorio Counter Glitch
Contatore binario x 8 e glitches
37
Glitch
Simulazione timingNB la presenza e la durata del glitch dipende dalle caratteristiche elettriche dei dispositivi
dalla loro tecnologia etc Nel caso dei dispositivi Altera dipende dal tipo di dispositivo sul quale egrave realizzato il circuito Analogamente la sensibilitagrave di eventuali ingressi di clock collegati allrsquouscita con il glitch dipende dalle caratteristiche del dispositivo Se ad esempio nel dispositivo Altera utilizzato si collega allrsquouscita Y6 il clock di un FFD non si ha commutazione del FF ma questo non egrave vero in assoluto
38
Cosa succede al contatore X5 progettato precedentemente se allrsquoaccensione non disponendo di un segnale di RESET i FF si portano in uno stato non facente parte del cicloNB La condizione allrsquoaccensione egrave del tutto casuale e dipende unicamente dalle condizioni elettriche
di realizzazione Ersquo impredicibileSupponiamo che i FF si portino al valore 110 (il numero 6 fuori dal ciclo) Analizziamo il comportamento
D0 Q0Q0CK
FFD D1 Q1Q1CK
FFD
MUX
1
0 D2 Q2Q2CK
FFD
MUX
1
0
ABC
ldquo4rdquo
000 001 010 011 100 110 111
In questo caso ci si riporta nella situazione di conteggio regolare (verificare con la tabella degli stati ) ma il comportamento in generale dipende dalla realizzazione e in altre realizzazione i due stati potrebbero essere separati dal ciclo principale che quindi non verrebbe mai raggiunto Ecco la funzione del RESET
39
Solo come esempio (da non utilizzare ) a scopo didattico vediamo la tabella delle transizioni di un contatore per 6 UpDown con comando di Reset I segnali di ingresso cambiano in modo asincrono ma hanno effetto in modo sincrono
Per compensare allrsquoaccensione
Sintetizzare e simulareCome dovrebbe essere modificato lo schema in Altera per permettere di
ldquopresettarerdquo in modo asincrono il contatore a un particolare valore di ingresso
00 01 11 10UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
111
110
000 101
000
101
y3 y2 y100 01 11 10
UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
000 000111
000 000 000 000110
000 101
000
000 000
101
y3 y2 y1
40
D0Q0
CKFFD
Clocky2
DEC
y3
y2
y1
ldquo1rdquo
ldquo2rdquo
ldquo3rdquo
ldquo4rdquo
1
0
UPDown
Sintesi di y2 in modo ldquodirettordquo
1
0
00 01 11 10UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
000 000111
000 000 000 000110
000 101
000
000 000
101
y3 y2 y1
41
Cassaforte hellipDisponendo di un contatore per 8 (ma anche per 16 etc) con reset sincrono e sempre abilitato al conteggio come potrei realizzare il circuito di apertura della cassaforte (sequenza X1X2 00-01-01-10) con modello Moore
Cx8RES
Q0 Q1 Q2 CK
RES= (ldquo0rdquoX1X2 + ldquo1rdquo X1X2 + ldquo2rdquo X1X2 + ldquo3rdquo X1 X2)Z = ldquo4rdquo (ldquo0rdquordquo1rdquordquo2rdquordquo3rdquordquo4rdquo sono le decodifiche binarie delle tre uscite del contatore)
Il contatore si resetta ogni volta che non si presenta lrsquoingresso giusto relativo al particolare stato Ilcontatore quindi si resetta e rimane resettato se non nelle condizioni espresse dalla funzione RESIl contatore arrivato a 4 (Z=1) si resetta comunque al successivo fronte del clock
Le reti sincrone si progettano sempre come combinazione di blocchi disponibili e logica ldquorandomrdquo
ABC
ldquo0rdquoldquo1rdquoldquo2rdquoldquo3rdquoldquo4rdquo
RLAND-OR
X1X2
RESZ
Cx8RES
Q0 Q1 Q2 CK
42
Contatori
EN
Q0 Q1 Q2 Q3CKCY
RESET
bull Attenzione Consideriamo il contatore di figura (questa volta con RESET asincrono) e supponiamo di utilizzarlo per contare per 5 (NB per il Reset si usa il ldquo5rdquo in questo casohellip glitch)
ABCD
ldquo5rdquo
ldquo1rdquo Percheacute questo schema egrave sbagliato
bull Percheacute presenta una corsa critica Nel momento in cui anche uno solo dei FF si resetta (e non tutti nello stesso istante) viene a mancare la configurazione ldquo4rdquo sul decoder e quindi alcuni FF potrebbero non fare in tempo a resettarsi E allora
EN
Q0 Q1 Q2 Q3CKCY
RESET
ABCD
ldquo5rdquo
ldquo1rdquo
RS
Y ldquo0rdquo
bull Cosigrave facendo il ldquo4rdquo attiva il SET e il FF NON si resetta fino a quando non egrave stato raggiunto la ldquo0rdquo NB lo schema ldquosbagliatordquo si puograve usare solo se si egrave certi della rapiditagrave di reset dei FF del contatore
bull Verificare con Altera
Sintesi cassaforte con moduli
Altera Cassaforte sincrona con moduli
Rete di controllo
Contatore con Reset asincrono e Load sincrono
43
NB In questo progetto la sintesi egrave stata condotta in modo ldquodirettordquo ovvero senza passare per la sintesi formale e utilizzando componenti disponibili e helliphellip materia grigia La sintesi dei circuiti sincroni si fa sempre e unicamente cosigrave
44
Simulazione funzionale (no timing)
NB I segnali di ingresso sono campionati SOLO sul fronte positivo del clock anche se si presentano asincroni Il segnale di uscita si attiva al clock successivo al riconoscimento della sequenza La posizione di ldquoriposordquo del contatore egrave il valore 4 I segnali Yi sono le decodifiche dei segnali di di ingresso X1 e X2
00 01 01 10
45
Simulazione timing
46
NB Si egrave scelto di utilizzare SOLO gli ingressi SINCRONI del contatore per semplicitagrave Il contatore rimane al valore 100 fino a quando non si presenta allrsquoingresso il valore 00 Se la sequenza egrave esatta il contatore continua a contare in avanti fino alla generazione dellrsquouscita (valore 11 del contatore) altrimenti si riporta al valore 100 ovvero Qc=1) Il segnale GN (Gate Not) egrave quello che abilita il conteggio Il sistema riamane stabile a 000 per una sequenza lunga a piacere di X1=0 e X2=0 e si sposta quando dopo 00 si ha 01 Come si evince dalla simulazione se la sequenza non egrave corretta o egrave interrotta il contatore si riporta sempre a 100
00 01 11 10
001 000 000
X1
000000 010 100 100001
000 100 100 011010
100 100 100 100011
000 100 100 100100
000 100 100 100101
000 100 100 100110
000 100 100 100111
0
0
0
1
0
0
0
0
X2
000
NB la tabella delle transizioni derivata della rete realizzata NON ha ovviamente condizioni di indifferenza
47
Progettare un contatore packed BCD updown a 8 bit (due digit)
48
Generazione di forme drsquoondabull Ersquo possibile generare forme drsquoonda periodiche mediante circuiti sincroni di periodo
sottomultiplo intero del clock
Esempio 1Divisore di frequenza per 2
D0k Q0k
CK D Q
CK Clock
Q
Esempio 2 generare una forma drsquoonda periodica con periodo 5T (ove T sia il periodo del clock) in cui in un semiperiodo 3T lrsquouscita sia alta e nellrsquoaltro semiperiodo 2T lrsquouscita sia bassa
Q0 Q1 Q2 CK
Cx5
C
B
A
01234
DecoderDemux
Clock
ZZ T
3T2T
3T
NB una rete logica egrave in grado di effettuare delle divisioni di frequenza e mai delle moltiplicazioni di frequenza (che si possono ottenere solo con circuiti analogici non lineari)
49
Di che circuito si tratta
D0k Q0k
CK D0 Q0
CKQ0
D0k Q0k
CK D1 Q1
CK
D0k Q0k
CK D2 Q2
CKClock
Clock
Q0
Q1
Q2
Ersquo un contatore binario ma non sincrono Infatti i vari FF NON utilizzano lo stesso clock e questo porta a un piccolo disallineamento sulle uscite Non egrave sintetizzabile come una rete sincrona e una sintesi formale sarebbe possibile solo trattando il circuito come asincrono ovvero ldquoaprendordquo i FF Sarebbe possibile trasformarlo in un contatore x6 mantenendo la stessa impostazione
Sintetizzare e simulare con Altera
NB il segnale di clock non egrave in comune
50
7493
51
Altera Contatore asincrono
Contatore asincrono
52
Simulazione timing
53
Come puograve essere utilizzato un FFD per catturare un impulso piugrave breve di un periodo
D2 Q2
Q2CKFFD Z
Clock
D1 Q1
Q1CKFFD
D0 Q00
Q0CKFFD
ldquo1rdquo CL
Lrsquoimpulso breve viene catturato dal FF 0 (purcheacute di larghezza sufficiente per la tecnologia del FF) - che quindi agisce come integratore ndash la cui uscita alimenta il monoimpulsore di tipo A Lrsquoattivazione del FF 1 resetta il FF 0 (supponendo che il segnale di CL sia ldquopositiverdquotruerdquo)
Ci puograve essere un problema se il CL agisce in modo asincrono
NB questo circuito e quello del lucido precedente evidenziano il fatto che nella realtagrave nessuna rete egrave solo sincrona ma bensigrave egrave pressocheacute sempre necessario utilizzare reti di natura diversa anche percheacute vi egrave sempre una interazione fra reti con clock diversi eo con segnali provenienti dal mondo esterno NON sincronizzati con il clock
Monoimpulsore di tipo A ldquorivistordquo
54
bull Uno shift register a sinistra (a destra) egrave un registro composto da FFD che ad ogni clock trasferisce il valore del FF a destra (a sinistra) di ciascun FF nel FF stesso Nel FF piugrave a destra (sinistra) viene immesso uno ldquo0rdquo Questi tipi di registri shift si chiamano ldquologicirdquo
Shift register (registri a traslazione o scorrimento)
D0kQ0k
CK DnQn
CK
D0kQ0k
CK Dn-1Qn-1
CK
D0kQ0k
CK Dn-2Qn-2
CK
D0kQ0k
CK D0Q0
CK
ldquo0rdquo
Shift register a sinistra
bull Anche per i registri a traslazione esistono diverse versioni con ingresso parallelo e uscita seriale con ingresso seriale e uscita parallela con reset con load etc etc
bull Si noti che uno shift register egrave anche un contatore Si immagini per esempio che dopo un reset siano inseriti degli uni a partire da destra Lo shift register si riempie progressivamente di uni e quindi la posizione in cui egrave arrivato lrsquouno indica il valore del conteggio in base a un codice ldquouno su nrdquo (un codice decodificato)
bull Spesso uno stesso registro puograve traslare a destra o a sinistra in funzione di una segnale di controllo Ovviamente questo si ottiene premettendo a ogni ingresso Di un MUX a due vie che preleva in funzione del segnale di controllo Qigrave+1 o Qigrave-1 Con questa configurazione lo shift register diventa anche un contatore avantiindietro
Registro a scorrimento (shift-register) a 3 bit
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
IN
OUT2OUT1OUT0
CK
CK
IN
A_RESET
OUT1
OUT2
OUT0
Registro a scorrimento (shift-register) a 3 bit
57
Esempio 74164 (serial In parallel OUT)
bull In questo registro a traslazione ad ogni fronte positivo del clock i dati sono traslati a destra (Q0 -gt Q1 Q1-gtQ2 etc) Il registro egrave dotato in un Master Reset (vero negato) e il dato inserito nel FF Q0 egrave dato dallrsquoAND dei due ingressi Dsa e Dsb
bull Si noti che lrsquooperazione di shift corrisponde aritmeticamente alle operazioni di divisione e moltiplicazione per 2 Si supponga che in Q0 vi sia il bit meno significativo e in Q7 il meno significativo
0 1 1 0 1 0 1 0
010101102 = 10810
Shift left =gt x2
Shift right =gt 2
101011002 = 21610
001010112 = 5910
NB nel dispositivo i bit sono posti in ordine invertito e quindi un shift left del numero corrisponde a uno shift right sul dispositivo
58
bull Esistono anche i registri a traslazione ldquoaritmeticirdquo In questi shift register a destra anzicheacute fare entrare nel FF piugrave a sinistra lo ldquo0rdquo viene immesso sempre ripetutamente il suo valore logico
Shift aritmetico
Q7 Q6 Q5 Q4 Q3 Q2 Q1 Q0
D7 D6 D5 D4 D3 D2 D1 D0
I LDCK Esempio
11001010SRA
11100101 interpretato in complemento a 2
001101102=5410
C2 C2
000110112=2710
bull Lo shift aritmetico a destra effettua una divisione per 2 mantenendo il segno
59
Rotazione
Nei computer egrave sovente necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register
D0kQ0k
CK DnQn
CK
D0kQ0k
CK Dn-1Qn-1
CK
D0kQ0k
CK Dn-2Qn-2
CK
D0kQ0k
CK D0Q0
CK
Molto spesso nei computer egrave necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register con direzione programmabile In questo caso su D0 ad esempio puograve essere avviato o Q1 o Qn
60
Contatori con shift register ndash Contatore retroazionato EX-OR
Q2Q0
Shift right 3 bitDQ1
110 111 011 101 010 001
Diagramma degli stati disgiunto
Uno shift register con n FF retroazionato con un EX-OR (scelta degli ingressi variabile) egrave un contatore NON binario che conta per 2n-1 (purcheacute presettato a un valore diverso da tutti zeri)
000
100
61
Contatore di Johnson (riempimento e svuotamento)
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
000-gt100-gt110-gt111-gt011-gt001-gt000-gtStati isolati 101-gt010-gt101gt1
Poicheacute configurazioni adiacenti del codice Johnson differiscono di un solo bit il contatore puograve essere utilizzato per generare forme drsquoonda prive di alee
62
Contatore ad anello con un solo 1 (ovvero che genera direttamente il codice 1su n)
FFDD Q
QR
RESET
FFDD Q
QR
RESET
FFDD Q
QPR
RESET
OUT3OUT1OUT0
CK
FFDD Q
QR
RESET
OUT2
0001-gt1000-gt0100-gt0010-gt0010n FF per contare per n (mentre con i contatori binari il numero dei FF egrave il log2m ove m egrave il primo intero maggiore o uguale a n)
63
Barrel shifter (rotore)Un barrel shifter egrave uno shift register in grado di traslare di ldquonrdquo posizioni in un solo clock il contenuto dei suoi FF In figura egrave riportato il barrel shifter della Altera Gli ingressi A-H in presenza dellrsquoattivazione del segnale LDST al primo fronte positivo del clock sono depositati nei FF Quando LDST egrave 0 ad ogni fronte positivo del clock i bit di uscita sono ruotati di n posizioni in senso antiorario (ovvero lrsquouscita H diventa la G la G diventa la Fhellipe lrsquouscita A diventa la H) ove n egrave il valore binario indicato dai segnali S0 S1 e S2
Si noti che il circuito in questione egrave di fatto un registro con 8 FF allrsquoingresso di ciascuno dei quali egrave previsto un MUX a 8 vie che pilotato dai segnali S0 S1 e S2 che seleziona uno degli 8 uscite del dispositivo La struttura interna puograve essere osservata ldquoclikkandordquo due volte sul dispositivo nello schema di Altera
64
Barrel shifter
6565
66
Simulazione timing
67
bull Utilizzando il sistema Altera progettare un orologio con secondi minuti ora partendo da un oscillatore a quarzo con frequenza 500 KHz
bull E se si volesse proseguire e realizzare anche un datario (giorno mese e anno )
bull Come potrebbe essere integrato con una sveglia Si ricordi che lrsquoorologio deve essere anche essere ldquopresettatordquo
bull Quali circuiti utilizzare per la visualizzazione
68
EPROM
X0nZ0m
y0kY0k
Clock
D0kQ0k
FFD0k
CK D0kQ0k CK
Reti sincrone con EPROM
Al posto delle EPROM si utilizzano ora dei PLA ovvero dispositivi nei quali si nei quali le funzioni combinatorie sono ottimizzate ma il principio egrave assolutamente il medesimo
69
Progettare con Altera una rete logica sincrona che utilizzando registri 374 ALU 74181 un contatore e altri dispositivi ritenuti necessari permetta di eseguire in sequenza la somma di due dati di 4 bit senza segno ingresso esegua il complemento a 2 inverta la parte bassa con la parte alta del risultato e infine moltiplichi il tutto logicamente per 2
La soluzione egrave sempre decomponibile in tre sottosistemi il controllo con la sua decodifica (unitagrave di controllo) il percorso dei dati con le unitagrave che li trasformano (datapath) e i registri di deposito e di ingresso dei dati
Questa egrave la struttura base di qualunque unitagrave centrale di qualunque computer
La differenza consiste solo nel fatto che anzicheacute avere una sequenza fissa di operazioni ne viene generata una volta a volta che dipende appunto dalla istruzione che deve essere eseguita Come si vedragrave approfonditamente nel corso di Calcolatori T del II anno (prof Neri e Mattoccia)
Arrivederci al corso di Calcolatori T del II anno (sapendo perfettamente le reti logiche helliphellip)
21
Sintesi ndash simulazione timing
Si notino i ritardi delle uscite dei FF e dei gates da esse dipendenti rispetto al fronte positivo del clock (ad esempio d) se la frequenza del clock fosse eccessiva il sistema NON funzionerebbe piugrave correttamente
d
22
E con Mealy
B
00 01 11 10
F A GA
B C A GB
B D A GCB F A ED
B F A GE
B F AA- GF
B F A GG
0
0
0
0
1
0
0
X1X2
B0
00 01 11 10
F0 A0 G0A
B0 C0 A0 G0B
B0 D0 A0 G0CB0 F0 A0 E1D
B1 F1 A1 G1E
B0 F0 A0A-G0F
B0 F0 A0 G0G
X1X2
Potrei mettere una indifferenza sullrsquouscita Si si possono mettere indifferenze sulle uscite che cambiano Anticipazione o ritardo del cambiamento
Sintetizzare e simulare con Altera
23
bull Allrsquoesame orale egrave necessario portare un esercizio di reti sincrone e uno di reti asincrone NON ldquomutuatordquo da altri hellip
bull I due esercizi debbono essere portati su una chiavetta (o dispositivo equivalente) debbono contenere una spiegazione e anche la progettazionesimulazione con Altera
bull Il candidato deve dimostrare di sapere usare il sistema Altera e spiegare i progetti portati
bull Gli esercizi di reti sincrone hanno spesso il diagramma degli stati ma solo per verificahellip
Monoimpulsore A
D1 Q1
Q1CKFFD
D2 Q2
Q2CKFFD Z1
D
Clock
Clock
D
Z
Q1
Q2
Qui lrsquoingresso asincrono D egrave sincronizzato dai FF Uscita Z sincrona
Generare un impulso di uscita di un periodo di clock per ingresso 1 Un ulteriore impulso viene generato solo se lrsquoingresso torna a 1 dopo essere stato a 0 Lrsquouscita deve essere sincronizzata con il clock
24
25
D1 Q1
Q1CKFFD
D2 Q2
Q2CKFFD Z
D
Clock
Monoimpulsore A
1
0
1
1
0
A0 B1
C0
0
A
A
A
-
B
C
C
-
DQ2
Q1
B
0 1
C
-
Z0
0
1
-
A 00
--
00
00
10
--
11
11
DQ2
Q1
01
0 1
11
10
Z0
0
-
1
0000
10
11
01
B
C
-
A
Q1=D Q2= DQ1 Z=Q1Q2
00
00
01
01
10
10
11
11
DQ2
Q1
01
0 1
11
10
Z0
0
0
1
00
MAhellip
Q1=D Q2= Q1 Z=Q1Q2
Moore necessariamente
26
D1 Q1
Q1CKFFD
D2 Q2
Q2CKFFD Z2
D
Clock
Monoimpulsore B
Clock
D
Z2
Q1
Q2
Lrsquoingresso asincrono D agisce direttamente sullrsquouscita Z che quindi risulta asincrona
Qui la rete egrave di tipo Mealy e quindi con ingresso asincrono egrave possibile che vi sia uscita asincrona
27
D Q
QCKFFD Z
D
Clock
Monoimpulsore C
Clock
D
Z
Q
Anche qui lrsquoingresso asincrono D agisce direttamente sullrsquouscita Z che quindi risulta asincronaSi noti che se lrsquoingresso oscilla una volta che il FF ha campionato un 1 e fino a quando non campiona uno 0 lrsquouscita oscilla
Qui la rete egrave di tipo Mealy e quindi con ingresso asincrono egrave possibile che vi sia uscita asincrona
28
Considerazioni sui monoimpulsori A B e C
Il diagramma degli stati corrispondente al funzionamento reale dei due monoimpulsori B e C NON puograve essere tracciato percheacute di fatto le due reti (di tipo Mealy) NON sono sincrone Infatti il diagramma di circuiti sincroni prevede implicitamente un comportamento sincrono anche degli ingressi fatto non verificato nei casi B e C
La cosa non vale per il monoimpulsore A in quanto pur essendo lrsquoingresso asincrono lrsquouscita (rete di tipo Moore) dipende solo dagli stati In altre parole il comportamento della rete rende intrinsecamente sincroni ingressi fisicamente asincroni
Il diagramma degli stati che riflette il comportamento delle due reti B e C puograve essere tracciato solo partendo da una analisi asincrona ldquoaprendordquo quindi i FF D inseriti Ovviamente egrave possibile progettare le due reti senza lrsquouso dei FF D partendo da un diagramma degli stati asincrono ldquotradizionalerdquo
A scopo di esercizio si suggerisce la sintesi e la simulazione con Altera dei tre monoimpulsori come reti asincrone Si tratta di circuiti on due ingressi Ck e D
29
Monoimpulsori A-B-C
30
31
Contatori
A B C D Z
Circuiti senza ingresso (a parte il clock) nella versione piugrave semplice
D0 Q0
Q0CKFFD
MUX
1
0D1 Q1
Q1CKFFD
(Il clock egrave spesso sottinteso nei circuiti sincroni)
U0 U1
Esempio contatore binario x 4 con decodifica del 3
000 010 100 111
OUT
Q1 cambia stato quando Q0 egrave a 1 e passa a 0
CK
u1
u0
OUT (0) (1) (2) (0) (1) (2)(3) (3)
Contatore x 4 con decodifica del 3
33
Contatori binari in base non potenza di 2
A B C D E
000 001 010 011 100Contatore
binario per 5
D0 Q0
Q0CKFFD
MUX
1
0 1D1 Q1
Q1CKFFD
MUX
1
0D Q2
Q2CKFFD
Questo conta x8 ma per contare x5 arrivati a 4 bisogna ritornare a 0
34
D0 Q0
Q0CKFFD D1 Q1
Q1CKFFD
MUX
1
0 D2 Q2
Q2CKFFD
MUX
1
0
ABC
ldquo4rdquo
Contatore x 5
Decoder
La decodifica del 4 porta a zero lrsquouscita del decodificatore e quindi a 0 tutte le uscite degli AND rosa e al successivo fronte positivo del clock i tre FF campionano uno ldquo0rdquo
Per esercizio sintetizzare un contatore x 100 partendo dalla sintesi di un contatore decimale ovvero di un contatore x10 (da sintetizzare) Quanti FF per un contatore decimale I contatori decimali si trovano integrati in Altera
ldquo3rdquo
35
Contatori con ingressi di controllo
Ex Contatore integrato x 16 con Load e Enable
bull Il contatore conta per 16 (0-15) se il segnale EN egrave a 1 Allorchegrave il segnale LD va a 1 il dato presente sugli ingressi D egrave inserito nei 4 FF (lrsquoingresso puograve essere sincrono o asincrono) Nel caso precedente il decodificatore del ldquo3rdquo (uscita vera va portato) allrsquoingresso LD con tutti i Di a zero
bull In generale il contatore fornisce anche unrsquouscita ldquocarryrdquo che va a 1 quando il contatore raggiunge il valore FF Questa uscita puograve essere connessa allrsquoenable di un contatore a valle per ottenere un contatore per 256 cosigrave via (Progettarlo come esercizio)
EN
Q0 Q1 Q2 Q3CKLD
D0 D1 D2 D3
EN
Q0 Q1 Q2 Q3CK
CYLD
D0 D1 D2 D3
bull Esistono contatori UPDOWN nei quali un ingresso (UD) seleziona se il conteggio deve avvenire avanti o indietro Nel caso sia selezionata la modalitagrave ldquoindietrordquo il carry si attiva quando si raggiunge il valore ldquotutti zerirdquo
bull Esiste una molteplicitagrave di contatori ciascuno con le proprie specifiche peculiaritagrave con o senza RESET (che normalmente agisce in modo asincrono) UD con o senza LD etc etc
NB qualunque circuito sincrono (con sequenza non binaria) riconducibile al diagramma degli stati di un contatore egrave sempre un contatore
101 010 000 111 110 Contatore x 5 non binario
36
74163 contatore reale x 16 con Load Reset e Enable (T e P)I segnali di controllo sono sincroni ovvero agiscono sul fronte positivo del clock (rising edge)
74138 decoder 38 con uscite negate se G2A e G2B entrambi a zero e G1 a 1 Altrimenti tutte uscite alte
Direttorio Counter Glitch
Contatore binario x 8 e glitches
37
Glitch
Simulazione timingNB la presenza e la durata del glitch dipende dalle caratteristiche elettriche dei dispositivi
dalla loro tecnologia etc Nel caso dei dispositivi Altera dipende dal tipo di dispositivo sul quale egrave realizzato il circuito Analogamente la sensibilitagrave di eventuali ingressi di clock collegati allrsquouscita con il glitch dipende dalle caratteristiche del dispositivo Se ad esempio nel dispositivo Altera utilizzato si collega allrsquouscita Y6 il clock di un FFD non si ha commutazione del FF ma questo non egrave vero in assoluto
38
Cosa succede al contatore X5 progettato precedentemente se allrsquoaccensione non disponendo di un segnale di RESET i FF si portano in uno stato non facente parte del cicloNB La condizione allrsquoaccensione egrave del tutto casuale e dipende unicamente dalle condizioni elettriche
di realizzazione Ersquo impredicibileSupponiamo che i FF si portino al valore 110 (il numero 6 fuori dal ciclo) Analizziamo il comportamento
D0 Q0Q0CK
FFD D1 Q1Q1CK
FFD
MUX
1
0 D2 Q2Q2CK
FFD
MUX
1
0
ABC
ldquo4rdquo
000 001 010 011 100 110 111
In questo caso ci si riporta nella situazione di conteggio regolare (verificare con la tabella degli stati ) ma il comportamento in generale dipende dalla realizzazione e in altre realizzazione i due stati potrebbero essere separati dal ciclo principale che quindi non verrebbe mai raggiunto Ecco la funzione del RESET
39
Solo come esempio (da non utilizzare ) a scopo didattico vediamo la tabella delle transizioni di un contatore per 6 UpDown con comando di Reset I segnali di ingresso cambiano in modo asincrono ma hanno effetto in modo sincrono
Per compensare allrsquoaccensione
Sintetizzare e simulareCome dovrebbe essere modificato lo schema in Altera per permettere di
ldquopresettarerdquo in modo asincrono il contatore a un particolare valore di ingresso
00 01 11 10UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
111
110
000 101
000
101
y3 y2 y100 01 11 10
UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
000 000111
000 000 000 000110
000 101
000
000 000
101
y3 y2 y1
40
D0Q0
CKFFD
Clocky2
DEC
y3
y2
y1
ldquo1rdquo
ldquo2rdquo
ldquo3rdquo
ldquo4rdquo
1
0
UPDown
Sintesi di y2 in modo ldquodirettordquo
1
0
00 01 11 10UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
000 000111
000 000 000 000110
000 101
000
000 000
101
y3 y2 y1
41
Cassaforte hellipDisponendo di un contatore per 8 (ma anche per 16 etc) con reset sincrono e sempre abilitato al conteggio come potrei realizzare il circuito di apertura della cassaforte (sequenza X1X2 00-01-01-10) con modello Moore
Cx8RES
Q0 Q1 Q2 CK
RES= (ldquo0rdquoX1X2 + ldquo1rdquo X1X2 + ldquo2rdquo X1X2 + ldquo3rdquo X1 X2)Z = ldquo4rdquo (ldquo0rdquordquo1rdquordquo2rdquordquo3rdquordquo4rdquo sono le decodifiche binarie delle tre uscite del contatore)
Il contatore si resetta ogni volta che non si presenta lrsquoingresso giusto relativo al particolare stato Ilcontatore quindi si resetta e rimane resettato se non nelle condizioni espresse dalla funzione RESIl contatore arrivato a 4 (Z=1) si resetta comunque al successivo fronte del clock
Le reti sincrone si progettano sempre come combinazione di blocchi disponibili e logica ldquorandomrdquo
ABC
ldquo0rdquoldquo1rdquoldquo2rdquoldquo3rdquoldquo4rdquo
RLAND-OR
X1X2
RESZ
Cx8RES
Q0 Q1 Q2 CK
42
Contatori
EN
Q0 Q1 Q2 Q3CKCY
RESET
bull Attenzione Consideriamo il contatore di figura (questa volta con RESET asincrono) e supponiamo di utilizzarlo per contare per 5 (NB per il Reset si usa il ldquo5rdquo in questo casohellip glitch)
ABCD
ldquo5rdquo
ldquo1rdquo Percheacute questo schema egrave sbagliato
bull Percheacute presenta una corsa critica Nel momento in cui anche uno solo dei FF si resetta (e non tutti nello stesso istante) viene a mancare la configurazione ldquo4rdquo sul decoder e quindi alcuni FF potrebbero non fare in tempo a resettarsi E allora
EN
Q0 Q1 Q2 Q3CKCY
RESET
ABCD
ldquo5rdquo
ldquo1rdquo
RS
Y ldquo0rdquo
bull Cosigrave facendo il ldquo4rdquo attiva il SET e il FF NON si resetta fino a quando non egrave stato raggiunto la ldquo0rdquo NB lo schema ldquosbagliatordquo si puograve usare solo se si egrave certi della rapiditagrave di reset dei FF del contatore
bull Verificare con Altera
Sintesi cassaforte con moduli
Altera Cassaforte sincrona con moduli
Rete di controllo
Contatore con Reset asincrono e Load sincrono
43
NB In questo progetto la sintesi egrave stata condotta in modo ldquodirettordquo ovvero senza passare per la sintesi formale e utilizzando componenti disponibili e helliphellip materia grigia La sintesi dei circuiti sincroni si fa sempre e unicamente cosigrave
44
Simulazione funzionale (no timing)
NB I segnali di ingresso sono campionati SOLO sul fronte positivo del clock anche se si presentano asincroni Il segnale di uscita si attiva al clock successivo al riconoscimento della sequenza La posizione di ldquoriposordquo del contatore egrave il valore 4 I segnali Yi sono le decodifiche dei segnali di di ingresso X1 e X2
00 01 01 10
45
Simulazione timing
46
NB Si egrave scelto di utilizzare SOLO gli ingressi SINCRONI del contatore per semplicitagrave Il contatore rimane al valore 100 fino a quando non si presenta allrsquoingresso il valore 00 Se la sequenza egrave esatta il contatore continua a contare in avanti fino alla generazione dellrsquouscita (valore 11 del contatore) altrimenti si riporta al valore 100 ovvero Qc=1) Il segnale GN (Gate Not) egrave quello che abilita il conteggio Il sistema riamane stabile a 000 per una sequenza lunga a piacere di X1=0 e X2=0 e si sposta quando dopo 00 si ha 01 Come si evince dalla simulazione se la sequenza non egrave corretta o egrave interrotta il contatore si riporta sempre a 100
00 01 11 10
001 000 000
X1
000000 010 100 100001
000 100 100 011010
100 100 100 100011
000 100 100 100100
000 100 100 100101
000 100 100 100110
000 100 100 100111
0
0
0
1
0
0
0
0
X2
000
NB la tabella delle transizioni derivata della rete realizzata NON ha ovviamente condizioni di indifferenza
47
Progettare un contatore packed BCD updown a 8 bit (due digit)
48
Generazione di forme drsquoondabull Ersquo possibile generare forme drsquoonda periodiche mediante circuiti sincroni di periodo
sottomultiplo intero del clock
Esempio 1Divisore di frequenza per 2
D0k Q0k
CK D Q
CK Clock
Q
Esempio 2 generare una forma drsquoonda periodica con periodo 5T (ove T sia il periodo del clock) in cui in un semiperiodo 3T lrsquouscita sia alta e nellrsquoaltro semiperiodo 2T lrsquouscita sia bassa
Q0 Q1 Q2 CK
Cx5
C
B
A
01234
DecoderDemux
Clock
ZZ T
3T2T
3T
NB una rete logica egrave in grado di effettuare delle divisioni di frequenza e mai delle moltiplicazioni di frequenza (che si possono ottenere solo con circuiti analogici non lineari)
49
Di che circuito si tratta
D0k Q0k
CK D0 Q0
CKQ0
D0k Q0k
CK D1 Q1
CK
D0k Q0k
CK D2 Q2
CKClock
Clock
Q0
Q1
Q2
Ersquo un contatore binario ma non sincrono Infatti i vari FF NON utilizzano lo stesso clock e questo porta a un piccolo disallineamento sulle uscite Non egrave sintetizzabile come una rete sincrona e una sintesi formale sarebbe possibile solo trattando il circuito come asincrono ovvero ldquoaprendordquo i FF Sarebbe possibile trasformarlo in un contatore x6 mantenendo la stessa impostazione
Sintetizzare e simulare con Altera
NB il segnale di clock non egrave in comune
50
7493
51
Altera Contatore asincrono
Contatore asincrono
52
Simulazione timing
53
Come puograve essere utilizzato un FFD per catturare un impulso piugrave breve di un periodo
D2 Q2
Q2CKFFD Z
Clock
D1 Q1
Q1CKFFD
D0 Q00
Q0CKFFD
ldquo1rdquo CL
Lrsquoimpulso breve viene catturato dal FF 0 (purcheacute di larghezza sufficiente per la tecnologia del FF) - che quindi agisce come integratore ndash la cui uscita alimenta il monoimpulsore di tipo A Lrsquoattivazione del FF 1 resetta il FF 0 (supponendo che il segnale di CL sia ldquopositiverdquotruerdquo)
Ci puograve essere un problema se il CL agisce in modo asincrono
NB questo circuito e quello del lucido precedente evidenziano il fatto che nella realtagrave nessuna rete egrave solo sincrona ma bensigrave egrave pressocheacute sempre necessario utilizzare reti di natura diversa anche percheacute vi egrave sempre una interazione fra reti con clock diversi eo con segnali provenienti dal mondo esterno NON sincronizzati con il clock
Monoimpulsore di tipo A ldquorivistordquo
54
bull Uno shift register a sinistra (a destra) egrave un registro composto da FFD che ad ogni clock trasferisce il valore del FF a destra (a sinistra) di ciascun FF nel FF stesso Nel FF piugrave a destra (sinistra) viene immesso uno ldquo0rdquo Questi tipi di registri shift si chiamano ldquologicirdquo
Shift register (registri a traslazione o scorrimento)
D0kQ0k
CK DnQn
CK
D0kQ0k
CK Dn-1Qn-1
CK
D0kQ0k
CK Dn-2Qn-2
CK
D0kQ0k
CK D0Q0
CK
ldquo0rdquo
Shift register a sinistra
bull Anche per i registri a traslazione esistono diverse versioni con ingresso parallelo e uscita seriale con ingresso seriale e uscita parallela con reset con load etc etc
bull Si noti che uno shift register egrave anche un contatore Si immagini per esempio che dopo un reset siano inseriti degli uni a partire da destra Lo shift register si riempie progressivamente di uni e quindi la posizione in cui egrave arrivato lrsquouno indica il valore del conteggio in base a un codice ldquouno su nrdquo (un codice decodificato)
bull Spesso uno stesso registro puograve traslare a destra o a sinistra in funzione di una segnale di controllo Ovviamente questo si ottiene premettendo a ogni ingresso Di un MUX a due vie che preleva in funzione del segnale di controllo Qigrave+1 o Qigrave-1 Con questa configurazione lo shift register diventa anche un contatore avantiindietro
Registro a scorrimento (shift-register) a 3 bit
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
IN
OUT2OUT1OUT0
CK
CK
IN
A_RESET
OUT1
OUT2
OUT0
Registro a scorrimento (shift-register) a 3 bit
57
Esempio 74164 (serial In parallel OUT)
bull In questo registro a traslazione ad ogni fronte positivo del clock i dati sono traslati a destra (Q0 -gt Q1 Q1-gtQ2 etc) Il registro egrave dotato in un Master Reset (vero negato) e il dato inserito nel FF Q0 egrave dato dallrsquoAND dei due ingressi Dsa e Dsb
bull Si noti che lrsquooperazione di shift corrisponde aritmeticamente alle operazioni di divisione e moltiplicazione per 2 Si supponga che in Q0 vi sia il bit meno significativo e in Q7 il meno significativo
0 1 1 0 1 0 1 0
010101102 = 10810
Shift left =gt x2
Shift right =gt 2
101011002 = 21610
001010112 = 5910
NB nel dispositivo i bit sono posti in ordine invertito e quindi un shift left del numero corrisponde a uno shift right sul dispositivo
58
bull Esistono anche i registri a traslazione ldquoaritmeticirdquo In questi shift register a destra anzicheacute fare entrare nel FF piugrave a sinistra lo ldquo0rdquo viene immesso sempre ripetutamente il suo valore logico
Shift aritmetico
Q7 Q6 Q5 Q4 Q3 Q2 Q1 Q0
D7 D6 D5 D4 D3 D2 D1 D0
I LDCK Esempio
11001010SRA
11100101 interpretato in complemento a 2
001101102=5410
C2 C2
000110112=2710
bull Lo shift aritmetico a destra effettua una divisione per 2 mantenendo il segno
59
Rotazione
Nei computer egrave sovente necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register
D0kQ0k
CK DnQn
CK
D0kQ0k
CK Dn-1Qn-1
CK
D0kQ0k
CK Dn-2Qn-2
CK
D0kQ0k
CK D0Q0
CK
Molto spesso nei computer egrave necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register con direzione programmabile In questo caso su D0 ad esempio puograve essere avviato o Q1 o Qn
60
Contatori con shift register ndash Contatore retroazionato EX-OR
Q2Q0
Shift right 3 bitDQ1
110 111 011 101 010 001
Diagramma degli stati disgiunto
Uno shift register con n FF retroazionato con un EX-OR (scelta degli ingressi variabile) egrave un contatore NON binario che conta per 2n-1 (purcheacute presettato a un valore diverso da tutti zeri)
000
100
61
Contatore di Johnson (riempimento e svuotamento)
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
000-gt100-gt110-gt111-gt011-gt001-gt000-gtStati isolati 101-gt010-gt101gt1
Poicheacute configurazioni adiacenti del codice Johnson differiscono di un solo bit il contatore puograve essere utilizzato per generare forme drsquoonda prive di alee
62
Contatore ad anello con un solo 1 (ovvero che genera direttamente il codice 1su n)
FFDD Q
QR
RESET
FFDD Q
QR
RESET
FFDD Q
QPR
RESET
OUT3OUT1OUT0
CK
FFDD Q
QR
RESET
OUT2
0001-gt1000-gt0100-gt0010-gt0010n FF per contare per n (mentre con i contatori binari il numero dei FF egrave il log2m ove m egrave il primo intero maggiore o uguale a n)
63
Barrel shifter (rotore)Un barrel shifter egrave uno shift register in grado di traslare di ldquonrdquo posizioni in un solo clock il contenuto dei suoi FF In figura egrave riportato il barrel shifter della Altera Gli ingressi A-H in presenza dellrsquoattivazione del segnale LDST al primo fronte positivo del clock sono depositati nei FF Quando LDST egrave 0 ad ogni fronte positivo del clock i bit di uscita sono ruotati di n posizioni in senso antiorario (ovvero lrsquouscita H diventa la G la G diventa la Fhellipe lrsquouscita A diventa la H) ove n egrave il valore binario indicato dai segnali S0 S1 e S2
Si noti che il circuito in questione egrave di fatto un registro con 8 FF allrsquoingresso di ciascuno dei quali egrave previsto un MUX a 8 vie che pilotato dai segnali S0 S1 e S2 che seleziona uno degli 8 uscite del dispositivo La struttura interna puograve essere osservata ldquoclikkandordquo due volte sul dispositivo nello schema di Altera
64
Barrel shifter
6565
66
Simulazione timing
67
bull Utilizzando il sistema Altera progettare un orologio con secondi minuti ora partendo da un oscillatore a quarzo con frequenza 500 KHz
bull E se si volesse proseguire e realizzare anche un datario (giorno mese e anno )
bull Come potrebbe essere integrato con una sveglia Si ricordi che lrsquoorologio deve essere anche essere ldquopresettatordquo
bull Quali circuiti utilizzare per la visualizzazione
68
EPROM
X0nZ0m
y0kY0k
Clock
D0kQ0k
FFD0k
CK D0kQ0k CK
Reti sincrone con EPROM
Al posto delle EPROM si utilizzano ora dei PLA ovvero dispositivi nei quali si nei quali le funzioni combinatorie sono ottimizzate ma il principio egrave assolutamente il medesimo
69
Progettare con Altera una rete logica sincrona che utilizzando registri 374 ALU 74181 un contatore e altri dispositivi ritenuti necessari permetta di eseguire in sequenza la somma di due dati di 4 bit senza segno ingresso esegua il complemento a 2 inverta la parte bassa con la parte alta del risultato e infine moltiplichi il tutto logicamente per 2
La soluzione egrave sempre decomponibile in tre sottosistemi il controllo con la sua decodifica (unitagrave di controllo) il percorso dei dati con le unitagrave che li trasformano (datapath) e i registri di deposito e di ingresso dei dati
Questa egrave la struttura base di qualunque unitagrave centrale di qualunque computer
La differenza consiste solo nel fatto che anzicheacute avere una sequenza fissa di operazioni ne viene generata una volta a volta che dipende appunto dalla istruzione che deve essere eseguita Come si vedragrave approfonditamente nel corso di Calcolatori T del II anno (prof Neri e Mattoccia)
Arrivederci al corso di Calcolatori T del II anno (sapendo perfettamente le reti logiche helliphellip)
22
E con Mealy
B
00 01 11 10
F A GA
B C A GB
B D A GCB F A ED
B F A GE
B F AA- GF
B F A GG
0
0
0
0
1
0
0
X1X2
B0
00 01 11 10
F0 A0 G0A
B0 C0 A0 G0B
B0 D0 A0 G0CB0 F0 A0 E1D
B1 F1 A1 G1E
B0 F0 A0A-G0F
B0 F0 A0 G0G
X1X2
Potrei mettere una indifferenza sullrsquouscita Si si possono mettere indifferenze sulle uscite che cambiano Anticipazione o ritardo del cambiamento
Sintetizzare e simulare con Altera
23
bull Allrsquoesame orale egrave necessario portare un esercizio di reti sincrone e uno di reti asincrone NON ldquomutuatordquo da altri hellip
bull I due esercizi debbono essere portati su una chiavetta (o dispositivo equivalente) debbono contenere una spiegazione e anche la progettazionesimulazione con Altera
bull Il candidato deve dimostrare di sapere usare il sistema Altera e spiegare i progetti portati
bull Gli esercizi di reti sincrone hanno spesso il diagramma degli stati ma solo per verificahellip
Monoimpulsore A
D1 Q1
Q1CKFFD
D2 Q2
Q2CKFFD Z1
D
Clock
Clock
D
Z
Q1
Q2
Qui lrsquoingresso asincrono D egrave sincronizzato dai FF Uscita Z sincrona
Generare un impulso di uscita di un periodo di clock per ingresso 1 Un ulteriore impulso viene generato solo se lrsquoingresso torna a 1 dopo essere stato a 0 Lrsquouscita deve essere sincronizzata con il clock
24
25
D1 Q1
Q1CKFFD
D2 Q2
Q2CKFFD Z
D
Clock
Monoimpulsore A
1
0
1
1
0
A0 B1
C0
0
A
A
A
-
B
C
C
-
DQ2
Q1
B
0 1
C
-
Z0
0
1
-
A 00
--
00
00
10
--
11
11
DQ2
Q1
01
0 1
11
10
Z0
0
-
1
0000
10
11
01
B
C
-
A
Q1=D Q2= DQ1 Z=Q1Q2
00
00
01
01
10
10
11
11
DQ2
Q1
01
0 1
11
10
Z0
0
0
1
00
MAhellip
Q1=D Q2= Q1 Z=Q1Q2
Moore necessariamente
26
D1 Q1
Q1CKFFD
D2 Q2
Q2CKFFD Z2
D
Clock
Monoimpulsore B
Clock
D
Z2
Q1
Q2
Lrsquoingresso asincrono D agisce direttamente sullrsquouscita Z che quindi risulta asincrona
Qui la rete egrave di tipo Mealy e quindi con ingresso asincrono egrave possibile che vi sia uscita asincrona
27
D Q
QCKFFD Z
D
Clock
Monoimpulsore C
Clock
D
Z
Q
Anche qui lrsquoingresso asincrono D agisce direttamente sullrsquouscita Z che quindi risulta asincronaSi noti che se lrsquoingresso oscilla una volta che il FF ha campionato un 1 e fino a quando non campiona uno 0 lrsquouscita oscilla
Qui la rete egrave di tipo Mealy e quindi con ingresso asincrono egrave possibile che vi sia uscita asincrona
28
Considerazioni sui monoimpulsori A B e C
Il diagramma degli stati corrispondente al funzionamento reale dei due monoimpulsori B e C NON puograve essere tracciato percheacute di fatto le due reti (di tipo Mealy) NON sono sincrone Infatti il diagramma di circuiti sincroni prevede implicitamente un comportamento sincrono anche degli ingressi fatto non verificato nei casi B e C
La cosa non vale per il monoimpulsore A in quanto pur essendo lrsquoingresso asincrono lrsquouscita (rete di tipo Moore) dipende solo dagli stati In altre parole il comportamento della rete rende intrinsecamente sincroni ingressi fisicamente asincroni
Il diagramma degli stati che riflette il comportamento delle due reti B e C puograve essere tracciato solo partendo da una analisi asincrona ldquoaprendordquo quindi i FF D inseriti Ovviamente egrave possibile progettare le due reti senza lrsquouso dei FF D partendo da un diagramma degli stati asincrono ldquotradizionalerdquo
A scopo di esercizio si suggerisce la sintesi e la simulazione con Altera dei tre monoimpulsori come reti asincrone Si tratta di circuiti on due ingressi Ck e D
29
Monoimpulsori A-B-C
30
31
Contatori
A B C D Z
Circuiti senza ingresso (a parte il clock) nella versione piugrave semplice
D0 Q0
Q0CKFFD
MUX
1
0D1 Q1
Q1CKFFD
(Il clock egrave spesso sottinteso nei circuiti sincroni)
U0 U1
Esempio contatore binario x 4 con decodifica del 3
000 010 100 111
OUT
Q1 cambia stato quando Q0 egrave a 1 e passa a 0
CK
u1
u0
OUT (0) (1) (2) (0) (1) (2)(3) (3)
Contatore x 4 con decodifica del 3
33
Contatori binari in base non potenza di 2
A B C D E
000 001 010 011 100Contatore
binario per 5
D0 Q0
Q0CKFFD
MUX
1
0 1D1 Q1
Q1CKFFD
MUX
1
0D Q2
Q2CKFFD
Questo conta x8 ma per contare x5 arrivati a 4 bisogna ritornare a 0
34
D0 Q0
Q0CKFFD D1 Q1
Q1CKFFD
MUX
1
0 D2 Q2
Q2CKFFD
MUX
1
0
ABC
ldquo4rdquo
Contatore x 5
Decoder
La decodifica del 4 porta a zero lrsquouscita del decodificatore e quindi a 0 tutte le uscite degli AND rosa e al successivo fronte positivo del clock i tre FF campionano uno ldquo0rdquo
Per esercizio sintetizzare un contatore x 100 partendo dalla sintesi di un contatore decimale ovvero di un contatore x10 (da sintetizzare) Quanti FF per un contatore decimale I contatori decimali si trovano integrati in Altera
ldquo3rdquo
35
Contatori con ingressi di controllo
Ex Contatore integrato x 16 con Load e Enable
bull Il contatore conta per 16 (0-15) se il segnale EN egrave a 1 Allorchegrave il segnale LD va a 1 il dato presente sugli ingressi D egrave inserito nei 4 FF (lrsquoingresso puograve essere sincrono o asincrono) Nel caso precedente il decodificatore del ldquo3rdquo (uscita vera va portato) allrsquoingresso LD con tutti i Di a zero
bull In generale il contatore fornisce anche unrsquouscita ldquocarryrdquo che va a 1 quando il contatore raggiunge il valore FF Questa uscita puograve essere connessa allrsquoenable di un contatore a valle per ottenere un contatore per 256 cosigrave via (Progettarlo come esercizio)
EN
Q0 Q1 Q2 Q3CKLD
D0 D1 D2 D3
EN
Q0 Q1 Q2 Q3CK
CYLD
D0 D1 D2 D3
bull Esistono contatori UPDOWN nei quali un ingresso (UD) seleziona se il conteggio deve avvenire avanti o indietro Nel caso sia selezionata la modalitagrave ldquoindietrordquo il carry si attiva quando si raggiunge il valore ldquotutti zerirdquo
bull Esiste una molteplicitagrave di contatori ciascuno con le proprie specifiche peculiaritagrave con o senza RESET (che normalmente agisce in modo asincrono) UD con o senza LD etc etc
NB qualunque circuito sincrono (con sequenza non binaria) riconducibile al diagramma degli stati di un contatore egrave sempre un contatore
101 010 000 111 110 Contatore x 5 non binario
36
74163 contatore reale x 16 con Load Reset e Enable (T e P)I segnali di controllo sono sincroni ovvero agiscono sul fronte positivo del clock (rising edge)
74138 decoder 38 con uscite negate se G2A e G2B entrambi a zero e G1 a 1 Altrimenti tutte uscite alte
Direttorio Counter Glitch
Contatore binario x 8 e glitches
37
Glitch
Simulazione timingNB la presenza e la durata del glitch dipende dalle caratteristiche elettriche dei dispositivi
dalla loro tecnologia etc Nel caso dei dispositivi Altera dipende dal tipo di dispositivo sul quale egrave realizzato il circuito Analogamente la sensibilitagrave di eventuali ingressi di clock collegati allrsquouscita con il glitch dipende dalle caratteristiche del dispositivo Se ad esempio nel dispositivo Altera utilizzato si collega allrsquouscita Y6 il clock di un FFD non si ha commutazione del FF ma questo non egrave vero in assoluto
38
Cosa succede al contatore X5 progettato precedentemente se allrsquoaccensione non disponendo di un segnale di RESET i FF si portano in uno stato non facente parte del cicloNB La condizione allrsquoaccensione egrave del tutto casuale e dipende unicamente dalle condizioni elettriche
di realizzazione Ersquo impredicibileSupponiamo che i FF si portino al valore 110 (il numero 6 fuori dal ciclo) Analizziamo il comportamento
D0 Q0Q0CK
FFD D1 Q1Q1CK
FFD
MUX
1
0 D2 Q2Q2CK
FFD
MUX
1
0
ABC
ldquo4rdquo
000 001 010 011 100 110 111
In questo caso ci si riporta nella situazione di conteggio regolare (verificare con la tabella degli stati ) ma il comportamento in generale dipende dalla realizzazione e in altre realizzazione i due stati potrebbero essere separati dal ciclo principale che quindi non verrebbe mai raggiunto Ecco la funzione del RESET
39
Solo come esempio (da non utilizzare ) a scopo didattico vediamo la tabella delle transizioni di un contatore per 6 UpDown con comando di Reset I segnali di ingresso cambiano in modo asincrono ma hanno effetto in modo sincrono
Per compensare allrsquoaccensione
Sintetizzare e simulareCome dovrebbe essere modificato lo schema in Altera per permettere di
ldquopresettarerdquo in modo asincrono il contatore a un particolare valore di ingresso
00 01 11 10UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
111
110
000 101
000
101
y3 y2 y100 01 11 10
UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
000 000111
000 000 000 000110
000 101
000
000 000
101
y3 y2 y1
40
D0Q0
CKFFD
Clocky2
DEC
y3
y2
y1
ldquo1rdquo
ldquo2rdquo
ldquo3rdquo
ldquo4rdquo
1
0
UPDown
Sintesi di y2 in modo ldquodirettordquo
1
0
00 01 11 10UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
000 000111
000 000 000 000110
000 101
000
000 000
101
y3 y2 y1
41
Cassaforte hellipDisponendo di un contatore per 8 (ma anche per 16 etc) con reset sincrono e sempre abilitato al conteggio come potrei realizzare il circuito di apertura della cassaforte (sequenza X1X2 00-01-01-10) con modello Moore
Cx8RES
Q0 Q1 Q2 CK
RES= (ldquo0rdquoX1X2 + ldquo1rdquo X1X2 + ldquo2rdquo X1X2 + ldquo3rdquo X1 X2)Z = ldquo4rdquo (ldquo0rdquordquo1rdquordquo2rdquordquo3rdquordquo4rdquo sono le decodifiche binarie delle tre uscite del contatore)
Il contatore si resetta ogni volta che non si presenta lrsquoingresso giusto relativo al particolare stato Ilcontatore quindi si resetta e rimane resettato se non nelle condizioni espresse dalla funzione RESIl contatore arrivato a 4 (Z=1) si resetta comunque al successivo fronte del clock
Le reti sincrone si progettano sempre come combinazione di blocchi disponibili e logica ldquorandomrdquo
ABC
ldquo0rdquoldquo1rdquoldquo2rdquoldquo3rdquoldquo4rdquo
RLAND-OR
X1X2
RESZ
Cx8RES
Q0 Q1 Q2 CK
42
Contatori
EN
Q0 Q1 Q2 Q3CKCY
RESET
bull Attenzione Consideriamo il contatore di figura (questa volta con RESET asincrono) e supponiamo di utilizzarlo per contare per 5 (NB per il Reset si usa il ldquo5rdquo in questo casohellip glitch)
ABCD
ldquo5rdquo
ldquo1rdquo Percheacute questo schema egrave sbagliato
bull Percheacute presenta una corsa critica Nel momento in cui anche uno solo dei FF si resetta (e non tutti nello stesso istante) viene a mancare la configurazione ldquo4rdquo sul decoder e quindi alcuni FF potrebbero non fare in tempo a resettarsi E allora
EN
Q0 Q1 Q2 Q3CKCY
RESET
ABCD
ldquo5rdquo
ldquo1rdquo
RS
Y ldquo0rdquo
bull Cosigrave facendo il ldquo4rdquo attiva il SET e il FF NON si resetta fino a quando non egrave stato raggiunto la ldquo0rdquo NB lo schema ldquosbagliatordquo si puograve usare solo se si egrave certi della rapiditagrave di reset dei FF del contatore
bull Verificare con Altera
Sintesi cassaforte con moduli
Altera Cassaforte sincrona con moduli
Rete di controllo
Contatore con Reset asincrono e Load sincrono
43
NB In questo progetto la sintesi egrave stata condotta in modo ldquodirettordquo ovvero senza passare per la sintesi formale e utilizzando componenti disponibili e helliphellip materia grigia La sintesi dei circuiti sincroni si fa sempre e unicamente cosigrave
44
Simulazione funzionale (no timing)
NB I segnali di ingresso sono campionati SOLO sul fronte positivo del clock anche se si presentano asincroni Il segnale di uscita si attiva al clock successivo al riconoscimento della sequenza La posizione di ldquoriposordquo del contatore egrave il valore 4 I segnali Yi sono le decodifiche dei segnali di di ingresso X1 e X2
00 01 01 10
45
Simulazione timing
46
NB Si egrave scelto di utilizzare SOLO gli ingressi SINCRONI del contatore per semplicitagrave Il contatore rimane al valore 100 fino a quando non si presenta allrsquoingresso il valore 00 Se la sequenza egrave esatta il contatore continua a contare in avanti fino alla generazione dellrsquouscita (valore 11 del contatore) altrimenti si riporta al valore 100 ovvero Qc=1) Il segnale GN (Gate Not) egrave quello che abilita il conteggio Il sistema riamane stabile a 000 per una sequenza lunga a piacere di X1=0 e X2=0 e si sposta quando dopo 00 si ha 01 Come si evince dalla simulazione se la sequenza non egrave corretta o egrave interrotta il contatore si riporta sempre a 100
00 01 11 10
001 000 000
X1
000000 010 100 100001
000 100 100 011010
100 100 100 100011
000 100 100 100100
000 100 100 100101
000 100 100 100110
000 100 100 100111
0
0
0
1
0
0
0
0
X2
000
NB la tabella delle transizioni derivata della rete realizzata NON ha ovviamente condizioni di indifferenza
47
Progettare un contatore packed BCD updown a 8 bit (due digit)
48
Generazione di forme drsquoondabull Ersquo possibile generare forme drsquoonda periodiche mediante circuiti sincroni di periodo
sottomultiplo intero del clock
Esempio 1Divisore di frequenza per 2
D0k Q0k
CK D Q
CK Clock
Q
Esempio 2 generare una forma drsquoonda periodica con periodo 5T (ove T sia il periodo del clock) in cui in un semiperiodo 3T lrsquouscita sia alta e nellrsquoaltro semiperiodo 2T lrsquouscita sia bassa
Q0 Q1 Q2 CK
Cx5
C
B
A
01234
DecoderDemux
Clock
ZZ T
3T2T
3T
NB una rete logica egrave in grado di effettuare delle divisioni di frequenza e mai delle moltiplicazioni di frequenza (che si possono ottenere solo con circuiti analogici non lineari)
49
Di che circuito si tratta
D0k Q0k
CK D0 Q0
CKQ0
D0k Q0k
CK D1 Q1
CK
D0k Q0k
CK D2 Q2
CKClock
Clock
Q0
Q1
Q2
Ersquo un contatore binario ma non sincrono Infatti i vari FF NON utilizzano lo stesso clock e questo porta a un piccolo disallineamento sulle uscite Non egrave sintetizzabile come una rete sincrona e una sintesi formale sarebbe possibile solo trattando il circuito come asincrono ovvero ldquoaprendordquo i FF Sarebbe possibile trasformarlo in un contatore x6 mantenendo la stessa impostazione
Sintetizzare e simulare con Altera
NB il segnale di clock non egrave in comune
50
7493
51
Altera Contatore asincrono
Contatore asincrono
52
Simulazione timing
53
Come puograve essere utilizzato un FFD per catturare un impulso piugrave breve di un periodo
D2 Q2
Q2CKFFD Z
Clock
D1 Q1
Q1CKFFD
D0 Q00
Q0CKFFD
ldquo1rdquo CL
Lrsquoimpulso breve viene catturato dal FF 0 (purcheacute di larghezza sufficiente per la tecnologia del FF) - che quindi agisce come integratore ndash la cui uscita alimenta il monoimpulsore di tipo A Lrsquoattivazione del FF 1 resetta il FF 0 (supponendo che il segnale di CL sia ldquopositiverdquotruerdquo)
Ci puograve essere un problema se il CL agisce in modo asincrono
NB questo circuito e quello del lucido precedente evidenziano il fatto che nella realtagrave nessuna rete egrave solo sincrona ma bensigrave egrave pressocheacute sempre necessario utilizzare reti di natura diversa anche percheacute vi egrave sempre una interazione fra reti con clock diversi eo con segnali provenienti dal mondo esterno NON sincronizzati con il clock
Monoimpulsore di tipo A ldquorivistordquo
54
bull Uno shift register a sinistra (a destra) egrave un registro composto da FFD che ad ogni clock trasferisce il valore del FF a destra (a sinistra) di ciascun FF nel FF stesso Nel FF piugrave a destra (sinistra) viene immesso uno ldquo0rdquo Questi tipi di registri shift si chiamano ldquologicirdquo
Shift register (registri a traslazione o scorrimento)
D0kQ0k
CK DnQn
CK
D0kQ0k
CK Dn-1Qn-1
CK
D0kQ0k
CK Dn-2Qn-2
CK
D0kQ0k
CK D0Q0
CK
ldquo0rdquo
Shift register a sinistra
bull Anche per i registri a traslazione esistono diverse versioni con ingresso parallelo e uscita seriale con ingresso seriale e uscita parallela con reset con load etc etc
bull Si noti che uno shift register egrave anche un contatore Si immagini per esempio che dopo un reset siano inseriti degli uni a partire da destra Lo shift register si riempie progressivamente di uni e quindi la posizione in cui egrave arrivato lrsquouno indica il valore del conteggio in base a un codice ldquouno su nrdquo (un codice decodificato)
bull Spesso uno stesso registro puograve traslare a destra o a sinistra in funzione di una segnale di controllo Ovviamente questo si ottiene premettendo a ogni ingresso Di un MUX a due vie che preleva in funzione del segnale di controllo Qigrave+1 o Qigrave-1 Con questa configurazione lo shift register diventa anche un contatore avantiindietro
Registro a scorrimento (shift-register) a 3 bit
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
IN
OUT2OUT1OUT0
CK
CK
IN
A_RESET
OUT1
OUT2
OUT0
Registro a scorrimento (shift-register) a 3 bit
57
Esempio 74164 (serial In parallel OUT)
bull In questo registro a traslazione ad ogni fronte positivo del clock i dati sono traslati a destra (Q0 -gt Q1 Q1-gtQ2 etc) Il registro egrave dotato in un Master Reset (vero negato) e il dato inserito nel FF Q0 egrave dato dallrsquoAND dei due ingressi Dsa e Dsb
bull Si noti che lrsquooperazione di shift corrisponde aritmeticamente alle operazioni di divisione e moltiplicazione per 2 Si supponga che in Q0 vi sia il bit meno significativo e in Q7 il meno significativo
0 1 1 0 1 0 1 0
010101102 = 10810
Shift left =gt x2
Shift right =gt 2
101011002 = 21610
001010112 = 5910
NB nel dispositivo i bit sono posti in ordine invertito e quindi un shift left del numero corrisponde a uno shift right sul dispositivo
58
bull Esistono anche i registri a traslazione ldquoaritmeticirdquo In questi shift register a destra anzicheacute fare entrare nel FF piugrave a sinistra lo ldquo0rdquo viene immesso sempre ripetutamente il suo valore logico
Shift aritmetico
Q7 Q6 Q5 Q4 Q3 Q2 Q1 Q0
D7 D6 D5 D4 D3 D2 D1 D0
I LDCK Esempio
11001010SRA
11100101 interpretato in complemento a 2
001101102=5410
C2 C2
000110112=2710
bull Lo shift aritmetico a destra effettua una divisione per 2 mantenendo il segno
59
Rotazione
Nei computer egrave sovente necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register
D0kQ0k
CK DnQn
CK
D0kQ0k
CK Dn-1Qn-1
CK
D0kQ0k
CK Dn-2Qn-2
CK
D0kQ0k
CK D0Q0
CK
Molto spesso nei computer egrave necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register con direzione programmabile In questo caso su D0 ad esempio puograve essere avviato o Q1 o Qn
60
Contatori con shift register ndash Contatore retroazionato EX-OR
Q2Q0
Shift right 3 bitDQ1
110 111 011 101 010 001
Diagramma degli stati disgiunto
Uno shift register con n FF retroazionato con un EX-OR (scelta degli ingressi variabile) egrave un contatore NON binario che conta per 2n-1 (purcheacute presettato a un valore diverso da tutti zeri)
000
100
61
Contatore di Johnson (riempimento e svuotamento)
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
000-gt100-gt110-gt111-gt011-gt001-gt000-gtStati isolati 101-gt010-gt101gt1
Poicheacute configurazioni adiacenti del codice Johnson differiscono di un solo bit il contatore puograve essere utilizzato per generare forme drsquoonda prive di alee
62
Contatore ad anello con un solo 1 (ovvero che genera direttamente il codice 1su n)
FFDD Q
QR
RESET
FFDD Q
QR
RESET
FFDD Q
QPR
RESET
OUT3OUT1OUT0
CK
FFDD Q
QR
RESET
OUT2
0001-gt1000-gt0100-gt0010-gt0010n FF per contare per n (mentre con i contatori binari il numero dei FF egrave il log2m ove m egrave il primo intero maggiore o uguale a n)
63
Barrel shifter (rotore)Un barrel shifter egrave uno shift register in grado di traslare di ldquonrdquo posizioni in un solo clock il contenuto dei suoi FF In figura egrave riportato il barrel shifter della Altera Gli ingressi A-H in presenza dellrsquoattivazione del segnale LDST al primo fronte positivo del clock sono depositati nei FF Quando LDST egrave 0 ad ogni fronte positivo del clock i bit di uscita sono ruotati di n posizioni in senso antiorario (ovvero lrsquouscita H diventa la G la G diventa la Fhellipe lrsquouscita A diventa la H) ove n egrave il valore binario indicato dai segnali S0 S1 e S2
Si noti che il circuito in questione egrave di fatto un registro con 8 FF allrsquoingresso di ciascuno dei quali egrave previsto un MUX a 8 vie che pilotato dai segnali S0 S1 e S2 che seleziona uno degli 8 uscite del dispositivo La struttura interna puograve essere osservata ldquoclikkandordquo due volte sul dispositivo nello schema di Altera
64
Barrel shifter
6565
66
Simulazione timing
67
bull Utilizzando il sistema Altera progettare un orologio con secondi minuti ora partendo da un oscillatore a quarzo con frequenza 500 KHz
bull E se si volesse proseguire e realizzare anche un datario (giorno mese e anno )
bull Come potrebbe essere integrato con una sveglia Si ricordi che lrsquoorologio deve essere anche essere ldquopresettatordquo
bull Quali circuiti utilizzare per la visualizzazione
68
EPROM
X0nZ0m
y0kY0k
Clock
D0kQ0k
FFD0k
CK D0kQ0k CK
Reti sincrone con EPROM
Al posto delle EPROM si utilizzano ora dei PLA ovvero dispositivi nei quali si nei quali le funzioni combinatorie sono ottimizzate ma il principio egrave assolutamente il medesimo
69
Progettare con Altera una rete logica sincrona che utilizzando registri 374 ALU 74181 un contatore e altri dispositivi ritenuti necessari permetta di eseguire in sequenza la somma di due dati di 4 bit senza segno ingresso esegua il complemento a 2 inverta la parte bassa con la parte alta del risultato e infine moltiplichi il tutto logicamente per 2
La soluzione egrave sempre decomponibile in tre sottosistemi il controllo con la sua decodifica (unitagrave di controllo) il percorso dei dati con le unitagrave che li trasformano (datapath) e i registri di deposito e di ingresso dei dati
Questa egrave la struttura base di qualunque unitagrave centrale di qualunque computer
La differenza consiste solo nel fatto che anzicheacute avere una sequenza fissa di operazioni ne viene generata una volta a volta che dipende appunto dalla istruzione che deve essere eseguita Come si vedragrave approfonditamente nel corso di Calcolatori T del II anno (prof Neri e Mattoccia)
Arrivederci al corso di Calcolatori T del II anno (sapendo perfettamente le reti logiche helliphellip)
23
bull Allrsquoesame orale egrave necessario portare un esercizio di reti sincrone e uno di reti asincrone NON ldquomutuatordquo da altri hellip
bull I due esercizi debbono essere portati su una chiavetta (o dispositivo equivalente) debbono contenere una spiegazione e anche la progettazionesimulazione con Altera
bull Il candidato deve dimostrare di sapere usare il sistema Altera e spiegare i progetti portati
bull Gli esercizi di reti sincrone hanno spesso il diagramma degli stati ma solo per verificahellip
Monoimpulsore A
D1 Q1
Q1CKFFD
D2 Q2
Q2CKFFD Z1
D
Clock
Clock
D
Z
Q1
Q2
Qui lrsquoingresso asincrono D egrave sincronizzato dai FF Uscita Z sincrona
Generare un impulso di uscita di un periodo di clock per ingresso 1 Un ulteriore impulso viene generato solo se lrsquoingresso torna a 1 dopo essere stato a 0 Lrsquouscita deve essere sincronizzata con il clock
24
25
D1 Q1
Q1CKFFD
D2 Q2
Q2CKFFD Z
D
Clock
Monoimpulsore A
1
0
1
1
0
A0 B1
C0
0
A
A
A
-
B
C
C
-
DQ2
Q1
B
0 1
C
-
Z0
0
1
-
A 00
--
00
00
10
--
11
11
DQ2
Q1
01
0 1
11
10
Z0
0
-
1
0000
10
11
01
B
C
-
A
Q1=D Q2= DQ1 Z=Q1Q2
00
00
01
01
10
10
11
11
DQ2
Q1
01
0 1
11
10
Z0
0
0
1
00
MAhellip
Q1=D Q2= Q1 Z=Q1Q2
Moore necessariamente
26
D1 Q1
Q1CKFFD
D2 Q2
Q2CKFFD Z2
D
Clock
Monoimpulsore B
Clock
D
Z2
Q1
Q2
Lrsquoingresso asincrono D agisce direttamente sullrsquouscita Z che quindi risulta asincrona
Qui la rete egrave di tipo Mealy e quindi con ingresso asincrono egrave possibile che vi sia uscita asincrona
27
D Q
QCKFFD Z
D
Clock
Monoimpulsore C
Clock
D
Z
Q
Anche qui lrsquoingresso asincrono D agisce direttamente sullrsquouscita Z che quindi risulta asincronaSi noti che se lrsquoingresso oscilla una volta che il FF ha campionato un 1 e fino a quando non campiona uno 0 lrsquouscita oscilla
Qui la rete egrave di tipo Mealy e quindi con ingresso asincrono egrave possibile che vi sia uscita asincrona
28
Considerazioni sui monoimpulsori A B e C
Il diagramma degli stati corrispondente al funzionamento reale dei due monoimpulsori B e C NON puograve essere tracciato percheacute di fatto le due reti (di tipo Mealy) NON sono sincrone Infatti il diagramma di circuiti sincroni prevede implicitamente un comportamento sincrono anche degli ingressi fatto non verificato nei casi B e C
La cosa non vale per il monoimpulsore A in quanto pur essendo lrsquoingresso asincrono lrsquouscita (rete di tipo Moore) dipende solo dagli stati In altre parole il comportamento della rete rende intrinsecamente sincroni ingressi fisicamente asincroni
Il diagramma degli stati che riflette il comportamento delle due reti B e C puograve essere tracciato solo partendo da una analisi asincrona ldquoaprendordquo quindi i FF D inseriti Ovviamente egrave possibile progettare le due reti senza lrsquouso dei FF D partendo da un diagramma degli stati asincrono ldquotradizionalerdquo
A scopo di esercizio si suggerisce la sintesi e la simulazione con Altera dei tre monoimpulsori come reti asincrone Si tratta di circuiti on due ingressi Ck e D
29
Monoimpulsori A-B-C
30
31
Contatori
A B C D Z
Circuiti senza ingresso (a parte il clock) nella versione piugrave semplice
D0 Q0
Q0CKFFD
MUX
1
0D1 Q1
Q1CKFFD
(Il clock egrave spesso sottinteso nei circuiti sincroni)
U0 U1
Esempio contatore binario x 4 con decodifica del 3
000 010 100 111
OUT
Q1 cambia stato quando Q0 egrave a 1 e passa a 0
CK
u1
u0
OUT (0) (1) (2) (0) (1) (2)(3) (3)
Contatore x 4 con decodifica del 3
33
Contatori binari in base non potenza di 2
A B C D E
000 001 010 011 100Contatore
binario per 5
D0 Q0
Q0CKFFD
MUX
1
0 1D1 Q1
Q1CKFFD
MUX
1
0D Q2
Q2CKFFD
Questo conta x8 ma per contare x5 arrivati a 4 bisogna ritornare a 0
34
D0 Q0
Q0CKFFD D1 Q1
Q1CKFFD
MUX
1
0 D2 Q2
Q2CKFFD
MUX
1
0
ABC
ldquo4rdquo
Contatore x 5
Decoder
La decodifica del 4 porta a zero lrsquouscita del decodificatore e quindi a 0 tutte le uscite degli AND rosa e al successivo fronte positivo del clock i tre FF campionano uno ldquo0rdquo
Per esercizio sintetizzare un contatore x 100 partendo dalla sintesi di un contatore decimale ovvero di un contatore x10 (da sintetizzare) Quanti FF per un contatore decimale I contatori decimali si trovano integrati in Altera
ldquo3rdquo
35
Contatori con ingressi di controllo
Ex Contatore integrato x 16 con Load e Enable
bull Il contatore conta per 16 (0-15) se il segnale EN egrave a 1 Allorchegrave il segnale LD va a 1 il dato presente sugli ingressi D egrave inserito nei 4 FF (lrsquoingresso puograve essere sincrono o asincrono) Nel caso precedente il decodificatore del ldquo3rdquo (uscita vera va portato) allrsquoingresso LD con tutti i Di a zero
bull In generale il contatore fornisce anche unrsquouscita ldquocarryrdquo che va a 1 quando il contatore raggiunge il valore FF Questa uscita puograve essere connessa allrsquoenable di un contatore a valle per ottenere un contatore per 256 cosigrave via (Progettarlo come esercizio)
EN
Q0 Q1 Q2 Q3CKLD
D0 D1 D2 D3
EN
Q0 Q1 Q2 Q3CK
CYLD
D0 D1 D2 D3
bull Esistono contatori UPDOWN nei quali un ingresso (UD) seleziona se il conteggio deve avvenire avanti o indietro Nel caso sia selezionata la modalitagrave ldquoindietrordquo il carry si attiva quando si raggiunge il valore ldquotutti zerirdquo
bull Esiste una molteplicitagrave di contatori ciascuno con le proprie specifiche peculiaritagrave con o senza RESET (che normalmente agisce in modo asincrono) UD con o senza LD etc etc
NB qualunque circuito sincrono (con sequenza non binaria) riconducibile al diagramma degli stati di un contatore egrave sempre un contatore
101 010 000 111 110 Contatore x 5 non binario
36
74163 contatore reale x 16 con Load Reset e Enable (T e P)I segnali di controllo sono sincroni ovvero agiscono sul fronte positivo del clock (rising edge)
74138 decoder 38 con uscite negate se G2A e G2B entrambi a zero e G1 a 1 Altrimenti tutte uscite alte
Direttorio Counter Glitch
Contatore binario x 8 e glitches
37
Glitch
Simulazione timingNB la presenza e la durata del glitch dipende dalle caratteristiche elettriche dei dispositivi
dalla loro tecnologia etc Nel caso dei dispositivi Altera dipende dal tipo di dispositivo sul quale egrave realizzato il circuito Analogamente la sensibilitagrave di eventuali ingressi di clock collegati allrsquouscita con il glitch dipende dalle caratteristiche del dispositivo Se ad esempio nel dispositivo Altera utilizzato si collega allrsquouscita Y6 il clock di un FFD non si ha commutazione del FF ma questo non egrave vero in assoluto
38
Cosa succede al contatore X5 progettato precedentemente se allrsquoaccensione non disponendo di un segnale di RESET i FF si portano in uno stato non facente parte del cicloNB La condizione allrsquoaccensione egrave del tutto casuale e dipende unicamente dalle condizioni elettriche
di realizzazione Ersquo impredicibileSupponiamo che i FF si portino al valore 110 (il numero 6 fuori dal ciclo) Analizziamo il comportamento
D0 Q0Q0CK
FFD D1 Q1Q1CK
FFD
MUX
1
0 D2 Q2Q2CK
FFD
MUX
1
0
ABC
ldquo4rdquo
000 001 010 011 100 110 111
In questo caso ci si riporta nella situazione di conteggio regolare (verificare con la tabella degli stati ) ma il comportamento in generale dipende dalla realizzazione e in altre realizzazione i due stati potrebbero essere separati dal ciclo principale che quindi non verrebbe mai raggiunto Ecco la funzione del RESET
39
Solo come esempio (da non utilizzare ) a scopo didattico vediamo la tabella delle transizioni di un contatore per 6 UpDown con comando di Reset I segnali di ingresso cambiano in modo asincrono ma hanno effetto in modo sincrono
Per compensare allrsquoaccensione
Sintetizzare e simulareCome dovrebbe essere modificato lo schema in Altera per permettere di
ldquopresettarerdquo in modo asincrono il contatore a un particolare valore di ingresso
00 01 11 10UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
111
110
000 101
000
101
y3 y2 y100 01 11 10
UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
000 000111
000 000 000 000110
000 101
000
000 000
101
y3 y2 y1
40
D0Q0
CKFFD
Clocky2
DEC
y3
y2
y1
ldquo1rdquo
ldquo2rdquo
ldquo3rdquo
ldquo4rdquo
1
0
UPDown
Sintesi di y2 in modo ldquodirettordquo
1
0
00 01 11 10UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
000 000111
000 000 000 000110
000 101
000
000 000
101
y3 y2 y1
41
Cassaforte hellipDisponendo di un contatore per 8 (ma anche per 16 etc) con reset sincrono e sempre abilitato al conteggio come potrei realizzare il circuito di apertura della cassaforte (sequenza X1X2 00-01-01-10) con modello Moore
Cx8RES
Q0 Q1 Q2 CK
RES= (ldquo0rdquoX1X2 + ldquo1rdquo X1X2 + ldquo2rdquo X1X2 + ldquo3rdquo X1 X2)Z = ldquo4rdquo (ldquo0rdquordquo1rdquordquo2rdquordquo3rdquordquo4rdquo sono le decodifiche binarie delle tre uscite del contatore)
Il contatore si resetta ogni volta che non si presenta lrsquoingresso giusto relativo al particolare stato Ilcontatore quindi si resetta e rimane resettato se non nelle condizioni espresse dalla funzione RESIl contatore arrivato a 4 (Z=1) si resetta comunque al successivo fronte del clock
Le reti sincrone si progettano sempre come combinazione di blocchi disponibili e logica ldquorandomrdquo
ABC
ldquo0rdquoldquo1rdquoldquo2rdquoldquo3rdquoldquo4rdquo
RLAND-OR
X1X2
RESZ
Cx8RES
Q0 Q1 Q2 CK
42
Contatori
EN
Q0 Q1 Q2 Q3CKCY
RESET
bull Attenzione Consideriamo il contatore di figura (questa volta con RESET asincrono) e supponiamo di utilizzarlo per contare per 5 (NB per il Reset si usa il ldquo5rdquo in questo casohellip glitch)
ABCD
ldquo5rdquo
ldquo1rdquo Percheacute questo schema egrave sbagliato
bull Percheacute presenta una corsa critica Nel momento in cui anche uno solo dei FF si resetta (e non tutti nello stesso istante) viene a mancare la configurazione ldquo4rdquo sul decoder e quindi alcuni FF potrebbero non fare in tempo a resettarsi E allora
EN
Q0 Q1 Q2 Q3CKCY
RESET
ABCD
ldquo5rdquo
ldquo1rdquo
RS
Y ldquo0rdquo
bull Cosigrave facendo il ldquo4rdquo attiva il SET e il FF NON si resetta fino a quando non egrave stato raggiunto la ldquo0rdquo NB lo schema ldquosbagliatordquo si puograve usare solo se si egrave certi della rapiditagrave di reset dei FF del contatore
bull Verificare con Altera
Sintesi cassaforte con moduli
Altera Cassaforte sincrona con moduli
Rete di controllo
Contatore con Reset asincrono e Load sincrono
43
NB In questo progetto la sintesi egrave stata condotta in modo ldquodirettordquo ovvero senza passare per la sintesi formale e utilizzando componenti disponibili e helliphellip materia grigia La sintesi dei circuiti sincroni si fa sempre e unicamente cosigrave
44
Simulazione funzionale (no timing)
NB I segnali di ingresso sono campionati SOLO sul fronte positivo del clock anche se si presentano asincroni Il segnale di uscita si attiva al clock successivo al riconoscimento della sequenza La posizione di ldquoriposordquo del contatore egrave il valore 4 I segnali Yi sono le decodifiche dei segnali di di ingresso X1 e X2
00 01 01 10
45
Simulazione timing
46
NB Si egrave scelto di utilizzare SOLO gli ingressi SINCRONI del contatore per semplicitagrave Il contatore rimane al valore 100 fino a quando non si presenta allrsquoingresso il valore 00 Se la sequenza egrave esatta il contatore continua a contare in avanti fino alla generazione dellrsquouscita (valore 11 del contatore) altrimenti si riporta al valore 100 ovvero Qc=1) Il segnale GN (Gate Not) egrave quello che abilita il conteggio Il sistema riamane stabile a 000 per una sequenza lunga a piacere di X1=0 e X2=0 e si sposta quando dopo 00 si ha 01 Come si evince dalla simulazione se la sequenza non egrave corretta o egrave interrotta il contatore si riporta sempre a 100
00 01 11 10
001 000 000
X1
000000 010 100 100001
000 100 100 011010
100 100 100 100011
000 100 100 100100
000 100 100 100101
000 100 100 100110
000 100 100 100111
0
0
0
1
0
0
0
0
X2
000
NB la tabella delle transizioni derivata della rete realizzata NON ha ovviamente condizioni di indifferenza
47
Progettare un contatore packed BCD updown a 8 bit (due digit)
48
Generazione di forme drsquoondabull Ersquo possibile generare forme drsquoonda periodiche mediante circuiti sincroni di periodo
sottomultiplo intero del clock
Esempio 1Divisore di frequenza per 2
D0k Q0k
CK D Q
CK Clock
Q
Esempio 2 generare una forma drsquoonda periodica con periodo 5T (ove T sia il periodo del clock) in cui in un semiperiodo 3T lrsquouscita sia alta e nellrsquoaltro semiperiodo 2T lrsquouscita sia bassa
Q0 Q1 Q2 CK
Cx5
C
B
A
01234
DecoderDemux
Clock
ZZ T
3T2T
3T
NB una rete logica egrave in grado di effettuare delle divisioni di frequenza e mai delle moltiplicazioni di frequenza (che si possono ottenere solo con circuiti analogici non lineari)
49
Di che circuito si tratta
D0k Q0k
CK D0 Q0
CKQ0
D0k Q0k
CK D1 Q1
CK
D0k Q0k
CK D2 Q2
CKClock
Clock
Q0
Q1
Q2
Ersquo un contatore binario ma non sincrono Infatti i vari FF NON utilizzano lo stesso clock e questo porta a un piccolo disallineamento sulle uscite Non egrave sintetizzabile come una rete sincrona e una sintesi formale sarebbe possibile solo trattando il circuito come asincrono ovvero ldquoaprendordquo i FF Sarebbe possibile trasformarlo in un contatore x6 mantenendo la stessa impostazione
Sintetizzare e simulare con Altera
NB il segnale di clock non egrave in comune
50
7493
51
Altera Contatore asincrono
Contatore asincrono
52
Simulazione timing
53
Come puograve essere utilizzato un FFD per catturare un impulso piugrave breve di un periodo
D2 Q2
Q2CKFFD Z
Clock
D1 Q1
Q1CKFFD
D0 Q00
Q0CKFFD
ldquo1rdquo CL
Lrsquoimpulso breve viene catturato dal FF 0 (purcheacute di larghezza sufficiente per la tecnologia del FF) - che quindi agisce come integratore ndash la cui uscita alimenta il monoimpulsore di tipo A Lrsquoattivazione del FF 1 resetta il FF 0 (supponendo che il segnale di CL sia ldquopositiverdquotruerdquo)
Ci puograve essere un problema se il CL agisce in modo asincrono
NB questo circuito e quello del lucido precedente evidenziano il fatto che nella realtagrave nessuna rete egrave solo sincrona ma bensigrave egrave pressocheacute sempre necessario utilizzare reti di natura diversa anche percheacute vi egrave sempre una interazione fra reti con clock diversi eo con segnali provenienti dal mondo esterno NON sincronizzati con il clock
Monoimpulsore di tipo A ldquorivistordquo
54
bull Uno shift register a sinistra (a destra) egrave un registro composto da FFD che ad ogni clock trasferisce il valore del FF a destra (a sinistra) di ciascun FF nel FF stesso Nel FF piugrave a destra (sinistra) viene immesso uno ldquo0rdquo Questi tipi di registri shift si chiamano ldquologicirdquo
Shift register (registri a traslazione o scorrimento)
D0kQ0k
CK DnQn
CK
D0kQ0k
CK Dn-1Qn-1
CK
D0kQ0k
CK Dn-2Qn-2
CK
D0kQ0k
CK D0Q0
CK
ldquo0rdquo
Shift register a sinistra
bull Anche per i registri a traslazione esistono diverse versioni con ingresso parallelo e uscita seriale con ingresso seriale e uscita parallela con reset con load etc etc
bull Si noti che uno shift register egrave anche un contatore Si immagini per esempio che dopo un reset siano inseriti degli uni a partire da destra Lo shift register si riempie progressivamente di uni e quindi la posizione in cui egrave arrivato lrsquouno indica il valore del conteggio in base a un codice ldquouno su nrdquo (un codice decodificato)
bull Spesso uno stesso registro puograve traslare a destra o a sinistra in funzione di una segnale di controllo Ovviamente questo si ottiene premettendo a ogni ingresso Di un MUX a due vie che preleva in funzione del segnale di controllo Qigrave+1 o Qigrave-1 Con questa configurazione lo shift register diventa anche un contatore avantiindietro
Registro a scorrimento (shift-register) a 3 bit
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
IN
OUT2OUT1OUT0
CK
CK
IN
A_RESET
OUT1
OUT2
OUT0
Registro a scorrimento (shift-register) a 3 bit
57
Esempio 74164 (serial In parallel OUT)
bull In questo registro a traslazione ad ogni fronte positivo del clock i dati sono traslati a destra (Q0 -gt Q1 Q1-gtQ2 etc) Il registro egrave dotato in un Master Reset (vero negato) e il dato inserito nel FF Q0 egrave dato dallrsquoAND dei due ingressi Dsa e Dsb
bull Si noti che lrsquooperazione di shift corrisponde aritmeticamente alle operazioni di divisione e moltiplicazione per 2 Si supponga che in Q0 vi sia il bit meno significativo e in Q7 il meno significativo
0 1 1 0 1 0 1 0
010101102 = 10810
Shift left =gt x2
Shift right =gt 2
101011002 = 21610
001010112 = 5910
NB nel dispositivo i bit sono posti in ordine invertito e quindi un shift left del numero corrisponde a uno shift right sul dispositivo
58
bull Esistono anche i registri a traslazione ldquoaritmeticirdquo In questi shift register a destra anzicheacute fare entrare nel FF piugrave a sinistra lo ldquo0rdquo viene immesso sempre ripetutamente il suo valore logico
Shift aritmetico
Q7 Q6 Q5 Q4 Q3 Q2 Q1 Q0
D7 D6 D5 D4 D3 D2 D1 D0
I LDCK Esempio
11001010SRA
11100101 interpretato in complemento a 2
001101102=5410
C2 C2
000110112=2710
bull Lo shift aritmetico a destra effettua una divisione per 2 mantenendo il segno
59
Rotazione
Nei computer egrave sovente necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register
D0kQ0k
CK DnQn
CK
D0kQ0k
CK Dn-1Qn-1
CK
D0kQ0k
CK Dn-2Qn-2
CK
D0kQ0k
CK D0Q0
CK
Molto spesso nei computer egrave necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register con direzione programmabile In questo caso su D0 ad esempio puograve essere avviato o Q1 o Qn
60
Contatori con shift register ndash Contatore retroazionato EX-OR
Q2Q0
Shift right 3 bitDQ1
110 111 011 101 010 001
Diagramma degli stati disgiunto
Uno shift register con n FF retroazionato con un EX-OR (scelta degli ingressi variabile) egrave un contatore NON binario che conta per 2n-1 (purcheacute presettato a un valore diverso da tutti zeri)
000
100
61
Contatore di Johnson (riempimento e svuotamento)
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
000-gt100-gt110-gt111-gt011-gt001-gt000-gtStati isolati 101-gt010-gt101gt1
Poicheacute configurazioni adiacenti del codice Johnson differiscono di un solo bit il contatore puograve essere utilizzato per generare forme drsquoonda prive di alee
62
Contatore ad anello con un solo 1 (ovvero che genera direttamente il codice 1su n)
FFDD Q
QR
RESET
FFDD Q
QR
RESET
FFDD Q
QPR
RESET
OUT3OUT1OUT0
CK
FFDD Q
QR
RESET
OUT2
0001-gt1000-gt0100-gt0010-gt0010n FF per contare per n (mentre con i contatori binari il numero dei FF egrave il log2m ove m egrave il primo intero maggiore o uguale a n)
63
Barrel shifter (rotore)Un barrel shifter egrave uno shift register in grado di traslare di ldquonrdquo posizioni in un solo clock il contenuto dei suoi FF In figura egrave riportato il barrel shifter della Altera Gli ingressi A-H in presenza dellrsquoattivazione del segnale LDST al primo fronte positivo del clock sono depositati nei FF Quando LDST egrave 0 ad ogni fronte positivo del clock i bit di uscita sono ruotati di n posizioni in senso antiorario (ovvero lrsquouscita H diventa la G la G diventa la Fhellipe lrsquouscita A diventa la H) ove n egrave il valore binario indicato dai segnali S0 S1 e S2
Si noti che il circuito in questione egrave di fatto un registro con 8 FF allrsquoingresso di ciascuno dei quali egrave previsto un MUX a 8 vie che pilotato dai segnali S0 S1 e S2 che seleziona uno degli 8 uscite del dispositivo La struttura interna puograve essere osservata ldquoclikkandordquo due volte sul dispositivo nello schema di Altera
64
Barrel shifter
6565
66
Simulazione timing
67
bull Utilizzando il sistema Altera progettare un orologio con secondi minuti ora partendo da un oscillatore a quarzo con frequenza 500 KHz
bull E se si volesse proseguire e realizzare anche un datario (giorno mese e anno )
bull Come potrebbe essere integrato con una sveglia Si ricordi che lrsquoorologio deve essere anche essere ldquopresettatordquo
bull Quali circuiti utilizzare per la visualizzazione
68
EPROM
X0nZ0m
y0kY0k
Clock
D0kQ0k
FFD0k
CK D0kQ0k CK
Reti sincrone con EPROM
Al posto delle EPROM si utilizzano ora dei PLA ovvero dispositivi nei quali si nei quali le funzioni combinatorie sono ottimizzate ma il principio egrave assolutamente il medesimo
69
Progettare con Altera una rete logica sincrona che utilizzando registri 374 ALU 74181 un contatore e altri dispositivi ritenuti necessari permetta di eseguire in sequenza la somma di due dati di 4 bit senza segno ingresso esegua il complemento a 2 inverta la parte bassa con la parte alta del risultato e infine moltiplichi il tutto logicamente per 2
La soluzione egrave sempre decomponibile in tre sottosistemi il controllo con la sua decodifica (unitagrave di controllo) il percorso dei dati con le unitagrave che li trasformano (datapath) e i registri di deposito e di ingresso dei dati
Questa egrave la struttura base di qualunque unitagrave centrale di qualunque computer
La differenza consiste solo nel fatto che anzicheacute avere una sequenza fissa di operazioni ne viene generata una volta a volta che dipende appunto dalla istruzione che deve essere eseguita Come si vedragrave approfonditamente nel corso di Calcolatori T del II anno (prof Neri e Mattoccia)
Arrivederci al corso di Calcolatori T del II anno (sapendo perfettamente le reti logiche helliphellip)
Monoimpulsore A
D1 Q1
Q1CKFFD
D2 Q2
Q2CKFFD Z1
D
Clock
Clock
D
Z
Q1
Q2
Qui lrsquoingresso asincrono D egrave sincronizzato dai FF Uscita Z sincrona
Generare un impulso di uscita di un periodo di clock per ingresso 1 Un ulteriore impulso viene generato solo se lrsquoingresso torna a 1 dopo essere stato a 0 Lrsquouscita deve essere sincronizzata con il clock
24
25
D1 Q1
Q1CKFFD
D2 Q2
Q2CKFFD Z
D
Clock
Monoimpulsore A
1
0
1
1
0
A0 B1
C0
0
A
A
A
-
B
C
C
-
DQ2
Q1
B
0 1
C
-
Z0
0
1
-
A 00
--
00
00
10
--
11
11
DQ2
Q1
01
0 1
11
10
Z0
0
-
1
0000
10
11
01
B
C
-
A
Q1=D Q2= DQ1 Z=Q1Q2
00
00
01
01
10
10
11
11
DQ2
Q1
01
0 1
11
10
Z0
0
0
1
00
MAhellip
Q1=D Q2= Q1 Z=Q1Q2
Moore necessariamente
26
D1 Q1
Q1CKFFD
D2 Q2
Q2CKFFD Z2
D
Clock
Monoimpulsore B
Clock
D
Z2
Q1
Q2
Lrsquoingresso asincrono D agisce direttamente sullrsquouscita Z che quindi risulta asincrona
Qui la rete egrave di tipo Mealy e quindi con ingresso asincrono egrave possibile che vi sia uscita asincrona
27
D Q
QCKFFD Z
D
Clock
Monoimpulsore C
Clock
D
Z
Q
Anche qui lrsquoingresso asincrono D agisce direttamente sullrsquouscita Z che quindi risulta asincronaSi noti che se lrsquoingresso oscilla una volta che il FF ha campionato un 1 e fino a quando non campiona uno 0 lrsquouscita oscilla
Qui la rete egrave di tipo Mealy e quindi con ingresso asincrono egrave possibile che vi sia uscita asincrona
28
Considerazioni sui monoimpulsori A B e C
Il diagramma degli stati corrispondente al funzionamento reale dei due monoimpulsori B e C NON puograve essere tracciato percheacute di fatto le due reti (di tipo Mealy) NON sono sincrone Infatti il diagramma di circuiti sincroni prevede implicitamente un comportamento sincrono anche degli ingressi fatto non verificato nei casi B e C
La cosa non vale per il monoimpulsore A in quanto pur essendo lrsquoingresso asincrono lrsquouscita (rete di tipo Moore) dipende solo dagli stati In altre parole il comportamento della rete rende intrinsecamente sincroni ingressi fisicamente asincroni
Il diagramma degli stati che riflette il comportamento delle due reti B e C puograve essere tracciato solo partendo da una analisi asincrona ldquoaprendordquo quindi i FF D inseriti Ovviamente egrave possibile progettare le due reti senza lrsquouso dei FF D partendo da un diagramma degli stati asincrono ldquotradizionalerdquo
A scopo di esercizio si suggerisce la sintesi e la simulazione con Altera dei tre monoimpulsori come reti asincrone Si tratta di circuiti on due ingressi Ck e D
29
Monoimpulsori A-B-C
30
31
Contatori
A B C D Z
Circuiti senza ingresso (a parte il clock) nella versione piugrave semplice
D0 Q0
Q0CKFFD
MUX
1
0D1 Q1
Q1CKFFD
(Il clock egrave spesso sottinteso nei circuiti sincroni)
U0 U1
Esempio contatore binario x 4 con decodifica del 3
000 010 100 111
OUT
Q1 cambia stato quando Q0 egrave a 1 e passa a 0
CK
u1
u0
OUT (0) (1) (2) (0) (1) (2)(3) (3)
Contatore x 4 con decodifica del 3
33
Contatori binari in base non potenza di 2
A B C D E
000 001 010 011 100Contatore
binario per 5
D0 Q0
Q0CKFFD
MUX
1
0 1D1 Q1
Q1CKFFD
MUX
1
0D Q2
Q2CKFFD
Questo conta x8 ma per contare x5 arrivati a 4 bisogna ritornare a 0
34
D0 Q0
Q0CKFFD D1 Q1
Q1CKFFD
MUX
1
0 D2 Q2
Q2CKFFD
MUX
1
0
ABC
ldquo4rdquo
Contatore x 5
Decoder
La decodifica del 4 porta a zero lrsquouscita del decodificatore e quindi a 0 tutte le uscite degli AND rosa e al successivo fronte positivo del clock i tre FF campionano uno ldquo0rdquo
Per esercizio sintetizzare un contatore x 100 partendo dalla sintesi di un contatore decimale ovvero di un contatore x10 (da sintetizzare) Quanti FF per un contatore decimale I contatori decimali si trovano integrati in Altera
ldquo3rdquo
35
Contatori con ingressi di controllo
Ex Contatore integrato x 16 con Load e Enable
bull Il contatore conta per 16 (0-15) se il segnale EN egrave a 1 Allorchegrave il segnale LD va a 1 il dato presente sugli ingressi D egrave inserito nei 4 FF (lrsquoingresso puograve essere sincrono o asincrono) Nel caso precedente il decodificatore del ldquo3rdquo (uscita vera va portato) allrsquoingresso LD con tutti i Di a zero
bull In generale il contatore fornisce anche unrsquouscita ldquocarryrdquo che va a 1 quando il contatore raggiunge il valore FF Questa uscita puograve essere connessa allrsquoenable di un contatore a valle per ottenere un contatore per 256 cosigrave via (Progettarlo come esercizio)
EN
Q0 Q1 Q2 Q3CKLD
D0 D1 D2 D3
EN
Q0 Q1 Q2 Q3CK
CYLD
D0 D1 D2 D3
bull Esistono contatori UPDOWN nei quali un ingresso (UD) seleziona se il conteggio deve avvenire avanti o indietro Nel caso sia selezionata la modalitagrave ldquoindietrordquo il carry si attiva quando si raggiunge il valore ldquotutti zerirdquo
bull Esiste una molteplicitagrave di contatori ciascuno con le proprie specifiche peculiaritagrave con o senza RESET (che normalmente agisce in modo asincrono) UD con o senza LD etc etc
NB qualunque circuito sincrono (con sequenza non binaria) riconducibile al diagramma degli stati di un contatore egrave sempre un contatore
101 010 000 111 110 Contatore x 5 non binario
36
74163 contatore reale x 16 con Load Reset e Enable (T e P)I segnali di controllo sono sincroni ovvero agiscono sul fronte positivo del clock (rising edge)
74138 decoder 38 con uscite negate se G2A e G2B entrambi a zero e G1 a 1 Altrimenti tutte uscite alte
Direttorio Counter Glitch
Contatore binario x 8 e glitches
37
Glitch
Simulazione timingNB la presenza e la durata del glitch dipende dalle caratteristiche elettriche dei dispositivi
dalla loro tecnologia etc Nel caso dei dispositivi Altera dipende dal tipo di dispositivo sul quale egrave realizzato il circuito Analogamente la sensibilitagrave di eventuali ingressi di clock collegati allrsquouscita con il glitch dipende dalle caratteristiche del dispositivo Se ad esempio nel dispositivo Altera utilizzato si collega allrsquouscita Y6 il clock di un FFD non si ha commutazione del FF ma questo non egrave vero in assoluto
38
Cosa succede al contatore X5 progettato precedentemente se allrsquoaccensione non disponendo di un segnale di RESET i FF si portano in uno stato non facente parte del cicloNB La condizione allrsquoaccensione egrave del tutto casuale e dipende unicamente dalle condizioni elettriche
di realizzazione Ersquo impredicibileSupponiamo che i FF si portino al valore 110 (il numero 6 fuori dal ciclo) Analizziamo il comportamento
D0 Q0Q0CK
FFD D1 Q1Q1CK
FFD
MUX
1
0 D2 Q2Q2CK
FFD
MUX
1
0
ABC
ldquo4rdquo
000 001 010 011 100 110 111
In questo caso ci si riporta nella situazione di conteggio regolare (verificare con la tabella degli stati ) ma il comportamento in generale dipende dalla realizzazione e in altre realizzazione i due stati potrebbero essere separati dal ciclo principale che quindi non verrebbe mai raggiunto Ecco la funzione del RESET
39
Solo come esempio (da non utilizzare ) a scopo didattico vediamo la tabella delle transizioni di un contatore per 6 UpDown con comando di Reset I segnali di ingresso cambiano in modo asincrono ma hanno effetto in modo sincrono
Per compensare allrsquoaccensione
Sintetizzare e simulareCome dovrebbe essere modificato lo schema in Altera per permettere di
ldquopresettarerdquo in modo asincrono il contatore a un particolare valore di ingresso
00 01 11 10UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
111
110
000 101
000
101
y3 y2 y100 01 11 10
UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
000 000111
000 000 000 000110
000 101
000
000 000
101
y3 y2 y1
40
D0Q0
CKFFD
Clocky2
DEC
y3
y2
y1
ldquo1rdquo
ldquo2rdquo
ldquo3rdquo
ldquo4rdquo
1
0
UPDown
Sintesi di y2 in modo ldquodirettordquo
1
0
00 01 11 10UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
000 000111
000 000 000 000110
000 101
000
000 000
101
y3 y2 y1
41
Cassaforte hellipDisponendo di un contatore per 8 (ma anche per 16 etc) con reset sincrono e sempre abilitato al conteggio come potrei realizzare il circuito di apertura della cassaforte (sequenza X1X2 00-01-01-10) con modello Moore
Cx8RES
Q0 Q1 Q2 CK
RES= (ldquo0rdquoX1X2 + ldquo1rdquo X1X2 + ldquo2rdquo X1X2 + ldquo3rdquo X1 X2)Z = ldquo4rdquo (ldquo0rdquordquo1rdquordquo2rdquordquo3rdquordquo4rdquo sono le decodifiche binarie delle tre uscite del contatore)
Il contatore si resetta ogni volta che non si presenta lrsquoingresso giusto relativo al particolare stato Ilcontatore quindi si resetta e rimane resettato se non nelle condizioni espresse dalla funzione RESIl contatore arrivato a 4 (Z=1) si resetta comunque al successivo fronte del clock
Le reti sincrone si progettano sempre come combinazione di blocchi disponibili e logica ldquorandomrdquo
ABC
ldquo0rdquoldquo1rdquoldquo2rdquoldquo3rdquoldquo4rdquo
RLAND-OR
X1X2
RESZ
Cx8RES
Q0 Q1 Q2 CK
42
Contatori
EN
Q0 Q1 Q2 Q3CKCY
RESET
bull Attenzione Consideriamo il contatore di figura (questa volta con RESET asincrono) e supponiamo di utilizzarlo per contare per 5 (NB per il Reset si usa il ldquo5rdquo in questo casohellip glitch)
ABCD
ldquo5rdquo
ldquo1rdquo Percheacute questo schema egrave sbagliato
bull Percheacute presenta una corsa critica Nel momento in cui anche uno solo dei FF si resetta (e non tutti nello stesso istante) viene a mancare la configurazione ldquo4rdquo sul decoder e quindi alcuni FF potrebbero non fare in tempo a resettarsi E allora
EN
Q0 Q1 Q2 Q3CKCY
RESET
ABCD
ldquo5rdquo
ldquo1rdquo
RS
Y ldquo0rdquo
bull Cosigrave facendo il ldquo4rdquo attiva il SET e il FF NON si resetta fino a quando non egrave stato raggiunto la ldquo0rdquo NB lo schema ldquosbagliatordquo si puograve usare solo se si egrave certi della rapiditagrave di reset dei FF del contatore
bull Verificare con Altera
Sintesi cassaforte con moduli
Altera Cassaforte sincrona con moduli
Rete di controllo
Contatore con Reset asincrono e Load sincrono
43
NB In questo progetto la sintesi egrave stata condotta in modo ldquodirettordquo ovvero senza passare per la sintesi formale e utilizzando componenti disponibili e helliphellip materia grigia La sintesi dei circuiti sincroni si fa sempre e unicamente cosigrave
44
Simulazione funzionale (no timing)
NB I segnali di ingresso sono campionati SOLO sul fronte positivo del clock anche se si presentano asincroni Il segnale di uscita si attiva al clock successivo al riconoscimento della sequenza La posizione di ldquoriposordquo del contatore egrave il valore 4 I segnali Yi sono le decodifiche dei segnali di di ingresso X1 e X2
00 01 01 10
45
Simulazione timing
46
NB Si egrave scelto di utilizzare SOLO gli ingressi SINCRONI del contatore per semplicitagrave Il contatore rimane al valore 100 fino a quando non si presenta allrsquoingresso il valore 00 Se la sequenza egrave esatta il contatore continua a contare in avanti fino alla generazione dellrsquouscita (valore 11 del contatore) altrimenti si riporta al valore 100 ovvero Qc=1) Il segnale GN (Gate Not) egrave quello che abilita il conteggio Il sistema riamane stabile a 000 per una sequenza lunga a piacere di X1=0 e X2=0 e si sposta quando dopo 00 si ha 01 Come si evince dalla simulazione se la sequenza non egrave corretta o egrave interrotta il contatore si riporta sempre a 100
00 01 11 10
001 000 000
X1
000000 010 100 100001
000 100 100 011010
100 100 100 100011
000 100 100 100100
000 100 100 100101
000 100 100 100110
000 100 100 100111
0
0
0
1
0
0
0
0
X2
000
NB la tabella delle transizioni derivata della rete realizzata NON ha ovviamente condizioni di indifferenza
47
Progettare un contatore packed BCD updown a 8 bit (due digit)
48
Generazione di forme drsquoondabull Ersquo possibile generare forme drsquoonda periodiche mediante circuiti sincroni di periodo
sottomultiplo intero del clock
Esempio 1Divisore di frequenza per 2
D0k Q0k
CK D Q
CK Clock
Q
Esempio 2 generare una forma drsquoonda periodica con periodo 5T (ove T sia il periodo del clock) in cui in un semiperiodo 3T lrsquouscita sia alta e nellrsquoaltro semiperiodo 2T lrsquouscita sia bassa
Q0 Q1 Q2 CK
Cx5
C
B
A
01234
DecoderDemux
Clock
ZZ T
3T2T
3T
NB una rete logica egrave in grado di effettuare delle divisioni di frequenza e mai delle moltiplicazioni di frequenza (che si possono ottenere solo con circuiti analogici non lineari)
49
Di che circuito si tratta
D0k Q0k
CK D0 Q0
CKQ0
D0k Q0k
CK D1 Q1
CK
D0k Q0k
CK D2 Q2
CKClock
Clock
Q0
Q1
Q2
Ersquo un contatore binario ma non sincrono Infatti i vari FF NON utilizzano lo stesso clock e questo porta a un piccolo disallineamento sulle uscite Non egrave sintetizzabile come una rete sincrona e una sintesi formale sarebbe possibile solo trattando il circuito come asincrono ovvero ldquoaprendordquo i FF Sarebbe possibile trasformarlo in un contatore x6 mantenendo la stessa impostazione
Sintetizzare e simulare con Altera
NB il segnale di clock non egrave in comune
50
7493
51
Altera Contatore asincrono
Contatore asincrono
52
Simulazione timing
53
Come puograve essere utilizzato un FFD per catturare un impulso piugrave breve di un periodo
D2 Q2
Q2CKFFD Z
Clock
D1 Q1
Q1CKFFD
D0 Q00
Q0CKFFD
ldquo1rdquo CL
Lrsquoimpulso breve viene catturato dal FF 0 (purcheacute di larghezza sufficiente per la tecnologia del FF) - che quindi agisce come integratore ndash la cui uscita alimenta il monoimpulsore di tipo A Lrsquoattivazione del FF 1 resetta il FF 0 (supponendo che il segnale di CL sia ldquopositiverdquotruerdquo)
Ci puograve essere un problema se il CL agisce in modo asincrono
NB questo circuito e quello del lucido precedente evidenziano il fatto che nella realtagrave nessuna rete egrave solo sincrona ma bensigrave egrave pressocheacute sempre necessario utilizzare reti di natura diversa anche percheacute vi egrave sempre una interazione fra reti con clock diversi eo con segnali provenienti dal mondo esterno NON sincronizzati con il clock
Monoimpulsore di tipo A ldquorivistordquo
54
bull Uno shift register a sinistra (a destra) egrave un registro composto da FFD che ad ogni clock trasferisce il valore del FF a destra (a sinistra) di ciascun FF nel FF stesso Nel FF piugrave a destra (sinistra) viene immesso uno ldquo0rdquo Questi tipi di registri shift si chiamano ldquologicirdquo
Shift register (registri a traslazione o scorrimento)
D0kQ0k
CK DnQn
CK
D0kQ0k
CK Dn-1Qn-1
CK
D0kQ0k
CK Dn-2Qn-2
CK
D0kQ0k
CK D0Q0
CK
ldquo0rdquo
Shift register a sinistra
bull Anche per i registri a traslazione esistono diverse versioni con ingresso parallelo e uscita seriale con ingresso seriale e uscita parallela con reset con load etc etc
bull Si noti che uno shift register egrave anche un contatore Si immagini per esempio che dopo un reset siano inseriti degli uni a partire da destra Lo shift register si riempie progressivamente di uni e quindi la posizione in cui egrave arrivato lrsquouno indica il valore del conteggio in base a un codice ldquouno su nrdquo (un codice decodificato)
bull Spesso uno stesso registro puograve traslare a destra o a sinistra in funzione di una segnale di controllo Ovviamente questo si ottiene premettendo a ogni ingresso Di un MUX a due vie che preleva in funzione del segnale di controllo Qigrave+1 o Qigrave-1 Con questa configurazione lo shift register diventa anche un contatore avantiindietro
Registro a scorrimento (shift-register) a 3 bit
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
IN
OUT2OUT1OUT0
CK
CK
IN
A_RESET
OUT1
OUT2
OUT0
Registro a scorrimento (shift-register) a 3 bit
57
Esempio 74164 (serial In parallel OUT)
bull In questo registro a traslazione ad ogni fronte positivo del clock i dati sono traslati a destra (Q0 -gt Q1 Q1-gtQ2 etc) Il registro egrave dotato in un Master Reset (vero negato) e il dato inserito nel FF Q0 egrave dato dallrsquoAND dei due ingressi Dsa e Dsb
bull Si noti che lrsquooperazione di shift corrisponde aritmeticamente alle operazioni di divisione e moltiplicazione per 2 Si supponga che in Q0 vi sia il bit meno significativo e in Q7 il meno significativo
0 1 1 0 1 0 1 0
010101102 = 10810
Shift left =gt x2
Shift right =gt 2
101011002 = 21610
001010112 = 5910
NB nel dispositivo i bit sono posti in ordine invertito e quindi un shift left del numero corrisponde a uno shift right sul dispositivo
58
bull Esistono anche i registri a traslazione ldquoaritmeticirdquo In questi shift register a destra anzicheacute fare entrare nel FF piugrave a sinistra lo ldquo0rdquo viene immesso sempre ripetutamente il suo valore logico
Shift aritmetico
Q7 Q6 Q5 Q4 Q3 Q2 Q1 Q0
D7 D6 D5 D4 D3 D2 D1 D0
I LDCK Esempio
11001010SRA
11100101 interpretato in complemento a 2
001101102=5410
C2 C2
000110112=2710
bull Lo shift aritmetico a destra effettua una divisione per 2 mantenendo il segno
59
Rotazione
Nei computer egrave sovente necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register
D0kQ0k
CK DnQn
CK
D0kQ0k
CK Dn-1Qn-1
CK
D0kQ0k
CK Dn-2Qn-2
CK
D0kQ0k
CK D0Q0
CK
Molto spesso nei computer egrave necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register con direzione programmabile In questo caso su D0 ad esempio puograve essere avviato o Q1 o Qn
60
Contatori con shift register ndash Contatore retroazionato EX-OR
Q2Q0
Shift right 3 bitDQ1
110 111 011 101 010 001
Diagramma degli stati disgiunto
Uno shift register con n FF retroazionato con un EX-OR (scelta degli ingressi variabile) egrave un contatore NON binario che conta per 2n-1 (purcheacute presettato a un valore diverso da tutti zeri)
000
100
61
Contatore di Johnson (riempimento e svuotamento)
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
000-gt100-gt110-gt111-gt011-gt001-gt000-gtStati isolati 101-gt010-gt101gt1
Poicheacute configurazioni adiacenti del codice Johnson differiscono di un solo bit il contatore puograve essere utilizzato per generare forme drsquoonda prive di alee
62
Contatore ad anello con un solo 1 (ovvero che genera direttamente il codice 1su n)
FFDD Q
QR
RESET
FFDD Q
QR
RESET
FFDD Q
QPR
RESET
OUT3OUT1OUT0
CK
FFDD Q
QR
RESET
OUT2
0001-gt1000-gt0100-gt0010-gt0010n FF per contare per n (mentre con i contatori binari il numero dei FF egrave il log2m ove m egrave il primo intero maggiore o uguale a n)
63
Barrel shifter (rotore)Un barrel shifter egrave uno shift register in grado di traslare di ldquonrdquo posizioni in un solo clock il contenuto dei suoi FF In figura egrave riportato il barrel shifter della Altera Gli ingressi A-H in presenza dellrsquoattivazione del segnale LDST al primo fronte positivo del clock sono depositati nei FF Quando LDST egrave 0 ad ogni fronte positivo del clock i bit di uscita sono ruotati di n posizioni in senso antiorario (ovvero lrsquouscita H diventa la G la G diventa la Fhellipe lrsquouscita A diventa la H) ove n egrave il valore binario indicato dai segnali S0 S1 e S2
Si noti che il circuito in questione egrave di fatto un registro con 8 FF allrsquoingresso di ciascuno dei quali egrave previsto un MUX a 8 vie che pilotato dai segnali S0 S1 e S2 che seleziona uno degli 8 uscite del dispositivo La struttura interna puograve essere osservata ldquoclikkandordquo due volte sul dispositivo nello schema di Altera
64
Barrel shifter
6565
66
Simulazione timing
67
bull Utilizzando il sistema Altera progettare un orologio con secondi minuti ora partendo da un oscillatore a quarzo con frequenza 500 KHz
bull E se si volesse proseguire e realizzare anche un datario (giorno mese e anno )
bull Come potrebbe essere integrato con una sveglia Si ricordi che lrsquoorologio deve essere anche essere ldquopresettatordquo
bull Quali circuiti utilizzare per la visualizzazione
68
EPROM
X0nZ0m
y0kY0k
Clock
D0kQ0k
FFD0k
CK D0kQ0k CK
Reti sincrone con EPROM
Al posto delle EPROM si utilizzano ora dei PLA ovvero dispositivi nei quali si nei quali le funzioni combinatorie sono ottimizzate ma il principio egrave assolutamente il medesimo
69
Progettare con Altera una rete logica sincrona che utilizzando registri 374 ALU 74181 un contatore e altri dispositivi ritenuti necessari permetta di eseguire in sequenza la somma di due dati di 4 bit senza segno ingresso esegua il complemento a 2 inverta la parte bassa con la parte alta del risultato e infine moltiplichi il tutto logicamente per 2
La soluzione egrave sempre decomponibile in tre sottosistemi il controllo con la sua decodifica (unitagrave di controllo) il percorso dei dati con le unitagrave che li trasformano (datapath) e i registri di deposito e di ingresso dei dati
Questa egrave la struttura base di qualunque unitagrave centrale di qualunque computer
La differenza consiste solo nel fatto che anzicheacute avere una sequenza fissa di operazioni ne viene generata una volta a volta che dipende appunto dalla istruzione che deve essere eseguita Come si vedragrave approfonditamente nel corso di Calcolatori T del II anno (prof Neri e Mattoccia)
Arrivederci al corso di Calcolatori T del II anno (sapendo perfettamente le reti logiche helliphellip)
25
D1 Q1
Q1CKFFD
D2 Q2
Q2CKFFD Z
D
Clock
Monoimpulsore A
1
0
1
1
0
A0 B1
C0
0
A
A
A
-
B
C
C
-
DQ2
Q1
B
0 1
C
-
Z0
0
1
-
A 00
--
00
00
10
--
11
11
DQ2
Q1
01
0 1
11
10
Z0
0
-
1
0000
10
11
01
B
C
-
A
Q1=D Q2= DQ1 Z=Q1Q2
00
00
01
01
10
10
11
11
DQ2
Q1
01
0 1
11
10
Z0
0
0
1
00
MAhellip
Q1=D Q2= Q1 Z=Q1Q2
Moore necessariamente
26
D1 Q1
Q1CKFFD
D2 Q2
Q2CKFFD Z2
D
Clock
Monoimpulsore B
Clock
D
Z2
Q1
Q2
Lrsquoingresso asincrono D agisce direttamente sullrsquouscita Z che quindi risulta asincrona
Qui la rete egrave di tipo Mealy e quindi con ingresso asincrono egrave possibile che vi sia uscita asincrona
27
D Q
QCKFFD Z
D
Clock
Monoimpulsore C
Clock
D
Z
Q
Anche qui lrsquoingresso asincrono D agisce direttamente sullrsquouscita Z che quindi risulta asincronaSi noti che se lrsquoingresso oscilla una volta che il FF ha campionato un 1 e fino a quando non campiona uno 0 lrsquouscita oscilla
Qui la rete egrave di tipo Mealy e quindi con ingresso asincrono egrave possibile che vi sia uscita asincrona
28
Considerazioni sui monoimpulsori A B e C
Il diagramma degli stati corrispondente al funzionamento reale dei due monoimpulsori B e C NON puograve essere tracciato percheacute di fatto le due reti (di tipo Mealy) NON sono sincrone Infatti il diagramma di circuiti sincroni prevede implicitamente un comportamento sincrono anche degli ingressi fatto non verificato nei casi B e C
La cosa non vale per il monoimpulsore A in quanto pur essendo lrsquoingresso asincrono lrsquouscita (rete di tipo Moore) dipende solo dagli stati In altre parole il comportamento della rete rende intrinsecamente sincroni ingressi fisicamente asincroni
Il diagramma degli stati che riflette il comportamento delle due reti B e C puograve essere tracciato solo partendo da una analisi asincrona ldquoaprendordquo quindi i FF D inseriti Ovviamente egrave possibile progettare le due reti senza lrsquouso dei FF D partendo da un diagramma degli stati asincrono ldquotradizionalerdquo
A scopo di esercizio si suggerisce la sintesi e la simulazione con Altera dei tre monoimpulsori come reti asincrone Si tratta di circuiti on due ingressi Ck e D
29
Monoimpulsori A-B-C
30
31
Contatori
A B C D Z
Circuiti senza ingresso (a parte il clock) nella versione piugrave semplice
D0 Q0
Q0CKFFD
MUX
1
0D1 Q1
Q1CKFFD
(Il clock egrave spesso sottinteso nei circuiti sincroni)
U0 U1
Esempio contatore binario x 4 con decodifica del 3
000 010 100 111
OUT
Q1 cambia stato quando Q0 egrave a 1 e passa a 0
CK
u1
u0
OUT (0) (1) (2) (0) (1) (2)(3) (3)
Contatore x 4 con decodifica del 3
33
Contatori binari in base non potenza di 2
A B C D E
000 001 010 011 100Contatore
binario per 5
D0 Q0
Q0CKFFD
MUX
1
0 1D1 Q1
Q1CKFFD
MUX
1
0D Q2
Q2CKFFD
Questo conta x8 ma per contare x5 arrivati a 4 bisogna ritornare a 0
34
D0 Q0
Q0CKFFD D1 Q1
Q1CKFFD
MUX
1
0 D2 Q2
Q2CKFFD
MUX
1
0
ABC
ldquo4rdquo
Contatore x 5
Decoder
La decodifica del 4 porta a zero lrsquouscita del decodificatore e quindi a 0 tutte le uscite degli AND rosa e al successivo fronte positivo del clock i tre FF campionano uno ldquo0rdquo
Per esercizio sintetizzare un contatore x 100 partendo dalla sintesi di un contatore decimale ovvero di un contatore x10 (da sintetizzare) Quanti FF per un contatore decimale I contatori decimali si trovano integrati in Altera
ldquo3rdquo
35
Contatori con ingressi di controllo
Ex Contatore integrato x 16 con Load e Enable
bull Il contatore conta per 16 (0-15) se il segnale EN egrave a 1 Allorchegrave il segnale LD va a 1 il dato presente sugli ingressi D egrave inserito nei 4 FF (lrsquoingresso puograve essere sincrono o asincrono) Nel caso precedente il decodificatore del ldquo3rdquo (uscita vera va portato) allrsquoingresso LD con tutti i Di a zero
bull In generale il contatore fornisce anche unrsquouscita ldquocarryrdquo che va a 1 quando il contatore raggiunge il valore FF Questa uscita puograve essere connessa allrsquoenable di un contatore a valle per ottenere un contatore per 256 cosigrave via (Progettarlo come esercizio)
EN
Q0 Q1 Q2 Q3CKLD
D0 D1 D2 D3
EN
Q0 Q1 Q2 Q3CK
CYLD
D0 D1 D2 D3
bull Esistono contatori UPDOWN nei quali un ingresso (UD) seleziona se il conteggio deve avvenire avanti o indietro Nel caso sia selezionata la modalitagrave ldquoindietrordquo il carry si attiva quando si raggiunge il valore ldquotutti zerirdquo
bull Esiste una molteplicitagrave di contatori ciascuno con le proprie specifiche peculiaritagrave con o senza RESET (che normalmente agisce in modo asincrono) UD con o senza LD etc etc
NB qualunque circuito sincrono (con sequenza non binaria) riconducibile al diagramma degli stati di un contatore egrave sempre un contatore
101 010 000 111 110 Contatore x 5 non binario
36
74163 contatore reale x 16 con Load Reset e Enable (T e P)I segnali di controllo sono sincroni ovvero agiscono sul fronte positivo del clock (rising edge)
74138 decoder 38 con uscite negate se G2A e G2B entrambi a zero e G1 a 1 Altrimenti tutte uscite alte
Direttorio Counter Glitch
Contatore binario x 8 e glitches
37
Glitch
Simulazione timingNB la presenza e la durata del glitch dipende dalle caratteristiche elettriche dei dispositivi
dalla loro tecnologia etc Nel caso dei dispositivi Altera dipende dal tipo di dispositivo sul quale egrave realizzato il circuito Analogamente la sensibilitagrave di eventuali ingressi di clock collegati allrsquouscita con il glitch dipende dalle caratteristiche del dispositivo Se ad esempio nel dispositivo Altera utilizzato si collega allrsquouscita Y6 il clock di un FFD non si ha commutazione del FF ma questo non egrave vero in assoluto
38
Cosa succede al contatore X5 progettato precedentemente se allrsquoaccensione non disponendo di un segnale di RESET i FF si portano in uno stato non facente parte del cicloNB La condizione allrsquoaccensione egrave del tutto casuale e dipende unicamente dalle condizioni elettriche
di realizzazione Ersquo impredicibileSupponiamo che i FF si portino al valore 110 (il numero 6 fuori dal ciclo) Analizziamo il comportamento
D0 Q0Q0CK
FFD D1 Q1Q1CK
FFD
MUX
1
0 D2 Q2Q2CK
FFD
MUX
1
0
ABC
ldquo4rdquo
000 001 010 011 100 110 111
In questo caso ci si riporta nella situazione di conteggio regolare (verificare con la tabella degli stati ) ma il comportamento in generale dipende dalla realizzazione e in altre realizzazione i due stati potrebbero essere separati dal ciclo principale che quindi non verrebbe mai raggiunto Ecco la funzione del RESET
39
Solo come esempio (da non utilizzare ) a scopo didattico vediamo la tabella delle transizioni di un contatore per 6 UpDown con comando di Reset I segnali di ingresso cambiano in modo asincrono ma hanno effetto in modo sincrono
Per compensare allrsquoaccensione
Sintetizzare e simulareCome dovrebbe essere modificato lo schema in Altera per permettere di
ldquopresettarerdquo in modo asincrono il contatore a un particolare valore di ingresso
00 01 11 10UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
111
110
000 101
000
101
y3 y2 y100 01 11 10
UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
000 000111
000 000 000 000110
000 101
000
000 000
101
y3 y2 y1
40
D0Q0
CKFFD
Clocky2
DEC
y3
y2
y1
ldquo1rdquo
ldquo2rdquo
ldquo3rdquo
ldquo4rdquo
1
0
UPDown
Sintesi di y2 in modo ldquodirettordquo
1
0
00 01 11 10UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
000 000111
000 000 000 000110
000 101
000
000 000
101
y3 y2 y1
41
Cassaforte hellipDisponendo di un contatore per 8 (ma anche per 16 etc) con reset sincrono e sempre abilitato al conteggio come potrei realizzare il circuito di apertura della cassaforte (sequenza X1X2 00-01-01-10) con modello Moore
Cx8RES
Q0 Q1 Q2 CK
RES= (ldquo0rdquoX1X2 + ldquo1rdquo X1X2 + ldquo2rdquo X1X2 + ldquo3rdquo X1 X2)Z = ldquo4rdquo (ldquo0rdquordquo1rdquordquo2rdquordquo3rdquordquo4rdquo sono le decodifiche binarie delle tre uscite del contatore)
Il contatore si resetta ogni volta che non si presenta lrsquoingresso giusto relativo al particolare stato Ilcontatore quindi si resetta e rimane resettato se non nelle condizioni espresse dalla funzione RESIl contatore arrivato a 4 (Z=1) si resetta comunque al successivo fronte del clock
Le reti sincrone si progettano sempre come combinazione di blocchi disponibili e logica ldquorandomrdquo
ABC
ldquo0rdquoldquo1rdquoldquo2rdquoldquo3rdquoldquo4rdquo
RLAND-OR
X1X2
RESZ
Cx8RES
Q0 Q1 Q2 CK
42
Contatori
EN
Q0 Q1 Q2 Q3CKCY
RESET
bull Attenzione Consideriamo il contatore di figura (questa volta con RESET asincrono) e supponiamo di utilizzarlo per contare per 5 (NB per il Reset si usa il ldquo5rdquo in questo casohellip glitch)
ABCD
ldquo5rdquo
ldquo1rdquo Percheacute questo schema egrave sbagliato
bull Percheacute presenta una corsa critica Nel momento in cui anche uno solo dei FF si resetta (e non tutti nello stesso istante) viene a mancare la configurazione ldquo4rdquo sul decoder e quindi alcuni FF potrebbero non fare in tempo a resettarsi E allora
EN
Q0 Q1 Q2 Q3CKCY
RESET
ABCD
ldquo5rdquo
ldquo1rdquo
RS
Y ldquo0rdquo
bull Cosigrave facendo il ldquo4rdquo attiva il SET e il FF NON si resetta fino a quando non egrave stato raggiunto la ldquo0rdquo NB lo schema ldquosbagliatordquo si puograve usare solo se si egrave certi della rapiditagrave di reset dei FF del contatore
bull Verificare con Altera
Sintesi cassaforte con moduli
Altera Cassaforte sincrona con moduli
Rete di controllo
Contatore con Reset asincrono e Load sincrono
43
NB In questo progetto la sintesi egrave stata condotta in modo ldquodirettordquo ovvero senza passare per la sintesi formale e utilizzando componenti disponibili e helliphellip materia grigia La sintesi dei circuiti sincroni si fa sempre e unicamente cosigrave
44
Simulazione funzionale (no timing)
NB I segnali di ingresso sono campionati SOLO sul fronte positivo del clock anche se si presentano asincroni Il segnale di uscita si attiva al clock successivo al riconoscimento della sequenza La posizione di ldquoriposordquo del contatore egrave il valore 4 I segnali Yi sono le decodifiche dei segnali di di ingresso X1 e X2
00 01 01 10
45
Simulazione timing
46
NB Si egrave scelto di utilizzare SOLO gli ingressi SINCRONI del contatore per semplicitagrave Il contatore rimane al valore 100 fino a quando non si presenta allrsquoingresso il valore 00 Se la sequenza egrave esatta il contatore continua a contare in avanti fino alla generazione dellrsquouscita (valore 11 del contatore) altrimenti si riporta al valore 100 ovvero Qc=1) Il segnale GN (Gate Not) egrave quello che abilita il conteggio Il sistema riamane stabile a 000 per una sequenza lunga a piacere di X1=0 e X2=0 e si sposta quando dopo 00 si ha 01 Come si evince dalla simulazione se la sequenza non egrave corretta o egrave interrotta il contatore si riporta sempre a 100
00 01 11 10
001 000 000
X1
000000 010 100 100001
000 100 100 011010
100 100 100 100011
000 100 100 100100
000 100 100 100101
000 100 100 100110
000 100 100 100111
0
0
0
1
0
0
0
0
X2
000
NB la tabella delle transizioni derivata della rete realizzata NON ha ovviamente condizioni di indifferenza
47
Progettare un contatore packed BCD updown a 8 bit (due digit)
48
Generazione di forme drsquoondabull Ersquo possibile generare forme drsquoonda periodiche mediante circuiti sincroni di periodo
sottomultiplo intero del clock
Esempio 1Divisore di frequenza per 2
D0k Q0k
CK D Q
CK Clock
Q
Esempio 2 generare una forma drsquoonda periodica con periodo 5T (ove T sia il periodo del clock) in cui in un semiperiodo 3T lrsquouscita sia alta e nellrsquoaltro semiperiodo 2T lrsquouscita sia bassa
Q0 Q1 Q2 CK
Cx5
C
B
A
01234
DecoderDemux
Clock
ZZ T
3T2T
3T
NB una rete logica egrave in grado di effettuare delle divisioni di frequenza e mai delle moltiplicazioni di frequenza (che si possono ottenere solo con circuiti analogici non lineari)
49
Di che circuito si tratta
D0k Q0k
CK D0 Q0
CKQ0
D0k Q0k
CK D1 Q1
CK
D0k Q0k
CK D2 Q2
CKClock
Clock
Q0
Q1
Q2
Ersquo un contatore binario ma non sincrono Infatti i vari FF NON utilizzano lo stesso clock e questo porta a un piccolo disallineamento sulle uscite Non egrave sintetizzabile come una rete sincrona e una sintesi formale sarebbe possibile solo trattando il circuito come asincrono ovvero ldquoaprendordquo i FF Sarebbe possibile trasformarlo in un contatore x6 mantenendo la stessa impostazione
Sintetizzare e simulare con Altera
NB il segnale di clock non egrave in comune
50
7493
51
Altera Contatore asincrono
Contatore asincrono
52
Simulazione timing
53
Come puograve essere utilizzato un FFD per catturare un impulso piugrave breve di un periodo
D2 Q2
Q2CKFFD Z
Clock
D1 Q1
Q1CKFFD
D0 Q00
Q0CKFFD
ldquo1rdquo CL
Lrsquoimpulso breve viene catturato dal FF 0 (purcheacute di larghezza sufficiente per la tecnologia del FF) - che quindi agisce come integratore ndash la cui uscita alimenta il monoimpulsore di tipo A Lrsquoattivazione del FF 1 resetta il FF 0 (supponendo che il segnale di CL sia ldquopositiverdquotruerdquo)
Ci puograve essere un problema se il CL agisce in modo asincrono
NB questo circuito e quello del lucido precedente evidenziano il fatto che nella realtagrave nessuna rete egrave solo sincrona ma bensigrave egrave pressocheacute sempre necessario utilizzare reti di natura diversa anche percheacute vi egrave sempre una interazione fra reti con clock diversi eo con segnali provenienti dal mondo esterno NON sincronizzati con il clock
Monoimpulsore di tipo A ldquorivistordquo
54
bull Uno shift register a sinistra (a destra) egrave un registro composto da FFD che ad ogni clock trasferisce il valore del FF a destra (a sinistra) di ciascun FF nel FF stesso Nel FF piugrave a destra (sinistra) viene immesso uno ldquo0rdquo Questi tipi di registri shift si chiamano ldquologicirdquo
Shift register (registri a traslazione o scorrimento)
D0kQ0k
CK DnQn
CK
D0kQ0k
CK Dn-1Qn-1
CK
D0kQ0k
CK Dn-2Qn-2
CK
D0kQ0k
CK D0Q0
CK
ldquo0rdquo
Shift register a sinistra
bull Anche per i registri a traslazione esistono diverse versioni con ingresso parallelo e uscita seriale con ingresso seriale e uscita parallela con reset con load etc etc
bull Si noti che uno shift register egrave anche un contatore Si immagini per esempio che dopo un reset siano inseriti degli uni a partire da destra Lo shift register si riempie progressivamente di uni e quindi la posizione in cui egrave arrivato lrsquouno indica il valore del conteggio in base a un codice ldquouno su nrdquo (un codice decodificato)
bull Spesso uno stesso registro puograve traslare a destra o a sinistra in funzione di una segnale di controllo Ovviamente questo si ottiene premettendo a ogni ingresso Di un MUX a due vie che preleva in funzione del segnale di controllo Qigrave+1 o Qigrave-1 Con questa configurazione lo shift register diventa anche un contatore avantiindietro
Registro a scorrimento (shift-register) a 3 bit
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
IN
OUT2OUT1OUT0
CK
CK
IN
A_RESET
OUT1
OUT2
OUT0
Registro a scorrimento (shift-register) a 3 bit
57
Esempio 74164 (serial In parallel OUT)
bull In questo registro a traslazione ad ogni fronte positivo del clock i dati sono traslati a destra (Q0 -gt Q1 Q1-gtQ2 etc) Il registro egrave dotato in un Master Reset (vero negato) e il dato inserito nel FF Q0 egrave dato dallrsquoAND dei due ingressi Dsa e Dsb
bull Si noti che lrsquooperazione di shift corrisponde aritmeticamente alle operazioni di divisione e moltiplicazione per 2 Si supponga che in Q0 vi sia il bit meno significativo e in Q7 il meno significativo
0 1 1 0 1 0 1 0
010101102 = 10810
Shift left =gt x2
Shift right =gt 2
101011002 = 21610
001010112 = 5910
NB nel dispositivo i bit sono posti in ordine invertito e quindi un shift left del numero corrisponde a uno shift right sul dispositivo
58
bull Esistono anche i registri a traslazione ldquoaritmeticirdquo In questi shift register a destra anzicheacute fare entrare nel FF piugrave a sinistra lo ldquo0rdquo viene immesso sempre ripetutamente il suo valore logico
Shift aritmetico
Q7 Q6 Q5 Q4 Q3 Q2 Q1 Q0
D7 D6 D5 D4 D3 D2 D1 D0
I LDCK Esempio
11001010SRA
11100101 interpretato in complemento a 2
001101102=5410
C2 C2
000110112=2710
bull Lo shift aritmetico a destra effettua una divisione per 2 mantenendo il segno
59
Rotazione
Nei computer egrave sovente necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register
D0kQ0k
CK DnQn
CK
D0kQ0k
CK Dn-1Qn-1
CK
D0kQ0k
CK Dn-2Qn-2
CK
D0kQ0k
CK D0Q0
CK
Molto spesso nei computer egrave necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register con direzione programmabile In questo caso su D0 ad esempio puograve essere avviato o Q1 o Qn
60
Contatori con shift register ndash Contatore retroazionato EX-OR
Q2Q0
Shift right 3 bitDQ1
110 111 011 101 010 001
Diagramma degli stati disgiunto
Uno shift register con n FF retroazionato con un EX-OR (scelta degli ingressi variabile) egrave un contatore NON binario che conta per 2n-1 (purcheacute presettato a un valore diverso da tutti zeri)
000
100
61
Contatore di Johnson (riempimento e svuotamento)
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
000-gt100-gt110-gt111-gt011-gt001-gt000-gtStati isolati 101-gt010-gt101gt1
Poicheacute configurazioni adiacenti del codice Johnson differiscono di un solo bit il contatore puograve essere utilizzato per generare forme drsquoonda prive di alee
62
Contatore ad anello con un solo 1 (ovvero che genera direttamente il codice 1su n)
FFDD Q
QR
RESET
FFDD Q
QR
RESET
FFDD Q
QPR
RESET
OUT3OUT1OUT0
CK
FFDD Q
QR
RESET
OUT2
0001-gt1000-gt0100-gt0010-gt0010n FF per contare per n (mentre con i contatori binari il numero dei FF egrave il log2m ove m egrave il primo intero maggiore o uguale a n)
63
Barrel shifter (rotore)Un barrel shifter egrave uno shift register in grado di traslare di ldquonrdquo posizioni in un solo clock il contenuto dei suoi FF In figura egrave riportato il barrel shifter della Altera Gli ingressi A-H in presenza dellrsquoattivazione del segnale LDST al primo fronte positivo del clock sono depositati nei FF Quando LDST egrave 0 ad ogni fronte positivo del clock i bit di uscita sono ruotati di n posizioni in senso antiorario (ovvero lrsquouscita H diventa la G la G diventa la Fhellipe lrsquouscita A diventa la H) ove n egrave il valore binario indicato dai segnali S0 S1 e S2
Si noti che il circuito in questione egrave di fatto un registro con 8 FF allrsquoingresso di ciascuno dei quali egrave previsto un MUX a 8 vie che pilotato dai segnali S0 S1 e S2 che seleziona uno degli 8 uscite del dispositivo La struttura interna puograve essere osservata ldquoclikkandordquo due volte sul dispositivo nello schema di Altera
64
Barrel shifter
6565
66
Simulazione timing
67
bull Utilizzando il sistema Altera progettare un orologio con secondi minuti ora partendo da un oscillatore a quarzo con frequenza 500 KHz
bull E se si volesse proseguire e realizzare anche un datario (giorno mese e anno )
bull Come potrebbe essere integrato con una sveglia Si ricordi che lrsquoorologio deve essere anche essere ldquopresettatordquo
bull Quali circuiti utilizzare per la visualizzazione
68
EPROM
X0nZ0m
y0kY0k
Clock
D0kQ0k
FFD0k
CK D0kQ0k CK
Reti sincrone con EPROM
Al posto delle EPROM si utilizzano ora dei PLA ovvero dispositivi nei quali si nei quali le funzioni combinatorie sono ottimizzate ma il principio egrave assolutamente il medesimo
69
Progettare con Altera una rete logica sincrona che utilizzando registri 374 ALU 74181 un contatore e altri dispositivi ritenuti necessari permetta di eseguire in sequenza la somma di due dati di 4 bit senza segno ingresso esegua il complemento a 2 inverta la parte bassa con la parte alta del risultato e infine moltiplichi il tutto logicamente per 2
La soluzione egrave sempre decomponibile in tre sottosistemi il controllo con la sua decodifica (unitagrave di controllo) il percorso dei dati con le unitagrave che li trasformano (datapath) e i registri di deposito e di ingresso dei dati
Questa egrave la struttura base di qualunque unitagrave centrale di qualunque computer
La differenza consiste solo nel fatto che anzicheacute avere una sequenza fissa di operazioni ne viene generata una volta a volta che dipende appunto dalla istruzione che deve essere eseguita Come si vedragrave approfonditamente nel corso di Calcolatori T del II anno (prof Neri e Mattoccia)
Arrivederci al corso di Calcolatori T del II anno (sapendo perfettamente le reti logiche helliphellip)
26
D1 Q1
Q1CKFFD
D2 Q2
Q2CKFFD Z2
D
Clock
Monoimpulsore B
Clock
D
Z2
Q1
Q2
Lrsquoingresso asincrono D agisce direttamente sullrsquouscita Z che quindi risulta asincrona
Qui la rete egrave di tipo Mealy e quindi con ingresso asincrono egrave possibile che vi sia uscita asincrona
27
D Q
QCKFFD Z
D
Clock
Monoimpulsore C
Clock
D
Z
Q
Anche qui lrsquoingresso asincrono D agisce direttamente sullrsquouscita Z che quindi risulta asincronaSi noti che se lrsquoingresso oscilla una volta che il FF ha campionato un 1 e fino a quando non campiona uno 0 lrsquouscita oscilla
Qui la rete egrave di tipo Mealy e quindi con ingresso asincrono egrave possibile che vi sia uscita asincrona
28
Considerazioni sui monoimpulsori A B e C
Il diagramma degli stati corrispondente al funzionamento reale dei due monoimpulsori B e C NON puograve essere tracciato percheacute di fatto le due reti (di tipo Mealy) NON sono sincrone Infatti il diagramma di circuiti sincroni prevede implicitamente un comportamento sincrono anche degli ingressi fatto non verificato nei casi B e C
La cosa non vale per il monoimpulsore A in quanto pur essendo lrsquoingresso asincrono lrsquouscita (rete di tipo Moore) dipende solo dagli stati In altre parole il comportamento della rete rende intrinsecamente sincroni ingressi fisicamente asincroni
Il diagramma degli stati che riflette il comportamento delle due reti B e C puograve essere tracciato solo partendo da una analisi asincrona ldquoaprendordquo quindi i FF D inseriti Ovviamente egrave possibile progettare le due reti senza lrsquouso dei FF D partendo da un diagramma degli stati asincrono ldquotradizionalerdquo
A scopo di esercizio si suggerisce la sintesi e la simulazione con Altera dei tre monoimpulsori come reti asincrone Si tratta di circuiti on due ingressi Ck e D
29
Monoimpulsori A-B-C
30
31
Contatori
A B C D Z
Circuiti senza ingresso (a parte il clock) nella versione piugrave semplice
D0 Q0
Q0CKFFD
MUX
1
0D1 Q1
Q1CKFFD
(Il clock egrave spesso sottinteso nei circuiti sincroni)
U0 U1
Esempio contatore binario x 4 con decodifica del 3
000 010 100 111
OUT
Q1 cambia stato quando Q0 egrave a 1 e passa a 0
CK
u1
u0
OUT (0) (1) (2) (0) (1) (2)(3) (3)
Contatore x 4 con decodifica del 3
33
Contatori binari in base non potenza di 2
A B C D E
000 001 010 011 100Contatore
binario per 5
D0 Q0
Q0CKFFD
MUX
1
0 1D1 Q1
Q1CKFFD
MUX
1
0D Q2
Q2CKFFD
Questo conta x8 ma per contare x5 arrivati a 4 bisogna ritornare a 0
34
D0 Q0
Q0CKFFD D1 Q1
Q1CKFFD
MUX
1
0 D2 Q2
Q2CKFFD
MUX
1
0
ABC
ldquo4rdquo
Contatore x 5
Decoder
La decodifica del 4 porta a zero lrsquouscita del decodificatore e quindi a 0 tutte le uscite degli AND rosa e al successivo fronte positivo del clock i tre FF campionano uno ldquo0rdquo
Per esercizio sintetizzare un contatore x 100 partendo dalla sintesi di un contatore decimale ovvero di un contatore x10 (da sintetizzare) Quanti FF per un contatore decimale I contatori decimali si trovano integrati in Altera
ldquo3rdquo
35
Contatori con ingressi di controllo
Ex Contatore integrato x 16 con Load e Enable
bull Il contatore conta per 16 (0-15) se il segnale EN egrave a 1 Allorchegrave il segnale LD va a 1 il dato presente sugli ingressi D egrave inserito nei 4 FF (lrsquoingresso puograve essere sincrono o asincrono) Nel caso precedente il decodificatore del ldquo3rdquo (uscita vera va portato) allrsquoingresso LD con tutti i Di a zero
bull In generale il contatore fornisce anche unrsquouscita ldquocarryrdquo che va a 1 quando il contatore raggiunge il valore FF Questa uscita puograve essere connessa allrsquoenable di un contatore a valle per ottenere un contatore per 256 cosigrave via (Progettarlo come esercizio)
EN
Q0 Q1 Q2 Q3CKLD
D0 D1 D2 D3
EN
Q0 Q1 Q2 Q3CK
CYLD
D0 D1 D2 D3
bull Esistono contatori UPDOWN nei quali un ingresso (UD) seleziona se il conteggio deve avvenire avanti o indietro Nel caso sia selezionata la modalitagrave ldquoindietrordquo il carry si attiva quando si raggiunge il valore ldquotutti zerirdquo
bull Esiste una molteplicitagrave di contatori ciascuno con le proprie specifiche peculiaritagrave con o senza RESET (che normalmente agisce in modo asincrono) UD con o senza LD etc etc
NB qualunque circuito sincrono (con sequenza non binaria) riconducibile al diagramma degli stati di un contatore egrave sempre un contatore
101 010 000 111 110 Contatore x 5 non binario
36
74163 contatore reale x 16 con Load Reset e Enable (T e P)I segnali di controllo sono sincroni ovvero agiscono sul fronte positivo del clock (rising edge)
74138 decoder 38 con uscite negate se G2A e G2B entrambi a zero e G1 a 1 Altrimenti tutte uscite alte
Direttorio Counter Glitch
Contatore binario x 8 e glitches
37
Glitch
Simulazione timingNB la presenza e la durata del glitch dipende dalle caratteristiche elettriche dei dispositivi
dalla loro tecnologia etc Nel caso dei dispositivi Altera dipende dal tipo di dispositivo sul quale egrave realizzato il circuito Analogamente la sensibilitagrave di eventuali ingressi di clock collegati allrsquouscita con il glitch dipende dalle caratteristiche del dispositivo Se ad esempio nel dispositivo Altera utilizzato si collega allrsquouscita Y6 il clock di un FFD non si ha commutazione del FF ma questo non egrave vero in assoluto
38
Cosa succede al contatore X5 progettato precedentemente se allrsquoaccensione non disponendo di un segnale di RESET i FF si portano in uno stato non facente parte del cicloNB La condizione allrsquoaccensione egrave del tutto casuale e dipende unicamente dalle condizioni elettriche
di realizzazione Ersquo impredicibileSupponiamo che i FF si portino al valore 110 (il numero 6 fuori dal ciclo) Analizziamo il comportamento
D0 Q0Q0CK
FFD D1 Q1Q1CK
FFD
MUX
1
0 D2 Q2Q2CK
FFD
MUX
1
0
ABC
ldquo4rdquo
000 001 010 011 100 110 111
In questo caso ci si riporta nella situazione di conteggio regolare (verificare con la tabella degli stati ) ma il comportamento in generale dipende dalla realizzazione e in altre realizzazione i due stati potrebbero essere separati dal ciclo principale che quindi non verrebbe mai raggiunto Ecco la funzione del RESET
39
Solo come esempio (da non utilizzare ) a scopo didattico vediamo la tabella delle transizioni di un contatore per 6 UpDown con comando di Reset I segnali di ingresso cambiano in modo asincrono ma hanno effetto in modo sincrono
Per compensare allrsquoaccensione
Sintetizzare e simulareCome dovrebbe essere modificato lo schema in Altera per permettere di
ldquopresettarerdquo in modo asincrono il contatore a un particolare valore di ingresso
00 01 11 10UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
111
110
000 101
000
101
y3 y2 y100 01 11 10
UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
000 000111
000 000 000 000110
000 101
000
000 000
101
y3 y2 y1
40
D0Q0
CKFFD
Clocky2
DEC
y3
y2
y1
ldquo1rdquo
ldquo2rdquo
ldquo3rdquo
ldquo4rdquo
1
0
UPDown
Sintesi di y2 in modo ldquodirettordquo
1
0
00 01 11 10UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
000 000111
000 000 000 000110
000 101
000
000 000
101
y3 y2 y1
41
Cassaforte hellipDisponendo di un contatore per 8 (ma anche per 16 etc) con reset sincrono e sempre abilitato al conteggio come potrei realizzare il circuito di apertura della cassaforte (sequenza X1X2 00-01-01-10) con modello Moore
Cx8RES
Q0 Q1 Q2 CK
RES= (ldquo0rdquoX1X2 + ldquo1rdquo X1X2 + ldquo2rdquo X1X2 + ldquo3rdquo X1 X2)Z = ldquo4rdquo (ldquo0rdquordquo1rdquordquo2rdquordquo3rdquordquo4rdquo sono le decodifiche binarie delle tre uscite del contatore)
Il contatore si resetta ogni volta che non si presenta lrsquoingresso giusto relativo al particolare stato Ilcontatore quindi si resetta e rimane resettato se non nelle condizioni espresse dalla funzione RESIl contatore arrivato a 4 (Z=1) si resetta comunque al successivo fronte del clock
Le reti sincrone si progettano sempre come combinazione di blocchi disponibili e logica ldquorandomrdquo
ABC
ldquo0rdquoldquo1rdquoldquo2rdquoldquo3rdquoldquo4rdquo
RLAND-OR
X1X2
RESZ
Cx8RES
Q0 Q1 Q2 CK
42
Contatori
EN
Q0 Q1 Q2 Q3CKCY
RESET
bull Attenzione Consideriamo il contatore di figura (questa volta con RESET asincrono) e supponiamo di utilizzarlo per contare per 5 (NB per il Reset si usa il ldquo5rdquo in questo casohellip glitch)
ABCD
ldquo5rdquo
ldquo1rdquo Percheacute questo schema egrave sbagliato
bull Percheacute presenta una corsa critica Nel momento in cui anche uno solo dei FF si resetta (e non tutti nello stesso istante) viene a mancare la configurazione ldquo4rdquo sul decoder e quindi alcuni FF potrebbero non fare in tempo a resettarsi E allora
EN
Q0 Q1 Q2 Q3CKCY
RESET
ABCD
ldquo5rdquo
ldquo1rdquo
RS
Y ldquo0rdquo
bull Cosigrave facendo il ldquo4rdquo attiva il SET e il FF NON si resetta fino a quando non egrave stato raggiunto la ldquo0rdquo NB lo schema ldquosbagliatordquo si puograve usare solo se si egrave certi della rapiditagrave di reset dei FF del contatore
bull Verificare con Altera
Sintesi cassaforte con moduli
Altera Cassaforte sincrona con moduli
Rete di controllo
Contatore con Reset asincrono e Load sincrono
43
NB In questo progetto la sintesi egrave stata condotta in modo ldquodirettordquo ovvero senza passare per la sintesi formale e utilizzando componenti disponibili e helliphellip materia grigia La sintesi dei circuiti sincroni si fa sempre e unicamente cosigrave
44
Simulazione funzionale (no timing)
NB I segnali di ingresso sono campionati SOLO sul fronte positivo del clock anche se si presentano asincroni Il segnale di uscita si attiva al clock successivo al riconoscimento della sequenza La posizione di ldquoriposordquo del contatore egrave il valore 4 I segnali Yi sono le decodifiche dei segnali di di ingresso X1 e X2
00 01 01 10
45
Simulazione timing
46
NB Si egrave scelto di utilizzare SOLO gli ingressi SINCRONI del contatore per semplicitagrave Il contatore rimane al valore 100 fino a quando non si presenta allrsquoingresso il valore 00 Se la sequenza egrave esatta il contatore continua a contare in avanti fino alla generazione dellrsquouscita (valore 11 del contatore) altrimenti si riporta al valore 100 ovvero Qc=1) Il segnale GN (Gate Not) egrave quello che abilita il conteggio Il sistema riamane stabile a 000 per una sequenza lunga a piacere di X1=0 e X2=0 e si sposta quando dopo 00 si ha 01 Come si evince dalla simulazione se la sequenza non egrave corretta o egrave interrotta il contatore si riporta sempre a 100
00 01 11 10
001 000 000
X1
000000 010 100 100001
000 100 100 011010
100 100 100 100011
000 100 100 100100
000 100 100 100101
000 100 100 100110
000 100 100 100111
0
0
0
1
0
0
0
0
X2
000
NB la tabella delle transizioni derivata della rete realizzata NON ha ovviamente condizioni di indifferenza
47
Progettare un contatore packed BCD updown a 8 bit (due digit)
48
Generazione di forme drsquoondabull Ersquo possibile generare forme drsquoonda periodiche mediante circuiti sincroni di periodo
sottomultiplo intero del clock
Esempio 1Divisore di frequenza per 2
D0k Q0k
CK D Q
CK Clock
Q
Esempio 2 generare una forma drsquoonda periodica con periodo 5T (ove T sia il periodo del clock) in cui in un semiperiodo 3T lrsquouscita sia alta e nellrsquoaltro semiperiodo 2T lrsquouscita sia bassa
Q0 Q1 Q2 CK
Cx5
C
B
A
01234
DecoderDemux
Clock
ZZ T
3T2T
3T
NB una rete logica egrave in grado di effettuare delle divisioni di frequenza e mai delle moltiplicazioni di frequenza (che si possono ottenere solo con circuiti analogici non lineari)
49
Di che circuito si tratta
D0k Q0k
CK D0 Q0
CKQ0
D0k Q0k
CK D1 Q1
CK
D0k Q0k
CK D2 Q2
CKClock
Clock
Q0
Q1
Q2
Ersquo un contatore binario ma non sincrono Infatti i vari FF NON utilizzano lo stesso clock e questo porta a un piccolo disallineamento sulle uscite Non egrave sintetizzabile come una rete sincrona e una sintesi formale sarebbe possibile solo trattando il circuito come asincrono ovvero ldquoaprendordquo i FF Sarebbe possibile trasformarlo in un contatore x6 mantenendo la stessa impostazione
Sintetizzare e simulare con Altera
NB il segnale di clock non egrave in comune
50
7493
51
Altera Contatore asincrono
Contatore asincrono
52
Simulazione timing
53
Come puograve essere utilizzato un FFD per catturare un impulso piugrave breve di un periodo
D2 Q2
Q2CKFFD Z
Clock
D1 Q1
Q1CKFFD
D0 Q00
Q0CKFFD
ldquo1rdquo CL
Lrsquoimpulso breve viene catturato dal FF 0 (purcheacute di larghezza sufficiente per la tecnologia del FF) - che quindi agisce come integratore ndash la cui uscita alimenta il monoimpulsore di tipo A Lrsquoattivazione del FF 1 resetta il FF 0 (supponendo che il segnale di CL sia ldquopositiverdquotruerdquo)
Ci puograve essere un problema se il CL agisce in modo asincrono
NB questo circuito e quello del lucido precedente evidenziano il fatto che nella realtagrave nessuna rete egrave solo sincrona ma bensigrave egrave pressocheacute sempre necessario utilizzare reti di natura diversa anche percheacute vi egrave sempre una interazione fra reti con clock diversi eo con segnali provenienti dal mondo esterno NON sincronizzati con il clock
Monoimpulsore di tipo A ldquorivistordquo
54
bull Uno shift register a sinistra (a destra) egrave un registro composto da FFD che ad ogni clock trasferisce il valore del FF a destra (a sinistra) di ciascun FF nel FF stesso Nel FF piugrave a destra (sinistra) viene immesso uno ldquo0rdquo Questi tipi di registri shift si chiamano ldquologicirdquo
Shift register (registri a traslazione o scorrimento)
D0kQ0k
CK DnQn
CK
D0kQ0k
CK Dn-1Qn-1
CK
D0kQ0k
CK Dn-2Qn-2
CK
D0kQ0k
CK D0Q0
CK
ldquo0rdquo
Shift register a sinistra
bull Anche per i registri a traslazione esistono diverse versioni con ingresso parallelo e uscita seriale con ingresso seriale e uscita parallela con reset con load etc etc
bull Si noti che uno shift register egrave anche un contatore Si immagini per esempio che dopo un reset siano inseriti degli uni a partire da destra Lo shift register si riempie progressivamente di uni e quindi la posizione in cui egrave arrivato lrsquouno indica il valore del conteggio in base a un codice ldquouno su nrdquo (un codice decodificato)
bull Spesso uno stesso registro puograve traslare a destra o a sinistra in funzione di una segnale di controllo Ovviamente questo si ottiene premettendo a ogni ingresso Di un MUX a due vie che preleva in funzione del segnale di controllo Qigrave+1 o Qigrave-1 Con questa configurazione lo shift register diventa anche un contatore avantiindietro
Registro a scorrimento (shift-register) a 3 bit
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
IN
OUT2OUT1OUT0
CK
CK
IN
A_RESET
OUT1
OUT2
OUT0
Registro a scorrimento (shift-register) a 3 bit
57
Esempio 74164 (serial In parallel OUT)
bull In questo registro a traslazione ad ogni fronte positivo del clock i dati sono traslati a destra (Q0 -gt Q1 Q1-gtQ2 etc) Il registro egrave dotato in un Master Reset (vero negato) e il dato inserito nel FF Q0 egrave dato dallrsquoAND dei due ingressi Dsa e Dsb
bull Si noti che lrsquooperazione di shift corrisponde aritmeticamente alle operazioni di divisione e moltiplicazione per 2 Si supponga che in Q0 vi sia il bit meno significativo e in Q7 il meno significativo
0 1 1 0 1 0 1 0
010101102 = 10810
Shift left =gt x2
Shift right =gt 2
101011002 = 21610
001010112 = 5910
NB nel dispositivo i bit sono posti in ordine invertito e quindi un shift left del numero corrisponde a uno shift right sul dispositivo
58
bull Esistono anche i registri a traslazione ldquoaritmeticirdquo In questi shift register a destra anzicheacute fare entrare nel FF piugrave a sinistra lo ldquo0rdquo viene immesso sempre ripetutamente il suo valore logico
Shift aritmetico
Q7 Q6 Q5 Q4 Q3 Q2 Q1 Q0
D7 D6 D5 D4 D3 D2 D1 D0
I LDCK Esempio
11001010SRA
11100101 interpretato in complemento a 2
001101102=5410
C2 C2
000110112=2710
bull Lo shift aritmetico a destra effettua una divisione per 2 mantenendo il segno
59
Rotazione
Nei computer egrave sovente necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register
D0kQ0k
CK DnQn
CK
D0kQ0k
CK Dn-1Qn-1
CK
D0kQ0k
CK Dn-2Qn-2
CK
D0kQ0k
CK D0Q0
CK
Molto spesso nei computer egrave necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register con direzione programmabile In questo caso su D0 ad esempio puograve essere avviato o Q1 o Qn
60
Contatori con shift register ndash Contatore retroazionato EX-OR
Q2Q0
Shift right 3 bitDQ1
110 111 011 101 010 001
Diagramma degli stati disgiunto
Uno shift register con n FF retroazionato con un EX-OR (scelta degli ingressi variabile) egrave un contatore NON binario che conta per 2n-1 (purcheacute presettato a un valore diverso da tutti zeri)
000
100
61
Contatore di Johnson (riempimento e svuotamento)
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
000-gt100-gt110-gt111-gt011-gt001-gt000-gtStati isolati 101-gt010-gt101gt1
Poicheacute configurazioni adiacenti del codice Johnson differiscono di un solo bit il contatore puograve essere utilizzato per generare forme drsquoonda prive di alee
62
Contatore ad anello con un solo 1 (ovvero che genera direttamente il codice 1su n)
FFDD Q
QR
RESET
FFDD Q
QR
RESET
FFDD Q
QPR
RESET
OUT3OUT1OUT0
CK
FFDD Q
QR
RESET
OUT2
0001-gt1000-gt0100-gt0010-gt0010n FF per contare per n (mentre con i contatori binari il numero dei FF egrave il log2m ove m egrave il primo intero maggiore o uguale a n)
63
Barrel shifter (rotore)Un barrel shifter egrave uno shift register in grado di traslare di ldquonrdquo posizioni in un solo clock il contenuto dei suoi FF In figura egrave riportato il barrel shifter della Altera Gli ingressi A-H in presenza dellrsquoattivazione del segnale LDST al primo fronte positivo del clock sono depositati nei FF Quando LDST egrave 0 ad ogni fronte positivo del clock i bit di uscita sono ruotati di n posizioni in senso antiorario (ovvero lrsquouscita H diventa la G la G diventa la Fhellipe lrsquouscita A diventa la H) ove n egrave il valore binario indicato dai segnali S0 S1 e S2
Si noti che il circuito in questione egrave di fatto un registro con 8 FF allrsquoingresso di ciascuno dei quali egrave previsto un MUX a 8 vie che pilotato dai segnali S0 S1 e S2 che seleziona uno degli 8 uscite del dispositivo La struttura interna puograve essere osservata ldquoclikkandordquo due volte sul dispositivo nello schema di Altera
64
Barrel shifter
6565
66
Simulazione timing
67
bull Utilizzando il sistema Altera progettare un orologio con secondi minuti ora partendo da un oscillatore a quarzo con frequenza 500 KHz
bull E se si volesse proseguire e realizzare anche un datario (giorno mese e anno )
bull Come potrebbe essere integrato con una sveglia Si ricordi che lrsquoorologio deve essere anche essere ldquopresettatordquo
bull Quali circuiti utilizzare per la visualizzazione
68
EPROM
X0nZ0m
y0kY0k
Clock
D0kQ0k
FFD0k
CK D0kQ0k CK
Reti sincrone con EPROM
Al posto delle EPROM si utilizzano ora dei PLA ovvero dispositivi nei quali si nei quali le funzioni combinatorie sono ottimizzate ma il principio egrave assolutamente il medesimo
69
Progettare con Altera una rete logica sincrona che utilizzando registri 374 ALU 74181 un contatore e altri dispositivi ritenuti necessari permetta di eseguire in sequenza la somma di due dati di 4 bit senza segno ingresso esegua il complemento a 2 inverta la parte bassa con la parte alta del risultato e infine moltiplichi il tutto logicamente per 2
La soluzione egrave sempre decomponibile in tre sottosistemi il controllo con la sua decodifica (unitagrave di controllo) il percorso dei dati con le unitagrave che li trasformano (datapath) e i registri di deposito e di ingresso dei dati
Questa egrave la struttura base di qualunque unitagrave centrale di qualunque computer
La differenza consiste solo nel fatto che anzicheacute avere una sequenza fissa di operazioni ne viene generata una volta a volta che dipende appunto dalla istruzione che deve essere eseguita Come si vedragrave approfonditamente nel corso di Calcolatori T del II anno (prof Neri e Mattoccia)
Arrivederci al corso di Calcolatori T del II anno (sapendo perfettamente le reti logiche helliphellip)
27
D Q
QCKFFD Z
D
Clock
Monoimpulsore C
Clock
D
Z
Q
Anche qui lrsquoingresso asincrono D agisce direttamente sullrsquouscita Z che quindi risulta asincronaSi noti che se lrsquoingresso oscilla una volta che il FF ha campionato un 1 e fino a quando non campiona uno 0 lrsquouscita oscilla
Qui la rete egrave di tipo Mealy e quindi con ingresso asincrono egrave possibile che vi sia uscita asincrona
28
Considerazioni sui monoimpulsori A B e C
Il diagramma degli stati corrispondente al funzionamento reale dei due monoimpulsori B e C NON puograve essere tracciato percheacute di fatto le due reti (di tipo Mealy) NON sono sincrone Infatti il diagramma di circuiti sincroni prevede implicitamente un comportamento sincrono anche degli ingressi fatto non verificato nei casi B e C
La cosa non vale per il monoimpulsore A in quanto pur essendo lrsquoingresso asincrono lrsquouscita (rete di tipo Moore) dipende solo dagli stati In altre parole il comportamento della rete rende intrinsecamente sincroni ingressi fisicamente asincroni
Il diagramma degli stati che riflette il comportamento delle due reti B e C puograve essere tracciato solo partendo da una analisi asincrona ldquoaprendordquo quindi i FF D inseriti Ovviamente egrave possibile progettare le due reti senza lrsquouso dei FF D partendo da un diagramma degli stati asincrono ldquotradizionalerdquo
A scopo di esercizio si suggerisce la sintesi e la simulazione con Altera dei tre monoimpulsori come reti asincrone Si tratta di circuiti on due ingressi Ck e D
29
Monoimpulsori A-B-C
30
31
Contatori
A B C D Z
Circuiti senza ingresso (a parte il clock) nella versione piugrave semplice
D0 Q0
Q0CKFFD
MUX
1
0D1 Q1
Q1CKFFD
(Il clock egrave spesso sottinteso nei circuiti sincroni)
U0 U1
Esempio contatore binario x 4 con decodifica del 3
000 010 100 111
OUT
Q1 cambia stato quando Q0 egrave a 1 e passa a 0
CK
u1
u0
OUT (0) (1) (2) (0) (1) (2)(3) (3)
Contatore x 4 con decodifica del 3
33
Contatori binari in base non potenza di 2
A B C D E
000 001 010 011 100Contatore
binario per 5
D0 Q0
Q0CKFFD
MUX
1
0 1D1 Q1
Q1CKFFD
MUX
1
0D Q2
Q2CKFFD
Questo conta x8 ma per contare x5 arrivati a 4 bisogna ritornare a 0
34
D0 Q0
Q0CKFFD D1 Q1
Q1CKFFD
MUX
1
0 D2 Q2
Q2CKFFD
MUX
1
0
ABC
ldquo4rdquo
Contatore x 5
Decoder
La decodifica del 4 porta a zero lrsquouscita del decodificatore e quindi a 0 tutte le uscite degli AND rosa e al successivo fronte positivo del clock i tre FF campionano uno ldquo0rdquo
Per esercizio sintetizzare un contatore x 100 partendo dalla sintesi di un contatore decimale ovvero di un contatore x10 (da sintetizzare) Quanti FF per un contatore decimale I contatori decimali si trovano integrati in Altera
ldquo3rdquo
35
Contatori con ingressi di controllo
Ex Contatore integrato x 16 con Load e Enable
bull Il contatore conta per 16 (0-15) se il segnale EN egrave a 1 Allorchegrave il segnale LD va a 1 il dato presente sugli ingressi D egrave inserito nei 4 FF (lrsquoingresso puograve essere sincrono o asincrono) Nel caso precedente il decodificatore del ldquo3rdquo (uscita vera va portato) allrsquoingresso LD con tutti i Di a zero
bull In generale il contatore fornisce anche unrsquouscita ldquocarryrdquo che va a 1 quando il contatore raggiunge il valore FF Questa uscita puograve essere connessa allrsquoenable di un contatore a valle per ottenere un contatore per 256 cosigrave via (Progettarlo come esercizio)
EN
Q0 Q1 Q2 Q3CKLD
D0 D1 D2 D3
EN
Q0 Q1 Q2 Q3CK
CYLD
D0 D1 D2 D3
bull Esistono contatori UPDOWN nei quali un ingresso (UD) seleziona se il conteggio deve avvenire avanti o indietro Nel caso sia selezionata la modalitagrave ldquoindietrordquo il carry si attiva quando si raggiunge il valore ldquotutti zerirdquo
bull Esiste una molteplicitagrave di contatori ciascuno con le proprie specifiche peculiaritagrave con o senza RESET (che normalmente agisce in modo asincrono) UD con o senza LD etc etc
NB qualunque circuito sincrono (con sequenza non binaria) riconducibile al diagramma degli stati di un contatore egrave sempre un contatore
101 010 000 111 110 Contatore x 5 non binario
36
74163 contatore reale x 16 con Load Reset e Enable (T e P)I segnali di controllo sono sincroni ovvero agiscono sul fronte positivo del clock (rising edge)
74138 decoder 38 con uscite negate se G2A e G2B entrambi a zero e G1 a 1 Altrimenti tutte uscite alte
Direttorio Counter Glitch
Contatore binario x 8 e glitches
37
Glitch
Simulazione timingNB la presenza e la durata del glitch dipende dalle caratteristiche elettriche dei dispositivi
dalla loro tecnologia etc Nel caso dei dispositivi Altera dipende dal tipo di dispositivo sul quale egrave realizzato il circuito Analogamente la sensibilitagrave di eventuali ingressi di clock collegati allrsquouscita con il glitch dipende dalle caratteristiche del dispositivo Se ad esempio nel dispositivo Altera utilizzato si collega allrsquouscita Y6 il clock di un FFD non si ha commutazione del FF ma questo non egrave vero in assoluto
38
Cosa succede al contatore X5 progettato precedentemente se allrsquoaccensione non disponendo di un segnale di RESET i FF si portano in uno stato non facente parte del cicloNB La condizione allrsquoaccensione egrave del tutto casuale e dipende unicamente dalle condizioni elettriche
di realizzazione Ersquo impredicibileSupponiamo che i FF si portino al valore 110 (il numero 6 fuori dal ciclo) Analizziamo il comportamento
D0 Q0Q0CK
FFD D1 Q1Q1CK
FFD
MUX
1
0 D2 Q2Q2CK
FFD
MUX
1
0
ABC
ldquo4rdquo
000 001 010 011 100 110 111
In questo caso ci si riporta nella situazione di conteggio regolare (verificare con la tabella degli stati ) ma il comportamento in generale dipende dalla realizzazione e in altre realizzazione i due stati potrebbero essere separati dal ciclo principale che quindi non verrebbe mai raggiunto Ecco la funzione del RESET
39
Solo come esempio (da non utilizzare ) a scopo didattico vediamo la tabella delle transizioni di un contatore per 6 UpDown con comando di Reset I segnali di ingresso cambiano in modo asincrono ma hanno effetto in modo sincrono
Per compensare allrsquoaccensione
Sintetizzare e simulareCome dovrebbe essere modificato lo schema in Altera per permettere di
ldquopresettarerdquo in modo asincrono il contatore a un particolare valore di ingresso
00 01 11 10UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
111
110
000 101
000
101
y3 y2 y100 01 11 10
UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
000 000111
000 000 000 000110
000 101
000
000 000
101
y3 y2 y1
40
D0Q0
CKFFD
Clocky2
DEC
y3
y2
y1
ldquo1rdquo
ldquo2rdquo
ldquo3rdquo
ldquo4rdquo
1
0
UPDown
Sintesi di y2 in modo ldquodirettordquo
1
0
00 01 11 10UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
000 000111
000 000 000 000110
000 101
000
000 000
101
y3 y2 y1
41
Cassaforte hellipDisponendo di un contatore per 8 (ma anche per 16 etc) con reset sincrono e sempre abilitato al conteggio come potrei realizzare il circuito di apertura della cassaforte (sequenza X1X2 00-01-01-10) con modello Moore
Cx8RES
Q0 Q1 Q2 CK
RES= (ldquo0rdquoX1X2 + ldquo1rdquo X1X2 + ldquo2rdquo X1X2 + ldquo3rdquo X1 X2)Z = ldquo4rdquo (ldquo0rdquordquo1rdquordquo2rdquordquo3rdquordquo4rdquo sono le decodifiche binarie delle tre uscite del contatore)
Il contatore si resetta ogni volta che non si presenta lrsquoingresso giusto relativo al particolare stato Ilcontatore quindi si resetta e rimane resettato se non nelle condizioni espresse dalla funzione RESIl contatore arrivato a 4 (Z=1) si resetta comunque al successivo fronte del clock
Le reti sincrone si progettano sempre come combinazione di blocchi disponibili e logica ldquorandomrdquo
ABC
ldquo0rdquoldquo1rdquoldquo2rdquoldquo3rdquoldquo4rdquo
RLAND-OR
X1X2
RESZ
Cx8RES
Q0 Q1 Q2 CK
42
Contatori
EN
Q0 Q1 Q2 Q3CKCY
RESET
bull Attenzione Consideriamo il contatore di figura (questa volta con RESET asincrono) e supponiamo di utilizzarlo per contare per 5 (NB per il Reset si usa il ldquo5rdquo in questo casohellip glitch)
ABCD
ldquo5rdquo
ldquo1rdquo Percheacute questo schema egrave sbagliato
bull Percheacute presenta una corsa critica Nel momento in cui anche uno solo dei FF si resetta (e non tutti nello stesso istante) viene a mancare la configurazione ldquo4rdquo sul decoder e quindi alcuni FF potrebbero non fare in tempo a resettarsi E allora
EN
Q0 Q1 Q2 Q3CKCY
RESET
ABCD
ldquo5rdquo
ldquo1rdquo
RS
Y ldquo0rdquo
bull Cosigrave facendo il ldquo4rdquo attiva il SET e il FF NON si resetta fino a quando non egrave stato raggiunto la ldquo0rdquo NB lo schema ldquosbagliatordquo si puograve usare solo se si egrave certi della rapiditagrave di reset dei FF del contatore
bull Verificare con Altera
Sintesi cassaforte con moduli
Altera Cassaforte sincrona con moduli
Rete di controllo
Contatore con Reset asincrono e Load sincrono
43
NB In questo progetto la sintesi egrave stata condotta in modo ldquodirettordquo ovvero senza passare per la sintesi formale e utilizzando componenti disponibili e helliphellip materia grigia La sintesi dei circuiti sincroni si fa sempre e unicamente cosigrave
44
Simulazione funzionale (no timing)
NB I segnali di ingresso sono campionati SOLO sul fronte positivo del clock anche se si presentano asincroni Il segnale di uscita si attiva al clock successivo al riconoscimento della sequenza La posizione di ldquoriposordquo del contatore egrave il valore 4 I segnali Yi sono le decodifiche dei segnali di di ingresso X1 e X2
00 01 01 10
45
Simulazione timing
46
NB Si egrave scelto di utilizzare SOLO gli ingressi SINCRONI del contatore per semplicitagrave Il contatore rimane al valore 100 fino a quando non si presenta allrsquoingresso il valore 00 Se la sequenza egrave esatta il contatore continua a contare in avanti fino alla generazione dellrsquouscita (valore 11 del contatore) altrimenti si riporta al valore 100 ovvero Qc=1) Il segnale GN (Gate Not) egrave quello che abilita il conteggio Il sistema riamane stabile a 000 per una sequenza lunga a piacere di X1=0 e X2=0 e si sposta quando dopo 00 si ha 01 Come si evince dalla simulazione se la sequenza non egrave corretta o egrave interrotta il contatore si riporta sempre a 100
00 01 11 10
001 000 000
X1
000000 010 100 100001
000 100 100 011010
100 100 100 100011
000 100 100 100100
000 100 100 100101
000 100 100 100110
000 100 100 100111
0
0
0
1
0
0
0
0
X2
000
NB la tabella delle transizioni derivata della rete realizzata NON ha ovviamente condizioni di indifferenza
47
Progettare un contatore packed BCD updown a 8 bit (due digit)
48
Generazione di forme drsquoondabull Ersquo possibile generare forme drsquoonda periodiche mediante circuiti sincroni di periodo
sottomultiplo intero del clock
Esempio 1Divisore di frequenza per 2
D0k Q0k
CK D Q
CK Clock
Q
Esempio 2 generare una forma drsquoonda periodica con periodo 5T (ove T sia il periodo del clock) in cui in un semiperiodo 3T lrsquouscita sia alta e nellrsquoaltro semiperiodo 2T lrsquouscita sia bassa
Q0 Q1 Q2 CK
Cx5
C
B
A
01234
DecoderDemux
Clock
ZZ T
3T2T
3T
NB una rete logica egrave in grado di effettuare delle divisioni di frequenza e mai delle moltiplicazioni di frequenza (che si possono ottenere solo con circuiti analogici non lineari)
49
Di che circuito si tratta
D0k Q0k
CK D0 Q0
CKQ0
D0k Q0k
CK D1 Q1
CK
D0k Q0k
CK D2 Q2
CKClock
Clock
Q0
Q1
Q2
Ersquo un contatore binario ma non sincrono Infatti i vari FF NON utilizzano lo stesso clock e questo porta a un piccolo disallineamento sulle uscite Non egrave sintetizzabile come una rete sincrona e una sintesi formale sarebbe possibile solo trattando il circuito come asincrono ovvero ldquoaprendordquo i FF Sarebbe possibile trasformarlo in un contatore x6 mantenendo la stessa impostazione
Sintetizzare e simulare con Altera
NB il segnale di clock non egrave in comune
50
7493
51
Altera Contatore asincrono
Contatore asincrono
52
Simulazione timing
53
Come puograve essere utilizzato un FFD per catturare un impulso piugrave breve di un periodo
D2 Q2
Q2CKFFD Z
Clock
D1 Q1
Q1CKFFD
D0 Q00
Q0CKFFD
ldquo1rdquo CL
Lrsquoimpulso breve viene catturato dal FF 0 (purcheacute di larghezza sufficiente per la tecnologia del FF) - che quindi agisce come integratore ndash la cui uscita alimenta il monoimpulsore di tipo A Lrsquoattivazione del FF 1 resetta il FF 0 (supponendo che il segnale di CL sia ldquopositiverdquotruerdquo)
Ci puograve essere un problema se il CL agisce in modo asincrono
NB questo circuito e quello del lucido precedente evidenziano il fatto che nella realtagrave nessuna rete egrave solo sincrona ma bensigrave egrave pressocheacute sempre necessario utilizzare reti di natura diversa anche percheacute vi egrave sempre una interazione fra reti con clock diversi eo con segnali provenienti dal mondo esterno NON sincronizzati con il clock
Monoimpulsore di tipo A ldquorivistordquo
54
bull Uno shift register a sinistra (a destra) egrave un registro composto da FFD che ad ogni clock trasferisce il valore del FF a destra (a sinistra) di ciascun FF nel FF stesso Nel FF piugrave a destra (sinistra) viene immesso uno ldquo0rdquo Questi tipi di registri shift si chiamano ldquologicirdquo
Shift register (registri a traslazione o scorrimento)
D0kQ0k
CK DnQn
CK
D0kQ0k
CK Dn-1Qn-1
CK
D0kQ0k
CK Dn-2Qn-2
CK
D0kQ0k
CK D0Q0
CK
ldquo0rdquo
Shift register a sinistra
bull Anche per i registri a traslazione esistono diverse versioni con ingresso parallelo e uscita seriale con ingresso seriale e uscita parallela con reset con load etc etc
bull Si noti che uno shift register egrave anche un contatore Si immagini per esempio che dopo un reset siano inseriti degli uni a partire da destra Lo shift register si riempie progressivamente di uni e quindi la posizione in cui egrave arrivato lrsquouno indica il valore del conteggio in base a un codice ldquouno su nrdquo (un codice decodificato)
bull Spesso uno stesso registro puograve traslare a destra o a sinistra in funzione di una segnale di controllo Ovviamente questo si ottiene premettendo a ogni ingresso Di un MUX a due vie che preleva in funzione del segnale di controllo Qigrave+1 o Qigrave-1 Con questa configurazione lo shift register diventa anche un contatore avantiindietro
Registro a scorrimento (shift-register) a 3 bit
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
IN
OUT2OUT1OUT0
CK
CK
IN
A_RESET
OUT1
OUT2
OUT0
Registro a scorrimento (shift-register) a 3 bit
57
Esempio 74164 (serial In parallel OUT)
bull In questo registro a traslazione ad ogni fronte positivo del clock i dati sono traslati a destra (Q0 -gt Q1 Q1-gtQ2 etc) Il registro egrave dotato in un Master Reset (vero negato) e il dato inserito nel FF Q0 egrave dato dallrsquoAND dei due ingressi Dsa e Dsb
bull Si noti che lrsquooperazione di shift corrisponde aritmeticamente alle operazioni di divisione e moltiplicazione per 2 Si supponga che in Q0 vi sia il bit meno significativo e in Q7 il meno significativo
0 1 1 0 1 0 1 0
010101102 = 10810
Shift left =gt x2
Shift right =gt 2
101011002 = 21610
001010112 = 5910
NB nel dispositivo i bit sono posti in ordine invertito e quindi un shift left del numero corrisponde a uno shift right sul dispositivo
58
bull Esistono anche i registri a traslazione ldquoaritmeticirdquo In questi shift register a destra anzicheacute fare entrare nel FF piugrave a sinistra lo ldquo0rdquo viene immesso sempre ripetutamente il suo valore logico
Shift aritmetico
Q7 Q6 Q5 Q4 Q3 Q2 Q1 Q0
D7 D6 D5 D4 D3 D2 D1 D0
I LDCK Esempio
11001010SRA
11100101 interpretato in complemento a 2
001101102=5410
C2 C2
000110112=2710
bull Lo shift aritmetico a destra effettua una divisione per 2 mantenendo il segno
59
Rotazione
Nei computer egrave sovente necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register
D0kQ0k
CK DnQn
CK
D0kQ0k
CK Dn-1Qn-1
CK
D0kQ0k
CK Dn-2Qn-2
CK
D0kQ0k
CK D0Q0
CK
Molto spesso nei computer egrave necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register con direzione programmabile In questo caso su D0 ad esempio puograve essere avviato o Q1 o Qn
60
Contatori con shift register ndash Contatore retroazionato EX-OR
Q2Q0
Shift right 3 bitDQ1
110 111 011 101 010 001
Diagramma degli stati disgiunto
Uno shift register con n FF retroazionato con un EX-OR (scelta degli ingressi variabile) egrave un contatore NON binario che conta per 2n-1 (purcheacute presettato a un valore diverso da tutti zeri)
000
100
61
Contatore di Johnson (riempimento e svuotamento)
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
000-gt100-gt110-gt111-gt011-gt001-gt000-gtStati isolati 101-gt010-gt101gt1
Poicheacute configurazioni adiacenti del codice Johnson differiscono di un solo bit il contatore puograve essere utilizzato per generare forme drsquoonda prive di alee
62
Contatore ad anello con un solo 1 (ovvero che genera direttamente il codice 1su n)
FFDD Q
QR
RESET
FFDD Q
QR
RESET
FFDD Q
QPR
RESET
OUT3OUT1OUT0
CK
FFDD Q
QR
RESET
OUT2
0001-gt1000-gt0100-gt0010-gt0010n FF per contare per n (mentre con i contatori binari il numero dei FF egrave il log2m ove m egrave il primo intero maggiore o uguale a n)
63
Barrel shifter (rotore)Un barrel shifter egrave uno shift register in grado di traslare di ldquonrdquo posizioni in un solo clock il contenuto dei suoi FF In figura egrave riportato il barrel shifter della Altera Gli ingressi A-H in presenza dellrsquoattivazione del segnale LDST al primo fronte positivo del clock sono depositati nei FF Quando LDST egrave 0 ad ogni fronte positivo del clock i bit di uscita sono ruotati di n posizioni in senso antiorario (ovvero lrsquouscita H diventa la G la G diventa la Fhellipe lrsquouscita A diventa la H) ove n egrave il valore binario indicato dai segnali S0 S1 e S2
Si noti che il circuito in questione egrave di fatto un registro con 8 FF allrsquoingresso di ciascuno dei quali egrave previsto un MUX a 8 vie che pilotato dai segnali S0 S1 e S2 che seleziona uno degli 8 uscite del dispositivo La struttura interna puograve essere osservata ldquoclikkandordquo due volte sul dispositivo nello schema di Altera
64
Barrel shifter
6565
66
Simulazione timing
67
bull Utilizzando il sistema Altera progettare un orologio con secondi minuti ora partendo da un oscillatore a quarzo con frequenza 500 KHz
bull E se si volesse proseguire e realizzare anche un datario (giorno mese e anno )
bull Come potrebbe essere integrato con una sveglia Si ricordi che lrsquoorologio deve essere anche essere ldquopresettatordquo
bull Quali circuiti utilizzare per la visualizzazione
68
EPROM
X0nZ0m
y0kY0k
Clock
D0kQ0k
FFD0k
CK D0kQ0k CK
Reti sincrone con EPROM
Al posto delle EPROM si utilizzano ora dei PLA ovvero dispositivi nei quali si nei quali le funzioni combinatorie sono ottimizzate ma il principio egrave assolutamente il medesimo
69
Progettare con Altera una rete logica sincrona che utilizzando registri 374 ALU 74181 un contatore e altri dispositivi ritenuti necessari permetta di eseguire in sequenza la somma di due dati di 4 bit senza segno ingresso esegua il complemento a 2 inverta la parte bassa con la parte alta del risultato e infine moltiplichi il tutto logicamente per 2
La soluzione egrave sempre decomponibile in tre sottosistemi il controllo con la sua decodifica (unitagrave di controllo) il percorso dei dati con le unitagrave che li trasformano (datapath) e i registri di deposito e di ingresso dei dati
Questa egrave la struttura base di qualunque unitagrave centrale di qualunque computer
La differenza consiste solo nel fatto che anzicheacute avere una sequenza fissa di operazioni ne viene generata una volta a volta che dipende appunto dalla istruzione che deve essere eseguita Come si vedragrave approfonditamente nel corso di Calcolatori T del II anno (prof Neri e Mattoccia)
Arrivederci al corso di Calcolatori T del II anno (sapendo perfettamente le reti logiche helliphellip)
28
Considerazioni sui monoimpulsori A B e C
Il diagramma degli stati corrispondente al funzionamento reale dei due monoimpulsori B e C NON puograve essere tracciato percheacute di fatto le due reti (di tipo Mealy) NON sono sincrone Infatti il diagramma di circuiti sincroni prevede implicitamente un comportamento sincrono anche degli ingressi fatto non verificato nei casi B e C
La cosa non vale per il monoimpulsore A in quanto pur essendo lrsquoingresso asincrono lrsquouscita (rete di tipo Moore) dipende solo dagli stati In altre parole il comportamento della rete rende intrinsecamente sincroni ingressi fisicamente asincroni
Il diagramma degli stati che riflette il comportamento delle due reti B e C puograve essere tracciato solo partendo da una analisi asincrona ldquoaprendordquo quindi i FF D inseriti Ovviamente egrave possibile progettare le due reti senza lrsquouso dei FF D partendo da un diagramma degli stati asincrono ldquotradizionalerdquo
A scopo di esercizio si suggerisce la sintesi e la simulazione con Altera dei tre monoimpulsori come reti asincrone Si tratta di circuiti on due ingressi Ck e D
29
Monoimpulsori A-B-C
30
31
Contatori
A B C D Z
Circuiti senza ingresso (a parte il clock) nella versione piugrave semplice
D0 Q0
Q0CKFFD
MUX
1
0D1 Q1
Q1CKFFD
(Il clock egrave spesso sottinteso nei circuiti sincroni)
U0 U1
Esempio contatore binario x 4 con decodifica del 3
000 010 100 111
OUT
Q1 cambia stato quando Q0 egrave a 1 e passa a 0
CK
u1
u0
OUT (0) (1) (2) (0) (1) (2)(3) (3)
Contatore x 4 con decodifica del 3
33
Contatori binari in base non potenza di 2
A B C D E
000 001 010 011 100Contatore
binario per 5
D0 Q0
Q0CKFFD
MUX
1
0 1D1 Q1
Q1CKFFD
MUX
1
0D Q2
Q2CKFFD
Questo conta x8 ma per contare x5 arrivati a 4 bisogna ritornare a 0
34
D0 Q0
Q0CKFFD D1 Q1
Q1CKFFD
MUX
1
0 D2 Q2
Q2CKFFD
MUX
1
0
ABC
ldquo4rdquo
Contatore x 5
Decoder
La decodifica del 4 porta a zero lrsquouscita del decodificatore e quindi a 0 tutte le uscite degli AND rosa e al successivo fronte positivo del clock i tre FF campionano uno ldquo0rdquo
Per esercizio sintetizzare un contatore x 100 partendo dalla sintesi di un contatore decimale ovvero di un contatore x10 (da sintetizzare) Quanti FF per un contatore decimale I contatori decimali si trovano integrati in Altera
ldquo3rdquo
35
Contatori con ingressi di controllo
Ex Contatore integrato x 16 con Load e Enable
bull Il contatore conta per 16 (0-15) se il segnale EN egrave a 1 Allorchegrave il segnale LD va a 1 il dato presente sugli ingressi D egrave inserito nei 4 FF (lrsquoingresso puograve essere sincrono o asincrono) Nel caso precedente il decodificatore del ldquo3rdquo (uscita vera va portato) allrsquoingresso LD con tutti i Di a zero
bull In generale il contatore fornisce anche unrsquouscita ldquocarryrdquo che va a 1 quando il contatore raggiunge il valore FF Questa uscita puograve essere connessa allrsquoenable di un contatore a valle per ottenere un contatore per 256 cosigrave via (Progettarlo come esercizio)
EN
Q0 Q1 Q2 Q3CKLD
D0 D1 D2 D3
EN
Q0 Q1 Q2 Q3CK
CYLD
D0 D1 D2 D3
bull Esistono contatori UPDOWN nei quali un ingresso (UD) seleziona se il conteggio deve avvenire avanti o indietro Nel caso sia selezionata la modalitagrave ldquoindietrordquo il carry si attiva quando si raggiunge il valore ldquotutti zerirdquo
bull Esiste una molteplicitagrave di contatori ciascuno con le proprie specifiche peculiaritagrave con o senza RESET (che normalmente agisce in modo asincrono) UD con o senza LD etc etc
NB qualunque circuito sincrono (con sequenza non binaria) riconducibile al diagramma degli stati di un contatore egrave sempre un contatore
101 010 000 111 110 Contatore x 5 non binario
36
74163 contatore reale x 16 con Load Reset e Enable (T e P)I segnali di controllo sono sincroni ovvero agiscono sul fronte positivo del clock (rising edge)
74138 decoder 38 con uscite negate se G2A e G2B entrambi a zero e G1 a 1 Altrimenti tutte uscite alte
Direttorio Counter Glitch
Contatore binario x 8 e glitches
37
Glitch
Simulazione timingNB la presenza e la durata del glitch dipende dalle caratteristiche elettriche dei dispositivi
dalla loro tecnologia etc Nel caso dei dispositivi Altera dipende dal tipo di dispositivo sul quale egrave realizzato il circuito Analogamente la sensibilitagrave di eventuali ingressi di clock collegati allrsquouscita con il glitch dipende dalle caratteristiche del dispositivo Se ad esempio nel dispositivo Altera utilizzato si collega allrsquouscita Y6 il clock di un FFD non si ha commutazione del FF ma questo non egrave vero in assoluto
38
Cosa succede al contatore X5 progettato precedentemente se allrsquoaccensione non disponendo di un segnale di RESET i FF si portano in uno stato non facente parte del cicloNB La condizione allrsquoaccensione egrave del tutto casuale e dipende unicamente dalle condizioni elettriche
di realizzazione Ersquo impredicibileSupponiamo che i FF si portino al valore 110 (il numero 6 fuori dal ciclo) Analizziamo il comportamento
D0 Q0Q0CK
FFD D1 Q1Q1CK
FFD
MUX
1
0 D2 Q2Q2CK
FFD
MUX
1
0
ABC
ldquo4rdquo
000 001 010 011 100 110 111
In questo caso ci si riporta nella situazione di conteggio regolare (verificare con la tabella degli stati ) ma il comportamento in generale dipende dalla realizzazione e in altre realizzazione i due stati potrebbero essere separati dal ciclo principale che quindi non verrebbe mai raggiunto Ecco la funzione del RESET
39
Solo come esempio (da non utilizzare ) a scopo didattico vediamo la tabella delle transizioni di un contatore per 6 UpDown con comando di Reset I segnali di ingresso cambiano in modo asincrono ma hanno effetto in modo sincrono
Per compensare allrsquoaccensione
Sintetizzare e simulareCome dovrebbe essere modificato lo schema in Altera per permettere di
ldquopresettarerdquo in modo asincrono il contatore a un particolare valore di ingresso
00 01 11 10UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
111
110
000 101
000
101
y3 y2 y100 01 11 10
UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
000 000111
000 000 000 000110
000 101
000
000 000
101
y3 y2 y1
40
D0Q0
CKFFD
Clocky2
DEC
y3
y2
y1
ldquo1rdquo
ldquo2rdquo
ldquo3rdquo
ldquo4rdquo
1
0
UPDown
Sintesi di y2 in modo ldquodirettordquo
1
0
00 01 11 10UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
000 000111
000 000 000 000110
000 101
000
000 000
101
y3 y2 y1
41
Cassaforte hellipDisponendo di un contatore per 8 (ma anche per 16 etc) con reset sincrono e sempre abilitato al conteggio come potrei realizzare il circuito di apertura della cassaforte (sequenza X1X2 00-01-01-10) con modello Moore
Cx8RES
Q0 Q1 Q2 CK
RES= (ldquo0rdquoX1X2 + ldquo1rdquo X1X2 + ldquo2rdquo X1X2 + ldquo3rdquo X1 X2)Z = ldquo4rdquo (ldquo0rdquordquo1rdquordquo2rdquordquo3rdquordquo4rdquo sono le decodifiche binarie delle tre uscite del contatore)
Il contatore si resetta ogni volta che non si presenta lrsquoingresso giusto relativo al particolare stato Ilcontatore quindi si resetta e rimane resettato se non nelle condizioni espresse dalla funzione RESIl contatore arrivato a 4 (Z=1) si resetta comunque al successivo fronte del clock
Le reti sincrone si progettano sempre come combinazione di blocchi disponibili e logica ldquorandomrdquo
ABC
ldquo0rdquoldquo1rdquoldquo2rdquoldquo3rdquoldquo4rdquo
RLAND-OR
X1X2
RESZ
Cx8RES
Q0 Q1 Q2 CK
42
Contatori
EN
Q0 Q1 Q2 Q3CKCY
RESET
bull Attenzione Consideriamo il contatore di figura (questa volta con RESET asincrono) e supponiamo di utilizzarlo per contare per 5 (NB per il Reset si usa il ldquo5rdquo in questo casohellip glitch)
ABCD
ldquo5rdquo
ldquo1rdquo Percheacute questo schema egrave sbagliato
bull Percheacute presenta una corsa critica Nel momento in cui anche uno solo dei FF si resetta (e non tutti nello stesso istante) viene a mancare la configurazione ldquo4rdquo sul decoder e quindi alcuni FF potrebbero non fare in tempo a resettarsi E allora
EN
Q0 Q1 Q2 Q3CKCY
RESET
ABCD
ldquo5rdquo
ldquo1rdquo
RS
Y ldquo0rdquo
bull Cosigrave facendo il ldquo4rdquo attiva il SET e il FF NON si resetta fino a quando non egrave stato raggiunto la ldquo0rdquo NB lo schema ldquosbagliatordquo si puograve usare solo se si egrave certi della rapiditagrave di reset dei FF del contatore
bull Verificare con Altera
Sintesi cassaforte con moduli
Altera Cassaforte sincrona con moduli
Rete di controllo
Contatore con Reset asincrono e Load sincrono
43
NB In questo progetto la sintesi egrave stata condotta in modo ldquodirettordquo ovvero senza passare per la sintesi formale e utilizzando componenti disponibili e helliphellip materia grigia La sintesi dei circuiti sincroni si fa sempre e unicamente cosigrave
44
Simulazione funzionale (no timing)
NB I segnali di ingresso sono campionati SOLO sul fronte positivo del clock anche se si presentano asincroni Il segnale di uscita si attiva al clock successivo al riconoscimento della sequenza La posizione di ldquoriposordquo del contatore egrave il valore 4 I segnali Yi sono le decodifiche dei segnali di di ingresso X1 e X2
00 01 01 10
45
Simulazione timing
46
NB Si egrave scelto di utilizzare SOLO gli ingressi SINCRONI del contatore per semplicitagrave Il contatore rimane al valore 100 fino a quando non si presenta allrsquoingresso il valore 00 Se la sequenza egrave esatta il contatore continua a contare in avanti fino alla generazione dellrsquouscita (valore 11 del contatore) altrimenti si riporta al valore 100 ovvero Qc=1) Il segnale GN (Gate Not) egrave quello che abilita il conteggio Il sistema riamane stabile a 000 per una sequenza lunga a piacere di X1=0 e X2=0 e si sposta quando dopo 00 si ha 01 Come si evince dalla simulazione se la sequenza non egrave corretta o egrave interrotta il contatore si riporta sempre a 100
00 01 11 10
001 000 000
X1
000000 010 100 100001
000 100 100 011010
100 100 100 100011
000 100 100 100100
000 100 100 100101
000 100 100 100110
000 100 100 100111
0
0
0
1
0
0
0
0
X2
000
NB la tabella delle transizioni derivata della rete realizzata NON ha ovviamente condizioni di indifferenza
47
Progettare un contatore packed BCD updown a 8 bit (due digit)
48
Generazione di forme drsquoondabull Ersquo possibile generare forme drsquoonda periodiche mediante circuiti sincroni di periodo
sottomultiplo intero del clock
Esempio 1Divisore di frequenza per 2
D0k Q0k
CK D Q
CK Clock
Q
Esempio 2 generare una forma drsquoonda periodica con periodo 5T (ove T sia il periodo del clock) in cui in un semiperiodo 3T lrsquouscita sia alta e nellrsquoaltro semiperiodo 2T lrsquouscita sia bassa
Q0 Q1 Q2 CK
Cx5
C
B
A
01234
DecoderDemux
Clock
ZZ T
3T2T
3T
NB una rete logica egrave in grado di effettuare delle divisioni di frequenza e mai delle moltiplicazioni di frequenza (che si possono ottenere solo con circuiti analogici non lineari)
49
Di che circuito si tratta
D0k Q0k
CK D0 Q0
CKQ0
D0k Q0k
CK D1 Q1
CK
D0k Q0k
CK D2 Q2
CKClock
Clock
Q0
Q1
Q2
Ersquo un contatore binario ma non sincrono Infatti i vari FF NON utilizzano lo stesso clock e questo porta a un piccolo disallineamento sulle uscite Non egrave sintetizzabile come una rete sincrona e una sintesi formale sarebbe possibile solo trattando il circuito come asincrono ovvero ldquoaprendordquo i FF Sarebbe possibile trasformarlo in un contatore x6 mantenendo la stessa impostazione
Sintetizzare e simulare con Altera
NB il segnale di clock non egrave in comune
50
7493
51
Altera Contatore asincrono
Contatore asincrono
52
Simulazione timing
53
Come puograve essere utilizzato un FFD per catturare un impulso piugrave breve di un periodo
D2 Q2
Q2CKFFD Z
Clock
D1 Q1
Q1CKFFD
D0 Q00
Q0CKFFD
ldquo1rdquo CL
Lrsquoimpulso breve viene catturato dal FF 0 (purcheacute di larghezza sufficiente per la tecnologia del FF) - che quindi agisce come integratore ndash la cui uscita alimenta il monoimpulsore di tipo A Lrsquoattivazione del FF 1 resetta il FF 0 (supponendo che il segnale di CL sia ldquopositiverdquotruerdquo)
Ci puograve essere un problema se il CL agisce in modo asincrono
NB questo circuito e quello del lucido precedente evidenziano il fatto che nella realtagrave nessuna rete egrave solo sincrona ma bensigrave egrave pressocheacute sempre necessario utilizzare reti di natura diversa anche percheacute vi egrave sempre una interazione fra reti con clock diversi eo con segnali provenienti dal mondo esterno NON sincronizzati con il clock
Monoimpulsore di tipo A ldquorivistordquo
54
bull Uno shift register a sinistra (a destra) egrave un registro composto da FFD che ad ogni clock trasferisce il valore del FF a destra (a sinistra) di ciascun FF nel FF stesso Nel FF piugrave a destra (sinistra) viene immesso uno ldquo0rdquo Questi tipi di registri shift si chiamano ldquologicirdquo
Shift register (registri a traslazione o scorrimento)
D0kQ0k
CK DnQn
CK
D0kQ0k
CK Dn-1Qn-1
CK
D0kQ0k
CK Dn-2Qn-2
CK
D0kQ0k
CK D0Q0
CK
ldquo0rdquo
Shift register a sinistra
bull Anche per i registri a traslazione esistono diverse versioni con ingresso parallelo e uscita seriale con ingresso seriale e uscita parallela con reset con load etc etc
bull Si noti che uno shift register egrave anche un contatore Si immagini per esempio che dopo un reset siano inseriti degli uni a partire da destra Lo shift register si riempie progressivamente di uni e quindi la posizione in cui egrave arrivato lrsquouno indica il valore del conteggio in base a un codice ldquouno su nrdquo (un codice decodificato)
bull Spesso uno stesso registro puograve traslare a destra o a sinistra in funzione di una segnale di controllo Ovviamente questo si ottiene premettendo a ogni ingresso Di un MUX a due vie che preleva in funzione del segnale di controllo Qigrave+1 o Qigrave-1 Con questa configurazione lo shift register diventa anche un contatore avantiindietro
Registro a scorrimento (shift-register) a 3 bit
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
IN
OUT2OUT1OUT0
CK
CK
IN
A_RESET
OUT1
OUT2
OUT0
Registro a scorrimento (shift-register) a 3 bit
57
Esempio 74164 (serial In parallel OUT)
bull In questo registro a traslazione ad ogni fronte positivo del clock i dati sono traslati a destra (Q0 -gt Q1 Q1-gtQ2 etc) Il registro egrave dotato in un Master Reset (vero negato) e il dato inserito nel FF Q0 egrave dato dallrsquoAND dei due ingressi Dsa e Dsb
bull Si noti che lrsquooperazione di shift corrisponde aritmeticamente alle operazioni di divisione e moltiplicazione per 2 Si supponga che in Q0 vi sia il bit meno significativo e in Q7 il meno significativo
0 1 1 0 1 0 1 0
010101102 = 10810
Shift left =gt x2
Shift right =gt 2
101011002 = 21610
001010112 = 5910
NB nel dispositivo i bit sono posti in ordine invertito e quindi un shift left del numero corrisponde a uno shift right sul dispositivo
58
bull Esistono anche i registri a traslazione ldquoaritmeticirdquo In questi shift register a destra anzicheacute fare entrare nel FF piugrave a sinistra lo ldquo0rdquo viene immesso sempre ripetutamente il suo valore logico
Shift aritmetico
Q7 Q6 Q5 Q4 Q3 Q2 Q1 Q0
D7 D6 D5 D4 D3 D2 D1 D0
I LDCK Esempio
11001010SRA
11100101 interpretato in complemento a 2
001101102=5410
C2 C2
000110112=2710
bull Lo shift aritmetico a destra effettua una divisione per 2 mantenendo il segno
59
Rotazione
Nei computer egrave sovente necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register
D0kQ0k
CK DnQn
CK
D0kQ0k
CK Dn-1Qn-1
CK
D0kQ0k
CK Dn-2Qn-2
CK
D0kQ0k
CK D0Q0
CK
Molto spesso nei computer egrave necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register con direzione programmabile In questo caso su D0 ad esempio puograve essere avviato o Q1 o Qn
60
Contatori con shift register ndash Contatore retroazionato EX-OR
Q2Q0
Shift right 3 bitDQ1
110 111 011 101 010 001
Diagramma degli stati disgiunto
Uno shift register con n FF retroazionato con un EX-OR (scelta degli ingressi variabile) egrave un contatore NON binario che conta per 2n-1 (purcheacute presettato a un valore diverso da tutti zeri)
000
100
61
Contatore di Johnson (riempimento e svuotamento)
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
000-gt100-gt110-gt111-gt011-gt001-gt000-gtStati isolati 101-gt010-gt101gt1
Poicheacute configurazioni adiacenti del codice Johnson differiscono di un solo bit il contatore puograve essere utilizzato per generare forme drsquoonda prive di alee
62
Contatore ad anello con un solo 1 (ovvero che genera direttamente il codice 1su n)
FFDD Q
QR
RESET
FFDD Q
QR
RESET
FFDD Q
QPR
RESET
OUT3OUT1OUT0
CK
FFDD Q
QR
RESET
OUT2
0001-gt1000-gt0100-gt0010-gt0010n FF per contare per n (mentre con i contatori binari il numero dei FF egrave il log2m ove m egrave il primo intero maggiore o uguale a n)
63
Barrel shifter (rotore)Un barrel shifter egrave uno shift register in grado di traslare di ldquonrdquo posizioni in un solo clock il contenuto dei suoi FF In figura egrave riportato il barrel shifter della Altera Gli ingressi A-H in presenza dellrsquoattivazione del segnale LDST al primo fronte positivo del clock sono depositati nei FF Quando LDST egrave 0 ad ogni fronte positivo del clock i bit di uscita sono ruotati di n posizioni in senso antiorario (ovvero lrsquouscita H diventa la G la G diventa la Fhellipe lrsquouscita A diventa la H) ove n egrave il valore binario indicato dai segnali S0 S1 e S2
Si noti che il circuito in questione egrave di fatto un registro con 8 FF allrsquoingresso di ciascuno dei quali egrave previsto un MUX a 8 vie che pilotato dai segnali S0 S1 e S2 che seleziona uno degli 8 uscite del dispositivo La struttura interna puograve essere osservata ldquoclikkandordquo due volte sul dispositivo nello schema di Altera
64
Barrel shifter
6565
66
Simulazione timing
67
bull Utilizzando il sistema Altera progettare un orologio con secondi minuti ora partendo da un oscillatore a quarzo con frequenza 500 KHz
bull E se si volesse proseguire e realizzare anche un datario (giorno mese e anno )
bull Come potrebbe essere integrato con una sveglia Si ricordi che lrsquoorologio deve essere anche essere ldquopresettatordquo
bull Quali circuiti utilizzare per la visualizzazione
68
EPROM
X0nZ0m
y0kY0k
Clock
D0kQ0k
FFD0k
CK D0kQ0k CK
Reti sincrone con EPROM
Al posto delle EPROM si utilizzano ora dei PLA ovvero dispositivi nei quali si nei quali le funzioni combinatorie sono ottimizzate ma il principio egrave assolutamente il medesimo
69
Progettare con Altera una rete logica sincrona che utilizzando registri 374 ALU 74181 un contatore e altri dispositivi ritenuti necessari permetta di eseguire in sequenza la somma di due dati di 4 bit senza segno ingresso esegua il complemento a 2 inverta la parte bassa con la parte alta del risultato e infine moltiplichi il tutto logicamente per 2
La soluzione egrave sempre decomponibile in tre sottosistemi il controllo con la sua decodifica (unitagrave di controllo) il percorso dei dati con le unitagrave che li trasformano (datapath) e i registri di deposito e di ingresso dei dati
Questa egrave la struttura base di qualunque unitagrave centrale di qualunque computer
La differenza consiste solo nel fatto che anzicheacute avere una sequenza fissa di operazioni ne viene generata una volta a volta che dipende appunto dalla istruzione che deve essere eseguita Come si vedragrave approfonditamente nel corso di Calcolatori T del II anno (prof Neri e Mattoccia)
Arrivederci al corso di Calcolatori T del II anno (sapendo perfettamente le reti logiche helliphellip)
29
Monoimpulsori A-B-C
30
31
Contatori
A B C D Z
Circuiti senza ingresso (a parte il clock) nella versione piugrave semplice
D0 Q0
Q0CKFFD
MUX
1
0D1 Q1
Q1CKFFD
(Il clock egrave spesso sottinteso nei circuiti sincroni)
U0 U1
Esempio contatore binario x 4 con decodifica del 3
000 010 100 111
OUT
Q1 cambia stato quando Q0 egrave a 1 e passa a 0
CK
u1
u0
OUT (0) (1) (2) (0) (1) (2)(3) (3)
Contatore x 4 con decodifica del 3
33
Contatori binari in base non potenza di 2
A B C D E
000 001 010 011 100Contatore
binario per 5
D0 Q0
Q0CKFFD
MUX
1
0 1D1 Q1
Q1CKFFD
MUX
1
0D Q2
Q2CKFFD
Questo conta x8 ma per contare x5 arrivati a 4 bisogna ritornare a 0
34
D0 Q0
Q0CKFFD D1 Q1
Q1CKFFD
MUX
1
0 D2 Q2
Q2CKFFD
MUX
1
0
ABC
ldquo4rdquo
Contatore x 5
Decoder
La decodifica del 4 porta a zero lrsquouscita del decodificatore e quindi a 0 tutte le uscite degli AND rosa e al successivo fronte positivo del clock i tre FF campionano uno ldquo0rdquo
Per esercizio sintetizzare un contatore x 100 partendo dalla sintesi di un contatore decimale ovvero di un contatore x10 (da sintetizzare) Quanti FF per un contatore decimale I contatori decimali si trovano integrati in Altera
ldquo3rdquo
35
Contatori con ingressi di controllo
Ex Contatore integrato x 16 con Load e Enable
bull Il contatore conta per 16 (0-15) se il segnale EN egrave a 1 Allorchegrave il segnale LD va a 1 il dato presente sugli ingressi D egrave inserito nei 4 FF (lrsquoingresso puograve essere sincrono o asincrono) Nel caso precedente il decodificatore del ldquo3rdquo (uscita vera va portato) allrsquoingresso LD con tutti i Di a zero
bull In generale il contatore fornisce anche unrsquouscita ldquocarryrdquo che va a 1 quando il contatore raggiunge il valore FF Questa uscita puograve essere connessa allrsquoenable di un contatore a valle per ottenere un contatore per 256 cosigrave via (Progettarlo come esercizio)
EN
Q0 Q1 Q2 Q3CKLD
D0 D1 D2 D3
EN
Q0 Q1 Q2 Q3CK
CYLD
D0 D1 D2 D3
bull Esistono contatori UPDOWN nei quali un ingresso (UD) seleziona se il conteggio deve avvenire avanti o indietro Nel caso sia selezionata la modalitagrave ldquoindietrordquo il carry si attiva quando si raggiunge il valore ldquotutti zerirdquo
bull Esiste una molteplicitagrave di contatori ciascuno con le proprie specifiche peculiaritagrave con o senza RESET (che normalmente agisce in modo asincrono) UD con o senza LD etc etc
NB qualunque circuito sincrono (con sequenza non binaria) riconducibile al diagramma degli stati di un contatore egrave sempre un contatore
101 010 000 111 110 Contatore x 5 non binario
36
74163 contatore reale x 16 con Load Reset e Enable (T e P)I segnali di controllo sono sincroni ovvero agiscono sul fronte positivo del clock (rising edge)
74138 decoder 38 con uscite negate se G2A e G2B entrambi a zero e G1 a 1 Altrimenti tutte uscite alte
Direttorio Counter Glitch
Contatore binario x 8 e glitches
37
Glitch
Simulazione timingNB la presenza e la durata del glitch dipende dalle caratteristiche elettriche dei dispositivi
dalla loro tecnologia etc Nel caso dei dispositivi Altera dipende dal tipo di dispositivo sul quale egrave realizzato il circuito Analogamente la sensibilitagrave di eventuali ingressi di clock collegati allrsquouscita con il glitch dipende dalle caratteristiche del dispositivo Se ad esempio nel dispositivo Altera utilizzato si collega allrsquouscita Y6 il clock di un FFD non si ha commutazione del FF ma questo non egrave vero in assoluto
38
Cosa succede al contatore X5 progettato precedentemente se allrsquoaccensione non disponendo di un segnale di RESET i FF si portano in uno stato non facente parte del cicloNB La condizione allrsquoaccensione egrave del tutto casuale e dipende unicamente dalle condizioni elettriche
di realizzazione Ersquo impredicibileSupponiamo che i FF si portino al valore 110 (il numero 6 fuori dal ciclo) Analizziamo il comportamento
D0 Q0Q0CK
FFD D1 Q1Q1CK
FFD
MUX
1
0 D2 Q2Q2CK
FFD
MUX
1
0
ABC
ldquo4rdquo
000 001 010 011 100 110 111
In questo caso ci si riporta nella situazione di conteggio regolare (verificare con la tabella degli stati ) ma il comportamento in generale dipende dalla realizzazione e in altre realizzazione i due stati potrebbero essere separati dal ciclo principale che quindi non verrebbe mai raggiunto Ecco la funzione del RESET
39
Solo come esempio (da non utilizzare ) a scopo didattico vediamo la tabella delle transizioni di un contatore per 6 UpDown con comando di Reset I segnali di ingresso cambiano in modo asincrono ma hanno effetto in modo sincrono
Per compensare allrsquoaccensione
Sintetizzare e simulareCome dovrebbe essere modificato lo schema in Altera per permettere di
ldquopresettarerdquo in modo asincrono il contatore a un particolare valore di ingresso
00 01 11 10UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
111
110
000 101
000
101
y3 y2 y100 01 11 10
UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
000 000111
000 000 000 000110
000 101
000
000 000
101
y3 y2 y1
40
D0Q0
CKFFD
Clocky2
DEC
y3
y2
y1
ldquo1rdquo
ldquo2rdquo
ldquo3rdquo
ldquo4rdquo
1
0
UPDown
Sintesi di y2 in modo ldquodirettordquo
1
0
00 01 11 10UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
000 000111
000 000 000 000110
000 101
000
000 000
101
y3 y2 y1
41
Cassaforte hellipDisponendo di un contatore per 8 (ma anche per 16 etc) con reset sincrono e sempre abilitato al conteggio come potrei realizzare il circuito di apertura della cassaforte (sequenza X1X2 00-01-01-10) con modello Moore
Cx8RES
Q0 Q1 Q2 CK
RES= (ldquo0rdquoX1X2 + ldquo1rdquo X1X2 + ldquo2rdquo X1X2 + ldquo3rdquo X1 X2)Z = ldquo4rdquo (ldquo0rdquordquo1rdquordquo2rdquordquo3rdquordquo4rdquo sono le decodifiche binarie delle tre uscite del contatore)
Il contatore si resetta ogni volta che non si presenta lrsquoingresso giusto relativo al particolare stato Ilcontatore quindi si resetta e rimane resettato se non nelle condizioni espresse dalla funzione RESIl contatore arrivato a 4 (Z=1) si resetta comunque al successivo fronte del clock
Le reti sincrone si progettano sempre come combinazione di blocchi disponibili e logica ldquorandomrdquo
ABC
ldquo0rdquoldquo1rdquoldquo2rdquoldquo3rdquoldquo4rdquo
RLAND-OR
X1X2
RESZ
Cx8RES
Q0 Q1 Q2 CK
42
Contatori
EN
Q0 Q1 Q2 Q3CKCY
RESET
bull Attenzione Consideriamo il contatore di figura (questa volta con RESET asincrono) e supponiamo di utilizzarlo per contare per 5 (NB per il Reset si usa il ldquo5rdquo in questo casohellip glitch)
ABCD
ldquo5rdquo
ldquo1rdquo Percheacute questo schema egrave sbagliato
bull Percheacute presenta una corsa critica Nel momento in cui anche uno solo dei FF si resetta (e non tutti nello stesso istante) viene a mancare la configurazione ldquo4rdquo sul decoder e quindi alcuni FF potrebbero non fare in tempo a resettarsi E allora
EN
Q0 Q1 Q2 Q3CKCY
RESET
ABCD
ldquo5rdquo
ldquo1rdquo
RS
Y ldquo0rdquo
bull Cosigrave facendo il ldquo4rdquo attiva il SET e il FF NON si resetta fino a quando non egrave stato raggiunto la ldquo0rdquo NB lo schema ldquosbagliatordquo si puograve usare solo se si egrave certi della rapiditagrave di reset dei FF del contatore
bull Verificare con Altera
Sintesi cassaforte con moduli
Altera Cassaforte sincrona con moduli
Rete di controllo
Contatore con Reset asincrono e Load sincrono
43
NB In questo progetto la sintesi egrave stata condotta in modo ldquodirettordquo ovvero senza passare per la sintesi formale e utilizzando componenti disponibili e helliphellip materia grigia La sintesi dei circuiti sincroni si fa sempre e unicamente cosigrave
44
Simulazione funzionale (no timing)
NB I segnali di ingresso sono campionati SOLO sul fronte positivo del clock anche se si presentano asincroni Il segnale di uscita si attiva al clock successivo al riconoscimento della sequenza La posizione di ldquoriposordquo del contatore egrave il valore 4 I segnali Yi sono le decodifiche dei segnali di di ingresso X1 e X2
00 01 01 10
45
Simulazione timing
46
NB Si egrave scelto di utilizzare SOLO gli ingressi SINCRONI del contatore per semplicitagrave Il contatore rimane al valore 100 fino a quando non si presenta allrsquoingresso il valore 00 Se la sequenza egrave esatta il contatore continua a contare in avanti fino alla generazione dellrsquouscita (valore 11 del contatore) altrimenti si riporta al valore 100 ovvero Qc=1) Il segnale GN (Gate Not) egrave quello che abilita il conteggio Il sistema riamane stabile a 000 per una sequenza lunga a piacere di X1=0 e X2=0 e si sposta quando dopo 00 si ha 01 Come si evince dalla simulazione se la sequenza non egrave corretta o egrave interrotta il contatore si riporta sempre a 100
00 01 11 10
001 000 000
X1
000000 010 100 100001
000 100 100 011010
100 100 100 100011
000 100 100 100100
000 100 100 100101
000 100 100 100110
000 100 100 100111
0
0
0
1
0
0
0
0
X2
000
NB la tabella delle transizioni derivata della rete realizzata NON ha ovviamente condizioni di indifferenza
47
Progettare un contatore packed BCD updown a 8 bit (due digit)
48
Generazione di forme drsquoondabull Ersquo possibile generare forme drsquoonda periodiche mediante circuiti sincroni di periodo
sottomultiplo intero del clock
Esempio 1Divisore di frequenza per 2
D0k Q0k
CK D Q
CK Clock
Q
Esempio 2 generare una forma drsquoonda periodica con periodo 5T (ove T sia il periodo del clock) in cui in un semiperiodo 3T lrsquouscita sia alta e nellrsquoaltro semiperiodo 2T lrsquouscita sia bassa
Q0 Q1 Q2 CK
Cx5
C
B
A
01234
DecoderDemux
Clock
ZZ T
3T2T
3T
NB una rete logica egrave in grado di effettuare delle divisioni di frequenza e mai delle moltiplicazioni di frequenza (che si possono ottenere solo con circuiti analogici non lineari)
49
Di che circuito si tratta
D0k Q0k
CK D0 Q0
CKQ0
D0k Q0k
CK D1 Q1
CK
D0k Q0k
CK D2 Q2
CKClock
Clock
Q0
Q1
Q2
Ersquo un contatore binario ma non sincrono Infatti i vari FF NON utilizzano lo stesso clock e questo porta a un piccolo disallineamento sulle uscite Non egrave sintetizzabile come una rete sincrona e una sintesi formale sarebbe possibile solo trattando il circuito come asincrono ovvero ldquoaprendordquo i FF Sarebbe possibile trasformarlo in un contatore x6 mantenendo la stessa impostazione
Sintetizzare e simulare con Altera
NB il segnale di clock non egrave in comune
50
7493
51
Altera Contatore asincrono
Contatore asincrono
52
Simulazione timing
53
Come puograve essere utilizzato un FFD per catturare un impulso piugrave breve di un periodo
D2 Q2
Q2CKFFD Z
Clock
D1 Q1
Q1CKFFD
D0 Q00
Q0CKFFD
ldquo1rdquo CL
Lrsquoimpulso breve viene catturato dal FF 0 (purcheacute di larghezza sufficiente per la tecnologia del FF) - che quindi agisce come integratore ndash la cui uscita alimenta il monoimpulsore di tipo A Lrsquoattivazione del FF 1 resetta il FF 0 (supponendo che il segnale di CL sia ldquopositiverdquotruerdquo)
Ci puograve essere un problema se il CL agisce in modo asincrono
NB questo circuito e quello del lucido precedente evidenziano il fatto che nella realtagrave nessuna rete egrave solo sincrona ma bensigrave egrave pressocheacute sempre necessario utilizzare reti di natura diversa anche percheacute vi egrave sempre una interazione fra reti con clock diversi eo con segnali provenienti dal mondo esterno NON sincronizzati con il clock
Monoimpulsore di tipo A ldquorivistordquo
54
bull Uno shift register a sinistra (a destra) egrave un registro composto da FFD che ad ogni clock trasferisce il valore del FF a destra (a sinistra) di ciascun FF nel FF stesso Nel FF piugrave a destra (sinistra) viene immesso uno ldquo0rdquo Questi tipi di registri shift si chiamano ldquologicirdquo
Shift register (registri a traslazione o scorrimento)
D0kQ0k
CK DnQn
CK
D0kQ0k
CK Dn-1Qn-1
CK
D0kQ0k
CK Dn-2Qn-2
CK
D0kQ0k
CK D0Q0
CK
ldquo0rdquo
Shift register a sinistra
bull Anche per i registri a traslazione esistono diverse versioni con ingresso parallelo e uscita seriale con ingresso seriale e uscita parallela con reset con load etc etc
bull Si noti che uno shift register egrave anche un contatore Si immagini per esempio che dopo un reset siano inseriti degli uni a partire da destra Lo shift register si riempie progressivamente di uni e quindi la posizione in cui egrave arrivato lrsquouno indica il valore del conteggio in base a un codice ldquouno su nrdquo (un codice decodificato)
bull Spesso uno stesso registro puograve traslare a destra o a sinistra in funzione di una segnale di controllo Ovviamente questo si ottiene premettendo a ogni ingresso Di un MUX a due vie che preleva in funzione del segnale di controllo Qigrave+1 o Qigrave-1 Con questa configurazione lo shift register diventa anche un contatore avantiindietro
Registro a scorrimento (shift-register) a 3 bit
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
IN
OUT2OUT1OUT0
CK
CK
IN
A_RESET
OUT1
OUT2
OUT0
Registro a scorrimento (shift-register) a 3 bit
57
Esempio 74164 (serial In parallel OUT)
bull In questo registro a traslazione ad ogni fronte positivo del clock i dati sono traslati a destra (Q0 -gt Q1 Q1-gtQ2 etc) Il registro egrave dotato in un Master Reset (vero negato) e il dato inserito nel FF Q0 egrave dato dallrsquoAND dei due ingressi Dsa e Dsb
bull Si noti che lrsquooperazione di shift corrisponde aritmeticamente alle operazioni di divisione e moltiplicazione per 2 Si supponga che in Q0 vi sia il bit meno significativo e in Q7 il meno significativo
0 1 1 0 1 0 1 0
010101102 = 10810
Shift left =gt x2
Shift right =gt 2
101011002 = 21610
001010112 = 5910
NB nel dispositivo i bit sono posti in ordine invertito e quindi un shift left del numero corrisponde a uno shift right sul dispositivo
58
bull Esistono anche i registri a traslazione ldquoaritmeticirdquo In questi shift register a destra anzicheacute fare entrare nel FF piugrave a sinistra lo ldquo0rdquo viene immesso sempre ripetutamente il suo valore logico
Shift aritmetico
Q7 Q6 Q5 Q4 Q3 Q2 Q1 Q0
D7 D6 D5 D4 D3 D2 D1 D0
I LDCK Esempio
11001010SRA
11100101 interpretato in complemento a 2
001101102=5410
C2 C2
000110112=2710
bull Lo shift aritmetico a destra effettua una divisione per 2 mantenendo il segno
59
Rotazione
Nei computer egrave sovente necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register
D0kQ0k
CK DnQn
CK
D0kQ0k
CK Dn-1Qn-1
CK
D0kQ0k
CK Dn-2Qn-2
CK
D0kQ0k
CK D0Q0
CK
Molto spesso nei computer egrave necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register con direzione programmabile In questo caso su D0 ad esempio puograve essere avviato o Q1 o Qn
60
Contatori con shift register ndash Contatore retroazionato EX-OR
Q2Q0
Shift right 3 bitDQ1
110 111 011 101 010 001
Diagramma degli stati disgiunto
Uno shift register con n FF retroazionato con un EX-OR (scelta degli ingressi variabile) egrave un contatore NON binario che conta per 2n-1 (purcheacute presettato a un valore diverso da tutti zeri)
000
100
61
Contatore di Johnson (riempimento e svuotamento)
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
000-gt100-gt110-gt111-gt011-gt001-gt000-gtStati isolati 101-gt010-gt101gt1
Poicheacute configurazioni adiacenti del codice Johnson differiscono di un solo bit il contatore puograve essere utilizzato per generare forme drsquoonda prive di alee
62
Contatore ad anello con un solo 1 (ovvero che genera direttamente il codice 1su n)
FFDD Q
QR
RESET
FFDD Q
QR
RESET
FFDD Q
QPR
RESET
OUT3OUT1OUT0
CK
FFDD Q
QR
RESET
OUT2
0001-gt1000-gt0100-gt0010-gt0010n FF per contare per n (mentre con i contatori binari il numero dei FF egrave il log2m ove m egrave il primo intero maggiore o uguale a n)
63
Barrel shifter (rotore)Un barrel shifter egrave uno shift register in grado di traslare di ldquonrdquo posizioni in un solo clock il contenuto dei suoi FF In figura egrave riportato il barrel shifter della Altera Gli ingressi A-H in presenza dellrsquoattivazione del segnale LDST al primo fronte positivo del clock sono depositati nei FF Quando LDST egrave 0 ad ogni fronte positivo del clock i bit di uscita sono ruotati di n posizioni in senso antiorario (ovvero lrsquouscita H diventa la G la G diventa la Fhellipe lrsquouscita A diventa la H) ove n egrave il valore binario indicato dai segnali S0 S1 e S2
Si noti che il circuito in questione egrave di fatto un registro con 8 FF allrsquoingresso di ciascuno dei quali egrave previsto un MUX a 8 vie che pilotato dai segnali S0 S1 e S2 che seleziona uno degli 8 uscite del dispositivo La struttura interna puograve essere osservata ldquoclikkandordquo due volte sul dispositivo nello schema di Altera
64
Barrel shifter
6565
66
Simulazione timing
67
bull Utilizzando il sistema Altera progettare un orologio con secondi minuti ora partendo da un oscillatore a quarzo con frequenza 500 KHz
bull E se si volesse proseguire e realizzare anche un datario (giorno mese e anno )
bull Come potrebbe essere integrato con una sveglia Si ricordi che lrsquoorologio deve essere anche essere ldquopresettatordquo
bull Quali circuiti utilizzare per la visualizzazione
68
EPROM
X0nZ0m
y0kY0k
Clock
D0kQ0k
FFD0k
CK D0kQ0k CK
Reti sincrone con EPROM
Al posto delle EPROM si utilizzano ora dei PLA ovvero dispositivi nei quali si nei quali le funzioni combinatorie sono ottimizzate ma il principio egrave assolutamente il medesimo
69
Progettare con Altera una rete logica sincrona che utilizzando registri 374 ALU 74181 un contatore e altri dispositivi ritenuti necessari permetta di eseguire in sequenza la somma di due dati di 4 bit senza segno ingresso esegua il complemento a 2 inverta la parte bassa con la parte alta del risultato e infine moltiplichi il tutto logicamente per 2
La soluzione egrave sempre decomponibile in tre sottosistemi il controllo con la sua decodifica (unitagrave di controllo) il percorso dei dati con le unitagrave che li trasformano (datapath) e i registri di deposito e di ingresso dei dati
Questa egrave la struttura base di qualunque unitagrave centrale di qualunque computer
La differenza consiste solo nel fatto che anzicheacute avere una sequenza fissa di operazioni ne viene generata una volta a volta che dipende appunto dalla istruzione che deve essere eseguita Come si vedragrave approfonditamente nel corso di Calcolatori T del II anno (prof Neri e Mattoccia)
Arrivederci al corso di Calcolatori T del II anno (sapendo perfettamente le reti logiche helliphellip)
30
31
Contatori
A B C D Z
Circuiti senza ingresso (a parte il clock) nella versione piugrave semplice
D0 Q0
Q0CKFFD
MUX
1
0D1 Q1
Q1CKFFD
(Il clock egrave spesso sottinteso nei circuiti sincroni)
U0 U1
Esempio contatore binario x 4 con decodifica del 3
000 010 100 111
OUT
Q1 cambia stato quando Q0 egrave a 1 e passa a 0
CK
u1
u0
OUT (0) (1) (2) (0) (1) (2)(3) (3)
Contatore x 4 con decodifica del 3
33
Contatori binari in base non potenza di 2
A B C D E
000 001 010 011 100Contatore
binario per 5
D0 Q0
Q0CKFFD
MUX
1
0 1D1 Q1
Q1CKFFD
MUX
1
0D Q2
Q2CKFFD
Questo conta x8 ma per contare x5 arrivati a 4 bisogna ritornare a 0
34
D0 Q0
Q0CKFFD D1 Q1
Q1CKFFD
MUX
1
0 D2 Q2
Q2CKFFD
MUX
1
0
ABC
ldquo4rdquo
Contatore x 5
Decoder
La decodifica del 4 porta a zero lrsquouscita del decodificatore e quindi a 0 tutte le uscite degli AND rosa e al successivo fronte positivo del clock i tre FF campionano uno ldquo0rdquo
Per esercizio sintetizzare un contatore x 100 partendo dalla sintesi di un contatore decimale ovvero di un contatore x10 (da sintetizzare) Quanti FF per un contatore decimale I contatori decimali si trovano integrati in Altera
ldquo3rdquo
35
Contatori con ingressi di controllo
Ex Contatore integrato x 16 con Load e Enable
bull Il contatore conta per 16 (0-15) se il segnale EN egrave a 1 Allorchegrave il segnale LD va a 1 il dato presente sugli ingressi D egrave inserito nei 4 FF (lrsquoingresso puograve essere sincrono o asincrono) Nel caso precedente il decodificatore del ldquo3rdquo (uscita vera va portato) allrsquoingresso LD con tutti i Di a zero
bull In generale il contatore fornisce anche unrsquouscita ldquocarryrdquo che va a 1 quando il contatore raggiunge il valore FF Questa uscita puograve essere connessa allrsquoenable di un contatore a valle per ottenere un contatore per 256 cosigrave via (Progettarlo come esercizio)
EN
Q0 Q1 Q2 Q3CKLD
D0 D1 D2 D3
EN
Q0 Q1 Q2 Q3CK
CYLD
D0 D1 D2 D3
bull Esistono contatori UPDOWN nei quali un ingresso (UD) seleziona se il conteggio deve avvenire avanti o indietro Nel caso sia selezionata la modalitagrave ldquoindietrordquo il carry si attiva quando si raggiunge il valore ldquotutti zerirdquo
bull Esiste una molteplicitagrave di contatori ciascuno con le proprie specifiche peculiaritagrave con o senza RESET (che normalmente agisce in modo asincrono) UD con o senza LD etc etc
NB qualunque circuito sincrono (con sequenza non binaria) riconducibile al diagramma degli stati di un contatore egrave sempre un contatore
101 010 000 111 110 Contatore x 5 non binario
36
74163 contatore reale x 16 con Load Reset e Enable (T e P)I segnali di controllo sono sincroni ovvero agiscono sul fronte positivo del clock (rising edge)
74138 decoder 38 con uscite negate se G2A e G2B entrambi a zero e G1 a 1 Altrimenti tutte uscite alte
Direttorio Counter Glitch
Contatore binario x 8 e glitches
37
Glitch
Simulazione timingNB la presenza e la durata del glitch dipende dalle caratteristiche elettriche dei dispositivi
dalla loro tecnologia etc Nel caso dei dispositivi Altera dipende dal tipo di dispositivo sul quale egrave realizzato il circuito Analogamente la sensibilitagrave di eventuali ingressi di clock collegati allrsquouscita con il glitch dipende dalle caratteristiche del dispositivo Se ad esempio nel dispositivo Altera utilizzato si collega allrsquouscita Y6 il clock di un FFD non si ha commutazione del FF ma questo non egrave vero in assoluto
38
Cosa succede al contatore X5 progettato precedentemente se allrsquoaccensione non disponendo di un segnale di RESET i FF si portano in uno stato non facente parte del cicloNB La condizione allrsquoaccensione egrave del tutto casuale e dipende unicamente dalle condizioni elettriche
di realizzazione Ersquo impredicibileSupponiamo che i FF si portino al valore 110 (il numero 6 fuori dal ciclo) Analizziamo il comportamento
D0 Q0Q0CK
FFD D1 Q1Q1CK
FFD
MUX
1
0 D2 Q2Q2CK
FFD
MUX
1
0
ABC
ldquo4rdquo
000 001 010 011 100 110 111
In questo caso ci si riporta nella situazione di conteggio regolare (verificare con la tabella degli stati ) ma il comportamento in generale dipende dalla realizzazione e in altre realizzazione i due stati potrebbero essere separati dal ciclo principale che quindi non verrebbe mai raggiunto Ecco la funzione del RESET
39
Solo come esempio (da non utilizzare ) a scopo didattico vediamo la tabella delle transizioni di un contatore per 6 UpDown con comando di Reset I segnali di ingresso cambiano in modo asincrono ma hanno effetto in modo sincrono
Per compensare allrsquoaccensione
Sintetizzare e simulareCome dovrebbe essere modificato lo schema in Altera per permettere di
ldquopresettarerdquo in modo asincrono il contatore a un particolare valore di ingresso
00 01 11 10UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
111
110
000 101
000
101
y3 y2 y100 01 11 10
UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
000 000111
000 000 000 000110
000 101
000
000 000
101
y3 y2 y1
40
D0Q0
CKFFD
Clocky2
DEC
y3
y2
y1
ldquo1rdquo
ldquo2rdquo
ldquo3rdquo
ldquo4rdquo
1
0
UPDown
Sintesi di y2 in modo ldquodirettordquo
1
0
00 01 11 10UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
000 000111
000 000 000 000110
000 101
000
000 000
101
y3 y2 y1
41
Cassaforte hellipDisponendo di un contatore per 8 (ma anche per 16 etc) con reset sincrono e sempre abilitato al conteggio come potrei realizzare il circuito di apertura della cassaforte (sequenza X1X2 00-01-01-10) con modello Moore
Cx8RES
Q0 Q1 Q2 CK
RES= (ldquo0rdquoX1X2 + ldquo1rdquo X1X2 + ldquo2rdquo X1X2 + ldquo3rdquo X1 X2)Z = ldquo4rdquo (ldquo0rdquordquo1rdquordquo2rdquordquo3rdquordquo4rdquo sono le decodifiche binarie delle tre uscite del contatore)
Il contatore si resetta ogni volta che non si presenta lrsquoingresso giusto relativo al particolare stato Ilcontatore quindi si resetta e rimane resettato se non nelle condizioni espresse dalla funzione RESIl contatore arrivato a 4 (Z=1) si resetta comunque al successivo fronte del clock
Le reti sincrone si progettano sempre come combinazione di blocchi disponibili e logica ldquorandomrdquo
ABC
ldquo0rdquoldquo1rdquoldquo2rdquoldquo3rdquoldquo4rdquo
RLAND-OR
X1X2
RESZ
Cx8RES
Q0 Q1 Q2 CK
42
Contatori
EN
Q0 Q1 Q2 Q3CKCY
RESET
bull Attenzione Consideriamo il contatore di figura (questa volta con RESET asincrono) e supponiamo di utilizzarlo per contare per 5 (NB per il Reset si usa il ldquo5rdquo in questo casohellip glitch)
ABCD
ldquo5rdquo
ldquo1rdquo Percheacute questo schema egrave sbagliato
bull Percheacute presenta una corsa critica Nel momento in cui anche uno solo dei FF si resetta (e non tutti nello stesso istante) viene a mancare la configurazione ldquo4rdquo sul decoder e quindi alcuni FF potrebbero non fare in tempo a resettarsi E allora
EN
Q0 Q1 Q2 Q3CKCY
RESET
ABCD
ldquo5rdquo
ldquo1rdquo
RS
Y ldquo0rdquo
bull Cosigrave facendo il ldquo4rdquo attiva il SET e il FF NON si resetta fino a quando non egrave stato raggiunto la ldquo0rdquo NB lo schema ldquosbagliatordquo si puograve usare solo se si egrave certi della rapiditagrave di reset dei FF del contatore
bull Verificare con Altera
Sintesi cassaforte con moduli
Altera Cassaforte sincrona con moduli
Rete di controllo
Contatore con Reset asincrono e Load sincrono
43
NB In questo progetto la sintesi egrave stata condotta in modo ldquodirettordquo ovvero senza passare per la sintesi formale e utilizzando componenti disponibili e helliphellip materia grigia La sintesi dei circuiti sincroni si fa sempre e unicamente cosigrave
44
Simulazione funzionale (no timing)
NB I segnali di ingresso sono campionati SOLO sul fronte positivo del clock anche se si presentano asincroni Il segnale di uscita si attiva al clock successivo al riconoscimento della sequenza La posizione di ldquoriposordquo del contatore egrave il valore 4 I segnali Yi sono le decodifiche dei segnali di di ingresso X1 e X2
00 01 01 10
45
Simulazione timing
46
NB Si egrave scelto di utilizzare SOLO gli ingressi SINCRONI del contatore per semplicitagrave Il contatore rimane al valore 100 fino a quando non si presenta allrsquoingresso il valore 00 Se la sequenza egrave esatta il contatore continua a contare in avanti fino alla generazione dellrsquouscita (valore 11 del contatore) altrimenti si riporta al valore 100 ovvero Qc=1) Il segnale GN (Gate Not) egrave quello che abilita il conteggio Il sistema riamane stabile a 000 per una sequenza lunga a piacere di X1=0 e X2=0 e si sposta quando dopo 00 si ha 01 Come si evince dalla simulazione se la sequenza non egrave corretta o egrave interrotta il contatore si riporta sempre a 100
00 01 11 10
001 000 000
X1
000000 010 100 100001
000 100 100 011010
100 100 100 100011
000 100 100 100100
000 100 100 100101
000 100 100 100110
000 100 100 100111
0
0
0
1
0
0
0
0
X2
000
NB la tabella delle transizioni derivata della rete realizzata NON ha ovviamente condizioni di indifferenza
47
Progettare un contatore packed BCD updown a 8 bit (due digit)
48
Generazione di forme drsquoondabull Ersquo possibile generare forme drsquoonda periodiche mediante circuiti sincroni di periodo
sottomultiplo intero del clock
Esempio 1Divisore di frequenza per 2
D0k Q0k
CK D Q
CK Clock
Q
Esempio 2 generare una forma drsquoonda periodica con periodo 5T (ove T sia il periodo del clock) in cui in un semiperiodo 3T lrsquouscita sia alta e nellrsquoaltro semiperiodo 2T lrsquouscita sia bassa
Q0 Q1 Q2 CK
Cx5
C
B
A
01234
DecoderDemux
Clock
ZZ T
3T2T
3T
NB una rete logica egrave in grado di effettuare delle divisioni di frequenza e mai delle moltiplicazioni di frequenza (che si possono ottenere solo con circuiti analogici non lineari)
49
Di che circuito si tratta
D0k Q0k
CK D0 Q0
CKQ0
D0k Q0k
CK D1 Q1
CK
D0k Q0k
CK D2 Q2
CKClock
Clock
Q0
Q1
Q2
Ersquo un contatore binario ma non sincrono Infatti i vari FF NON utilizzano lo stesso clock e questo porta a un piccolo disallineamento sulle uscite Non egrave sintetizzabile come una rete sincrona e una sintesi formale sarebbe possibile solo trattando il circuito come asincrono ovvero ldquoaprendordquo i FF Sarebbe possibile trasformarlo in un contatore x6 mantenendo la stessa impostazione
Sintetizzare e simulare con Altera
NB il segnale di clock non egrave in comune
50
7493
51
Altera Contatore asincrono
Contatore asincrono
52
Simulazione timing
53
Come puograve essere utilizzato un FFD per catturare un impulso piugrave breve di un periodo
D2 Q2
Q2CKFFD Z
Clock
D1 Q1
Q1CKFFD
D0 Q00
Q0CKFFD
ldquo1rdquo CL
Lrsquoimpulso breve viene catturato dal FF 0 (purcheacute di larghezza sufficiente per la tecnologia del FF) - che quindi agisce come integratore ndash la cui uscita alimenta il monoimpulsore di tipo A Lrsquoattivazione del FF 1 resetta il FF 0 (supponendo che il segnale di CL sia ldquopositiverdquotruerdquo)
Ci puograve essere un problema se il CL agisce in modo asincrono
NB questo circuito e quello del lucido precedente evidenziano il fatto che nella realtagrave nessuna rete egrave solo sincrona ma bensigrave egrave pressocheacute sempre necessario utilizzare reti di natura diversa anche percheacute vi egrave sempre una interazione fra reti con clock diversi eo con segnali provenienti dal mondo esterno NON sincronizzati con il clock
Monoimpulsore di tipo A ldquorivistordquo
54
bull Uno shift register a sinistra (a destra) egrave un registro composto da FFD che ad ogni clock trasferisce il valore del FF a destra (a sinistra) di ciascun FF nel FF stesso Nel FF piugrave a destra (sinistra) viene immesso uno ldquo0rdquo Questi tipi di registri shift si chiamano ldquologicirdquo
Shift register (registri a traslazione o scorrimento)
D0kQ0k
CK DnQn
CK
D0kQ0k
CK Dn-1Qn-1
CK
D0kQ0k
CK Dn-2Qn-2
CK
D0kQ0k
CK D0Q0
CK
ldquo0rdquo
Shift register a sinistra
bull Anche per i registri a traslazione esistono diverse versioni con ingresso parallelo e uscita seriale con ingresso seriale e uscita parallela con reset con load etc etc
bull Si noti che uno shift register egrave anche un contatore Si immagini per esempio che dopo un reset siano inseriti degli uni a partire da destra Lo shift register si riempie progressivamente di uni e quindi la posizione in cui egrave arrivato lrsquouno indica il valore del conteggio in base a un codice ldquouno su nrdquo (un codice decodificato)
bull Spesso uno stesso registro puograve traslare a destra o a sinistra in funzione di una segnale di controllo Ovviamente questo si ottiene premettendo a ogni ingresso Di un MUX a due vie che preleva in funzione del segnale di controllo Qigrave+1 o Qigrave-1 Con questa configurazione lo shift register diventa anche un contatore avantiindietro
Registro a scorrimento (shift-register) a 3 bit
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
IN
OUT2OUT1OUT0
CK
CK
IN
A_RESET
OUT1
OUT2
OUT0
Registro a scorrimento (shift-register) a 3 bit
57
Esempio 74164 (serial In parallel OUT)
bull In questo registro a traslazione ad ogni fronte positivo del clock i dati sono traslati a destra (Q0 -gt Q1 Q1-gtQ2 etc) Il registro egrave dotato in un Master Reset (vero negato) e il dato inserito nel FF Q0 egrave dato dallrsquoAND dei due ingressi Dsa e Dsb
bull Si noti che lrsquooperazione di shift corrisponde aritmeticamente alle operazioni di divisione e moltiplicazione per 2 Si supponga che in Q0 vi sia il bit meno significativo e in Q7 il meno significativo
0 1 1 0 1 0 1 0
010101102 = 10810
Shift left =gt x2
Shift right =gt 2
101011002 = 21610
001010112 = 5910
NB nel dispositivo i bit sono posti in ordine invertito e quindi un shift left del numero corrisponde a uno shift right sul dispositivo
58
bull Esistono anche i registri a traslazione ldquoaritmeticirdquo In questi shift register a destra anzicheacute fare entrare nel FF piugrave a sinistra lo ldquo0rdquo viene immesso sempre ripetutamente il suo valore logico
Shift aritmetico
Q7 Q6 Q5 Q4 Q3 Q2 Q1 Q0
D7 D6 D5 D4 D3 D2 D1 D0
I LDCK Esempio
11001010SRA
11100101 interpretato in complemento a 2
001101102=5410
C2 C2
000110112=2710
bull Lo shift aritmetico a destra effettua una divisione per 2 mantenendo il segno
59
Rotazione
Nei computer egrave sovente necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register
D0kQ0k
CK DnQn
CK
D0kQ0k
CK Dn-1Qn-1
CK
D0kQ0k
CK Dn-2Qn-2
CK
D0kQ0k
CK D0Q0
CK
Molto spesso nei computer egrave necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register con direzione programmabile In questo caso su D0 ad esempio puograve essere avviato o Q1 o Qn
60
Contatori con shift register ndash Contatore retroazionato EX-OR
Q2Q0
Shift right 3 bitDQ1
110 111 011 101 010 001
Diagramma degli stati disgiunto
Uno shift register con n FF retroazionato con un EX-OR (scelta degli ingressi variabile) egrave un contatore NON binario che conta per 2n-1 (purcheacute presettato a un valore diverso da tutti zeri)
000
100
61
Contatore di Johnson (riempimento e svuotamento)
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
000-gt100-gt110-gt111-gt011-gt001-gt000-gtStati isolati 101-gt010-gt101gt1
Poicheacute configurazioni adiacenti del codice Johnson differiscono di un solo bit il contatore puograve essere utilizzato per generare forme drsquoonda prive di alee
62
Contatore ad anello con un solo 1 (ovvero che genera direttamente il codice 1su n)
FFDD Q
QR
RESET
FFDD Q
QR
RESET
FFDD Q
QPR
RESET
OUT3OUT1OUT0
CK
FFDD Q
QR
RESET
OUT2
0001-gt1000-gt0100-gt0010-gt0010n FF per contare per n (mentre con i contatori binari il numero dei FF egrave il log2m ove m egrave il primo intero maggiore o uguale a n)
63
Barrel shifter (rotore)Un barrel shifter egrave uno shift register in grado di traslare di ldquonrdquo posizioni in un solo clock il contenuto dei suoi FF In figura egrave riportato il barrel shifter della Altera Gli ingressi A-H in presenza dellrsquoattivazione del segnale LDST al primo fronte positivo del clock sono depositati nei FF Quando LDST egrave 0 ad ogni fronte positivo del clock i bit di uscita sono ruotati di n posizioni in senso antiorario (ovvero lrsquouscita H diventa la G la G diventa la Fhellipe lrsquouscita A diventa la H) ove n egrave il valore binario indicato dai segnali S0 S1 e S2
Si noti che il circuito in questione egrave di fatto un registro con 8 FF allrsquoingresso di ciascuno dei quali egrave previsto un MUX a 8 vie che pilotato dai segnali S0 S1 e S2 che seleziona uno degli 8 uscite del dispositivo La struttura interna puograve essere osservata ldquoclikkandordquo due volte sul dispositivo nello schema di Altera
64
Barrel shifter
6565
66
Simulazione timing
67
bull Utilizzando il sistema Altera progettare un orologio con secondi minuti ora partendo da un oscillatore a quarzo con frequenza 500 KHz
bull E se si volesse proseguire e realizzare anche un datario (giorno mese e anno )
bull Come potrebbe essere integrato con una sveglia Si ricordi che lrsquoorologio deve essere anche essere ldquopresettatordquo
bull Quali circuiti utilizzare per la visualizzazione
68
EPROM
X0nZ0m
y0kY0k
Clock
D0kQ0k
FFD0k
CK D0kQ0k CK
Reti sincrone con EPROM
Al posto delle EPROM si utilizzano ora dei PLA ovvero dispositivi nei quali si nei quali le funzioni combinatorie sono ottimizzate ma il principio egrave assolutamente il medesimo
69
Progettare con Altera una rete logica sincrona che utilizzando registri 374 ALU 74181 un contatore e altri dispositivi ritenuti necessari permetta di eseguire in sequenza la somma di due dati di 4 bit senza segno ingresso esegua il complemento a 2 inverta la parte bassa con la parte alta del risultato e infine moltiplichi il tutto logicamente per 2
La soluzione egrave sempre decomponibile in tre sottosistemi il controllo con la sua decodifica (unitagrave di controllo) il percorso dei dati con le unitagrave che li trasformano (datapath) e i registri di deposito e di ingresso dei dati
Questa egrave la struttura base di qualunque unitagrave centrale di qualunque computer
La differenza consiste solo nel fatto che anzicheacute avere una sequenza fissa di operazioni ne viene generata una volta a volta che dipende appunto dalla istruzione che deve essere eseguita Come si vedragrave approfonditamente nel corso di Calcolatori T del II anno (prof Neri e Mattoccia)
Arrivederci al corso di Calcolatori T del II anno (sapendo perfettamente le reti logiche helliphellip)
31
Contatori
A B C D Z
Circuiti senza ingresso (a parte il clock) nella versione piugrave semplice
D0 Q0
Q0CKFFD
MUX
1
0D1 Q1
Q1CKFFD
(Il clock egrave spesso sottinteso nei circuiti sincroni)
U0 U1
Esempio contatore binario x 4 con decodifica del 3
000 010 100 111
OUT
Q1 cambia stato quando Q0 egrave a 1 e passa a 0
CK
u1
u0
OUT (0) (1) (2) (0) (1) (2)(3) (3)
Contatore x 4 con decodifica del 3
33
Contatori binari in base non potenza di 2
A B C D E
000 001 010 011 100Contatore
binario per 5
D0 Q0
Q0CKFFD
MUX
1
0 1D1 Q1
Q1CKFFD
MUX
1
0D Q2
Q2CKFFD
Questo conta x8 ma per contare x5 arrivati a 4 bisogna ritornare a 0
34
D0 Q0
Q0CKFFD D1 Q1
Q1CKFFD
MUX
1
0 D2 Q2
Q2CKFFD
MUX
1
0
ABC
ldquo4rdquo
Contatore x 5
Decoder
La decodifica del 4 porta a zero lrsquouscita del decodificatore e quindi a 0 tutte le uscite degli AND rosa e al successivo fronte positivo del clock i tre FF campionano uno ldquo0rdquo
Per esercizio sintetizzare un contatore x 100 partendo dalla sintesi di un contatore decimale ovvero di un contatore x10 (da sintetizzare) Quanti FF per un contatore decimale I contatori decimali si trovano integrati in Altera
ldquo3rdquo
35
Contatori con ingressi di controllo
Ex Contatore integrato x 16 con Load e Enable
bull Il contatore conta per 16 (0-15) se il segnale EN egrave a 1 Allorchegrave il segnale LD va a 1 il dato presente sugli ingressi D egrave inserito nei 4 FF (lrsquoingresso puograve essere sincrono o asincrono) Nel caso precedente il decodificatore del ldquo3rdquo (uscita vera va portato) allrsquoingresso LD con tutti i Di a zero
bull In generale il contatore fornisce anche unrsquouscita ldquocarryrdquo che va a 1 quando il contatore raggiunge il valore FF Questa uscita puograve essere connessa allrsquoenable di un contatore a valle per ottenere un contatore per 256 cosigrave via (Progettarlo come esercizio)
EN
Q0 Q1 Q2 Q3CKLD
D0 D1 D2 D3
EN
Q0 Q1 Q2 Q3CK
CYLD
D0 D1 D2 D3
bull Esistono contatori UPDOWN nei quali un ingresso (UD) seleziona se il conteggio deve avvenire avanti o indietro Nel caso sia selezionata la modalitagrave ldquoindietrordquo il carry si attiva quando si raggiunge il valore ldquotutti zerirdquo
bull Esiste una molteplicitagrave di contatori ciascuno con le proprie specifiche peculiaritagrave con o senza RESET (che normalmente agisce in modo asincrono) UD con o senza LD etc etc
NB qualunque circuito sincrono (con sequenza non binaria) riconducibile al diagramma degli stati di un contatore egrave sempre un contatore
101 010 000 111 110 Contatore x 5 non binario
36
74163 contatore reale x 16 con Load Reset e Enable (T e P)I segnali di controllo sono sincroni ovvero agiscono sul fronte positivo del clock (rising edge)
74138 decoder 38 con uscite negate se G2A e G2B entrambi a zero e G1 a 1 Altrimenti tutte uscite alte
Direttorio Counter Glitch
Contatore binario x 8 e glitches
37
Glitch
Simulazione timingNB la presenza e la durata del glitch dipende dalle caratteristiche elettriche dei dispositivi
dalla loro tecnologia etc Nel caso dei dispositivi Altera dipende dal tipo di dispositivo sul quale egrave realizzato il circuito Analogamente la sensibilitagrave di eventuali ingressi di clock collegati allrsquouscita con il glitch dipende dalle caratteristiche del dispositivo Se ad esempio nel dispositivo Altera utilizzato si collega allrsquouscita Y6 il clock di un FFD non si ha commutazione del FF ma questo non egrave vero in assoluto
38
Cosa succede al contatore X5 progettato precedentemente se allrsquoaccensione non disponendo di un segnale di RESET i FF si portano in uno stato non facente parte del cicloNB La condizione allrsquoaccensione egrave del tutto casuale e dipende unicamente dalle condizioni elettriche
di realizzazione Ersquo impredicibileSupponiamo che i FF si portino al valore 110 (il numero 6 fuori dal ciclo) Analizziamo il comportamento
D0 Q0Q0CK
FFD D1 Q1Q1CK
FFD
MUX
1
0 D2 Q2Q2CK
FFD
MUX
1
0
ABC
ldquo4rdquo
000 001 010 011 100 110 111
In questo caso ci si riporta nella situazione di conteggio regolare (verificare con la tabella degli stati ) ma il comportamento in generale dipende dalla realizzazione e in altre realizzazione i due stati potrebbero essere separati dal ciclo principale che quindi non verrebbe mai raggiunto Ecco la funzione del RESET
39
Solo come esempio (da non utilizzare ) a scopo didattico vediamo la tabella delle transizioni di un contatore per 6 UpDown con comando di Reset I segnali di ingresso cambiano in modo asincrono ma hanno effetto in modo sincrono
Per compensare allrsquoaccensione
Sintetizzare e simulareCome dovrebbe essere modificato lo schema in Altera per permettere di
ldquopresettarerdquo in modo asincrono il contatore a un particolare valore di ingresso
00 01 11 10UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
111
110
000 101
000
101
y3 y2 y100 01 11 10
UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
000 000111
000 000 000 000110
000 101
000
000 000
101
y3 y2 y1
40
D0Q0
CKFFD
Clocky2
DEC
y3
y2
y1
ldquo1rdquo
ldquo2rdquo
ldquo3rdquo
ldquo4rdquo
1
0
UPDown
Sintesi di y2 in modo ldquodirettordquo
1
0
00 01 11 10UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
000 000111
000 000 000 000110
000 101
000
000 000
101
y3 y2 y1
41
Cassaforte hellipDisponendo di un contatore per 8 (ma anche per 16 etc) con reset sincrono e sempre abilitato al conteggio come potrei realizzare il circuito di apertura della cassaforte (sequenza X1X2 00-01-01-10) con modello Moore
Cx8RES
Q0 Q1 Q2 CK
RES= (ldquo0rdquoX1X2 + ldquo1rdquo X1X2 + ldquo2rdquo X1X2 + ldquo3rdquo X1 X2)Z = ldquo4rdquo (ldquo0rdquordquo1rdquordquo2rdquordquo3rdquordquo4rdquo sono le decodifiche binarie delle tre uscite del contatore)
Il contatore si resetta ogni volta che non si presenta lrsquoingresso giusto relativo al particolare stato Ilcontatore quindi si resetta e rimane resettato se non nelle condizioni espresse dalla funzione RESIl contatore arrivato a 4 (Z=1) si resetta comunque al successivo fronte del clock
Le reti sincrone si progettano sempre come combinazione di blocchi disponibili e logica ldquorandomrdquo
ABC
ldquo0rdquoldquo1rdquoldquo2rdquoldquo3rdquoldquo4rdquo
RLAND-OR
X1X2
RESZ
Cx8RES
Q0 Q1 Q2 CK
42
Contatori
EN
Q0 Q1 Q2 Q3CKCY
RESET
bull Attenzione Consideriamo il contatore di figura (questa volta con RESET asincrono) e supponiamo di utilizzarlo per contare per 5 (NB per il Reset si usa il ldquo5rdquo in questo casohellip glitch)
ABCD
ldquo5rdquo
ldquo1rdquo Percheacute questo schema egrave sbagliato
bull Percheacute presenta una corsa critica Nel momento in cui anche uno solo dei FF si resetta (e non tutti nello stesso istante) viene a mancare la configurazione ldquo4rdquo sul decoder e quindi alcuni FF potrebbero non fare in tempo a resettarsi E allora
EN
Q0 Q1 Q2 Q3CKCY
RESET
ABCD
ldquo5rdquo
ldquo1rdquo
RS
Y ldquo0rdquo
bull Cosigrave facendo il ldquo4rdquo attiva il SET e il FF NON si resetta fino a quando non egrave stato raggiunto la ldquo0rdquo NB lo schema ldquosbagliatordquo si puograve usare solo se si egrave certi della rapiditagrave di reset dei FF del contatore
bull Verificare con Altera
Sintesi cassaforte con moduli
Altera Cassaforte sincrona con moduli
Rete di controllo
Contatore con Reset asincrono e Load sincrono
43
NB In questo progetto la sintesi egrave stata condotta in modo ldquodirettordquo ovvero senza passare per la sintesi formale e utilizzando componenti disponibili e helliphellip materia grigia La sintesi dei circuiti sincroni si fa sempre e unicamente cosigrave
44
Simulazione funzionale (no timing)
NB I segnali di ingresso sono campionati SOLO sul fronte positivo del clock anche se si presentano asincroni Il segnale di uscita si attiva al clock successivo al riconoscimento della sequenza La posizione di ldquoriposordquo del contatore egrave il valore 4 I segnali Yi sono le decodifiche dei segnali di di ingresso X1 e X2
00 01 01 10
45
Simulazione timing
46
NB Si egrave scelto di utilizzare SOLO gli ingressi SINCRONI del contatore per semplicitagrave Il contatore rimane al valore 100 fino a quando non si presenta allrsquoingresso il valore 00 Se la sequenza egrave esatta il contatore continua a contare in avanti fino alla generazione dellrsquouscita (valore 11 del contatore) altrimenti si riporta al valore 100 ovvero Qc=1) Il segnale GN (Gate Not) egrave quello che abilita il conteggio Il sistema riamane stabile a 000 per una sequenza lunga a piacere di X1=0 e X2=0 e si sposta quando dopo 00 si ha 01 Come si evince dalla simulazione se la sequenza non egrave corretta o egrave interrotta il contatore si riporta sempre a 100
00 01 11 10
001 000 000
X1
000000 010 100 100001
000 100 100 011010
100 100 100 100011
000 100 100 100100
000 100 100 100101
000 100 100 100110
000 100 100 100111
0
0
0
1
0
0
0
0
X2
000
NB la tabella delle transizioni derivata della rete realizzata NON ha ovviamente condizioni di indifferenza
47
Progettare un contatore packed BCD updown a 8 bit (due digit)
48
Generazione di forme drsquoondabull Ersquo possibile generare forme drsquoonda periodiche mediante circuiti sincroni di periodo
sottomultiplo intero del clock
Esempio 1Divisore di frequenza per 2
D0k Q0k
CK D Q
CK Clock
Q
Esempio 2 generare una forma drsquoonda periodica con periodo 5T (ove T sia il periodo del clock) in cui in un semiperiodo 3T lrsquouscita sia alta e nellrsquoaltro semiperiodo 2T lrsquouscita sia bassa
Q0 Q1 Q2 CK
Cx5
C
B
A
01234
DecoderDemux
Clock
ZZ T
3T2T
3T
NB una rete logica egrave in grado di effettuare delle divisioni di frequenza e mai delle moltiplicazioni di frequenza (che si possono ottenere solo con circuiti analogici non lineari)
49
Di che circuito si tratta
D0k Q0k
CK D0 Q0
CKQ0
D0k Q0k
CK D1 Q1
CK
D0k Q0k
CK D2 Q2
CKClock
Clock
Q0
Q1
Q2
Ersquo un contatore binario ma non sincrono Infatti i vari FF NON utilizzano lo stesso clock e questo porta a un piccolo disallineamento sulle uscite Non egrave sintetizzabile come una rete sincrona e una sintesi formale sarebbe possibile solo trattando il circuito come asincrono ovvero ldquoaprendordquo i FF Sarebbe possibile trasformarlo in un contatore x6 mantenendo la stessa impostazione
Sintetizzare e simulare con Altera
NB il segnale di clock non egrave in comune
50
7493
51
Altera Contatore asincrono
Contatore asincrono
52
Simulazione timing
53
Come puograve essere utilizzato un FFD per catturare un impulso piugrave breve di un periodo
D2 Q2
Q2CKFFD Z
Clock
D1 Q1
Q1CKFFD
D0 Q00
Q0CKFFD
ldquo1rdquo CL
Lrsquoimpulso breve viene catturato dal FF 0 (purcheacute di larghezza sufficiente per la tecnologia del FF) - che quindi agisce come integratore ndash la cui uscita alimenta il monoimpulsore di tipo A Lrsquoattivazione del FF 1 resetta il FF 0 (supponendo che il segnale di CL sia ldquopositiverdquotruerdquo)
Ci puograve essere un problema se il CL agisce in modo asincrono
NB questo circuito e quello del lucido precedente evidenziano il fatto che nella realtagrave nessuna rete egrave solo sincrona ma bensigrave egrave pressocheacute sempre necessario utilizzare reti di natura diversa anche percheacute vi egrave sempre una interazione fra reti con clock diversi eo con segnali provenienti dal mondo esterno NON sincronizzati con il clock
Monoimpulsore di tipo A ldquorivistordquo
54
bull Uno shift register a sinistra (a destra) egrave un registro composto da FFD che ad ogni clock trasferisce il valore del FF a destra (a sinistra) di ciascun FF nel FF stesso Nel FF piugrave a destra (sinistra) viene immesso uno ldquo0rdquo Questi tipi di registri shift si chiamano ldquologicirdquo
Shift register (registri a traslazione o scorrimento)
D0kQ0k
CK DnQn
CK
D0kQ0k
CK Dn-1Qn-1
CK
D0kQ0k
CK Dn-2Qn-2
CK
D0kQ0k
CK D0Q0
CK
ldquo0rdquo
Shift register a sinistra
bull Anche per i registri a traslazione esistono diverse versioni con ingresso parallelo e uscita seriale con ingresso seriale e uscita parallela con reset con load etc etc
bull Si noti che uno shift register egrave anche un contatore Si immagini per esempio che dopo un reset siano inseriti degli uni a partire da destra Lo shift register si riempie progressivamente di uni e quindi la posizione in cui egrave arrivato lrsquouno indica il valore del conteggio in base a un codice ldquouno su nrdquo (un codice decodificato)
bull Spesso uno stesso registro puograve traslare a destra o a sinistra in funzione di una segnale di controllo Ovviamente questo si ottiene premettendo a ogni ingresso Di un MUX a due vie che preleva in funzione del segnale di controllo Qigrave+1 o Qigrave-1 Con questa configurazione lo shift register diventa anche un contatore avantiindietro
Registro a scorrimento (shift-register) a 3 bit
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
IN
OUT2OUT1OUT0
CK
CK
IN
A_RESET
OUT1
OUT2
OUT0
Registro a scorrimento (shift-register) a 3 bit
57
Esempio 74164 (serial In parallel OUT)
bull In questo registro a traslazione ad ogni fronte positivo del clock i dati sono traslati a destra (Q0 -gt Q1 Q1-gtQ2 etc) Il registro egrave dotato in un Master Reset (vero negato) e il dato inserito nel FF Q0 egrave dato dallrsquoAND dei due ingressi Dsa e Dsb
bull Si noti che lrsquooperazione di shift corrisponde aritmeticamente alle operazioni di divisione e moltiplicazione per 2 Si supponga che in Q0 vi sia il bit meno significativo e in Q7 il meno significativo
0 1 1 0 1 0 1 0
010101102 = 10810
Shift left =gt x2
Shift right =gt 2
101011002 = 21610
001010112 = 5910
NB nel dispositivo i bit sono posti in ordine invertito e quindi un shift left del numero corrisponde a uno shift right sul dispositivo
58
bull Esistono anche i registri a traslazione ldquoaritmeticirdquo In questi shift register a destra anzicheacute fare entrare nel FF piugrave a sinistra lo ldquo0rdquo viene immesso sempre ripetutamente il suo valore logico
Shift aritmetico
Q7 Q6 Q5 Q4 Q3 Q2 Q1 Q0
D7 D6 D5 D4 D3 D2 D1 D0
I LDCK Esempio
11001010SRA
11100101 interpretato in complemento a 2
001101102=5410
C2 C2
000110112=2710
bull Lo shift aritmetico a destra effettua una divisione per 2 mantenendo il segno
59
Rotazione
Nei computer egrave sovente necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register
D0kQ0k
CK DnQn
CK
D0kQ0k
CK Dn-1Qn-1
CK
D0kQ0k
CK Dn-2Qn-2
CK
D0kQ0k
CK D0Q0
CK
Molto spesso nei computer egrave necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register con direzione programmabile In questo caso su D0 ad esempio puograve essere avviato o Q1 o Qn
60
Contatori con shift register ndash Contatore retroazionato EX-OR
Q2Q0
Shift right 3 bitDQ1
110 111 011 101 010 001
Diagramma degli stati disgiunto
Uno shift register con n FF retroazionato con un EX-OR (scelta degli ingressi variabile) egrave un contatore NON binario che conta per 2n-1 (purcheacute presettato a un valore diverso da tutti zeri)
000
100
61
Contatore di Johnson (riempimento e svuotamento)
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
000-gt100-gt110-gt111-gt011-gt001-gt000-gtStati isolati 101-gt010-gt101gt1
Poicheacute configurazioni adiacenti del codice Johnson differiscono di un solo bit il contatore puograve essere utilizzato per generare forme drsquoonda prive di alee
62
Contatore ad anello con un solo 1 (ovvero che genera direttamente il codice 1su n)
FFDD Q
QR
RESET
FFDD Q
QR
RESET
FFDD Q
QPR
RESET
OUT3OUT1OUT0
CK
FFDD Q
QR
RESET
OUT2
0001-gt1000-gt0100-gt0010-gt0010n FF per contare per n (mentre con i contatori binari il numero dei FF egrave il log2m ove m egrave il primo intero maggiore o uguale a n)
63
Barrel shifter (rotore)Un barrel shifter egrave uno shift register in grado di traslare di ldquonrdquo posizioni in un solo clock il contenuto dei suoi FF In figura egrave riportato il barrel shifter della Altera Gli ingressi A-H in presenza dellrsquoattivazione del segnale LDST al primo fronte positivo del clock sono depositati nei FF Quando LDST egrave 0 ad ogni fronte positivo del clock i bit di uscita sono ruotati di n posizioni in senso antiorario (ovvero lrsquouscita H diventa la G la G diventa la Fhellipe lrsquouscita A diventa la H) ove n egrave il valore binario indicato dai segnali S0 S1 e S2
Si noti che il circuito in questione egrave di fatto un registro con 8 FF allrsquoingresso di ciascuno dei quali egrave previsto un MUX a 8 vie che pilotato dai segnali S0 S1 e S2 che seleziona uno degli 8 uscite del dispositivo La struttura interna puograve essere osservata ldquoclikkandordquo due volte sul dispositivo nello schema di Altera
64
Barrel shifter
6565
66
Simulazione timing
67
bull Utilizzando il sistema Altera progettare un orologio con secondi minuti ora partendo da un oscillatore a quarzo con frequenza 500 KHz
bull E se si volesse proseguire e realizzare anche un datario (giorno mese e anno )
bull Come potrebbe essere integrato con una sveglia Si ricordi che lrsquoorologio deve essere anche essere ldquopresettatordquo
bull Quali circuiti utilizzare per la visualizzazione
68
EPROM
X0nZ0m
y0kY0k
Clock
D0kQ0k
FFD0k
CK D0kQ0k CK
Reti sincrone con EPROM
Al posto delle EPROM si utilizzano ora dei PLA ovvero dispositivi nei quali si nei quali le funzioni combinatorie sono ottimizzate ma il principio egrave assolutamente il medesimo
69
Progettare con Altera una rete logica sincrona che utilizzando registri 374 ALU 74181 un contatore e altri dispositivi ritenuti necessari permetta di eseguire in sequenza la somma di due dati di 4 bit senza segno ingresso esegua il complemento a 2 inverta la parte bassa con la parte alta del risultato e infine moltiplichi il tutto logicamente per 2
La soluzione egrave sempre decomponibile in tre sottosistemi il controllo con la sua decodifica (unitagrave di controllo) il percorso dei dati con le unitagrave che li trasformano (datapath) e i registri di deposito e di ingresso dei dati
Questa egrave la struttura base di qualunque unitagrave centrale di qualunque computer
La differenza consiste solo nel fatto che anzicheacute avere una sequenza fissa di operazioni ne viene generata una volta a volta che dipende appunto dalla istruzione che deve essere eseguita Come si vedragrave approfonditamente nel corso di Calcolatori T del II anno (prof Neri e Mattoccia)
Arrivederci al corso di Calcolatori T del II anno (sapendo perfettamente le reti logiche helliphellip)
CK
u1
u0
OUT (0) (1) (2) (0) (1) (2)(3) (3)
Contatore x 4 con decodifica del 3
33
Contatori binari in base non potenza di 2
A B C D E
000 001 010 011 100Contatore
binario per 5
D0 Q0
Q0CKFFD
MUX
1
0 1D1 Q1
Q1CKFFD
MUX
1
0D Q2
Q2CKFFD
Questo conta x8 ma per contare x5 arrivati a 4 bisogna ritornare a 0
34
D0 Q0
Q0CKFFD D1 Q1
Q1CKFFD
MUX
1
0 D2 Q2
Q2CKFFD
MUX
1
0
ABC
ldquo4rdquo
Contatore x 5
Decoder
La decodifica del 4 porta a zero lrsquouscita del decodificatore e quindi a 0 tutte le uscite degli AND rosa e al successivo fronte positivo del clock i tre FF campionano uno ldquo0rdquo
Per esercizio sintetizzare un contatore x 100 partendo dalla sintesi di un contatore decimale ovvero di un contatore x10 (da sintetizzare) Quanti FF per un contatore decimale I contatori decimali si trovano integrati in Altera
ldquo3rdquo
35
Contatori con ingressi di controllo
Ex Contatore integrato x 16 con Load e Enable
bull Il contatore conta per 16 (0-15) se il segnale EN egrave a 1 Allorchegrave il segnale LD va a 1 il dato presente sugli ingressi D egrave inserito nei 4 FF (lrsquoingresso puograve essere sincrono o asincrono) Nel caso precedente il decodificatore del ldquo3rdquo (uscita vera va portato) allrsquoingresso LD con tutti i Di a zero
bull In generale il contatore fornisce anche unrsquouscita ldquocarryrdquo che va a 1 quando il contatore raggiunge il valore FF Questa uscita puograve essere connessa allrsquoenable di un contatore a valle per ottenere un contatore per 256 cosigrave via (Progettarlo come esercizio)
EN
Q0 Q1 Q2 Q3CKLD
D0 D1 D2 D3
EN
Q0 Q1 Q2 Q3CK
CYLD
D0 D1 D2 D3
bull Esistono contatori UPDOWN nei quali un ingresso (UD) seleziona se il conteggio deve avvenire avanti o indietro Nel caso sia selezionata la modalitagrave ldquoindietrordquo il carry si attiva quando si raggiunge il valore ldquotutti zerirdquo
bull Esiste una molteplicitagrave di contatori ciascuno con le proprie specifiche peculiaritagrave con o senza RESET (che normalmente agisce in modo asincrono) UD con o senza LD etc etc
NB qualunque circuito sincrono (con sequenza non binaria) riconducibile al diagramma degli stati di un contatore egrave sempre un contatore
101 010 000 111 110 Contatore x 5 non binario
36
74163 contatore reale x 16 con Load Reset e Enable (T e P)I segnali di controllo sono sincroni ovvero agiscono sul fronte positivo del clock (rising edge)
74138 decoder 38 con uscite negate se G2A e G2B entrambi a zero e G1 a 1 Altrimenti tutte uscite alte
Direttorio Counter Glitch
Contatore binario x 8 e glitches
37
Glitch
Simulazione timingNB la presenza e la durata del glitch dipende dalle caratteristiche elettriche dei dispositivi
dalla loro tecnologia etc Nel caso dei dispositivi Altera dipende dal tipo di dispositivo sul quale egrave realizzato il circuito Analogamente la sensibilitagrave di eventuali ingressi di clock collegati allrsquouscita con il glitch dipende dalle caratteristiche del dispositivo Se ad esempio nel dispositivo Altera utilizzato si collega allrsquouscita Y6 il clock di un FFD non si ha commutazione del FF ma questo non egrave vero in assoluto
38
Cosa succede al contatore X5 progettato precedentemente se allrsquoaccensione non disponendo di un segnale di RESET i FF si portano in uno stato non facente parte del cicloNB La condizione allrsquoaccensione egrave del tutto casuale e dipende unicamente dalle condizioni elettriche
di realizzazione Ersquo impredicibileSupponiamo che i FF si portino al valore 110 (il numero 6 fuori dal ciclo) Analizziamo il comportamento
D0 Q0Q0CK
FFD D1 Q1Q1CK
FFD
MUX
1
0 D2 Q2Q2CK
FFD
MUX
1
0
ABC
ldquo4rdquo
000 001 010 011 100 110 111
In questo caso ci si riporta nella situazione di conteggio regolare (verificare con la tabella degli stati ) ma il comportamento in generale dipende dalla realizzazione e in altre realizzazione i due stati potrebbero essere separati dal ciclo principale che quindi non verrebbe mai raggiunto Ecco la funzione del RESET
39
Solo come esempio (da non utilizzare ) a scopo didattico vediamo la tabella delle transizioni di un contatore per 6 UpDown con comando di Reset I segnali di ingresso cambiano in modo asincrono ma hanno effetto in modo sincrono
Per compensare allrsquoaccensione
Sintetizzare e simulareCome dovrebbe essere modificato lo schema in Altera per permettere di
ldquopresettarerdquo in modo asincrono il contatore a un particolare valore di ingresso
00 01 11 10UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
111
110
000 101
000
101
y3 y2 y100 01 11 10
UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
000 000111
000 000 000 000110
000 101
000
000 000
101
y3 y2 y1
40
D0Q0
CKFFD
Clocky2
DEC
y3
y2
y1
ldquo1rdquo
ldquo2rdquo
ldquo3rdquo
ldquo4rdquo
1
0
UPDown
Sintesi di y2 in modo ldquodirettordquo
1
0
00 01 11 10UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
000 000111
000 000 000 000110
000 101
000
000 000
101
y3 y2 y1
41
Cassaforte hellipDisponendo di un contatore per 8 (ma anche per 16 etc) con reset sincrono e sempre abilitato al conteggio come potrei realizzare il circuito di apertura della cassaforte (sequenza X1X2 00-01-01-10) con modello Moore
Cx8RES
Q0 Q1 Q2 CK
RES= (ldquo0rdquoX1X2 + ldquo1rdquo X1X2 + ldquo2rdquo X1X2 + ldquo3rdquo X1 X2)Z = ldquo4rdquo (ldquo0rdquordquo1rdquordquo2rdquordquo3rdquordquo4rdquo sono le decodifiche binarie delle tre uscite del contatore)
Il contatore si resetta ogni volta che non si presenta lrsquoingresso giusto relativo al particolare stato Ilcontatore quindi si resetta e rimane resettato se non nelle condizioni espresse dalla funzione RESIl contatore arrivato a 4 (Z=1) si resetta comunque al successivo fronte del clock
Le reti sincrone si progettano sempre come combinazione di blocchi disponibili e logica ldquorandomrdquo
ABC
ldquo0rdquoldquo1rdquoldquo2rdquoldquo3rdquoldquo4rdquo
RLAND-OR
X1X2
RESZ
Cx8RES
Q0 Q1 Q2 CK
42
Contatori
EN
Q0 Q1 Q2 Q3CKCY
RESET
bull Attenzione Consideriamo il contatore di figura (questa volta con RESET asincrono) e supponiamo di utilizzarlo per contare per 5 (NB per il Reset si usa il ldquo5rdquo in questo casohellip glitch)
ABCD
ldquo5rdquo
ldquo1rdquo Percheacute questo schema egrave sbagliato
bull Percheacute presenta una corsa critica Nel momento in cui anche uno solo dei FF si resetta (e non tutti nello stesso istante) viene a mancare la configurazione ldquo4rdquo sul decoder e quindi alcuni FF potrebbero non fare in tempo a resettarsi E allora
EN
Q0 Q1 Q2 Q3CKCY
RESET
ABCD
ldquo5rdquo
ldquo1rdquo
RS
Y ldquo0rdquo
bull Cosigrave facendo il ldquo4rdquo attiva il SET e il FF NON si resetta fino a quando non egrave stato raggiunto la ldquo0rdquo NB lo schema ldquosbagliatordquo si puograve usare solo se si egrave certi della rapiditagrave di reset dei FF del contatore
bull Verificare con Altera
Sintesi cassaforte con moduli
Altera Cassaforte sincrona con moduli
Rete di controllo
Contatore con Reset asincrono e Load sincrono
43
NB In questo progetto la sintesi egrave stata condotta in modo ldquodirettordquo ovvero senza passare per la sintesi formale e utilizzando componenti disponibili e helliphellip materia grigia La sintesi dei circuiti sincroni si fa sempre e unicamente cosigrave
44
Simulazione funzionale (no timing)
NB I segnali di ingresso sono campionati SOLO sul fronte positivo del clock anche se si presentano asincroni Il segnale di uscita si attiva al clock successivo al riconoscimento della sequenza La posizione di ldquoriposordquo del contatore egrave il valore 4 I segnali Yi sono le decodifiche dei segnali di di ingresso X1 e X2
00 01 01 10
45
Simulazione timing
46
NB Si egrave scelto di utilizzare SOLO gli ingressi SINCRONI del contatore per semplicitagrave Il contatore rimane al valore 100 fino a quando non si presenta allrsquoingresso il valore 00 Se la sequenza egrave esatta il contatore continua a contare in avanti fino alla generazione dellrsquouscita (valore 11 del contatore) altrimenti si riporta al valore 100 ovvero Qc=1) Il segnale GN (Gate Not) egrave quello che abilita il conteggio Il sistema riamane stabile a 000 per una sequenza lunga a piacere di X1=0 e X2=0 e si sposta quando dopo 00 si ha 01 Come si evince dalla simulazione se la sequenza non egrave corretta o egrave interrotta il contatore si riporta sempre a 100
00 01 11 10
001 000 000
X1
000000 010 100 100001
000 100 100 011010
100 100 100 100011
000 100 100 100100
000 100 100 100101
000 100 100 100110
000 100 100 100111
0
0
0
1
0
0
0
0
X2
000
NB la tabella delle transizioni derivata della rete realizzata NON ha ovviamente condizioni di indifferenza
47
Progettare un contatore packed BCD updown a 8 bit (due digit)
48
Generazione di forme drsquoondabull Ersquo possibile generare forme drsquoonda periodiche mediante circuiti sincroni di periodo
sottomultiplo intero del clock
Esempio 1Divisore di frequenza per 2
D0k Q0k
CK D Q
CK Clock
Q
Esempio 2 generare una forma drsquoonda periodica con periodo 5T (ove T sia il periodo del clock) in cui in un semiperiodo 3T lrsquouscita sia alta e nellrsquoaltro semiperiodo 2T lrsquouscita sia bassa
Q0 Q1 Q2 CK
Cx5
C
B
A
01234
DecoderDemux
Clock
ZZ T
3T2T
3T
NB una rete logica egrave in grado di effettuare delle divisioni di frequenza e mai delle moltiplicazioni di frequenza (che si possono ottenere solo con circuiti analogici non lineari)
49
Di che circuito si tratta
D0k Q0k
CK D0 Q0
CKQ0
D0k Q0k
CK D1 Q1
CK
D0k Q0k
CK D2 Q2
CKClock
Clock
Q0
Q1
Q2
Ersquo un contatore binario ma non sincrono Infatti i vari FF NON utilizzano lo stesso clock e questo porta a un piccolo disallineamento sulle uscite Non egrave sintetizzabile come una rete sincrona e una sintesi formale sarebbe possibile solo trattando il circuito come asincrono ovvero ldquoaprendordquo i FF Sarebbe possibile trasformarlo in un contatore x6 mantenendo la stessa impostazione
Sintetizzare e simulare con Altera
NB il segnale di clock non egrave in comune
50
7493
51
Altera Contatore asincrono
Contatore asincrono
52
Simulazione timing
53
Come puograve essere utilizzato un FFD per catturare un impulso piugrave breve di un periodo
D2 Q2
Q2CKFFD Z
Clock
D1 Q1
Q1CKFFD
D0 Q00
Q0CKFFD
ldquo1rdquo CL
Lrsquoimpulso breve viene catturato dal FF 0 (purcheacute di larghezza sufficiente per la tecnologia del FF) - che quindi agisce come integratore ndash la cui uscita alimenta il monoimpulsore di tipo A Lrsquoattivazione del FF 1 resetta il FF 0 (supponendo che il segnale di CL sia ldquopositiverdquotruerdquo)
Ci puograve essere un problema se il CL agisce in modo asincrono
NB questo circuito e quello del lucido precedente evidenziano il fatto che nella realtagrave nessuna rete egrave solo sincrona ma bensigrave egrave pressocheacute sempre necessario utilizzare reti di natura diversa anche percheacute vi egrave sempre una interazione fra reti con clock diversi eo con segnali provenienti dal mondo esterno NON sincronizzati con il clock
Monoimpulsore di tipo A ldquorivistordquo
54
bull Uno shift register a sinistra (a destra) egrave un registro composto da FFD che ad ogni clock trasferisce il valore del FF a destra (a sinistra) di ciascun FF nel FF stesso Nel FF piugrave a destra (sinistra) viene immesso uno ldquo0rdquo Questi tipi di registri shift si chiamano ldquologicirdquo
Shift register (registri a traslazione o scorrimento)
D0kQ0k
CK DnQn
CK
D0kQ0k
CK Dn-1Qn-1
CK
D0kQ0k
CK Dn-2Qn-2
CK
D0kQ0k
CK D0Q0
CK
ldquo0rdquo
Shift register a sinistra
bull Anche per i registri a traslazione esistono diverse versioni con ingresso parallelo e uscita seriale con ingresso seriale e uscita parallela con reset con load etc etc
bull Si noti che uno shift register egrave anche un contatore Si immagini per esempio che dopo un reset siano inseriti degli uni a partire da destra Lo shift register si riempie progressivamente di uni e quindi la posizione in cui egrave arrivato lrsquouno indica il valore del conteggio in base a un codice ldquouno su nrdquo (un codice decodificato)
bull Spesso uno stesso registro puograve traslare a destra o a sinistra in funzione di una segnale di controllo Ovviamente questo si ottiene premettendo a ogni ingresso Di un MUX a due vie che preleva in funzione del segnale di controllo Qigrave+1 o Qigrave-1 Con questa configurazione lo shift register diventa anche un contatore avantiindietro
Registro a scorrimento (shift-register) a 3 bit
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
IN
OUT2OUT1OUT0
CK
CK
IN
A_RESET
OUT1
OUT2
OUT0
Registro a scorrimento (shift-register) a 3 bit
57
Esempio 74164 (serial In parallel OUT)
bull In questo registro a traslazione ad ogni fronte positivo del clock i dati sono traslati a destra (Q0 -gt Q1 Q1-gtQ2 etc) Il registro egrave dotato in un Master Reset (vero negato) e il dato inserito nel FF Q0 egrave dato dallrsquoAND dei due ingressi Dsa e Dsb
bull Si noti che lrsquooperazione di shift corrisponde aritmeticamente alle operazioni di divisione e moltiplicazione per 2 Si supponga che in Q0 vi sia il bit meno significativo e in Q7 il meno significativo
0 1 1 0 1 0 1 0
010101102 = 10810
Shift left =gt x2
Shift right =gt 2
101011002 = 21610
001010112 = 5910
NB nel dispositivo i bit sono posti in ordine invertito e quindi un shift left del numero corrisponde a uno shift right sul dispositivo
58
bull Esistono anche i registri a traslazione ldquoaritmeticirdquo In questi shift register a destra anzicheacute fare entrare nel FF piugrave a sinistra lo ldquo0rdquo viene immesso sempre ripetutamente il suo valore logico
Shift aritmetico
Q7 Q6 Q5 Q4 Q3 Q2 Q1 Q0
D7 D6 D5 D4 D3 D2 D1 D0
I LDCK Esempio
11001010SRA
11100101 interpretato in complemento a 2
001101102=5410
C2 C2
000110112=2710
bull Lo shift aritmetico a destra effettua una divisione per 2 mantenendo il segno
59
Rotazione
Nei computer egrave sovente necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register
D0kQ0k
CK DnQn
CK
D0kQ0k
CK Dn-1Qn-1
CK
D0kQ0k
CK Dn-2Qn-2
CK
D0kQ0k
CK D0Q0
CK
Molto spesso nei computer egrave necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register con direzione programmabile In questo caso su D0 ad esempio puograve essere avviato o Q1 o Qn
60
Contatori con shift register ndash Contatore retroazionato EX-OR
Q2Q0
Shift right 3 bitDQ1
110 111 011 101 010 001
Diagramma degli stati disgiunto
Uno shift register con n FF retroazionato con un EX-OR (scelta degli ingressi variabile) egrave un contatore NON binario che conta per 2n-1 (purcheacute presettato a un valore diverso da tutti zeri)
000
100
61
Contatore di Johnson (riempimento e svuotamento)
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
000-gt100-gt110-gt111-gt011-gt001-gt000-gtStati isolati 101-gt010-gt101gt1
Poicheacute configurazioni adiacenti del codice Johnson differiscono di un solo bit il contatore puograve essere utilizzato per generare forme drsquoonda prive di alee
62
Contatore ad anello con un solo 1 (ovvero che genera direttamente il codice 1su n)
FFDD Q
QR
RESET
FFDD Q
QR
RESET
FFDD Q
QPR
RESET
OUT3OUT1OUT0
CK
FFDD Q
QR
RESET
OUT2
0001-gt1000-gt0100-gt0010-gt0010n FF per contare per n (mentre con i contatori binari il numero dei FF egrave il log2m ove m egrave il primo intero maggiore o uguale a n)
63
Barrel shifter (rotore)Un barrel shifter egrave uno shift register in grado di traslare di ldquonrdquo posizioni in un solo clock il contenuto dei suoi FF In figura egrave riportato il barrel shifter della Altera Gli ingressi A-H in presenza dellrsquoattivazione del segnale LDST al primo fronte positivo del clock sono depositati nei FF Quando LDST egrave 0 ad ogni fronte positivo del clock i bit di uscita sono ruotati di n posizioni in senso antiorario (ovvero lrsquouscita H diventa la G la G diventa la Fhellipe lrsquouscita A diventa la H) ove n egrave il valore binario indicato dai segnali S0 S1 e S2
Si noti che il circuito in questione egrave di fatto un registro con 8 FF allrsquoingresso di ciascuno dei quali egrave previsto un MUX a 8 vie che pilotato dai segnali S0 S1 e S2 che seleziona uno degli 8 uscite del dispositivo La struttura interna puograve essere osservata ldquoclikkandordquo due volte sul dispositivo nello schema di Altera
64
Barrel shifter
6565
66
Simulazione timing
67
bull Utilizzando il sistema Altera progettare un orologio con secondi minuti ora partendo da un oscillatore a quarzo con frequenza 500 KHz
bull E se si volesse proseguire e realizzare anche un datario (giorno mese e anno )
bull Come potrebbe essere integrato con una sveglia Si ricordi che lrsquoorologio deve essere anche essere ldquopresettatordquo
bull Quali circuiti utilizzare per la visualizzazione
68
EPROM
X0nZ0m
y0kY0k
Clock
D0kQ0k
FFD0k
CK D0kQ0k CK
Reti sincrone con EPROM
Al posto delle EPROM si utilizzano ora dei PLA ovvero dispositivi nei quali si nei quali le funzioni combinatorie sono ottimizzate ma il principio egrave assolutamente il medesimo
69
Progettare con Altera una rete logica sincrona che utilizzando registri 374 ALU 74181 un contatore e altri dispositivi ritenuti necessari permetta di eseguire in sequenza la somma di due dati di 4 bit senza segno ingresso esegua il complemento a 2 inverta la parte bassa con la parte alta del risultato e infine moltiplichi il tutto logicamente per 2
La soluzione egrave sempre decomponibile in tre sottosistemi il controllo con la sua decodifica (unitagrave di controllo) il percorso dei dati con le unitagrave che li trasformano (datapath) e i registri di deposito e di ingresso dei dati
Questa egrave la struttura base di qualunque unitagrave centrale di qualunque computer
La differenza consiste solo nel fatto che anzicheacute avere una sequenza fissa di operazioni ne viene generata una volta a volta che dipende appunto dalla istruzione che deve essere eseguita Come si vedragrave approfonditamente nel corso di Calcolatori T del II anno (prof Neri e Mattoccia)
Arrivederci al corso di Calcolatori T del II anno (sapendo perfettamente le reti logiche helliphellip)
33
Contatori binari in base non potenza di 2
A B C D E
000 001 010 011 100Contatore
binario per 5
D0 Q0
Q0CKFFD
MUX
1
0 1D1 Q1
Q1CKFFD
MUX
1
0D Q2
Q2CKFFD
Questo conta x8 ma per contare x5 arrivati a 4 bisogna ritornare a 0
34
D0 Q0
Q0CKFFD D1 Q1
Q1CKFFD
MUX
1
0 D2 Q2
Q2CKFFD
MUX
1
0
ABC
ldquo4rdquo
Contatore x 5
Decoder
La decodifica del 4 porta a zero lrsquouscita del decodificatore e quindi a 0 tutte le uscite degli AND rosa e al successivo fronte positivo del clock i tre FF campionano uno ldquo0rdquo
Per esercizio sintetizzare un contatore x 100 partendo dalla sintesi di un contatore decimale ovvero di un contatore x10 (da sintetizzare) Quanti FF per un contatore decimale I contatori decimali si trovano integrati in Altera
ldquo3rdquo
35
Contatori con ingressi di controllo
Ex Contatore integrato x 16 con Load e Enable
bull Il contatore conta per 16 (0-15) se il segnale EN egrave a 1 Allorchegrave il segnale LD va a 1 il dato presente sugli ingressi D egrave inserito nei 4 FF (lrsquoingresso puograve essere sincrono o asincrono) Nel caso precedente il decodificatore del ldquo3rdquo (uscita vera va portato) allrsquoingresso LD con tutti i Di a zero
bull In generale il contatore fornisce anche unrsquouscita ldquocarryrdquo che va a 1 quando il contatore raggiunge il valore FF Questa uscita puograve essere connessa allrsquoenable di un contatore a valle per ottenere un contatore per 256 cosigrave via (Progettarlo come esercizio)
EN
Q0 Q1 Q2 Q3CKLD
D0 D1 D2 D3
EN
Q0 Q1 Q2 Q3CK
CYLD
D0 D1 D2 D3
bull Esistono contatori UPDOWN nei quali un ingresso (UD) seleziona se il conteggio deve avvenire avanti o indietro Nel caso sia selezionata la modalitagrave ldquoindietrordquo il carry si attiva quando si raggiunge il valore ldquotutti zerirdquo
bull Esiste una molteplicitagrave di contatori ciascuno con le proprie specifiche peculiaritagrave con o senza RESET (che normalmente agisce in modo asincrono) UD con o senza LD etc etc
NB qualunque circuito sincrono (con sequenza non binaria) riconducibile al diagramma degli stati di un contatore egrave sempre un contatore
101 010 000 111 110 Contatore x 5 non binario
36
74163 contatore reale x 16 con Load Reset e Enable (T e P)I segnali di controllo sono sincroni ovvero agiscono sul fronte positivo del clock (rising edge)
74138 decoder 38 con uscite negate se G2A e G2B entrambi a zero e G1 a 1 Altrimenti tutte uscite alte
Direttorio Counter Glitch
Contatore binario x 8 e glitches
37
Glitch
Simulazione timingNB la presenza e la durata del glitch dipende dalle caratteristiche elettriche dei dispositivi
dalla loro tecnologia etc Nel caso dei dispositivi Altera dipende dal tipo di dispositivo sul quale egrave realizzato il circuito Analogamente la sensibilitagrave di eventuali ingressi di clock collegati allrsquouscita con il glitch dipende dalle caratteristiche del dispositivo Se ad esempio nel dispositivo Altera utilizzato si collega allrsquouscita Y6 il clock di un FFD non si ha commutazione del FF ma questo non egrave vero in assoluto
38
Cosa succede al contatore X5 progettato precedentemente se allrsquoaccensione non disponendo di un segnale di RESET i FF si portano in uno stato non facente parte del cicloNB La condizione allrsquoaccensione egrave del tutto casuale e dipende unicamente dalle condizioni elettriche
di realizzazione Ersquo impredicibileSupponiamo che i FF si portino al valore 110 (il numero 6 fuori dal ciclo) Analizziamo il comportamento
D0 Q0Q0CK
FFD D1 Q1Q1CK
FFD
MUX
1
0 D2 Q2Q2CK
FFD
MUX
1
0
ABC
ldquo4rdquo
000 001 010 011 100 110 111
In questo caso ci si riporta nella situazione di conteggio regolare (verificare con la tabella degli stati ) ma il comportamento in generale dipende dalla realizzazione e in altre realizzazione i due stati potrebbero essere separati dal ciclo principale che quindi non verrebbe mai raggiunto Ecco la funzione del RESET
39
Solo come esempio (da non utilizzare ) a scopo didattico vediamo la tabella delle transizioni di un contatore per 6 UpDown con comando di Reset I segnali di ingresso cambiano in modo asincrono ma hanno effetto in modo sincrono
Per compensare allrsquoaccensione
Sintetizzare e simulareCome dovrebbe essere modificato lo schema in Altera per permettere di
ldquopresettarerdquo in modo asincrono il contatore a un particolare valore di ingresso
00 01 11 10UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
111
110
000 101
000
101
y3 y2 y100 01 11 10
UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
000 000111
000 000 000 000110
000 101
000
000 000
101
y3 y2 y1
40
D0Q0
CKFFD
Clocky2
DEC
y3
y2
y1
ldquo1rdquo
ldquo2rdquo
ldquo3rdquo
ldquo4rdquo
1
0
UPDown
Sintesi di y2 in modo ldquodirettordquo
1
0
00 01 11 10UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
000 000111
000 000 000 000110
000 101
000
000 000
101
y3 y2 y1
41
Cassaforte hellipDisponendo di un contatore per 8 (ma anche per 16 etc) con reset sincrono e sempre abilitato al conteggio come potrei realizzare il circuito di apertura della cassaforte (sequenza X1X2 00-01-01-10) con modello Moore
Cx8RES
Q0 Q1 Q2 CK
RES= (ldquo0rdquoX1X2 + ldquo1rdquo X1X2 + ldquo2rdquo X1X2 + ldquo3rdquo X1 X2)Z = ldquo4rdquo (ldquo0rdquordquo1rdquordquo2rdquordquo3rdquordquo4rdquo sono le decodifiche binarie delle tre uscite del contatore)
Il contatore si resetta ogni volta che non si presenta lrsquoingresso giusto relativo al particolare stato Ilcontatore quindi si resetta e rimane resettato se non nelle condizioni espresse dalla funzione RESIl contatore arrivato a 4 (Z=1) si resetta comunque al successivo fronte del clock
Le reti sincrone si progettano sempre come combinazione di blocchi disponibili e logica ldquorandomrdquo
ABC
ldquo0rdquoldquo1rdquoldquo2rdquoldquo3rdquoldquo4rdquo
RLAND-OR
X1X2
RESZ
Cx8RES
Q0 Q1 Q2 CK
42
Contatori
EN
Q0 Q1 Q2 Q3CKCY
RESET
bull Attenzione Consideriamo il contatore di figura (questa volta con RESET asincrono) e supponiamo di utilizzarlo per contare per 5 (NB per il Reset si usa il ldquo5rdquo in questo casohellip glitch)
ABCD
ldquo5rdquo
ldquo1rdquo Percheacute questo schema egrave sbagliato
bull Percheacute presenta una corsa critica Nel momento in cui anche uno solo dei FF si resetta (e non tutti nello stesso istante) viene a mancare la configurazione ldquo4rdquo sul decoder e quindi alcuni FF potrebbero non fare in tempo a resettarsi E allora
EN
Q0 Q1 Q2 Q3CKCY
RESET
ABCD
ldquo5rdquo
ldquo1rdquo
RS
Y ldquo0rdquo
bull Cosigrave facendo il ldquo4rdquo attiva il SET e il FF NON si resetta fino a quando non egrave stato raggiunto la ldquo0rdquo NB lo schema ldquosbagliatordquo si puograve usare solo se si egrave certi della rapiditagrave di reset dei FF del contatore
bull Verificare con Altera
Sintesi cassaforte con moduli
Altera Cassaforte sincrona con moduli
Rete di controllo
Contatore con Reset asincrono e Load sincrono
43
NB In questo progetto la sintesi egrave stata condotta in modo ldquodirettordquo ovvero senza passare per la sintesi formale e utilizzando componenti disponibili e helliphellip materia grigia La sintesi dei circuiti sincroni si fa sempre e unicamente cosigrave
44
Simulazione funzionale (no timing)
NB I segnali di ingresso sono campionati SOLO sul fronte positivo del clock anche se si presentano asincroni Il segnale di uscita si attiva al clock successivo al riconoscimento della sequenza La posizione di ldquoriposordquo del contatore egrave il valore 4 I segnali Yi sono le decodifiche dei segnali di di ingresso X1 e X2
00 01 01 10
45
Simulazione timing
46
NB Si egrave scelto di utilizzare SOLO gli ingressi SINCRONI del contatore per semplicitagrave Il contatore rimane al valore 100 fino a quando non si presenta allrsquoingresso il valore 00 Se la sequenza egrave esatta il contatore continua a contare in avanti fino alla generazione dellrsquouscita (valore 11 del contatore) altrimenti si riporta al valore 100 ovvero Qc=1) Il segnale GN (Gate Not) egrave quello che abilita il conteggio Il sistema riamane stabile a 000 per una sequenza lunga a piacere di X1=0 e X2=0 e si sposta quando dopo 00 si ha 01 Come si evince dalla simulazione se la sequenza non egrave corretta o egrave interrotta il contatore si riporta sempre a 100
00 01 11 10
001 000 000
X1
000000 010 100 100001
000 100 100 011010
100 100 100 100011
000 100 100 100100
000 100 100 100101
000 100 100 100110
000 100 100 100111
0
0
0
1
0
0
0
0
X2
000
NB la tabella delle transizioni derivata della rete realizzata NON ha ovviamente condizioni di indifferenza
47
Progettare un contatore packed BCD updown a 8 bit (due digit)
48
Generazione di forme drsquoondabull Ersquo possibile generare forme drsquoonda periodiche mediante circuiti sincroni di periodo
sottomultiplo intero del clock
Esempio 1Divisore di frequenza per 2
D0k Q0k
CK D Q
CK Clock
Q
Esempio 2 generare una forma drsquoonda periodica con periodo 5T (ove T sia il periodo del clock) in cui in un semiperiodo 3T lrsquouscita sia alta e nellrsquoaltro semiperiodo 2T lrsquouscita sia bassa
Q0 Q1 Q2 CK
Cx5
C
B
A
01234
DecoderDemux
Clock
ZZ T
3T2T
3T
NB una rete logica egrave in grado di effettuare delle divisioni di frequenza e mai delle moltiplicazioni di frequenza (che si possono ottenere solo con circuiti analogici non lineari)
49
Di che circuito si tratta
D0k Q0k
CK D0 Q0
CKQ0
D0k Q0k
CK D1 Q1
CK
D0k Q0k
CK D2 Q2
CKClock
Clock
Q0
Q1
Q2
Ersquo un contatore binario ma non sincrono Infatti i vari FF NON utilizzano lo stesso clock e questo porta a un piccolo disallineamento sulle uscite Non egrave sintetizzabile come una rete sincrona e una sintesi formale sarebbe possibile solo trattando il circuito come asincrono ovvero ldquoaprendordquo i FF Sarebbe possibile trasformarlo in un contatore x6 mantenendo la stessa impostazione
Sintetizzare e simulare con Altera
NB il segnale di clock non egrave in comune
50
7493
51
Altera Contatore asincrono
Contatore asincrono
52
Simulazione timing
53
Come puograve essere utilizzato un FFD per catturare un impulso piugrave breve di un periodo
D2 Q2
Q2CKFFD Z
Clock
D1 Q1
Q1CKFFD
D0 Q00
Q0CKFFD
ldquo1rdquo CL
Lrsquoimpulso breve viene catturato dal FF 0 (purcheacute di larghezza sufficiente per la tecnologia del FF) - che quindi agisce come integratore ndash la cui uscita alimenta il monoimpulsore di tipo A Lrsquoattivazione del FF 1 resetta il FF 0 (supponendo che il segnale di CL sia ldquopositiverdquotruerdquo)
Ci puograve essere un problema se il CL agisce in modo asincrono
NB questo circuito e quello del lucido precedente evidenziano il fatto che nella realtagrave nessuna rete egrave solo sincrona ma bensigrave egrave pressocheacute sempre necessario utilizzare reti di natura diversa anche percheacute vi egrave sempre una interazione fra reti con clock diversi eo con segnali provenienti dal mondo esterno NON sincronizzati con il clock
Monoimpulsore di tipo A ldquorivistordquo
54
bull Uno shift register a sinistra (a destra) egrave un registro composto da FFD che ad ogni clock trasferisce il valore del FF a destra (a sinistra) di ciascun FF nel FF stesso Nel FF piugrave a destra (sinistra) viene immesso uno ldquo0rdquo Questi tipi di registri shift si chiamano ldquologicirdquo
Shift register (registri a traslazione o scorrimento)
D0kQ0k
CK DnQn
CK
D0kQ0k
CK Dn-1Qn-1
CK
D0kQ0k
CK Dn-2Qn-2
CK
D0kQ0k
CK D0Q0
CK
ldquo0rdquo
Shift register a sinistra
bull Anche per i registri a traslazione esistono diverse versioni con ingresso parallelo e uscita seriale con ingresso seriale e uscita parallela con reset con load etc etc
bull Si noti che uno shift register egrave anche un contatore Si immagini per esempio che dopo un reset siano inseriti degli uni a partire da destra Lo shift register si riempie progressivamente di uni e quindi la posizione in cui egrave arrivato lrsquouno indica il valore del conteggio in base a un codice ldquouno su nrdquo (un codice decodificato)
bull Spesso uno stesso registro puograve traslare a destra o a sinistra in funzione di una segnale di controllo Ovviamente questo si ottiene premettendo a ogni ingresso Di un MUX a due vie che preleva in funzione del segnale di controllo Qigrave+1 o Qigrave-1 Con questa configurazione lo shift register diventa anche un contatore avantiindietro
Registro a scorrimento (shift-register) a 3 bit
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
IN
OUT2OUT1OUT0
CK
CK
IN
A_RESET
OUT1
OUT2
OUT0
Registro a scorrimento (shift-register) a 3 bit
57
Esempio 74164 (serial In parallel OUT)
bull In questo registro a traslazione ad ogni fronte positivo del clock i dati sono traslati a destra (Q0 -gt Q1 Q1-gtQ2 etc) Il registro egrave dotato in un Master Reset (vero negato) e il dato inserito nel FF Q0 egrave dato dallrsquoAND dei due ingressi Dsa e Dsb
bull Si noti che lrsquooperazione di shift corrisponde aritmeticamente alle operazioni di divisione e moltiplicazione per 2 Si supponga che in Q0 vi sia il bit meno significativo e in Q7 il meno significativo
0 1 1 0 1 0 1 0
010101102 = 10810
Shift left =gt x2
Shift right =gt 2
101011002 = 21610
001010112 = 5910
NB nel dispositivo i bit sono posti in ordine invertito e quindi un shift left del numero corrisponde a uno shift right sul dispositivo
58
bull Esistono anche i registri a traslazione ldquoaritmeticirdquo In questi shift register a destra anzicheacute fare entrare nel FF piugrave a sinistra lo ldquo0rdquo viene immesso sempre ripetutamente il suo valore logico
Shift aritmetico
Q7 Q6 Q5 Q4 Q3 Q2 Q1 Q0
D7 D6 D5 D4 D3 D2 D1 D0
I LDCK Esempio
11001010SRA
11100101 interpretato in complemento a 2
001101102=5410
C2 C2
000110112=2710
bull Lo shift aritmetico a destra effettua una divisione per 2 mantenendo il segno
59
Rotazione
Nei computer egrave sovente necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register
D0kQ0k
CK DnQn
CK
D0kQ0k
CK Dn-1Qn-1
CK
D0kQ0k
CK Dn-2Qn-2
CK
D0kQ0k
CK D0Q0
CK
Molto spesso nei computer egrave necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register con direzione programmabile In questo caso su D0 ad esempio puograve essere avviato o Q1 o Qn
60
Contatori con shift register ndash Contatore retroazionato EX-OR
Q2Q0
Shift right 3 bitDQ1
110 111 011 101 010 001
Diagramma degli stati disgiunto
Uno shift register con n FF retroazionato con un EX-OR (scelta degli ingressi variabile) egrave un contatore NON binario che conta per 2n-1 (purcheacute presettato a un valore diverso da tutti zeri)
000
100
61
Contatore di Johnson (riempimento e svuotamento)
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
000-gt100-gt110-gt111-gt011-gt001-gt000-gtStati isolati 101-gt010-gt101gt1
Poicheacute configurazioni adiacenti del codice Johnson differiscono di un solo bit il contatore puograve essere utilizzato per generare forme drsquoonda prive di alee
62
Contatore ad anello con un solo 1 (ovvero che genera direttamente il codice 1su n)
FFDD Q
QR
RESET
FFDD Q
QR
RESET
FFDD Q
QPR
RESET
OUT3OUT1OUT0
CK
FFDD Q
QR
RESET
OUT2
0001-gt1000-gt0100-gt0010-gt0010n FF per contare per n (mentre con i contatori binari il numero dei FF egrave il log2m ove m egrave il primo intero maggiore o uguale a n)
63
Barrel shifter (rotore)Un barrel shifter egrave uno shift register in grado di traslare di ldquonrdquo posizioni in un solo clock il contenuto dei suoi FF In figura egrave riportato il barrel shifter della Altera Gli ingressi A-H in presenza dellrsquoattivazione del segnale LDST al primo fronte positivo del clock sono depositati nei FF Quando LDST egrave 0 ad ogni fronte positivo del clock i bit di uscita sono ruotati di n posizioni in senso antiorario (ovvero lrsquouscita H diventa la G la G diventa la Fhellipe lrsquouscita A diventa la H) ove n egrave il valore binario indicato dai segnali S0 S1 e S2
Si noti che il circuito in questione egrave di fatto un registro con 8 FF allrsquoingresso di ciascuno dei quali egrave previsto un MUX a 8 vie che pilotato dai segnali S0 S1 e S2 che seleziona uno degli 8 uscite del dispositivo La struttura interna puograve essere osservata ldquoclikkandordquo due volte sul dispositivo nello schema di Altera
64
Barrel shifter
6565
66
Simulazione timing
67
bull Utilizzando il sistema Altera progettare un orologio con secondi minuti ora partendo da un oscillatore a quarzo con frequenza 500 KHz
bull E se si volesse proseguire e realizzare anche un datario (giorno mese e anno )
bull Come potrebbe essere integrato con una sveglia Si ricordi che lrsquoorologio deve essere anche essere ldquopresettatordquo
bull Quali circuiti utilizzare per la visualizzazione
68
EPROM
X0nZ0m
y0kY0k
Clock
D0kQ0k
FFD0k
CK D0kQ0k CK
Reti sincrone con EPROM
Al posto delle EPROM si utilizzano ora dei PLA ovvero dispositivi nei quali si nei quali le funzioni combinatorie sono ottimizzate ma il principio egrave assolutamente il medesimo
69
Progettare con Altera una rete logica sincrona che utilizzando registri 374 ALU 74181 un contatore e altri dispositivi ritenuti necessari permetta di eseguire in sequenza la somma di due dati di 4 bit senza segno ingresso esegua il complemento a 2 inverta la parte bassa con la parte alta del risultato e infine moltiplichi il tutto logicamente per 2
La soluzione egrave sempre decomponibile in tre sottosistemi il controllo con la sua decodifica (unitagrave di controllo) il percorso dei dati con le unitagrave che li trasformano (datapath) e i registri di deposito e di ingresso dei dati
Questa egrave la struttura base di qualunque unitagrave centrale di qualunque computer
La differenza consiste solo nel fatto che anzicheacute avere una sequenza fissa di operazioni ne viene generata una volta a volta che dipende appunto dalla istruzione che deve essere eseguita Come si vedragrave approfonditamente nel corso di Calcolatori T del II anno (prof Neri e Mattoccia)
Arrivederci al corso di Calcolatori T del II anno (sapendo perfettamente le reti logiche helliphellip)
34
D0 Q0
Q0CKFFD D1 Q1
Q1CKFFD
MUX
1
0 D2 Q2
Q2CKFFD
MUX
1
0
ABC
ldquo4rdquo
Contatore x 5
Decoder
La decodifica del 4 porta a zero lrsquouscita del decodificatore e quindi a 0 tutte le uscite degli AND rosa e al successivo fronte positivo del clock i tre FF campionano uno ldquo0rdquo
Per esercizio sintetizzare un contatore x 100 partendo dalla sintesi di un contatore decimale ovvero di un contatore x10 (da sintetizzare) Quanti FF per un contatore decimale I contatori decimali si trovano integrati in Altera
ldquo3rdquo
35
Contatori con ingressi di controllo
Ex Contatore integrato x 16 con Load e Enable
bull Il contatore conta per 16 (0-15) se il segnale EN egrave a 1 Allorchegrave il segnale LD va a 1 il dato presente sugli ingressi D egrave inserito nei 4 FF (lrsquoingresso puograve essere sincrono o asincrono) Nel caso precedente il decodificatore del ldquo3rdquo (uscita vera va portato) allrsquoingresso LD con tutti i Di a zero
bull In generale il contatore fornisce anche unrsquouscita ldquocarryrdquo che va a 1 quando il contatore raggiunge il valore FF Questa uscita puograve essere connessa allrsquoenable di un contatore a valle per ottenere un contatore per 256 cosigrave via (Progettarlo come esercizio)
EN
Q0 Q1 Q2 Q3CKLD
D0 D1 D2 D3
EN
Q0 Q1 Q2 Q3CK
CYLD
D0 D1 D2 D3
bull Esistono contatori UPDOWN nei quali un ingresso (UD) seleziona se il conteggio deve avvenire avanti o indietro Nel caso sia selezionata la modalitagrave ldquoindietrordquo il carry si attiva quando si raggiunge il valore ldquotutti zerirdquo
bull Esiste una molteplicitagrave di contatori ciascuno con le proprie specifiche peculiaritagrave con o senza RESET (che normalmente agisce in modo asincrono) UD con o senza LD etc etc
NB qualunque circuito sincrono (con sequenza non binaria) riconducibile al diagramma degli stati di un contatore egrave sempre un contatore
101 010 000 111 110 Contatore x 5 non binario
36
74163 contatore reale x 16 con Load Reset e Enable (T e P)I segnali di controllo sono sincroni ovvero agiscono sul fronte positivo del clock (rising edge)
74138 decoder 38 con uscite negate se G2A e G2B entrambi a zero e G1 a 1 Altrimenti tutte uscite alte
Direttorio Counter Glitch
Contatore binario x 8 e glitches
37
Glitch
Simulazione timingNB la presenza e la durata del glitch dipende dalle caratteristiche elettriche dei dispositivi
dalla loro tecnologia etc Nel caso dei dispositivi Altera dipende dal tipo di dispositivo sul quale egrave realizzato il circuito Analogamente la sensibilitagrave di eventuali ingressi di clock collegati allrsquouscita con il glitch dipende dalle caratteristiche del dispositivo Se ad esempio nel dispositivo Altera utilizzato si collega allrsquouscita Y6 il clock di un FFD non si ha commutazione del FF ma questo non egrave vero in assoluto
38
Cosa succede al contatore X5 progettato precedentemente se allrsquoaccensione non disponendo di un segnale di RESET i FF si portano in uno stato non facente parte del cicloNB La condizione allrsquoaccensione egrave del tutto casuale e dipende unicamente dalle condizioni elettriche
di realizzazione Ersquo impredicibileSupponiamo che i FF si portino al valore 110 (il numero 6 fuori dal ciclo) Analizziamo il comportamento
D0 Q0Q0CK
FFD D1 Q1Q1CK
FFD
MUX
1
0 D2 Q2Q2CK
FFD
MUX
1
0
ABC
ldquo4rdquo
000 001 010 011 100 110 111
In questo caso ci si riporta nella situazione di conteggio regolare (verificare con la tabella degli stati ) ma il comportamento in generale dipende dalla realizzazione e in altre realizzazione i due stati potrebbero essere separati dal ciclo principale che quindi non verrebbe mai raggiunto Ecco la funzione del RESET
39
Solo come esempio (da non utilizzare ) a scopo didattico vediamo la tabella delle transizioni di un contatore per 6 UpDown con comando di Reset I segnali di ingresso cambiano in modo asincrono ma hanno effetto in modo sincrono
Per compensare allrsquoaccensione
Sintetizzare e simulareCome dovrebbe essere modificato lo schema in Altera per permettere di
ldquopresettarerdquo in modo asincrono il contatore a un particolare valore di ingresso
00 01 11 10UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
111
110
000 101
000
101
y3 y2 y100 01 11 10
UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
000 000111
000 000 000 000110
000 101
000
000 000
101
y3 y2 y1
40
D0Q0
CKFFD
Clocky2
DEC
y3
y2
y1
ldquo1rdquo
ldquo2rdquo
ldquo3rdquo
ldquo4rdquo
1
0
UPDown
Sintesi di y2 in modo ldquodirettordquo
1
0
00 01 11 10UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
000 000111
000 000 000 000110
000 101
000
000 000
101
y3 y2 y1
41
Cassaforte hellipDisponendo di un contatore per 8 (ma anche per 16 etc) con reset sincrono e sempre abilitato al conteggio come potrei realizzare il circuito di apertura della cassaforte (sequenza X1X2 00-01-01-10) con modello Moore
Cx8RES
Q0 Q1 Q2 CK
RES= (ldquo0rdquoX1X2 + ldquo1rdquo X1X2 + ldquo2rdquo X1X2 + ldquo3rdquo X1 X2)Z = ldquo4rdquo (ldquo0rdquordquo1rdquordquo2rdquordquo3rdquordquo4rdquo sono le decodifiche binarie delle tre uscite del contatore)
Il contatore si resetta ogni volta che non si presenta lrsquoingresso giusto relativo al particolare stato Ilcontatore quindi si resetta e rimane resettato se non nelle condizioni espresse dalla funzione RESIl contatore arrivato a 4 (Z=1) si resetta comunque al successivo fronte del clock
Le reti sincrone si progettano sempre come combinazione di blocchi disponibili e logica ldquorandomrdquo
ABC
ldquo0rdquoldquo1rdquoldquo2rdquoldquo3rdquoldquo4rdquo
RLAND-OR
X1X2
RESZ
Cx8RES
Q0 Q1 Q2 CK
42
Contatori
EN
Q0 Q1 Q2 Q3CKCY
RESET
bull Attenzione Consideriamo il contatore di figura (questa volta con RESET asincrono) e supponiamo di utilizzarlo per contare per 5 (NB per il Reset si usa il ldquo5rdquo in questo casohellip glitch)
ABCD
ldquo5rdquo
ldquo1rdquo Percheacute questo schema egrave sbagliato
bull Percheacute presenta una corsa critica Nel momento in cui anche uno solo dei FF si resetta (e non tutti nello stesso istante) viene a mancare la configurazione ldquo4rdquo sul decoder e quindi alcuni FF potrebbero non fare in tempo a resettarsi E allora
EN
Q0 Q1 Q2 Q3CKCY
RESET
ABCD
ldquo5rdquo
ldquo1rdquo
RS
Y ldquo0rdquo
bull Cosigrave facendo il ldquo4rdquo attiva il SET e il FF NON si resetta fino a quando non egrave stato raggiunto la ldquo0rdquo NB lo schema ldquosbagliatordquo si puograve usare solo se si egrave certi della rapiditagrave di reset dei FF del contatore
bull Verificare con Altera
Sintesi cassaforte con moduli
Altera Cassaforte sincrona con moduli
Rete di controllo
Contatore con Reset asincrono e Load sincrono
43
NB In questo progetto la sintesi egrave stata condotta in modo ldquodirettordquo ovvero senza passare per la sintesi formale e utilizzando componenti disponibili e helliphellip materia grigia La sintesi dei circuiti sincroni si fa sempre e unicamente cosigrave
44
Simulazione funzionale (no timing)
NB I segnali di ingresso sono campionati SOLO sul fronte positivo del clock anche se si presentano asincroni Il segnale di uscita si attiva al clock successivo al riconoscimento della sequenza La posizione di ldquoriposordquo del contatore egrave il valore 4 I segnali Yi sono le decodifiche dei segnali di di ingresso X1 e X2
00 01 01 10
45
Simulazione timing
46
NB Si egrave scelto di utilizzare SOLO gli ingressi SINCRONI del contatore per semplicitagrave Il contatore rimane al valore 100 fino a quando non si presenta allrsquoingresso il valore 00 Se la sequenza egrave esatta il contatore continua a contare in avanti fino alla generazione dellrsquouscita (valore 11 del contatore) altrimenti si riporta al valore 100 ovvero Qc=1) Il segnale GN (Gate Not) egrave quello che abilita il conteggio Il sistema riamane stabile a 000 per una sequenza lunga a piacere di X1=0 e X2=0 e si sposta quando dopo 00 si ha 01 Come si evince dalla simulazione se la sequenza non egrave corretta o egrave interrotta il contatore si riporta sempre a 100
00 01 11 10
001 000 000
X1
000000 010 100 100001
000 100 100 011010
100 100 100 100011
000 100 100 100100
000 100 100 100101
000 100 100 100110
000 100 100 100111
0
0
0
1
0
0
0
0
X2
000
NB la tabella delle transizioni derivata della rete realizzata NON ha ovviamente condizioni di indifferenza
47
Progettare un contatore packed BCD updown a 8 bit (due digit)
48
Generazione di forme drsquoondabull Ersquo possibile generare forme drsquoonda periodiche mediante circuiti sincroni di periodo
sottomultiplo intero del clock
Esempio 1Divisore di frequenza per 2
D0k Q0k
CK D Q
CK Clock
Q
Esempio 2 generare una forma drsquoonda periodica con periodo 5T (ove T sia il periodo del clock) in cui in un semiperiodo 3T lrsquouscita sia alta e nellrsquoaltro semiperiodo 2T lrsquouscita sia bassa
Q0 Q1 Q2 CK
Cx5
C
B
A
01234
DecoderDemux
Clock
ZZ T
3T2T
3T
NB una rete logica egrave in grado di effettuare delle divisioni di frequenza e mai delle moltiplicazioni di frequenza (che si possono ottenere solo con circuiti analogici non lineari)
49
Di che circuito si tratta
D0k Q0k
CK D0 Q0
CKQ0
D0k Q0k
CK D1 Q1
CK
D0k Q0k
CK D2 Q2
CKClock
Clock
Q0
Q1
Q2
Ersquo un contatore binario ma non sincrono Infatti i vari FF NON utilizzano lo stesso clock e questo porta a un piccolo disallineamento sulle uscite Non egrave sintetizzabile come una rete sincrona e una sintesi formale sarebbe possibile solo trattando il circuito come asincrono ovvero ldquoaprendordquo i FF Sarebbe possibile trasformarlo in un contatore x6 mantenendo la stessa impostazione
Sintetizzare e simulare con Altera
NB il segnale di clock non egrave in comune
50
7493
51
Altera Contatore asincrono
Contatore asincrono
52
Simulazione timing
53
Come puograve essere utilizzato un FFD per catturare un impulso piugrave breve di un periodo
D2 Q2
Q2CKFFD Z
Clock
D1 Q1
Q1CKFFD
D0 Q00
Q0CKFFD
ldquo1rdquo CL
Lrsquoimpulso breve viene catturato dal FF 0 (purcheacute di larghezza sufficiente per la tecnologia del FF) - che quindi agisce come integratore ndash la cui uscita alimenta il monoimpulsore di tipo A Lrsquoattivazione del FF 1 resetta il FF 0 (supponendo che il segnale di CL sia ldquopositiverdquotruerdquo)
Ci puograve essere un problema se il CL agisce in modo asincrono
NB questo circuito e quello del lucido precedente evidenziano il fatto che nella realtagrave nessuna rete egrave solo sincrona ma bensigrave egrave pressocheacute sempre necessario utilizzare reti di natura diversa anche percheacute vi egrave sempre una interazione fra reti con clock diversi eo con segnali provenienti dal mondo esterno NON sincronizzati con il clock
Monoimpulsore di tipo A ldquorivistordquo
54
bull Uno shift register a sinistra (a destra) egrave un registro composto da FFD che ad ogni clock trasferisce il valore del FF a destra (a sinistra) di ciascun FF nel FF stesso Nel FF piugrave a destra (sinistra) viene immesso uno ldquo0rdquo Questi tipi di registri shift si chiamano ldquologicirdquo
Shift register (registri a traslazione o scorrimento)
D0kQ0k
CK DnQn
CK
D0kQ0k
CK Dn-1Qn-1
CK
D0kQ0k
CK Dn-2Qn-2
CK
D0kQ0k
CK D0Q0
CK
ldquo0rdquo
Shift register a sinistra
bull Anche per i registri a traslazione esistono diverse versioni con ingresso parallelo e uscita seriale con ingresso seriale e uscita parallela con reset con load etc etc
bull Si noti che uno shift register egrave anche un contatore Si immagini per esempio che dopo un reset siano inseriti degli uni a partire da destra Lo shift register si riempie progressivamente di uni e quindi la posizione in cui egrave arrivato lrsquouno indica il valore del conteggio in base a un codice ldquouno su nrdquo (un codice decodificato)
bull Spesso uno stesso registro puograve traslare a destra o a sinistra in funzione di una segnale di controllo Ovviamente questo si ottiene premettendo a ogni ingresso Di un MUX a due vie che preleva in funzione del segnale di controllo Qigrave+1 o Qigrave-1 Con questa configurazione lo shift register diventa anche un contatore avantiindietro
Registro a scorrimento (shift-register) a 3 bit
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
IN
OUT2OUT1OUT0
CK
CK
IN
A_RESET
OUT1
OUT2
OUT0
Registro a scorrimento (shift-register) a 3 bit
57
Esempio 74164 (serial In parallel OUT)
bull In questo registro a traslazione ad ogni fronte positivo del clock i dati sono traslati a destra (Q0 -gt Q1 Q1-gtQ2 etc) Il registro egrave dotato in un Master Reset (vero negato) e il dato inserito nel FF Q0 egrave dato dallrsquoAND dei due ingressi Dsa e Dsb
bull Si noti che lrsquooperazione di shift corrisponde aritmeticamente alle operazioni di divisione e moltiplicazione per 2 Si supponga che in Q0 vi sia il bit meno significativo e in Q7 il meno significativo
0 1 1 0 1 0 1 0
010101102 = 10810
Shift left =gt x2
Shift right =gt 2
101011002 = 21610
001010112 = 5910
NB nel dispositivo i bit sono posti in ordine invertito e quindi un shift left del numero corrisponde a uno shift right sul dispositivo
58
bull Esistono anche i registri a traslazione ldquoaritmeticirdquo In questi shift register a destra anzicheacute fare entrare nel FF piugrave a sinistra lo ldquo0rdquo viene immesso sempre ripetutamente il suo valore logico
Shift aritmetico
Q7 Q6 Q5 Q4 Q3 Q2 Q1 Q0
D7 D6 D5 D4 D3 D2 D1 D0
I LDCK Esempio
11001010SRA
11100101 interpretato in complemento a 2
001101102=5410
C2 C2
000110112=2710
bull Lo shift aritmetico a destra effettua una divisione per 2 mantenendo il segno
59
Rotazione
Nei computer egrave sovente necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register
D0kQ0k
CK DnQn
CK
D0kQ0k
CK Dn-1Qn-1
CK
D0kQ0k
CK Dn-2Qn-2
CK
D0kQ0k
CK D0Q0
CK
Molto spesso nei computer egrave necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register con direzione programmabile In questo caso su D0 ad esempio puograve essere avviato o Q1 o Qn
60
Contatori con shift register ndash Contatore retroazionato EX-OR
Q2Q0
Shift right 3 bitDQ1
110 111 011 101 010 001
Diagramma degli stati disgiunto
Uno shift register con n FF retroazionato con un EX-OR (scelta degli ingressi variabile) egrave un contatore NON binario che conta per 2n-1 (purcheacute presettato a un valore diverso da tutti zeri)
000
100
61
Contatore di Johnson (riempimento e svuotamento)
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
000-gt100-gt110-gt111-gt011-gt001-gt000-gtStati isolati 101-gt010-gt101gt1
Poicheacute configurazioni adiacenti del codice Johnson differiscono di un solo bit il contatore puograve essere utilizzato per generare forme drsquoonda prive di alee
62
Contatore ad anello con un solo 1 (ovvero che genera direttamente il codice 1su n)
FFDD Q
QR
RESET
FFDD Q
QR
RESET
FFDD Q
QPR
RESET
OUT3OUT1OUT0
CK
FFDD Q
QR
RESET
OUT2
0001-gt1000-gt0100-gt0010-gt0010n FF per contare per n (mentre con i contatori binari il numero dei FF egrave il log2m ove m egrave il primo intero maggiore o uguale a n)
63
Barrel shifter (rotore)Un barrel shifter egrave uno shift register in grado di traslare di ldquonrdquo posizioni in un solo clock il contenuto dei suoi FF In figura egrave riportato il barrel shifter della Altera Gli ingressi A-H in presenza dellrsquoattivazione del segnale LDST al primo fronte positivo del clock sono depositati nei FF Quando LDST egrave 0 ad ogni fronte positivo del clock i bit di uscita sono ruotati di n posizioni in senso antiorario (ovvero lrsquouscita H diventa la G la G diventa la Fhellipe lrsquouscita A diventa la H) ove n egrave il valore binario indicato dai segnali S0 S1 e S2
Si noti che il circuito in questione egrave di fatto un registro con 8 FF allrsquoingresso di ciascuno dei quali egrave previsto un MUX a 8 vie che pilotato dai segnali S0 S1 e S2 che seleziona uno degli 8 uscite del dispositivo La struttura interna puograve essere osservata ldquoclikkandordquo due volte sul dispositivo nello schema di Altera
64
Barrel shifter
6565
66
Simulazione timing
67
bull Utilizzando il sistema Altera progettare un orologio con secondi minuti ora partendo da un oscillatore a quarzo con frequenza 500 KHz
bull E se si volesse proseguire e realizzare anche un datario (giorno mese e anno )
bull Come potrebbe essere integrato con una sveglia Si ricordi che lrsquoorologio deve essere anche essere ldquopresettatordquo
bull Quali circuiti utilizzare per la visualizzazione
68
EPROM
X0nZ0m
y0kY0k
Clock
D0kQ0k
FFD0k
CK D0kQ0k CK
Reti sincrone con EPROM
Al posto delle EPROM si utilizzano ora dei PLA ovvero dispositivi nei quali si nei quali le funzioni combinatorie sono ottimizzate ma il principio egrave assolutamente il medesimo
69
Progettare con Altera una rete logica sincrona che utilizzando registri 374 ALU 74181 un contatore e altri dispositivi ritenuti necessari permetta di eseguire in sequenza la somma di due dati di 4 bit senza segno ingresso esegua il complemento a 2 inverta la parte bassa con la parte alta del risultato e infine moltiplichi il tutto logicamente per 2
La soluzione egrave sempre decomponibile in tre sottosistemi il controllo con la sua decodifica (unitagrave di controllo) il percorso dei dati con le unitagrave che li trasformano (datapath) e i registri di deposito e di ingresso dei dati
Questa egrave la struttura base di qualunque unitagrave centrale di qualunque computer
La differenza consiste solo nel fatto che anzicheacute avere una sequenza fissa di operazioni ne viene generata una volta a volta che dipende appunto dalla istruzione che deve essere eseguita Come si vedragrave approfonditamente nel corso di Calcolatori T del II anno (prof Neri e Mattoccia)
Arrivederci al corso di Calcolatori T del II anno (sapendo perfettamente le reti logiche helliphellip)
35
Contatori con ingressi di controllo
Ex Contatore integrato x 16 con Load e Enable
bull Il contatore conta per 16 (0-15) se il segnale EN egrave a 1 Allorchegrave il segnale LD va a 1 il dato presente sugli ingressi D egrave inserito nei 4 FF (lrsquoingresso puograve essere sincrono o asincrono) Nel caso precedente il decodificatore del ldquo3rdquo (uscita vera va portato) allrsquoingresso LD con tutti i Di a zero
bull In generale il contatore fornisce anche unrsquouscita ldquocarryrdquo che va a 1 quando il contatore raggiunge il valore FF Questa uscita puograve essere connessa allrsquoenable di un contatore a valle per ottenere un contatore per 256 cosigrave via (Progettarlo come esercizio)
EN
Q0 Q1 Q2 Q3CKLD
D0 D1 D2 D3
EN
Q0 Q1 Q2 Q3CK
CYLD
D0 D1 D2 D3
bull Esistono contatori UPDOWN nei quali un ingresso (UD) seleziona se il conteggio deve avvenire avanti o indietro Nel caso sia selezionata la modalitagrave ldquoindietrordquo il carry si attiva quando si raggiunge il valore ldquotutti zerirdquo
bull Esiste una molteplicitagrave di contatori ciascuno con le proprie specifiche peculiaritagrave con o senza RESET (che normalmente agisce in modo asincrono) UD con o senza LD etc etc
NB qualunque circuito sincrono (con sequenza non binaria) riconducibile al diagramma degli stati di un contatore egrave sempre un contatore
101 010 000 111 110 Contatore x 5 non binario
36
74163 contatore reale x 16 con Load Reset e Enable (T e P)I segnali di controllo sono sincroni ovvero agiscono sul fronte positivo del clock (rising edge)
74138 decoder 38 con uscite negate se G2A e G2B entrambi a zero e G1 a 1 Altrimenti tutte uscite alte
Direttorio Counter Glitch
Contatore binario x 8 e glitches
37
Glitch
Simulazione timingNB la presenza e la durata del glitch dipende dalle caratteristiche elettriche dei dispositivi
dalla loro tecnologia etc Nel caso dei dispositivi Altera dipende dal tipo di dispositivo sul quale egrave realizzato il circuito Analogamente la sensibilitagrave di eventuali ingressi di clock collegati allrsquouscita con il glitch dipende dalle caratteristiche del dispositivo Se ad esempio nel dispositivo Altera utilizzato si collega allrsquouscita Y6 il clock di un FFD non si ha commutazione del FF ma questo non egrave vero in assoluto
38
Cosa succede al contatore X5 progettato precedentemente se allrsquoaccensione non disponendo di un segnale di RESET i FF si portano in uno stato non facente parte del cicloNB La condizione allrsquoaccensione egrave del tutto casuale e dipende unicamente dalle condizioni elettriche
di realizzazione Ersquo impredicibileSupponiamo che i FF si portino al valore 110 (il numero 6 fuori dal ciclo) Analizziamo il comportamento
D0 Q0Q0CK
FFD D1 Q1Q1CK
FFD
MUX
1
0 D2 Q2Q2CK
FFD
MUX
1
0
ABC
ldquo4rdquo
000 001 010 011 100 110 111
In questo caso ci si riporta nella situazione di conteggio regolare (verificare con la tabella degli stati ) ma il comportamento in generale dipende dalla realizzazione e in altre realizzazione i due stati potrebbero essere separati dal ciclo principale che quindi non verrebbe mai raggiunto Ecco la funzione del RESET
39
Solo come esempio (da non utilizzare ) a scopo didattico vediamo la tabella delle transizioni di un contatore per 6 UpDown con comando di Reset I segnali di ingresso cambiano in modo asincrono ma hanno effetto in modo sincrono
Per compensare allrsquoaccensione
Sintetizzare e simulareCome dovrebbe essere modificato lo schema in Altera per permettere di
ldquopresettarerdquo in modo asincrono il contatore a un particolare valore di ingresso
00 01 11 10UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
111
110
000 101
000
101
y3 y2 y100 01 11 10
UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
000 000111
000 000 000 000110
000 101
000
000 000
101
y3 y2 y1
40
D0Q0
CKFFD
Clocky2
DEC
y3
y2
y1
ldquo1rdquo
ldquo2rdquo
ldquo3rdquo
ldquo4rdquo
1
0
UPDown
Sintesi di y2 in modo ldquodirettordquo
1
0
00 01 11 10UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
000 000111
000 000 000 000110
000 101
000
000 000
101
y3 y2 y1
41
Cassaforte hellipDisponendo di un contatore per 8 (ma anche per 16 etc) con reset sincrono e sempre abilitato al conteggio come potrei realizzare il circuito di apertura della cassaforte (sequenza X1X2 00-01-01-10) con modello Moore
Cx8RES
Q0 Q1 Q2 CK
RES= (ldquo0rdquoX1X2 + ldquo1rdquo X1X2 + ldquo2rdquo X1X2 + ldquo3rdquo X1 X2)Z = ldquo4rdquo (ldquo0rdquordquo1rdquordquo2rdquordquo3rdquordquo4rdquo sono le decodifiche binarie delle tre uscite del contatore)
Il contatore si resetta ogni volta che non si presenta lrsquoingresso giusto relativo al particolare stato Ilcontatore quindi si resetta e rimane resettato se non nelle condizioni espresse dalla funzione RESIl contatore arrivato a 4 (Z=1) si resetta comunque al successivo fronte del clock
Le reti sincrone si progettano sempre come combinazione di blocchi disponibili e logica ldquorandomrdquo
ABC
ldquo0rdquoldquo1rdquoldquo2rdquoldquo3rdquoldquo4rdquo
RLAND-OR
X1X2
RESZ
Cx8RES
Q0 Q1 Q2 CK
42
Contatori
EN
Q0 Q1 Q2 Q3CKCY
RESET
bull Attenzione Consideriamo il contatore di figura (questa volta con RESET asincrono) e supponiamo di utilizzarlo per contare per 5 (NB per il Reset si usa il ldquo5rdquo in questo casohellip glitch)
ABCD
ldquo5rdquo
ldquo1rdquo Percheacute questo schema egrave sbagliato
bull Percheacute presenta una corsa critica Nel momento in cui anche uno solo dei FF si resetta (e non tutti nello stesso istante) viene a mancare la configurazione ldquo4rdquo sul decoder e quindi alcuni FF potrebbero non fare in tempo a resettarsi E allora
EN
Q0 Q1 Q2 Q3CKCY
RESET
ABCD
ldquo5rdquo
ldquo1rdquo
RS
Y ldquo0rdquo
bull Cosigrave facendo il ldquo4rdquo attiva il SET e il FF NON si resetta fino a quando non egrave stato raggiunto la ldquo0rdquo NB lo schema ldquosbagliatordquo si puograve usare solo se si egrave certi della rapiditagrave di reset dei FF del contatore
bull Verificare con Altera
Sintesi cassaforte con moduli
Altera Cassaforte sincrona con moduli
Rete di controllo
Contatore con Reset asincrono e Load sincrono
43
NB In questo progetto la sintesi egrave stata condotta in modo ldquodirettordquo ovvero senza passare per la sintesi formale e utilizzando componenti disponibili e helliphellip materia grigia La sintesi dei circuiti sincroni si fa sempre e unicamente cosigrave
44
Simulazione funzionale (no timing)
NB I segnali di ingresso sono campionati SOLO sul fronte positivo del clock anche se si presentano asincroni Il segnale di uscita si attiva al clock successivo al riconoscimento della sequenza La posizione di ldquoriposordquo del contatore egrave il valore 4 I segnali Yi sono le decodifiche dei segnali di di ingresso X1 e X2
00 01 01 10
45
Simulazione timing
46
NB Si egrave scelto di utilizzare SOLO gli ingressi SINCRONI del contatore per semplicitagrave Il contatore rimane al valore 100 fino a quando non si presenta allrsquoingresso il valore 00 Se la sequenza egrave esatta il contatore continua a contare in avanti fino alla generazione dellrsquouscita (valore 11 del contatore) altrimenti si riporta al valore 100 ovvero Qc=1) Il segnale GN (Gate Not) egrave quello che abilita il conteggio Il sistema riamane stabile a 000 per una sequenza lunga a piacere di X1=0 e X2=0 e si sposta quando dopo 00 si ha 01 Come si evince dalla simulazione se la sequenza non egrave corretta o egrave interrotta il contatore si riporta sempre a 100
00 01 11 10
001 000 000
X1
000000 010 100 100001
000 100 100 011010
100 100 100 100011
000 100 100 100100
000 100 100 100101
000 100 100 100110
000 100 100 100111
0
0
0
1
0
0
0
0
X2
000
NB la tabella delle transizioni derivata della rete realizzata NON ha ovviamente condizioni di indifferenza
47
Progettare un contatore packed BCD updown a 8 bit (due digit)
48
Generazione di forme drsquoondabull Ersquo possibile generare forme drsquoonda periodiche mediante circuiti sincroni di periodo
sottomultiplo intero del clock
Esempio 1Divisore di frequenza per 2
D0k Q0k
CK D Q
CK Clock
Q
Esempio 2 generare una forma drsquoonda periodica con periodo 5T (ove T sia il periodo del clock) in cui in un semiperiodo 3T lrsquouscita sia alta e nellrsquoaltro semiperiodo 2T lrsquouscita sia bassa
Q0 Q1 Q2 CK
Cx5
C
B
A
01234
DecoderDemux
Clock
ZZ T
3T2T
3T
NB una rete logica egrave in grado di effettuare delle divisioni di frequenza e mai delle moltiplicazioni di frequenza (che si possono ottenere solo con circuiti analogici non lineari)
49
Di che circuito si tratta
D0k Q0k
CK D0 Q0
CKQ0
D0k Q0k
CK D1 Q1
CK
D0k Q0k
CK D2 Q2
CKClock
Clock
Q0
Q1
Q2
Ersquo un contatore binario ma non sincrono Infatti i vari FF NON utilizzano lo stesso clock e questo porta a un piccolo disallineamento sulle uscite Non egrave sintetizzabile come una rete sincrona e una sintesi formale sarebbe possibile solo trattando il circuito come asincrono ovvero ldquoaprendordquo i FF Sarebbe possibile trasformarlo in un contatore x6 mantenendo la stessa impostazione
Sintetizzare e simulare con Altera
NB il segnale di clock non egrave in comune
50
7493
51
Altera Contatore asincrono
Contatore asincrono
52
Simulazione timing
53
Come puograve essere utilizzato un FFD per catturare un impulso piugrave breve di un periodo
D2 Q2
Q2CKFFD Z
Clock
D1 Q1
Q1CKFFD
D0 Q00
Q0CKFFD
ldquo1rdquo CL
Lrsquoimpulso breve viene catturato dal FF 0 (purcheacute di larghezza sufficiente per la tecnologia del FF) - che quindi agisce come integratore ndash la cui uscita alimenta il monoimpulsore di tipo A Lrsquoattivazione del FF 1 resetta il FF 0 (supponendo che il segnale di CL sia ldquopositiverdquotruerdquo)
Ci puograve essere un problema se il CL agisce in modo asincrono
NB questo circuito e quello del lucido precedente evidenziano il fatto che nella realtagrave nessuna rete egrave solo sincrona ma bensigrave egrave pressocheacute sempre necessario utilizzare reti di natura diversa anche percheacute vi egrave sempre una interazione fra reti con clock diversi eo con segnali provenienti dal mondo esterno NON sincronizzati con il clock
Monoimpulsore di tipo A ldquorivistordquo
54
bull Uno shift register a sinistra (a destra) egrave un registro composto da FFD che ad ogni clock trasferisce il valore del FF a destra (a sinistra) di ciascun FF nel FF stesso Nel FF piugrave a destra (sinistra) viene immesso uno ldquo0rdquo Questi tipi di registri shift si chiamano ldquologicirdquo
Shift register (registri a traslazione o scorrimento)
D0kQ0k
CK DnQn
CK
D0kQ0k
CK Dn-1Qn-1
CK
D0kQ0k
CK Dn-2Qn-2
CK
D0kQ0k
CK D0Q0
CK
ldquo0rdquo
Shift register a sinistra
bull Anche per i registri a traslazione esistono diverse versioni con ingresso parallelo e uscita seriale con ingresso seriale e uscita parallela con reset con load etc etc
bull Si noti che uno shift register egrave anche un contatore Si immagini per esempio che dopo un reset siano inseriti degli uni a partire da destra Lo shift register si riempie progressivamente di uni e quindi la posizione in cui egrave arrivato lrsquouno indica il valore del conteggio in base a un codice ldquouno su nrdquo (un codice decodificato)
bull Spesso uno stesso registro puograve traslare a destra o a sinistra in funzione di una segnale di controllo Ovviamente questo si ottiene premettendo a ogni ingresso Di un MUX a due vie che preleva in funzione del segnale di controllo Qigrave+1 o Qigrave-1 Con questa configurazione lo shift register diventa anche un contatore avantiindietro
Registro a scorrimento (shift-register) a 3 bit
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
IN
OUT2OUT1OUT0
CK
CK
IN
A_RESET
OUT1
OUT2
OUT0
Registro a scorrimento (shift-register) a 3 bit
57
Esempio 74164 (serial In parallel OUT)
bull In questo registro a traslazione ad ogni fronte positivo del clock i dati sono traslati a destra (Q0 -gt Q1 Q1-gtQ2 etc) Il registro egrave dotato in un Master Reset (vero negato) e il dato inserito nel FF Q0 egrave dato dallrsquoAND dei due ingressi Dsa e Dsb
bull Si noti che lrsquooperazione di shift corrisponde aritmeticamente alle operazioni di divisione e moltiplicazione per 2 Si supponga che in Q0 vi sia il bit meno significativo e in Q7 il meno significativo
0 1 1 0 1 0 1 0
010101102 = 10810
Shift left =gt x2
Shift right =gt 2
101011002 = 21610
001010112 = 5910
NB nel dispositivo i bit sono posti in ordine invertito e quindi un shift left del numero corrisponde a uno shift right sul dispositivo
58
bull Esistono anche i registri a traslazione ldquoaritmeticirdquo In questi shift register a destra anzicheacute fare entrare nel FF piugrave a sinistra lo ldquo0rdquo viene immesso sempre ripetutamente il suo valore logico
Shift aritmetico
Q7 Q6 Q5 Q4 Q3 Q2 Q1 Q0
D7 D6 D5 D4 D3 D2 D1 D0
I LDCK Esempio
11001010SRA
11100101 interpretato in complemento a 2
001101102=5410
C2 C2
000110112=2710
bull Lo shift aritmetico a destra effettua una divisione per 2 mantenendo il segno
59
Rotazione
Nei computer egrave sovente necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register
D0kQ0k
CK DnQn
CK
D0kQ0k
CK Dn-1Qn-1
CK
D0kQ0k
CK Dn-2Qn-2
CK
D0kQ0k
CK D0Q0
CK
Molto spesso nei computer egrave necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register con direzione programmabile In questo caso su D0 ad esempio puograve essere avviato o Q1 o Qn
60
Contatori con shift register ndash Contatore retroazionato EX-OR
Q2Q0
Shift right 3 bitDQ1
110 111 011 101 010 001
Diagramma degli stati disgiunto
Uno shift register con n FF retroazionato con un EX-OR (scelta degli ingressi variabile) egrave un contatore NON binario che conta per 2n-1 (purcheacute presettato a un valore diverso da tutti zeri)
000
100
61
Contatore di Johnson (riempimento e svuotamento)
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
000-gt100-gt110-gt111-gt011-gt001-gt000-gtStati isolati 101-gt010-gt101gt1
Poicheacute configurazioni adiacenti del codice Johnson differiscono di un solo bit il contatore puograve essere utilizzato per generare forme drsquoonda prive di alee
62
Contatore ad anello con un solo 1 (ovvero che genera direttamente il codice 1su n)
FFDD Q
QR
RESET
FFDD Q
QR
RESET
FFDD Q
QPR
RESET
OUT3OUT1OUT0
CK
FFDD Q
QR
RESET
OUT2
0001-gt1000-gt0100-gt0010-gt0010n FF per contare per n (mentre con i contatori binari il numero dei FF egrave il log2m ove m egrave il primo intero maggiore o uguale a n)
63
Barrel shifter (rotore)Un barrel shifter egrave uno shift register in grado di traslare di ldquonrdquo posizioni in un solo clock il contenuto dei suoi FF In figura egrave riportato il barrel shifter della Altera Gli ingressi A-H in presenza dellrsquoattivazione del segnale LDST al primo fronte positivo del clock sono depositati nei FF Quando LDST egrave 0 ad ogni fronte positivo del clock i bit di uscita sono ruotati di n posizioni in senso antiorario (ovvero lrsquouscita H diventa la G la G diventa la Fhellipe lrsquouscita A diventa la H) ove n egrave il valore binario indicato dai segnali S0 S1 e S2
Si noti che il circuito in questione egrave di fatto un registro con 8 FF allrsquoingresso di ciascuno dei quali egrave previsto un MUX a 8 vie che pilotato dai segnali S0 S1 e S2 che seleziona uno degli 8 uscite del dispositivo La struttura interna puograve essere osservata ldquoclikkandordquo due volte sul dispositivo nello schema di Altera
64
Barrel shifter
6565
66
Simulazione timing
67
bull Utilizzando il sistema Altera progettare un orologio con secondi minuti ora partendo da un oscillatore a quarzo con frequenza 500 KHz
bull E se si volesse proseguire e realizzare anche un datario (giorno mese e anno )
bull Come potrebbe essere integrato con una sveglia Si ricordi che lrsquoorologio deve essere anche essere ldquopresettatordquo
bull Quali circuiti utilizzare per la visualizzazione
68
EPROM
X0nZ0m
y0kY0k
Clock
D0kQ0k
FFD0k
CK D0kQ0k CK
Reti sincrone con EPROM
Al posto delle EPROM si utilizzano ora dei PLA ovvero dispositivi nei quali si nei quali le funzioni combinatorie sono ottimizzate ma il principio egrave assolutamente il medesimo
69
Progettare con Altera una rete logica sincrona che utilizzando registri 374 ALU 74181 un contatore e altri dispositivi ritenuti necessari permetta di eseguire in sequenza la somma di due dati di 4 bit senza segno ingresso esegua il complemento a 2 inverta la parte bassa con la parte alta del risultato e infine moltiplichi il tutto logicamente per 2
La soluzione egrave sempre decomponibile in tre sottosistemi il controllo con la sua decodifica (unitagrave di controllo) il percorso dei dati con le unitagrave che li trasformano (datapath) e i registri di deposito e di ingresso dei dati
Questa egrave la struttura base di qualunque unitagrave centrale di qualunque computer
La differenza consiste solo nel fatto che anzicheacute avere una sequenza fissa di operazioni ne viene generata una volta a volta che dipende appunto dalla istruzione che deve essere eseguita Come si vedragrave approfonditamente nel corso di Calcolatori T del II anno (prof Neri e Mattoccia)
Arrivederci al corso di Calcolatori T del II anno (sapendo perfettamente le reti logiche helliphellip)
36
74163 contatore reale x 16 con Load Reset e Enable (T e P)I segnali di controllo sono sincroni ovvero agiscono sul fronte positivo del clock (rising edge)
74138 decoder 38 con uscite negate se G2A e G2B entrambi a zero e G1 a 1 Altrimenti tutte uscite alte
Direttorio Counter Glitch
Contatore binario x 8 e glitches
37
Glitch
Simulazione timingNB la presenza e la durata del glitch dipende dalle caratteristiche elettriche dei dispositivi
dalla loro tecnologia etc Nel caso dei dispositivi Altera dipende dal tipo di dispositivo sul quale egrave realizzato il circuito Analogamente la sensibilitagrave di eventuali ingressi di clock collegati allrsquouscita con il glitch dipende dalle caratteristiche del dispositivo Se ad esempio nel dispositivo Altera utilizzato si collega allrsquouscita Y6 il clock di un FFD non si ha commutazione del FF ma questo non egrave vero in assoluto
38
Cosa succede al contatore X5 progettato precedentemente se allrsquoaccensione non disponendo di un segnale di RESET i FF si portano in uno stato non facente parte del cicloNB La condizione allrsquoaccensione egrave del tutto casuale e dipende unicamente dalle condizioni elettriche
di realizzazione Ersquo impredicibileSupponiamo che i FF si portino al valore 110 (il numero 6 fuori dal ciclo) Analizziamo il comportamento
D0 Q0Q0CK
FFD D1 Q1Q1CK
FFD
MUX
1
0 D2 Q2Q2CK
FFD
MUX
1
0
ABC
ldquo4rdquo
000 001 010 011 100 110 111
In questo caso ci si riporta nella situazione di conteggio regolare (verificare con la tabella degli stati ) ma il comportamento in generale dipende dalla realizzazione e in altre realizzazione i due stati potrebbero essere separati dal ciclo principale che quindi non verrebbe mai raggiunto Ecco la funzione del RESET
39
Solo come esempio (da non utilizzare ) a scopo didattico vediamo la tabella delle transizioni di un contatore per 6 UpDown con comando di Reset I segnali di ingresso cambiano in modo asincrono ma hanno effetto in modo sincrono
Per compensare allrsquoaccensione
Sintetizzare e simulareCome dovrebbe essere modificato lo schema in Altera per permettere di
ldquopresettarerdquo in modo asincrono il contatore a un particolare valore di ingresso
00 01 11 10UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
111
110
000 101
000
101
y3 y2 y100 01 11 10
UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
000 000111
000 000 000 000110
000 101
000
000 000
101
y3 y2 y1
40
D0Q0
CKFFD
Clocky2
DEC
y3
y2
y1
ldquo1rdquo
ldquo2rdquo
ldquo3rdquo
ldquo4rdquo
1
0
UPDown
Sintesi di y2 in modo ldquodirettordquo
1
0
00 01 11 10UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
000 000111
000 000 000 000110
000 101
000
000 000
101
y3 y2 y1
41
Cassaforte hellipDisponendo di un contatore per 8 (ma anche per 16 etc) con reset sincrono e sempre abilitato al conteggio come potrei realizzare il circuito di apertura della cassaforte (sequenza X1X2 00-01-01-10) con modello Moore
Cx8RES
Q0 Q1 Q2 CK
RES= (ldquo0rdquoX1X2 + ldquo1rdquo X1X2 + ldquo2rdquo X1X2 + ldquo3rdquo X1 X2)Z = ldquo4rdquo (ldquo0rdquordquo1rdquordquo2rdquordquo3rdquordquo4rdquo sono le decodifiche binarie delle tre uscite del contatore)
Il contatore si resetta ogni volta che non si presenta lrsquoingresso giusto relativo al particolare stato Ilcontatore quindi si resetta e rimane resettato se non nelle condizioni espresse dalla funzione RESIl contatore arrivato a 4 (Z=1) si resetta comunque al successivo fronte del clock
Le reti sincrone si progettano sempre come combinazione di blocchi disponibili e logica ldquorandomrdquo
ABC
ldquo0rdquoldquo1rdquoldquo2rdquoldquo3rdquoldquo4rdquo
RLAND-OR
X1X2
RESZ
Cx8RES
Q0 Q1 Q2 CK
42
Contatori
EN
Q0 Q1 Q2 Q3CKCY
RESET
bull Attenzione Consideriamo il contatore di figura (questa volta con RESET asincrono) e supponiamo di utilizzarlo per contare per 5 (NB per il Reset si usa il ldquo5rdquo in questo casohellip glitch)
ABCD
ldquo5rdquo
ldquo1rdquo Percheacute questo schema egrave sbagliato
bull Percheacute presenta una corsa critica Nel momento in cui anche uno solo dei FF si resetta (e non tutti nello stesso istante) viene a mancare la configurazione ldquo4rdquo sul decoder e quindi alcuni FF potrebbero non fare in tempo a resettarsi E allora
EN
Q0 Q1 Q2 Q3CKCY
RESET
ABCD
ldquo5rdquo
ldquo1rdquo
RS
Y ldquo0rdquo
bull Cosigrave facendo il ldquo4rdquo attiva il SET e il FF NON si resetta fino a quando non egrave stato raggiunto la ldquo0rdquo NB lo schema ldquosbagliatordquo si puograve usare solo se si egrave certi della rapiditagrave di reset dei FF del contatore
bull Verificare con Altera
Sintesi cassaforte con moduli
Altera Cassaforte sincrona con moduli
Rete di controllo
Contatore con Reset asincrono e Load sincrono
43
NB In questo progetto la sintesi egrave stata condotta in modo ldquodirettordquo ovvero senza passare per la sintesi formale e utilizzando componenti disponibili e helliphellip materia grigia La sintesi dei circuiti sincroni si fa sempre e unicamente cosigrave
44
Simulazione funzionale (no timing)
NB I segnali di ingresso sono campionati SOLO sul fronte positivo del clock anche se si presentano asincroni Il segnale di uscita si attiva al clock successivo al riconoscimento della sequenza La posizione di ldquoriposordquo del contatore egrave il valore 4 I segnali Yi sono le decodifiche dei segnali di di ingresso X1 e X2
00 01 01 10
45
Simulazione timing
46
NB Si egrave scelto di utilizzare SOLO gli ingressi SINCRONI del contatore per semplicitagrave Il contatore rimane al valore 100 fino a quando non si presenta allrsquoingresso il valore 00 Se la sequenza egrave esatta il contatore continua a contare in avanti fino alla generazione dellrsquouscita (valore 11 del contatore) altrimenti si riporta al valore 100 ovvero Qc=1) Il segnale GN (Gate Not) egrave quello che abilita il conteggio Il sistema riamane stabile a 000 per una sequenza lunga a piacere di X1=0 e X2=0 e si sposta quando dopo 00 si ha 01 Come si evince dalla simulazione se la sequenza non egrave corretta o egrave interrotta il contatore si riporta sempre a 100
00 01 11 10
001 000 000
X1
000000 010 100 100001
000 100 100 011010
100 100 100 100011
000 100 100 100100
000 100 100 100101
000 100 100 100110
000 100 100 100111
0
0
0
1
0
0
0
0
X2
000
NB la tabella delle transizioni derivata della rete realizzata NON ha ovviamente condizioni di indifferenza
47
Progettare un contatore packed BCD updown a 8 bit (due digit)
48
Generazione di forme drsquoondabull Ersquo possibile generare forme drsquoonda periodiche mediante circuiti sincroni di periodo
sottomultiplo intero del clock
Esempio 1Divisore di frequenza per 2
D0k Q0k
CK D Q
CK Clock
Q
Esempio 2 generare una forma drsquoonda periodica con periodo 5T (ove T sia il periodo del clock) in cui in un semiperiodo 3T lrsquouscita sia alta e nellrsquoaltro semiperiodo 2T lrsquouscita sia bassa
Q0 Q1 Q2 CK
Cx5
C
B
A
01234
DecoderDemux
Clock
ZZ T
3T2T
3T
NB una rete logica egrave in grado di effettuare delle divisioni di frequenza e mai delle moltiplicazioni di frequenza (che si possono ottenere solo con circuiti analogici non lineari)
49
Di che circuito si tratta
D0k Q0k
CK D0 Q0
CKQ0
D0k Q0k
CK D1 Q1
CK
D0k Q0k
CK D2 Q2
CKClock
Clock
Q0
Q1
Q2
Ersquo un contatore binario ma non sincrono Infatti i vari FF NON utilizzano lo stesso clock e questo porta a un piccolo disallineamento sulle uscite Non egrave sintetizzabile come una rete sincrona e una sintesi formale sarebbe possibile solo trattando il circuito come asincrono ovvero ldquoaprendordquo i FF Sarebbe possibile trasformarlo in un contatore x6 mantenendo la stessa impostazione
Sintetizzare e simulare con Altera
NB il segnale di clock non egrave in comune
50
7493
51
Altera Contatore asincrono
Contatore asincrono
52
Simulazione timing
53
Come puograve essere utilizzato un FFD per catturare un impulso piugrave breve di un periodo
D2 Q2
Q2CKFFD Z
Clock
D1 Q1
Q1CKFFD
D0 Q00
Q0CKFFD
ldquo1rdquo CL
Lrsquoimpulso breve viene catturato dal FF 0 (purcheacute di larghezza sufficiente per la tecnologia del FF) - che quindi agisce come integratore ndash la cui uscita alimenta il monoimpulsore di tipo A Lrsquoattivazione del FF 1 resetta il FF 0 (supponendo che il segnale di CL sia ldquopositiverdquotruerdquo)
Ci puograve essere un problema se il CL agisce in modo asincrono
NB questo circuito e quello del lucido precedente evidenziano il fatto che nella realtagrave nessuna rete egrave solo sincrona ma bensigrave egrave pressocheacute sempre necessario utilizzare reti di natura diversa anche percheacute vi egrave sempre una interazione fra reti con clock diversi eo con segnali provenienti dal mondo esterno NON sincronizzati con il clock
Monoimpulsore di tipo A ldquorivistordquo
54
bull Uno shift register a sinistra (a destra) egrave un registro composto da FFD che ad ogni clock trasferisce il valore del FF a destra (a sinistra) di ciascun FF nel FF stesso Nel FF piugrave a destra (sinistra) viene immesso uno ldquo0rdquo Questi tipi di registri shift si chiamano ldquologicirdquo
Shift register (registri a traslazione o scorrimento)
D0kQ0k
CK DnQn
CK
D0kQ0k
CK Dn-1Qn-1
CK
D0kQ0k
CK Dn-2Qn-2
CK
D0kQ0k
CK D0Q0
CK
ldquo0rdquo
Shift register a sinistra
bull Anche per i registri a traslazione esistono diverse versioni con ingresso parallelo e uscita seriale con ingresso seriale e uscita parallela con reset con load etc etc
bull Si noti che uno shift register egrave anche un contatore Si immagini per esempio che dopo un reset siano inseriti degli uni a partire da destra Lo shift register si riempie progressivamente di uni e quindi la posizione in cui egrave arrivato lrsquouno indica il valore del conteggio in base a un codice ldquouno su nrdquo (un codice decodificato)
bull Spesso uno stesso registro puograve traslare a destra o a sinistra in funzione di una segnale di controllo Ovviamente questo si ottiene premettendo a ogni ingresso Di un MUX a due vie che preleva in funzione del segnale di controllo Qigrave+1 o Qigrave-1 Con questa configurazione lo shift register diventa anche un contatore avantiindietro
Registro a scorrimento (shift-register) a 3 bit
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
IN
OUT2OUT1OUT0
CK
CK
IN
A_RESET
OUT1
OUT2
OUT0
Registro a scorrimento (shift-register) a 3 bit
57
Esempio 74164 (serial In parallel OUT)
bull In questo registro a traslazione ad ogni fronte positivo del clock i dati sono traslati a destra (Q0 -gt Q1 Q1-gtQ2 etc) Il registro egrave dotato in un Master Reset (vero negato) e il dato inserito nel FF Q0 egrave dato dallrsquoAND dei due ingressi Dsa e Dsb
bull Si noti che lrsquooperazione di shift corrisponde aritmeticamente alle operazioni di divisione e moltiplicazione per 2 Si supponga che in Q0 vi sia il bit meno significativo e in Q7 il meno significativo
0 1 1 0 1 0 1 0
010101102 = 10810
Shift left =gt x2
Shift right =gt 2
101011002 = 21610
001010112 = 5910
NB nel dispositivo i bit sono posti in ordine invertito e quindi un shift left del numero corrisponde a uno shift right sul dispositivo
58
bull Esistono anche i registri a traslazione ldquoaritmeticirdquo In questi shift register a destra anzicheacute fare entrare nel FF piugrave a sinistra lo ldquo0rdquo viene immesso sempre ripetutamente il suo valore logico
Shift aritmetico
Q7 Q6 Q5 Q4 Q3 Q2 Q1 Q0
D7 D6 D5 D4 D3 D2 D1 D0
I LDCK Esempio
11001010SRA
11100101 interpretato in complemento a 2
001101102=5410
C2 C2
000110112=2710
bull Lo shift aritmetico a destra effettua una divisione per 2 mantenendo il segno
59
Rotazione
Nei computer egrave sovente necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register
D0kQ0k
CK DnQn
CK
D0kQ0k
CK Dn-1Qn-1
CK
D0kQ0k
CK Dn-2Qn-2
CK
D0kQ0k
CK D0Q0
CK
Molto spesso nei computer egrave necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register con direzione programmabile In questo caso su D0 ad esempio puograve essere avviato o Q1 o Qn
60
Contatori con shift register ndash Contatore retroazionato EX-OR
Q2Q0
Shift right 3 bitDQ1
110 111 011 101 010 001
Diagramma degli stati disgiunto
Uno shift register con n FF retroazionato con un EX-OR (scelta degli ingressi variabile) egrave un contatore NON binario che conta per 2n-1 (purcheacute presettato a un valore diverso da tutti zeri)
000
100
61
Contatore di Johnson (riempimento e svuotamento)
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
000-gt100-gt110-gt111-gt011-gt001-gt000-gtStati isolati 101-gt010-gt101gt1
Poicheacute configurazioni adiacenti del codice Johnson differiscono di un solo bit il contatore puograve essere utilizzato per generare forme drsquoonda prive di alee
62
Contatore ad anello con un solo 1 (ovvero che genera direttamente il codice 1su n)
FFDD Q
QR
RESET
FFDD Q
QR
RESET
FFDD Q
QPR
RESET
OUT3OUT1OUT0
CK
FFDD Q
QR
RESET
OUT2
0001-gt1000-gt0100-gt0010-gt0010n FF per contare per n (mentre con i contatori binari il numero dei FF egrave il log2m ove m egrave il primo intero maggiore o uguale a n)
63
Barrel shifter (rotore)Un barrel shifter egrave uno shift register in grado di traslare di ldquonrdquo posizioni in un solo clock il contenuto dei suoi FF In figura egrave riportato il barrel shifter della Altera Gli ingressi A-H in presenza dellrsquoattivazione del segnale LDST al primo fronte positivo del clock sono depositati nei FF Quando LDST egrave 0 ad ogni fronte positivo del clock i bit di uscita sono ruotati di n posizioni in senso antiorario (ovvero lrsquouscita H diventa la G la G diventa la Fhellipe lrsquouscita A diventa la H) ove n egrave il valore binario indicato dai segnali S0 S1 e S2
Si noti che il circuito in questione egrave di fatto un registro con 8 FF allrsquoingresso di ciascuno dei quali egrave previsto un MUX a 8 vie che pilotato dai segnali S0 S1 e S2 che seleziona uno degli 8 uscite del dispositivo La struttura interna puograve essere osservata ldquoclikkandordquo due volte sul dispositivo nello schema di Altera
64
Barrel shifter
6565
66
Simulazione timing
67
bull Utilizzando il sistema Altera progettare un orologio con secondi minuti ora partendo da un oscillatore a quarzo con frequenza 500 KHz
bull E se si volesse proseguire e realizzare anche un datario (giorno mese e anno )
bull Come potrebbe essere integrato con una sveglia Si ricordi che lrsquoorologio deve essere anche essere ldquopresettatordquo
bull Quali circuiti utilizzare per la visualizzazione
68
EPROM
X0nZ0m
y0kY0k
Clock
D0kQ0k
FFD0k
CK D0kQ0k CK
Reti sincrone con EPROM
Al posto delle EPROM si utilizzano ora dei PLA ovvero dispositivi nei quali si nei quali le funzioni combinatorie sono ottimizzate ma il principio egrave assolutamente il medesimo
69
Progettare con Altera una rete logica sincrona che utilizzando registri 374 ALU 74181 un contatore e altri dispositivi ritenuti necessari permetta di eseguire in sequenza la somma di due dati di 4 bit senza segno ingresso esegua il complemento a 2 inverta la parte bassa con la parte alta del risultato e infine moltiplichi il tutto logicamente per 2
La soluzione egrave sempre decomponibile in tre sottosistemi il controllo con la sua decodifica (unitagrave di controllo) il percorso dei dati con le unitagrave che li trasformano (datapath) e i registri di deposito e di ingresso dei dati
Questa egrave la struttura base di qualunque unitagrave centrale di qualunque computer
La differenza consiste solo nel fatto che anzicheacute avere una sequenza fissa di operazioni ne viene generata una volta a volta che dipende appunto dalla istruzione che deve essere eseguita Come si vedragrave approfonditamente nel corso di Calcolatori T del II anno (prof Neri e Mattoccia)
Arrivederci al corso di Calcolatori T del II anno (sapendo perfettamente le reti logiche helliphellip)
37
Glitch
Simulazione timingNB la presenza e la durata del glitch dipende dalle caratteristiche elettriche dei dispositivi
dalla loro tecnologia etc Nel caso dei dispositivi Altera dipende dal tipo di dispositivo sul quale egrave realizzato il circuito Analogamente la sensibilitagrave di eventuali ingressi di clock collegati allrsquouscita con il glitch dipende dalle caratteristiche del dispositivo Se ad esempio nel dispositivo Altera utilizzato si collega allrsquouscita Y6 il clock di un FFD non si ha commutazione del FF ma questo non egrave vero in assoluto
38
Cosa succede al contatore X5 progettato precedentemente se allrsquoaccensione non disponendo di un segnale di RESET i FF si portano in uno stato non facente parte del cicloNB La condizione allrsquoaccensione egrave del tutto casuale e dipende unicamente dalle condizioni elettriche
di realizzazione Ersquo impredicibileSupponiamo che i FF si portino al valore 110 (il numero 6 fuori dal ciclo) Analizziamo il comportamento
D0 Q0Q0CK
FFD D1 Q1Q1CK
FFD
MUX
1
0 D2 Q2Q2CK
FFD
MUX
1
0
ABC
ldquo4rdquo
000 001 010 011 100 110 111
In questo caso ci si riporta nella situazione di conteggio regolare (verificare con la tabella degli stati ) ma il comportamento in generale dipende dalla realizzazione e in altre realizzazione i due stati potrebbero essere separati dal ciclo principale che quindi non verrebbe mai raggiunto Ecco la funzione del RESET
39
Solo come esempio (da non utilizzare ) a scopo didattico vediamo la tabella delle transizioni di un contatore per 6 UpDown con comando di Reset I segnali di ingresso cambiano in modo asincrono ma hanno effetto in modo sincrono
Per compensare allrsquoaccensione
Sintetizzare e simulareCome dovrebbe essere modificato lo schema in Altera per permettere di
ldquopresettarerdquo in modo asincrono il contatore a un particolare valore di ingresso
00 01 11 10UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
111
110
000 101
000
101
y3 y2 y100 01 11 10
UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
000 000111
000 000 000 000110
000 101
000
000 000
101
y3 y2 y1
40
D0Q0
CKFFD
Clocky2
DEC
y3
y2
y1
ldquo1rdquo
ldquo2rdquo
ldquo3rdquo
ldquo4rdquo
1
0
UPDown
Sintesi di y2 in modo ldquodirettordquo
1
0
00 01 11 10UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
000 000111
000 000 000 000110
000 101
000
000 000
101
y3 y2 y1
41
Cassaforte hellipDisponendo di un contatore per 8 (ma anche per 16 etc) con reset sincrono e sempre abilitato al conteggio come potrei realizzare il circuito di apertura della cassaforte (sequenza X1X2 00-01-01-10) con modello Moore
Cx8RES
Q0 Q1 Q2 CK
RES= (ldquo0rdquoX1X2 + ldquo1rdquo X1X2 + ldquo2rdquo X1X2 + ldquo3rdquo X1 X2)Z = ldquo4rdquo (ldquo0rdquordquo1rdquordquo2rdquordquo3rdquordquo4rdquo sono le decodifiche binarie delle tre uscite del contatore)
Il contatore si resetta ogni volta che non si presenta lrsquoingresso giusto relativo al particolare stato Ilcontatore quindi si resetta e rimane resettato se non nelle condizioni espresse dalla funzione RESIl contatore arrivato a 4 (Z=1) si resetta comunque al successivo fronte del clock
Le reti sincrone si progettano sempre come combinazione di blocchi disponibili e logica ldquorandomrdquo
ABC
ldquo0rdquoldquo1rdquoldquo2rdquoldquo3rdquoldquo4rdquo
RLAND-OR
X1X2
RESZ
Cx8RES
Q0 Q1 Q2 CK
42
Contatori
EN
Q0 Q1 Q2 Q3CKCY
RESET
bull Attenzione Consideriamo il contatore di figura (questa volta con RESET asincrono) e supponiamo di utilizzarlo per contare per 5 (NB per il Reset si usa il ldquo5rdquo in questo casohellip glitch)
ABCD
ldquo5rdquo
ldquo1rdquo Percheacute questo schema egrave sbagliato
bull Percheacute presenta una corsa critica Nel momento in cui anche uno solo dei FF si resetta (e non tutti nello stesso istante) viene a mancare la configurazione ldquo4rdquo sul decoder e quindi alcuni FF potrebbero non fare in tempo a resettarsi E allora
EN
Q0 Q1 Q2 Q3CKCY
RESET
ABCD
ldquo5rdquo
ldquo1rdquo
RS
Y ldquo0rdquo
bull Cosigrave facendo il ldquo4rdquo attiva il SET e il FF NON si resetta fino a quando non egrave stato raggiunto la ldquo0rdquo NB lo schema ldquosbagliatordquo si puograve usare solo se si egrave certi della rapiditagrave di reset dei FF del contatore
bull Verificare con Altera
Sintesi cassaforte con moduli
Altera Cassaforte sincrona con moduli
Rete di controllo
Contatore con Reset asincrono e Load sincrono
43
NB In questo progetto la sintesi egrave stata condotta in modo ldquodirettordquo ovvero senza passare per la sintesi formale e utilizzando componenti disponibili e helliphellip materia grigia La sintesi dei circuiti sincroni si fa sempre e unicamente cosigrave
44
Simulazione funzionale (no timing)
NB I segnali di ingresso sono campionati SOLO sul fronte positivo del clock anche se si presentano asincroni Il segnale di uscita si attiva al clock successivo al riconoscimento della sequenza La posizione di ldquoriposordquo del contatore egrave il valore 4 I segnali Yi sono le decodifiche dei segnali di di ingresso X1 e X2
00 01 01 10
45
Simulazione timing
46
NB Si egrave scelto di utilizzare SOLO gli ingressi SINCRONI del contatore per semplicitagrave Il contatore rimane al valore 100 fino a quando non si presenta allrsquoingresso il valore 00 Se la sequenza egrave esatta il contatore continua a contare in avanti fino alla generazione dellrsquouscita (valore 11 del contatore) altrimenti si riporta al valore 100 ovvero Qc=1) Il segnale GN (Gate Not) egrave quello che abilita il conteggio Il sistema riamane stabile a 000 per una sequenza lunga a piacere di X1=0 e X2=0 e si sposta quando dopo 00 si ha 01 Come si evince dalla simulazione se la sequenza non egrave corretta o egrave interrotta il contatore si riporta sempre a 100
00 01 11 10
001 000 000
X1
000000 010 100 100001
000 100 100 011010
100 100 100 100011
000 100 100 100100
000 100 100 100101
000 100 100 100110
000 100 100 100111
0
0
0
1
0
0
0
0
X2
000
NB la tabella delle transizioni derivata della rete realizzata NON ha ovviamente condizioni di indifferenza
47
Progettare un contatore packed BCD updown a 8 bit (due digit)
48
Generazione di forme drsquoondabull Ersquo possibile generare forme drsquoonda periodiche mediante circuiti sincroni di periodo
sottomultiplo intero del clock
Esempio 1Divisore di frequenza per 2
D0k Q0k
CK D Q
CK Clock
Q
Esempio 2 generare una forma drsquoonda periodica con periodo 5T (ove T sia il periodo del clock) in cui in un semiperiodo 3T lrsquouscita sia alta e nellrsquoaltro semiperiodo 2T lrsquouscita sia bassa
Q0 Q1 Q2 CK
Cx5
C
B
A
01234
DecoderDemux
Clock
ZZ T
3T2T
3T
NB una rete logica egrave in grado di effettuare delle divisioni di frequenza e mai delle moltiplicazioni di frequenza (che si possono ottenere solo con circuiti analogici non lineari)
49
Di che circuito si tratta
D0k Q0k
CK D0 Q0
CKQ0
D0k Q0k
CK D1 Q1
CK
D0k Q0k
CK D2 Q2
CKClock
Clock
Q0
Q1
Q2
Ersquo un contatore binario ma non sincrono Infatti i vari FF NON utilizzano lo stesso clock e questo porta a un piccolo disallineamento sulle uscite Non egrave sintetizzabile come una rete sincrona e una sintesi formale sarebbe possibile solo trattando il circuito come asincrono ovvero ldquoaprendordquo i FF Sarebbe possibile trasformarlo in un contatore x6 mantenendo la stessa impostazione
Sintetizzare e simulare con Altera
NB il segnale di clock non egrave in comune
50
7493
51
Altera Contatore asincrono
Contatore asincrono
52
Simulazione timing
53
Come puograve essere utilizzato un FFD per catturare un impulso piugrave breve di un periodo
D2 Q2
Q2CKFFD Z
Clock
D1 Q1
Q1CKFFD
D0 Q00
Q0CKFFD
ldquo1rdquo CL
Lrsquoimpulso breve viene catturato dal FF 0 (purcheacute di larghezza sufficiente per la tecnologia del FF) - che quindi agisce come integratore ndash la cui uscita alimenta il monoimpulsore di tipo A Lrsquoattivazione del FF 1 resetta il FF 0 (supponendo che il segnale di CL sia ldquopositiverdquotruerdquo)
Ci puograve essere un problema se il CL agisce in modo asincrono
NB questo circuito e quello del lucido precedente evidenziano il fatto che nella realtagrave nessuna rete egrave solo sincrona ma bensigrave egrave pressocheacute sempre necessario utilizzare reti di natura diversa anche percheacute vi egrave sempre una interazione fra reti con clock diversi eo con segnali provenienti dal mondo esterno NON sincronizzati con il clock
Monoimpulsore di tipo A ldquorivistordquo
54
bull Uno shift register a sinistra (a destra) egrave un registro composto da FFD che ad ogni clock trasferisce il valore del FF a destra (a sinistra) di ciascun FF nel FF stesso Nel FF piugrave a destra (sinistra) viene immesso uno ldquo0rdquo Questi tipi di registri shift si chiamano ldquologicirdquo
Shift register (registri a traslazione o scorrimento)
D0kQ0k
CK DnQn
CK
D0kQ0k
CK Dn-1Qn-1
CK
D0kQ0k
CK Dn-2Qn-2
CK
D0kQ0k
CK D0Q0
CK
ldquo0rdquo
Shift register a sinistra
bull Anche per i registri a traslazione esistono diverse versioni con ingresso parallelo e uscita seriale con ingresso seriale e uscita parallela con reset con load etc etc
bull Si noti che uno shift register egrave anche un contatore Si immagini per esempio che dopo un reset siano inseriti degli uni a partire da destra Lo shift register si riempie progressivamente di uni e quindi la posizione in cui egrave arrivato lrsquouno indica il valore del conteggio in base a un codice ldquouno su nrdquo (un codice decodificato)
bull Spesso uno stesso registro puograve traslare a destra o a sinistra in funzione di una segnale di controllo Ovviamente questo si ottiene premettendo a ogni ingresso Di un MUX a due vie che preleva in funzione del segnale di controllo Qigrave+1 o Qigrave-1 Con questa configurazione lo shift register diventa anche un contatore avantiindietro
Registro a scorrimento (shift-register) a 3 bit
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
IN
OUT2OUT1OUT0
CK
CK
IN
A_RESET
OUT1
OUT2
OUT0
Registro a scorrimento (shift-register) a 3 bit
57
Esempio 74164 (serial In parallel OUT)
bull In questo registro a traslazione ad ogni fronte positivo del clock i dati sono traslati a destra (Q0 -gt Q1 Q1-gtQ2 etc) Il registro egrave dotato in un Master Reset (vero negato) e il dato inserito nel FF Q0 egrave dato dallrsquoAND dei due ingressi Dsa e Dsb
bull Si noti che lrsquooperazione di shift corrisponde aritmeticamente alle operazioni di divisione e moltiplicazione per 2 Si supponga che in Q0 vi sia il bit meno significativo e in Q7 il meno significativo
0 1 1 0 1 0 1 0
010101102 = 10810
Shift left =gt x2
Shift right =gt 2
101011002 = 21610
001010112 = 5910
NB nel dispositivo i bit sono posti in ordine invertito e quindi un shift left del numero corrisponde a uno shift right sul dispositivo
58
bull Esistono anche i registri a traslazione ldquoaritmeticirdquo In questi shift register a destra anzicheacute fare entrare nel FF piugrave a sinistra lo ldquo0rdquo viene immesso sempre ripetutamente il suo valore logico
Shift aritmetico
Q7 Q6 Q5 Q4 Q3 Q2 Q1 Q0
D7 D6 D5 D4 D3 D2 D1 D0
I LDCK Esempio
11001010SRA
11100101 interpretato in complemento a 2
001101102=5410
C2 C2
000110112=2710
bull Lo shift aritmetico a destra effettua una divisione per 2 mantenendo il segno
59
Rotazione
Nei computer egrave sovente necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register
D0kQ0k
CK DnQn
CK
D0kQ0k
CK Dn-1Qn-1
CK
D0kQ0k
CK Dn-2Qn-2
CK
D0kQ0k
CK D0Q0
CK
Molto spesso nei computer egrave necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register con direzione programmabile In questo caso su D0 ad esempio puograve essere avviato o Q1 o Qn
60
Contatori con shift register ndash Contatore retroazionato EX-OR
Q2Q0
Shift right 3 bitDQ1
110 111 011 101 010 001
Diagramma degli stati disgiunto
Uno shift register con n FF retroazionato con un EX-OR (scelta degli ingressi variabile) egrave un contatore NON binario che conta per 2n-1 (purcheacute presettato a un valore diverso da tutti zeri)
000
100
61
Contatore di Johnson (riempimento e svuotamento)
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
000-gt100-gt110-gt111-gt011-gt001-gt000-gtStati isolati 101-gt010-gt101gt1
Poicheacute configurazioni adiacenti del codice Johnson differiscono di un solo bit il contatore puograve essere utilizzato per generare forme drsquoonda prive di alee
62
Contatore ad anello con un solo 1 (ovvero che genera direttamente il codice 1su n)
FFDD Q
QR
RESET
FFDD Q
QR
RESET
FFDD Q
QPR
RESET
OUT3OUT1OUT0
CK
FFDD Q
QR
RESET
OUT2
0001-gt1000-gt0100-gt0010-gt0010n FF per contare per n (mentre con i contatori binari il numero dei FF egrave il log2m ove m egrave il primo intero maggiore o uguale a n)
63
Barrel shifter (rotore)Un barrel shifter egrave uno shift register in grado di traslare di ldquonrdquo posizioni in un solo clock il contenuto dei suoi FF In figura egrave riportato il barrel shifter della Altera Gli ingressi A-H in presenza dellrsquoattivazione del segnale LDST al primo fronte positivo del clock sono depositati nei FF Quando LDST egrave 0 ad ogni fronte positivo del clock i bit di uscita sono ruotati di n posizioni in senso antiorario (ovvero lrsquouscita H diventa la G la G diventa la Fhellipe lrsquouscita A diventa la H) ove n egrave il valore binario indicato dai segnali S0 S1 e S2
Si noti che il circuito in questione egrave di fatto un registro con 8 FF allrsquoingresso di ciascuno dei quali egrave previsto un MUX a 8 vie che pilotato dai segnali S0 S1 e S2 che seleziona uno degli 8 uscite del dispositivo La struttura interna puograve essere osservata ldquoclikkandordquo due volte sul dispositivo nello schema di Altera
64
Barrel shifter
6565
66
Simulazione timing
67
bull Utilizzando il sistema Altera progettare un orologio con secondi minuti ora partendo da un oscillatore a quarzo con frequenza 500 KHz
bull E se si volesse proseguire e realizzare anche un datario (giorno mese e anno )
bull Come potrebbe essere integrato con una sveglia Si ricordi che lrsquoorologio deve essere anche essere ldquopresettatordquo
bull Quali circuiti utilizzare per la visualizzazione
68
EPROM
X0nZ0m
y0kY0k
Clock
D0kQ0k
FFD0k
CK D0kQ0k CK
Reti sincrone con EPROM
Al posto delle EPROM si utilizzano ora dei PLA ovvero dispositivi nei quali si nei quali le funzioni combinatorie sono ottimizzate ma il principio egrave assolutamente il medesimo
69
Progettare con Altera una rete logica sincrona che utilizzando registri 374 ALU 74181 un contatore e altri dispositivi ritenuti necessari permetta di eseguire in sequenza la somma di due dati di 4 bit senza segno ingresso esegua il complemento a 2 inverta la parte bassa con la parte alta del risultato e infine moltiplichi il tutto logicamente per 2
La soluzione egrave sempre decomponibile in tre sottosistemi il controllo con la sua decodifica (unitagrave di controllo) il percorso dei dati con le unitagrave che li trasformano (datapath) e i registri di deposito e di ingresso dei dati
Questa egrave la struttura base di qualunque unitagrave centrale di qualunque computer
La differenza consiste solo nel fatto che anzicheacute avere una sequenza fissa di operazioni ne viene generata una volta a volta che dipende appunto dalla istruzione che deve essere eseguita Come si vedragrave approfonditamente nel corso di Calcolatori T del II anno (prof Neri e Mattoccia)
Arrivederci al corso di Calcolatori T del II anno (sapendo perfettamente le reti logiche helliphellip)
38
Cosa succede al contatore X5 progettato precedentemente se allrsquoaccensione non disponendo di un segnale di RESET i FF si portano in uno stato non facente parte del cicloNB La condizione allrsquoaccensione egrave del tutto casuale e dipende unicamente dalle condizioni elettriche
di realizzazione Ersquo impredicibileSupponiamo che i FF si portino al valore 110 (il numero 6 fuori dal ciclo) Analizziamo il comportamento
D0 Q0Q0CK
FFD D1 Q1Q1CK
FFD
MUX
1
0 D2 Q2Q2CK
FFD
MUX
1
0
ABC
ldquo4rdquo
000 001 010 011 100 110 111
In questo caso ci si riporta nella situazione di conteggio regolare (verificare con la tabella degli stati ) ma il comportamento in generale dipende dalla realizzazione e in altre realizzazione i due stati potrebbero essere separati dal ciclo principale che quindi non verrebbe mai raggiunto Ecco la funzione del RESET
39
Solo come esempio (da non utilizzare ) a scopo didattico vediamo la tabella delle transizioni di un contatore per 6 UpDown con comando di Reset I segnali di ingresso cambiano in modo asincrono ma hanno effetto in modo sincrono
Per compensare allrsquoaccensione
Sintetizzare e simulareCome dovrebbe essere modificato lo schema in Altera per permettere di
ldquopresettarerdquo in modo asincrono il contatore a un particolare valore di ingresso
00 01 11 10UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
111
110
000 101
000
101
y3 y2 y100 01 11 10
UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
000 000111
000 000 000 000110
000 101
000
000 000
101
y3 y2 y1
40
D0Q0
CKFFD
Clocky2
DEC
y3
y2
y1
ldquo1rdquo
ldquo2rdquo
ldquo3rdquo
ldquo4rdquo
1
0
UPDown
Sintesi di y2 in modo ldquodirettordquo
1
0
00 01 11 10UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
000 000111
000 000 000 000110
000 101
000
000 000
101
y3 y2 y1
41
Cassaforte hellipDisponendo di un contatore per 8 (ma anche per 16 etc) con reset sincrono e sempre abilitato al conteggio come potrei realizzare il circuito di apertura della cassaforte (sequenza X1X2 00-01-01-10) con modello Moore
Cx8RES
Q0 Q1 Q2 CK
RES= (ldquo0rdquoX1X2 + ldquo1rdquo X1X2 + ldquo2rdquo X1X2 + ldquo3rdquo X1 X2)Z = ldquo4rdquo (ldquo0rdquordquo1rdquordquo2rdquordquo3rdquordquo4rdquo sono le decodifiche binarie delle tre uscite del contatore)
Il contatore si resetta ogni volta che non si presenta lrsquoingresso giusto relativo al particolare stato Ilcontatore quindi si resetta e rimane resettato se non nelle condizioni espresse dalla funzione RESIl contatore arrivato a 4 (Z=1) si resetta comunque al successivo fronte del clock
Le reti sincrone si progettano sempre come combinazione di blocchi disponibili e logica ldquorandomrdquo
ABC
ldquo0rdquoldquo1rdquoldquo2rdquoldquo3rdquoldquo4rdquo
RLAND-OR
X1X2
RESZ
Cx8RES
Q0 Q1 Q2 CK
42
Contatori
EN
Q0 Q1 Q2 Q3CKCY
RESET
bull Attenzione Consideriamo il contatore di figura (questa volta con RESET asincrono) e supponiamo di utilizzarlo per contare per 5 (NB per il Reset si usa il ldquo5rdquo in questo casohellip glitch)
ABCD
ldquo5rdquo
ldquo1rdquo Percheacute questo schema egrave sbagliato
bull Percheacute presenta una corsa critica Nel momento in cui anche uno solo dei FF si resetta (e non tutti nello stesso istante) viene a mancare la configurazione ldquo4rdquo sul decoder e quindi alcuni FF potrebbero non fare in tempo a resettarsi E allora
EN
Q0 Q1 Q2 Q3CKCY
RESET
ABCD
ldquo5rdquo
ldquo1rdquo
RS
Y ldquo0rdquo
bull Cosigrave facendo il ldquo4rdquo attiva il SET e il FF NON si resetta fino a quando non egrave stato raggiunto la ldquo0rdquo NB lo schema ldquosbagliatordquo si puograve usare solo se si egrave certi della rapiditagrave di reset dei FF del contatore
bull Verificare con Altera
Sintesi cassaforte con moduli
Altera Cassaforte sincrona con moduli
Rete di controllo
Contatore con Reset asincrono e Load sincrono
43
NB In questo progetto la sintesi egrave stata condotta in modo ldquodirettordquo ovvero senza passare per la sintesi formale e utilizzando componenti disponibili e helliphellip materia grigia La sintesi dei circuiti sincroni si fa sempre e unicamente cosigrave
44
Simulazione funzionale (no timing)
NB I segnali di ingresso sono campionati SOLO sul fronte positivo del clock anche se si presentano asincroni Il segnale di uscita si attiva al clock successivo al riconoscimento della sequenza La posizione di ldquoriposordquo del contatore egrave il valore 4 I segnali Yi sono le decodifiche dei segnali di di ingresso X1 e X2
00 01 01 10
45
Simulazione timing
46
NB Si egrave scelto di utilizzare SOLO gli ingressi SINCRONI del contatore per semplicitagrave Il contatore rimane al valore 100 fino a quando non si presenta allrsquoingresso il valore 00 Se la sequenza egrave esatta il contatore continua a contare in avanti fino alla generazione dellrsquouscita (valore 11 del contatore) altrimenti si riporta al valore 100 ovvero Qc=1) Il segnale GN (Gate Not) egrave quello che abilita il conteggio Il sistema riamane stabile a 000 per una sequenza lunga a piacere di X1=0 e X2=0 e si sposta quando dopo 00 si ha 01 Come si evince dalla simulazione se la sequenza non egrave corretta o egrave interrotta il contatore si riporta sempre a 100
00 01 11 10
001 000 000
X1
000000 010 100 100001
000 100 100 011010
100 100 100 100011
000 100 100 100100
000 100 100 100101
000 100 100 100110
000 100 100 100111
0
0
0
1
0
0
0
0
X2
000
NB la tabella delle transizioni derivata della rete realizzata NON ha ovviamente condizioni di indifferenza
47
Progettare un contatore packed BCD updown a 8 bit (due digit)
48
Generazione di forme drsquoondabull Ersquo possibile generare forme drsquoonda periodiche mediante circuiti sincroni di periodo
sottomultiplo intero del clock
Esempio 1Divisore di frequenza per 2
D0k Q0k
CK D Q
CK Clock
Q
Esempio 2 generare una forma drsquoonda periodica con periodo 5T (ove T sia il periodo del clock) in cui in un semiperiodo 3T lrsquouscita sia alta e nellrsquoaltro semiperiodo 2T lrsquouscita sia bassa
Q0 Q1 Q2 CK
Cx5
C
B
A
01234
DecoderDemux
Clock
ZZ T
3T2T
3T
NB una rete logica egrave in grado di effettuare delle divisioni di frequenza e mai delle moltiplicazioni di frequenza (che si possono ottenere solo con circuiti analogici non lineari)
49
Di che circuito si tratta
D0k Q0k
CK D0 Q0
CKQ0
D0k Q0k
CK D1 Q1
CK
D0k Q0k
CK D2 Q2
CKClock
Clock
Q0
Q1
Q2
Ersquo un contatore binario ma non sincrono Infatti i vari FF NON utilizzano lo stesso clock e questo porta a un piccolo disallineamento sulle uscite Non egrave sintetizzabile come una rete sincrona e una sintesi formale sarebbe possibile solo trattando il circuito come asincrono ovvero ldquoaprendordquo i FF Sarebbe possibile trasformarlo in un contatore x6 mantenendo la stessa impostazione
Sintetizzare e simulare con Altera
NB il segnale di clock non egrave in comune
50
7493
51
Altera Contatore asincrono
Contatore asincrono
52
Simulazione timing
53
Come puograve essere utilizzato un FFD per catturare un impulso piugrave breve di un periodo
D2 Q2
Q2CKFFD Z
Clock
D1 Q1
Q1CKFFD
D0 Q00
Q0CKFFD
ldquo1rdquo CL
Lrsquoimpulso breve viene catturato dal FF 0 (purcheacute di larghezza sufficiente per la tecnologia del FF) - che quindi agisce come integratore ndash la cui uscita alimenta il monoimpulsore di tipo A Lrsquoattivazione del FF 1 resetta il FF 0 (supponendo che il segnale di CL sia ldquopositiverdquotruerdquo)
Ci puograve essere un problema se il CL agisce in modo asincrono
NB questo circuito e quello del lucido precedente evidenziano il fatto che nella realtagrave nessuna rete egrave solo sincrona ma bensigrave egrave pressocheacute sempre necessario utilizzare reti di natura diversa anche percheacute vi egrave sempre una interazione fra reti con clock diversi eo con segnali provenienti dal mondo esterno NON sincronizzati con il clock
Monoimpulsore di tipo A ldquorivistordquo
54
bull Uno shift register a sinistra (a destra) egrave un registro composto da FFD che ad ogni clock trasferisce il valore del FF a destra (a sinistra) di ciascun FF nel FF stesso Nel FF piugrave a destra (sinistra) viene immesso uno ldquo0rdquo Questi tipi di registri shift si chiamano ldquologicirdquo
Shift register (registri a traslazione o scorrimento)
D0kQ0k
CK DnQn
CK
D0kQ0k
CK Dn-1Qn-1
CK
D0kQ0k
CK Dn-2Qn-2
CK
D0kQ0k
CK D0Q0
CK
ldquo0rdquo
Shift register a sinistra
bull Anche per i registri a traslazione esistono diverse versioni con ingresso parallelo e uscita seriale con ingresso seriale e uscita parallela con reset con load etc etc
bull Si noti che uno shift register egrave anche un contatore Si immagini per esempio che dopo un reset siano inseriti degli uni a partire da destra Lo shift register si riempie progressivamente di uni e quindi la posizione in cui egrave arrivato lrsquouno indica il valore del conteggio in base a un codice ldquouno su nrdquo (un codice decodificato)
bull Spesso uno stesso registro puograve traslare a destra o a sinistra in funzione di una segnale di controllo Ovviamente questo si ottiene premettendo a ogni ingresso Di un MUX a due vie che preleva in funzione del segnale di controllo Qigrave+1 o Qigrave-1 Con questa configurazione lo shift register diventa anche un contatore avantiindietro
Registro a scorrimento (shift-register) a 3 bit
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
IN
OUT2OUT1OUT0
CK
CK
IN
A_RESET
OUT1
OUT2
OUT0
Registro a scorrimento (shift-register) a 3 bit
57
Esempio 74164 (serial In parallel OUT)
bull In questo registro a traslazione ad ogni fronte positivo del clock i dati sono traslati a destra (Q0 -gt Q1 Q1-gtQ2 etc) Il registro egrave dotato in un Master Reset (vero negato) e il dato inserito nel FF Q0 egrave dato dallrsquoAND dei due ingressi Dsa e Dsb
bull Si noti che lrsquooperazione di shift corrisponde aritmeticamente alle operazioni di divisione e moltiplicazione per 2 Si supponga che in Q0 vi sia il bit meno significativo e in Q7 il meno significativo
0 1 1 0 1 0 1 0
010101102 = 10810
Shift left =gt x2
Shift right =gt 2
101011002 = 21610
001010112 = 5910
NB nel dispositivo i bit sono posti in ordine invertito e quindi un shift left del numero corrisponde a uno shift right sul dispositivo
58
bull Esistono anche i registri a traslazione ldquoaritmeticirdquo In questi shift register a destra anzicheacute fare entrare nel FF piugrave a sinistra lo ldquo0rdquo viene immesso sempre ripetutamente il suo valore logico
Shift aritmetico
Q7 Q6 Q5 Q4 Q3 Q2 Q1 Q0
D7 D6 D5 D4 D3 D2 D1 D0
I LDCK Esempio
11001010SRA
11100101 interpretato in complemento a 2
001101102=5410
C2 C2
000110112=2710
bull Lo shift aritmetico a destra effettua una divisione per 2 mantenendo il segno
59
Rotazione
Nei computer egrave sovente necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register
D0kQ0k
CK DnQn
CK
D0kQ0k
CK Dn-1Qn-1
CK
D0kQ0k
CK Dn-2Qn-2
CK
D0kQ0k
CK D0Q0
CK
Molto spesso nei computer egrave necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register con direzione programmabile In questo caso su D0 ad esempio puograve essere avviato o Q1 o Qn
60
Contatori con shift register ndash Contatore retroazionato EX-OR
Q2Q0
Shift right 3 bitDQ1
110 111 011 101 010 001
Diagramma degli stati disgiunto
Uno shift register con n FF retroazionato con un EX-OR (scelta degli ingressi variabile) egrave un contatore NON binario che conta per 2n-1 (purcheacute presettato a un valore diverso da tutti zeri)
000
100
61
Contatore di Johnson (riempimento e svuotamento)
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
000-gt100-gt110-gt111-gt011-gt001-gt000-gtStati isolati 101-gt010-gt101gt1
Poicheacute configurazioni adiacenti del codice Johnson differiscono di un solo bit il contatore puograve essere utilizzato per generare forme drsquoonda prive di alee
62
Contatore ad anello con un solo 1 (ovvero che genera direttamente il codice 1su n)
FFDD Q
QR
RESET
FFDD Q
QR
RESET
FFDD Q
QPR
RESET
OUT3OUT1OUT0
CK
FFDD Q
QR
RESET
OUT2
0001-gt1000-gt0100-gt0010-gt0010n FF per contare per n (mentre con i contatori binari il numero dei FF egrave il log2m ove m egrave il primo intero maggiore o uguale a n)
63
Barrel shifter (rotore)Un barrel shifter egrave uno shift register in grado di traslare di ldquonrdquo posizioni in un solo clock il contenuto dei suoi FF In figura egrave riportato il barrel shifter della Altera Gli ingressi A-H in presenza dellrsquoattivazione del segnale LDST al primo fronte positivo del clock sono depositati nei FF Quando LDST egrave 0 ad ogni fronte positivo del clock i bit di uscita sono ruotati di n posizioni in senso antiorario (ovvero lrsquouscita H diventa la G la G diventa la Fhellipe lrsquouscita A diventa la H) ove n egrave il valore binario indicato dai segnali S0 S1 e S2
Si noti che il circuito in questione egrave di fatto un registro con 8 FF allrsquoingresso di ciascuno dei quali egrave previsto un MUX a 8 vie che pilotato dai segnali S0 S1 e S2 che seleziona uno degli 8 uscite del dispositivo La struttura interna puograve essere osservata ldquoclikkandordquo due volte sul dispositivo nello schema di Altera
64
Barrel shifter
6565
66
Simulazione timing
67
bull Utilizzando il sistema Altera progettare un orologio con secondi minuti ora partendo da un oscillatore a quarzo con frequenza 500 KHz
bull E se si volesse proseguire e realizzare anche un datario (giorno mese e anno )
bull Come potrebbe essere integrato con una sveglia Si ricordi che lrsquoorologio deve essere anche essere ldquopresettatordquo
bull Quali circuiti utilizzare per la visualizzazione
68
EPROM
X0nZ0m
y0kY0k
Clock
D0kQ0k
FFD0k
CK D0kQ0k CK
Reti sincrone con EPROM
Al posto delle EPROM si utilizzano ora dei PLA ovvero dispositivi nei quali si nei quali le funzioni combinatorie sono ottimizzate ma il principio egrave assolutamente il medesimo
69
Progettare con Altera una rete logica sincrona che utilizzando registri 374 ALU 74181 un contatore e altri dispositivi ritenuti necessari permetta di eseguire in sequenza la somma di due dati di 4 bit senza segno ingresso esegua il complemento a 2 inverta la parte bassa con la parte alta del risultato e infine moltiplichi il tutto logicamente per 2
La soluzione egrave sempre decomponibile in tre sottosistemi il controllo con la sua decodifica (unitagrave di controllo) il percorso dei dati con le unitagrave che li trasformano (datapath) e i registri di deposito e di ingresso dei dati
Questa egrave la struttura base di qualunque unitagrave centrale di qualunque computer
La differenza consiste solo nel fatto che anzicheacute avere una sequenza fissa di operazioni ne viene generata una volta a volta che dipende appunto dalla istruzione che deve essere eseguita Come si vedragrave approfonditamente nel corso di Calcolatori T del II anno (prof Neri e Mattoccia)
Arrivederci al corso di Calcolatori T del II anno (sapendo perfettamente le reti logiche helliphellip)
39
Solo come esempio (da non utilizzare ) a scopo didattico vediamo la tabella delle transizioni di un contatore per 6 UpDown con comando di Reset I segnali di ingresso cambiano in modo asincrono ma hanno effetto in modo sincrono
Per compensare allrsquoaccensione
Sintetizzare e simulareCome dovrebbe essere modificato lo schema in Altera per permettere di
ldquopresettarerdquo in modo asincrono il contatore a un particolare valore di ingresso
00 01 11 10UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
111
110
000 101
000
101
y3 y2 y100 01 11 10
UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
000 000111
000 000 000 000110
000 101
000
000 000
101
y3 y2 y1
40
D0Q0
CKFFD
Clocky2
DEC
y3
y2
y1
ldquo1rdquo
ldquo2rdquo
ldquo3rdquo
ldquo4rdquo
1
0
UPDown
Sintesi di y2 in modo ldquodirettordquo
1
0
00 01 11 10UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
000 000111
000 000 000 000110
000 101
000
000 000
101
y3 y2 y1
41
Cassaforte hellipDisponendo di un contatore per 8 (ma anche per 16 etc) con reset sincrono e sempre abilitato al conteggio come potrei realizzare il circuito di apertura della cassaforte (sequenza X1X2 00-01-01-10) con modello Moore
Cx8RES
Q0 Q1 Q2 CK
RES= (ldquo0rdquoX1X2 + ldquo1rdquo X1X2 + ldquo2rdquo X1X2 + ldquo3rdquo X1 X2)Z = ldquo4rdquo (ldquo0rdquordquo1rdquordquo2rdquordquo3rdquordquo4rdquo sono le decodifiche binarie delle tre uscite del contatore)
Il contatore si resetta ogni volta che non si presenta lrsquoingresso giusto relativo al particolare stato Ilcontatore quindi si resetta e rimane resettato se non nelle condizioni espresse dalla funzione RESIl contatore arrivato a 4 (Z=1) si resetta comunque al successivo fronte del clock
Le reti sincrone si progettano sempre come combinazione di blocchi disponibili e logica ldquorandomrdquo
ABC
ldquo0rdquoldquo1rdquoldquo2rdquoldquo3rdquoldquo4rdquo
RLAND-OR
X1X2
RESZ
Cx8RES
Q0 Q1 Q2 CK
42
Contatori
EN
Q0 Q1 Q2 Q3CKCY
RESET
bull Attenzione Consideriamo il contatore di figura (questa volta con RESET asincrono) e supponiamo di utilizzarlo per contare per 5 (NB per il Reset si usa il ldquo5rdquo in questo casohellip glitch)
ABCD
ldquo5rdquo
ldquo1rdquo Percheacute questo schema egrave sbagliato
bull Percheacute presenta una corsa critica Nel momento in cui anche uno solo dei FF si resetta (e non tutti nello stesso istante) viene a mancare la configurazione ldquo4rdquo sul decoder e quindi alcuni FF potrebbero non fare in tempo a resettarsi E allora
EN
Q0 Q1 Q2 Q3CKCY
RESET
ABCD
ldquo5rdquo
ldquo1rdquo
RS
Y ldquo0rdquo
bull Cosigrave facendo il ldquo4rdquo attiva il SET e il FF NON si resetta fino a quando non egrave stato raggiunto la ldquo0rdquo NB lo schema ldquosbagliatordquo si puograve usare solo se si egrave certi della rapiditagrave di reset dei FF del contatore
bull Verificare con Altera
Sintesi cassaforte con moduli
Altera Cassaforte sincrona con moduli
Rete di controllo
Contatore con Reset asincrono e Load sincrono
43
NB In questo progetto la sintesi egrave stata condotta in modo ldquodirettordquo ovvero senza passare per la sintesi formale e utilizzando componenti disponibili e helliphellip materia grigia La sintesi dei circuiti sincroni si fa sempre e unicamente cosigrave
44
Simulazione funzionale (no timing)
NB I segnali di ingresso sono campionati SOLO sul fronte positivo del clock anche se si presentano asincroni Il segnale di uscita si attiva al clock successivo al riconoscimento della sequenza La posizione di ldquoriposordquo del contatore egrave il valore 4 I segnali Yi sono le decodifiche dei segnali di di ingresso X1 e X2
00 01 01 10
45
Simulazione timing
46
NB Si egrave scelto di utilizzare SOLO gli ingressi SINCRONI del contatore per semplicitagrave Il contatore rimane al valore 100 fino a quando non si presenta allrsquoingresso il valore 00 Se la sequenza egrave esatta il contatore continua a contare in avanti fino alla generazione dellrsquouscita (valore 11 del contatore) altrimenti si riporta al valore 100 ovvero Qc=1) Il segnale GN (Gate Not) egrave quello che abilita il conteggio Il sistema riamane stabile a 000 per una sequenza lunga a piacere di X1=0 e X2=0 e si sposta quando dopo 00 si ha 01 Come si evince dalla simulazione se la sequenza non egrave corretta o egrave interrotta il contatore si riporta sempre a 100
00 01 11 10
001 000 000
X1
000000 010 100 100001
000 100 100 011010
100 100 100 100011
000 100 100 100100
000 100 100 100101
000 100 100 100110
000 100 100 100111
0
0
0
1
0
0
0
0
X2
000
NB la tabella delle transizioni derivata della rete realizzata NON ha ovviamente condizioni di indifferenza
47
Progettare un contatore packed BCD updown a 8 bit (due digit)
48
Generazione di forme drsquoondabull Ersquo possibile generare forme drsquoonda periodiche mediante circuiti sincroni di periodo
sottomultiplo intero del clock
Esempio 1Divisore di frequenza per 2
D0k Q0k
CK D Q
CK Clock
Q
Esempio 2 generare una forma drsquoonda periodica con periodo 5T (ove T sia il periodo del clock) in cui in un semiperiodo 3T lrsquouscita sia alta e nellrsquoaltro semiperiodo 2T lrsquouscita sia bassa
Q0 Q1 Q2 CK
Cx5
C
B
A
01234
DecoderDemux
Clock
ZZ T
3T2T
3T
NB una rete logica egrave in grado di effettuare delle divisioni di frequenza e mai delle moltiplicazioni di frequenza (che si possono ottenere solo con circuiti analogici non lineari)
49
Di che circuito si tratta
D0k Q0k
CK D0 Q0
CKQ0
D0k Q0k
CK D1 Q1
CK
D0k Q0k
CK D2 Q2
CKClock
Clock
Q0
Q1
Q2
Ersquo un contatore binario ma non sincrono Infatti i vari FF NON utilizzano lo stesso clock e questo porta a un piccolo disallineamento sulle uscite Non egrave sintetizzabile come una rete sincrona e una sintesi formale sarebbe possibile solo trattando il circuito come asincrono ovvero ldquoaprendordquo i FF Sarebbe possibile trasformarlo in un contatore x6 mantenendo la stessa impostazione
Sintetizzare e simulare con Altera
NB il segnale di clock non egrave in comune
50
7493
51
Altera Contatore asincrono
Contatore asincrono
52
Simulazione timing
53
Come puograve essere utilizzato un FFD per catturare un impulso piugrave breve di un periodo
D2 Q2
Q2CKFFD Z
Clock
D1 Q1
Q1CKFFD
D0 Q00
Q0CKFFD
ldquo1rdquo CL
Lrsquoimpulso breve viene catturato dal FF 0 (purcheacute di larghezza sufficiente per la tecnologia del FF) - che quindi agisce come integratore ndash la cui uscita alimenta il monoimpulsore di tipo A Lrsquoattivazione del FF 1 resetta il FF 0 (supponendo che il segnale di CL sia ldquopositiverdquotruerdquo)
Ci puograve essere un problema se il CL agisce in modo asincrono
NB questo circuito e quello del lucido precedente evidenziano il fatto che nella realtagrave nessuna rete egrave solo sincrona ma bensigrave egrave pressocheacute sempre necessario utilizzare reti di natura diversa anche percheacute vi egrave sempre una interazione fra reti con clock diversi eo con segnali provenienti dal mondo esterno NON sincronizzati con il clock
Monoimpulsore di tipo A ldquorivistordquo
54
bull Uno shift register a sinistra (a destra) egrave un registro composto da FFD che ad ogni clock trasferisce il valore del FF a destra (a sinistra) di ciascun FF nel FF stesso Nel FF piugrave a destra (sinistra) viene immesso uno ldquo0rdquo Questi tipi di registri shift si chiamano ldquologicirdquo
Shift register (registri a traslazione o scorrimento)
D0kQ0k
CK DnQn
CK
D0kQ0k
CK Dn-1Qn-1
CK
D0kQ0k
CK Dn-2Qn-2
CK
D0kQ0k
CK D0Q0
CK
ldquo0rdquo
Shift register a sinistra
bull Anche per i registri a traslazione esistono diverse versioni con ingresso parallelo e uscita seriale con ingresso seriale e uscita parallela con reset con load etc etc
bull Si noti che uno shift register egrave anche un contatore Si immagini per esempio che dopo un reset siano inseriti degli uni a partire da destra Lo shift register si riempie progressivamente di uni e quindi la posizione in cui egrave arrivato lrsquouno indica il valore del conteggio in base a un codice ldquouno su nrdquo (un codice decodificato)
bull Spesso uno stesso registro puograve traslare a destra o a sinistra in funzione di una segnale di controllo Ovviamente questo si ottiene premettendo a ogni ingresso Di un MUX a due vie che preleva in funzione del segnale di controllo Qigrave+1 o Qigrave-1 Con questa configurazione lo shift register diventa anche un contatore avantiindietro
Registro a scorrimento (shift-register) a 3 bit
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
IN
OUT2OUT1OUT0
CK
CK
IN
A_RESET
OUT1
OUT2
OUT0
Registro a scorrimento (shift-register) a 3 bit
57
Esempio 74164 (serial In parallel OUT)
bull In questo registro a traslazione ad ogni fronte positivo del clock i dati sono traslati a destra (Q0 -gt Q1 Q1-gtQ2 etc) Il registro egrave dotato in un Master Reset (vero negato) e il dato inserito nel FF Q0 egrave dato dallrsquoAND dei due ingressi Dsa e Dsb
bull Si noti che lrsquooperazione di shift corrisponde aritmeticamente alle operazioni di divisione e moltiplicazione per 2 Si supponga che in Q0 vi sia il bit meno significativo e in Q7 il meno significativo
0 1 1 0 1 0 1 0
010101102 = 10810
Shift left =gt x2
Shift right =gt 2
101011002 = 21610
001010112 = 5910
NB nel dispositivo i bit sono posti in ordine invertito e quindi un shift left del numero corrisponde a uno shift right sul dispositivo
58
bull Esistono anche i registri a traslazione ldquoaritmeticirdquo In questi shift register a destra anzicheacute fare entrare nel FF piugrave a sinistra lo ldquo0rdquo viene immesso sempre ripetutamente il suo valore logico
Shift aritmetico
Q7 Q6 Q5 Q4 Q3 Q2 Q1 Q0
D7 D6 D5 D4 D3 D2 D1 D0
I LDCK Esempio
11001010SRA
11100101 interpretato in complemento a 2
001101102=5410
C2 C2
000110112=2710
bull Lo shift aritmetico a destra effettua una divisione per 2 mantenendo il segno
59
Rotazione
Nei computer egrave sovente necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register
D0kQ0k
CK DnQn
CK
D0kQ0k
CK Dn-1Qn-1
CK
D0kQ0k
CK Dn-2Qn-2
CK
D0kQ0k
CK D0Q0
CK
Molto spesso nei computer egrave necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register con direzione programmabile In questo caso su D0 ad esempio puograve essere avviato o Q1 o Qn
60
Contatori con shift register ndash Contatore retroazionato EX-OR
Q2Q0
Shift right 3 bitDQ1
110 111 011 101 010 001
Diagramma degli stati disgiunto
Uno shift register con n FF retroazionato con un EX-OR (scelta degli ingressi variabile) egrave un contatore NON binario che conta per 2n-1 (purcheacute presettato a un valore diverso da tutti zeri)
000
100
61
Contatore di Johnson (riempimento e svuotamento)
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
000-gt100-gt110-gt111-gt011-gt001-gt000-gtStati isolati 101-gt010-gt101gt1
Poicheacute configurazioni adiacenti del codice Johnson differiscono di un solo bit il contatore puograve essere utilizzato per generare forme drsquoonda prive di alee
62
Contatore ad anello con un solo 1 (ovvero che genera direttamente il codice 1su n)
FFDD Q
QR
RESET
FFDD Q
QR
RESET
FFDD Q
QPR
RESET
OUT3OUT1OUT0
CK
FFDD Q
QR
RESET
OUT2
0001-gt1000-gt0100-gt0010-gt0010n FF per contare per n (mentre con i contatori binari il numero dei FF egrave il log2m ove m egrave il primo intero maggiore o uguale a n)
63
Barrel shifter (rotore)Un barrel shifter egrave uno shift register in grado di traslare di ldquonrdquo posizioni in un solo clock il contenuto dei suoi FF In figura egrave riportato il barrel shifter della Altera Gli ingressi A-H in presenza dellrsquoattivazione del segnale LDST al primo fronte positivo del clock sono depositati nei FF Quando LDST egrave 0 ad ogni fronte positivo del clock i bit di uscita sono ruotati di n posizioni in senso antiorario (ovvero lrsquouscita H diventa la G la G diventa la Fhellipe lrsquouscita A diventa la H) ove n egrave il valore binario indicato dai segnali S0 S1 e S2
Si noti che il circuito in questione egrave di fatto un registro con 8 FF allrsquoingresso di ciascuno dei quali egrave previsto un MUX a 8 vie che pilotato dai segnali S0 S1 e S2 che seleziona uno degli 8 uscite del dispositivo La struttura interna puograve essere osservata ldquoclikkandordquo due volte sul dispositivo nello schema di Altera
64
Barrel shifter
6565
66
Simulazione timing
67
bull Utilizzando il sistema Altera progettare un orologio con secondi minuti ora partendo da un oscillatore a quarzo con frequenza 500 KHz
bull E se si volesse proseguire e realizzare anche un datario (giorno mese e anno )
bull Come potrebbe essere integrato con una sveglia Si ricordi che lrsquoorologio deve essere anche essere ldquopresettatordquo
bull Quali circuiti utilizzare per la visualizzazione
68
EPROM
X0nZ0m
y0kY0k
Clock
D0kQ0k
FFD0k
CK D0kQ0k CK
Reti sincrone con EPROM
Al posto delle EPROM si utilizzano ora dei PLA ovvero dispositivi nei quali si nei quali le funzioni combinatorie sono ottimizzate ma il principio egrave assolutamente il medesimo
69
Progettare con Altera una rete logica sincrona che utilizzando registri 374 ALU 74181 un contatore e altri dispositivi ritenuti necessari permetta di eseguire in sequenza la somma di due dati di 4 bit senza segno ingresso esegua il complemento a 2 inverta la parte bassa con la parte alta del risultato e infine moltiplichi il tutto logicamente per 2
La soluzione egrave sempre decomponibile in tre sottosistemi il controllo con la sua decodifica (unitagrave di controllo) il percorso dei dati con le unitagrave che li trasformano (datapath) e i registri di deposito e di ingresso dei dati
Questa egrave la struttura base di qualunque unitagrave centrale di qualunque computer
La differenza consiste solo nel fatto che anzicheacute avere una sequenza fissa di operazioni ne viene generata una volta a volta che dipende appunto dalla istruzione che deve essere eseguita Come si vedragrave approfonditamente nel corso di Calcolatori T del II anno (prof Neri e Mattoccia)
Arrivederci al corso di Calcolatori T del II anno (sapendo perfettamente le reti logiche helliphellip)
40
D0Q0
CKFFD
Clocky2
DEC
y3
y2
y1
ldquo1rdquo
ldquo2rdquo
ldquo3rdquo
ldquo4rdquo
1
0
UPDown
Sintesi di y2 in modo ldquodirettordquo
1
0
00 01 11 10UpDown Res
000000
000 000 000001
010 000011
001 000 000 011010
000 001
010
000 100
011 000100
100 000 000101
000 000111
000 000 000 000110
000 101
000
000 000
101
y3 y2 y1
41
Cassaforte hellipDisponendo di un contatore per 8 (ma anche per 16 etc) con reset sincrono e sempre abilitato al conteggio come potrei realizzare il circuito di apertura della cassaforte (sequenza X1X2 00-01-01-10) con modello Moore
Cx8RES
Q0 Q1 Q2 CK
RES= (ldquo0rdquoX1X2 + ldquo1rdquo X1X2 + ldquo2rdquo X1X2 + ldquo3rdquo X1 X2)Z = ldquo4rdquo (ldquo0rdquordquo1rdquordquo2rdquordquo3rdquordquo4rdquo sono le decodifiche binarie delle tre uscite del contatore)
Il contatore si resetta ogni volta che non si presenta lrsquoingresso giusto relativo al particolare stato Ilcontatore quindi si resetta e rimane resettato se non nelle condizioni espresse dalla funzione RESIl contatore arrivato a 4 (Z=1) si resetta comunque al successivo fronte del clock
Le reti sincrone si progettano sempre come combinazione di blocchi disponibili e logica ldquorandomrdquo
ABC
ldquo0rdquoldquo1rdquoldquo2rdquoldquo3rdquoldquo4rdquo
RLAND-OR
X1X2
RESZ
Cx8RES
Q0 Q1 Q2 CK
42
Contatori
EN
Q0 Q1 Q2 Q3CKCY
RESET
bull Attenzione Consideriamo il contatore di figura (questa volta con RESET asincrono) e supponiamo di utilizzarlo per contare per 5 (NB per il Reset si usa il ldquo5rdquo in questo casohellip glitch)
ABCD
ldquo5rdquo
ldquo1rdquo Percheacute questo schema egrave sbagliato
bull Percheacute presenta una corsa critica Nel momento in cui anche uno solo dei FF si resetta (e non tutti nello stesso istante) viene a mancare la configurazione ldquo4rdquo sul decoder e quindi alcuni FF potrebbero non fare in tempo a resettarsi E allora
EN
Q0 Q1 Q2 Q3CKCY
RESET
ABCD
ldquo5rdquo
ldquo1rdquo
RS
Y ldquo0rdquo
bull Cosigrave facendo il ldquo4rdquo attiva il SET e il FF NON si resetta fino a quando non egrave stato raggiunto la ldquo0rdquo NB lo schema ldquosbagliatordquo si puograve usare solo se si egrave certi della rapiditagrave di reset dei FF del contatore
bull Verificare con Altera
Sintesi cassaforte con moduli
Altera Cassaforte sincrona con moduli
Rete di controllo
Contatore con Reset asincrono e Load sincrono
43
NB In questo progetto la sintesi egrave stata condotta in modo ldquodirettordquo ovvero senza passare per la sintesi formale e utilizzando componenti disponibili e helliphellip materia grigia La sintesi dei circuiti sincroni si fa sempre e unicamente cosigrave
44
Simulazione funzionale (no timing)
NB I segnali di ingresso sono campionati SOLO sul fronte positivo del clock anche se si presentano asincroni Il segnale di uscita si attiva al clock successivo al riconoscimento della sequenza La posizione di ldquoriposordquo del contatore egrave il valore 4 I segnali Yi sono le decodifiche dei segnali di di ingresso X1 e X2
00 01 01 10
45
Simulazione timing
46
NB Si egrave scelto di utilizzare SOLO gli ingressi SINCRONI del contatore per semplicitagrave Il contatore rimane al valore 100 fino a quando non si presenta allrsquoingresso il valore 00 Se la sequenza egrave esatta il contatore continua a contare in avanti fino alla generazione dellrsquouscita (valore 11 del contatore) altrimenti si riporta al valore 100 ovvero Qc=1) Il segnale GN (Gate Not) egrave quello che abilita il conteggio Il sistema riamane stabile a 000 per una sequenza lunga a piacere di X1=0 e X2=0 e si sposta quando dopo 00 si ha 01 Come si evince dalla simulazione se la sequenza non egrave corretta o egrave interrotta il contatore si riporta sempre a 100
00 01 11 10
001 000 000
X1
000000 010 100 100001
000 100 100 011010
100 100 100 100011
000 100 100 100100
000 100 100 100101
000 100 100 100110
000 100 100 100111
0
0
0
1
0
0
0
0
X2
000
NB la tabella delle transizioni derivata della rete realizzata NON ha ovviamente condizioni di indifferenza
47
Progettare un contatore packed BCD updown a 8 bit (due digit)
48
Generazione di forme drsquoondabull Ersquo possibile generare forme drsquoonda periodiche mediante circuiti sincroni di periodo
sottomultiplo intero del clock
Esempio 1Divisore di frequenza per 2
D0k Q0k
CK D Q
CK Clock
Q
Esempio 2 generare una forma drsquoonda periodica con periodo 5T (ove T sia il periodo del clock) in cui in un semiperiodo 3T lrsquouscita sia alta e nellrsquoaltro semiperiodo 2T lrsquouscita sia bassa
Q0 Q1 Q2 CK
Cx5
C
B
A
01234
DecoderDemux
Clock
ZZ T
3T2T
3T
NB una rete logica egrave in grado di effettuare delle divisioni di frequenza e mai delle moltiplicazioni di frequenza (che si possono ottenere solo con circuiti analogici non lineari)
49
Di che circuito si tratta
D0k Q0k
CK D0 Q0
CKQ0
D0k Q0k
CK D1 Q1
CK
D0k Q0k
CK D2 Q2
CKClock
Clock
Q0
Q1
Q2
Ersquo un contatore binario ma non sincrono Infatti i vari FF NON utilizzano lo stesso clock e questo porta a un piccolo disallineamento sulle uscite Non egrave sintetizzabile come una rete sincrona e una sintesi formale sarebbe possibile solo trattando il circuito come asincrono ovvero ldquoaprendordquo i FF Sarebbe possibile trasformarlo in un contatore x6 mantenendo la stessa impostazione
Sintetizzare e simulare con Altera
NB il segnale di clock non egrave in comune
50
7493
51
Altera Contatore asincrono
Contatore asincrono
52
Simulazione timing
53
Come puograve essere utilizzato un FFD per catturare un impulso piugrave breve di un periodo
D2 Q2
Q2CKFFD Z
Clock
D1 Q1
Q1CKFFD
D0 Q00
Q0CKFFD
ldquo1rdquo CL
Lrsquoimpulso breve viene catturato dal FF 0 (purcheacute di larghezza sufficiente per la tecnologia del FF) - che quindi agisce come integratore ndash la cui uscita alimenta il monoimpulsore di tipo A Lrsquoattivazione del FF 1 resetta il FF 0 (supponendo che il segnale di CL sia ldquopositiverdquotruerdquo)
Ci puograve essere un problema se il CL agisce in modo asincrono
NB questo circuito e quello del lucido precedente evidenziano il fatto che nella realtagrave nessuna rete egrave solo sincrona ma bensigrave egrave pressocheacute sempre necessario utilizzare reti di natura diversa anche percheacute vi egrave sempre una interazione fra reti con clock diversi eo con segnali provenienti dal mondo esterno NON sincronizzati con il clock
Monoimpulsore di tipo A ldquorivistordquo
54
bull Uno shift register a sinistra (a destra) egrave un registro composto da FFD che ad ogni clock trasferisce il valore del FF a destra (a sinistra) di ciascun FF nel FF stesso Nel FF piugrave a destra (sinistra) viene immesso uno ldquo0rdquo Questi tipi di registri shift si chiamano ldquologicirdquo
Shift register (registri a traslazione o scorrimento)
D0kQ0k
CK DnQn
CK
D0kQ0k
CK Dn-1Qn-1
CK
D0kQ0k
CK Dn-2Qn-2
CK
D0kQ0k
CK D0Q0
CK
ldquo0rdquo
Shift register a sinistra
bull Anche per i registri a traslazione esistono diverse versioni con ingresso parallelo e uscita seriale con ingresso seriale e uscita parallela con reset con load etc etc
bull Si noti che uno shift register egrave anche un contatore Si immagini per esempio che dopo un reset siano inseriti degli uni a partire da destra Lo shift register si riempie progressivamente di uni e quindi la posizione in cui egrave arrivato lrsquouno indica il valore del conteggio in base a un codice ldquouno su nrdquo (un codice decodificato)
bull Spesso uno stesso registro puograve traslare a destra o a sinistra in funzione di una segnale di controllo Ovviamente questo si ottiene premettendo a ogni ingresso Di un MUX a due vie che preleva in funzione del segnale di controllo Qigrave+1 o Qigrave-1 Con questa configurazione lo shift register diventa anche un contatore avantiindietro
Registro a scorrimento (shift-register) a 3 bit
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
IN
OUT2OUT1OUT0
CK
CK
IN
A_RESET
OUT1
OUT2
OUT0
Registro a scorrimento (shift-register) a 3 bit
57
Esempio 74164 (serial In parallel OUT)
bull In questo registro a traslazione ad ogni fronte positivo del clock i dati sono traslati a destra (Q0 -gt Q1 Q1-gtQ2 etc) Il registro egrave dotato in un Master Reset (vero negato) e il dato inserito nel FF Q0 egrave dato dallrsquoAND dei due ingressi Dsa e Dsb
bull Si noti che lrsquooperazione di shift corrisponde aritmeticamente alle operazioni di divisione e moltiplicazione per 2 Si supponga che in Q0 vi sia il bit meno significativo e in Q7 il meno significativo
0 1 1 0 1 0 1 0
010101102 = 10810
Shift left =gt x2
Shift right =gt 2
101011002 = 21610
001010112 = 5910
NB nel dispositivo i bit sono posti in ordine invertito e quindi un shift left del numero corrisponde a uno shift right sul dispositivo
58
bull Esistono anche i registri a traslazione ldquoaritmeticirdquo In questi shift register a destra anzicheacute fare entrare nel FF piugrave a sinistra lo ldquo0rdquo viene immesso sempre ripetutamente il suo valore logico
Shift aritmetico
Q7 Q6 Q5 Q4 Q3 Q2 Q1 Q0
D7 D6 D5 D4 D3 D2 D1 D0
I LDCK Esempio
11001010SRA
11100101 interpretato in complemento a 2
001101102=5410
C2 C2
000110112=2710
bull Lo shift aritmetico a destra effettua una divisione per 2 mantenendo il segno
59
Rotazione
Nei computer egrave sovente necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register
D0kQ0k
CK DnQn
CK
D0kQ0k
CK Dn-1Qn-1
CK
D0kQ0k
CK Dn-2Qn-2
CK
D0kQ0k
CK D0Q0
CK
Molto spesso nei computer egrave necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register con direzione programmabile In questo caso su D0 ad esempio puograve essere avviato o Q1 o Qn
60
Contatori con shift register ndash Contatore retroazionato EX-OR
Q2Q0
Shift right 3 bitDQ1
110 111 011 101 010 001
Diagramma degli stati disgiunto
Uno shift register con n FF retroazionato con un EX-OR (scelta degli ingressi variabile) egrave un contatore NON binario che conta per 2n-1 (purcheacute presettato a un valore diverso da tutti zeri)
000
100
61
Contatore di Johnson (riempimento e svuotamento)
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
000-gt100-gt110-gt111-gt011-gt001-gt000-gtStati isolati 101-gt010-gt101gt1
Poicheacute configurazioni adiacenti del codice Johnson differiscono di un solo bit il contatore puograve essere utilizzato per generare forme drsquoonda prive di alee
62
Contatore ad anello con un solo 1 (ovvero che genera direttamente il codice 1su n)
FFDD Q
QR
RESET
FFDD Q
QR
RESET
FFDD Q
QPR
RESET
OUT3OUT1OUT0
CK
FFDD Q
QR
RESET
OUT2
0001-gt1000-gt0100-gt0010-gt0010n FF per contare per n (mentre con i contatori binari il numero dei FF egrave il log2m ove m egrave il primo intero maggiore o uguale a n)
63
Barrel shifter (rotore)Un barrel shifter egrave uno shift register in grado di traslare di ldquonrdquo posizioni in un solo clock il contenuto dei suoi FF In figura egrave riportato il barrel shifter della Altera Gli ingressi A-H in presenza dellrsquoattivazione del segnale LDST al primo fronte positivo del clock sono depositati nei FF Quando LDST egrave 0 ad ogni fronte positivo del clock i bit di uscita sono ruotati di n posizioni in senso antiorario (ovvero lrsquouscita H diventa la G la G diventa la Fhellipe lrsquouscita A diventa la H) ove n egrave il valore binario indicato dai segnali S0 S1 e S2
Si noti che il circuito in questione egrave di fatto un registro con 8 FF allrsquoingresso di ciascuno dei quali egrave previsto un MUX a 8 vie che pilotato dai segnali S0 S1 e S2 che seleziona uno degli 8 uscite del dispositivo La struttura interna puograve essere osservata ldquoclikkandordquo due volte sul dispositivo nello schema di Altera
64
Barrel shifter
6565
66
Simulazione timing
67
bull Utilizzando il sistema Altera progettare un orologio con secondi minuti ora partendo da un oscillatore a quarzo con frequenza 500 KHz
bull E se si volesse proseguire e realizzare anche un datario (giorno mese e anno )
bull Come potrebbe essere integrato con una sveglia Si ricordi che lrsquoorologio deve essere anche essere ldquopresettatordquo
bull Quali circuiti utilizzare per la visualizzazione
68
EPROM
X0nZ0m
y0kY0k
Clock
D0kQ0k
FFD0k
CK D0kQ0k CK
Reti sincrone con EPROM
Al posto delle EPROM si utilizzano ora dei PLA ovvero dispositivi nei quali si nei quali le funzioni combinatorie sono ottimizzate ma il principio egrave assolutamente il medesimo
69
Progettare con Altera una rete logica sincrona che utilizzando registri 374 ALU 74181 un contatore e altri dispositivi ritenuti necessari permetta di eseguire in sequenza la somma di due dati di 4 bit senza segno ingresso esegua il complemento a 2 inverta la parte bassa con la parte alta del risultato e infine moltiplichi il tutto logicamente per 2
La soluzione egrave sempre decomponibile in tre sottosistemi il controllo con la sua decodifica (unitagrave di controllo) il percorso dei dati con le unitagrave che li trasformano (datapath) e i registri di deposito e di ingresso dei dati
Questa egrave la struttura base di qualunque unitagrave centrale di qualunque computer
La differenza consiste solo nel fatto che anzicheacute avere una sequenza fissa di operazioni ne viene generata una volta a volta che dipende appunto dalla istruzione che deve essere eseguita Come si vedragrave approfonditamente nel corso di Calcolatori T del II anno (prof Neri e Mattoccia)
Arrivederci al corso di Calcolatori T del II anno (sapendo perfettamente le reti logiche helliphellip)
41
Cassaforte hellipDisponendo di un contatore per 8 (ma anche per 16 etc) con reset sincrono e sempre abilitato al conteggio come potrei realizzare il circuito di apertura della cassaforte (sequenza X1X2 00-01-01-10) con modello Moore
Cx8RES
Q0 Q1 Q2 CK
RES= (ldquo0rdquoX1X2 + ldquo1rdquo X1X2 + ldquo2rdquo X1X2 + ldquo3rdquo X1 X2)Z = ldquo4rdquo (ldquo0rdquordquo1rdquordquo2rdquordquo3rdquordquo4rdquo sono le decodifiche binarie delle tre uscite del contatore)
Il contatore si resetta ogni volta che non si presenta lrsquoingresso giusto relativo al particolare stato Ilcontatore quindi si resetta e rimane resettato se non nelle condizioni espresse dalla funzione RESIl contatore arrivato a 4 (Z=1) si resetta comunque al successivo fronte del clock
Le reti sincrone si progettano sempre come combinazione di blocchi disponibili e logica ldquorandomrdquo
ABC
ldquo0rdquoldquo1rdquoldquo2rdquoldquo3rdquoldquo4rdquo
RLAND-OR
X1X2
RESZ
Cx8RES
Q0 Q1 Q2 CK
42
Contatori
EN
Q0 Q1 Q2 Q3CKCY
RESET
bull Attenzione Consideriamo il contatore di figura (questa volta con RESET asincrono) e supponiamo di utilizzarlo per contare per 5 (NB per il Reset si usa il ldquo5rdquo in questo casohellip glitch)
ABCD
ldquo5rdquo
ldquo1rdquo Percheacute questo schema egrave sbagliato
bull Percheacute presenta una corsa critica Nel momento in cui anche uno solo dei FF si resetta (e non tutti nello stesso istante) viene a mancare la configurazione ldquo4rdquo sul decoder e quindi alcuni FF potrebbero non fare in tempo a resettarsi E allora
EN
Q0 Q1 Q2 Q3CKCY
RESET
ABCD
ldquo5rdquo
ldquo1rdquo
RS
Y ldquo0rdquo
bull Cosigrave facendo il ldquo4rdquo attiva il SET e il FF NON si resetta fino a quando non egrave stato raggiunto la ldquo0rdquo NB lo schema ldquosbagliatordquo si puograve usare solo se si egrave certi della rapiditagrave di reset dei FF del contatore
bull Verificare con Altera
Sintesi cassaforte con moduli
Altera Cassaforte sincrona con moduli
Rete di controllo
Contatore con Reset asincrono e Load sincrono
43
NB In questo progetto la sintesi egrave stata condotta in modo ldquodirettordquo ovvero senza passare per la sintesi formale e utilizzando componenti disponibili e helliphellip materia grigia La sintesi dei circuiti sincroni si fa sempre e unicamente cosigrave
44
Simulazione funzionale (no timing)
NB I segnali di ingresso sono campionati SOLO sul fronte positivo del clock anche se si presentano asincroni Il segnale di uscita si attiva al clock successivo al riconoscimento della sequenza La posizione di ldquoriposordquo del contatore egrave il valore 4 I segnali Yi sono le decodifiche dei segnali di di ingresso X1 e X2
00 01 01 10
45
Simulazione timing
46
NB Si egrave scelto di utilizzare SOLO gli ingressi SINCRONI del contatore per semplicitagrave Il contatore rimane al valore 100 fino a quando non si presenta allrsquoingresso il valore 00 Se la sequenza egrave esatta il contatore continua a contare in avanti fino alla generazione dellrsquouscita (valore 11 del contatore) altrimenti si riporta al valore 100 ovvero Qc=1) Il segnale GN (Gate Not) egrave quello che abilita il conteggio Il sistema riamane stabile a 000 per una sequenza lunga a piacere di X1=0 e X2=0 e si sposta quando dopo 00 si ha 01 Come si evince dalla simulazione se la sequenza non egrave corretta o egrave interrotta il contatore si riporta sempre a 100
00 01 11 10
001 000 000
X1
000000 010 100 100001
000 100 100 011010
100 100 100 100011
000 100 100 100100
000 100 100 100101
000 100 100 100110
000 100 100 100111
0
0
0
1
0
0
0
0
X2
000
NB la tabella delle transizioni derivata della rete realizzata NON ha ovviamente condizioni di indifferenza
47
Progettare un contatore packed BCD updown a 8 bit (due digit)
48
Generazione di forme drsquoondabull Ersquo possibile generare forme drsquoonda periodiche mediante circuiti sincroni di periodo
sottomultiplo intero del clock
Esempio 1Divisore di frequenza per 2
D0k Q0k
CK D Q
CK Clock
Q
Esempio 2 generare una forma drsquoonda periodica con periodo 5T (ove T sia il periodo del clock) in cui in un semiperiodo 3T lrsquouscita sia alta e nellrsquoaltro semiperiodo 2T lrsquouscita sia bassa
Q0 Q1 Q2 CK
Cx5
C
B
A
01234
DecoderDemux
Clock
ZZ T
3T2T
3T
NB una rete logica egrave in grado di effettuare delle divisioni di frequenza e mai delle moltiplicazioni di frequenza (che si possono ottenere solo con circuiti analogici non lineari)
49
Di che circuito si tratta
D0k Q0k
CK D0 Q0
CKQ0
D0k Q0k
CK D1 Q1
CK
D0k Q0k
CK D2 Q2
CKClock
Clock
Q0
Q1
Q2
Ersquo un contatore binario ma non sincrono Infatti i vari FF NON utilizzano lo stesso clock e questo porta a un piccolo disallineamento sulle uscite Non egrave sintetizzabile come una rete sincrona e una sintesi formale sarebbe possibile solo trattando il circuito come asincrono ovvero ldquoaprendordquo i FF Sarebbe possibile trasformarlo in un contatore x6 mantenendo la stessa impostazione
Sintetizzare e simulare con Altera
NB il segnale di clock non egrave in comune
50
7493
51
Altera Contatore asincrono
Contatore asincrono
52
Simulazione timing
53
Come puograve essere utilizzato un FFD per catturare un impulso piugrave breve di un periodo
D2 Q2
Q2CKFFD Z
Clock
D1 Q1
Q1CKFFD
D0 Q00
Q0CKFFD
ldquo1rdquo CL
Lrsquoimpulso breve viene catturato dal FF 0 (purcheacute di larghezza sufficiente per la tecnologia del FF) - che quindi agisce come integratore ndash la cui uscita alimenta il monoimpulsore di tipo A Lrsquoattivazione del FF 1 resetta il FF 0 (supponendo che il segnale di CL sia ldquopositiverdquotruerdquo)
Ci puograve essere un problema se il CL agisce in modo asincrono
NB questo circuito e quello del lucido precedente evidenziano il fatto che nella realtagrave nessuna rete egrave solo sincrona ma bensigrave egrave pressocheacute sempre necessario utilizzare reti di natura diversa anche percheacute vi egrave sempre una interazione fra reti con clock diversi eo con segnali provenienti dal mondo esterno NON sincronizzati con il clock
Monoimpulsore di tipo A ldquorivistordquo
54
bull Uno shift register a sinistra (a destra) egrave un registro composto da FFD che ad ogni clock trasferisce il valore del FF a destra (a sinistra) di ciascun FF nel FF stesso Nel FF piugrave a destra (sinistra) viene immesso uno ldquo0rdquo Questi tipi di registri shift si chiamano ldquologicirdquo
Shift register (registri a traslazione o scorrimento)
D0kQ0k
CK DnQn
CK
D0kQ0k
CK Dn-1Qn-1
CK
D0kQ0k
CK Dn-2Qn-2
CK
D0kQ0k
CK D0Q0
CK
ldquo0rdquo
Shift register a sinistra
bull Anche per i registri a traslazione esistono diverse versioni con ingresso parallelo e uscita seriale con ingresso seriale e uscita parallela con reset con load etc etc
bull Si noti che uno shift register egrave anche un contatore Si immagini per esempio che dopo un reset siano inseriti degli uni a partire da destra Lo shift register si riempie progressivamente di uni e quindi la posizione in cui egrave arrivato lrsquouno indica il valore del conteggio in base a un codice ldquouno su nrdquo (un codice decodificato)
bull Spesso uno stesso registro puograve traslare a destra o a sinistra in funzione di una segnale di controllo Ovviamente questo si ottiene premettendo a ogni ingresso Di un MUX a due vie che preleva in funzione del segnale di controllo Qigrave+1 o Qigrave-1 Con questa configurazione lo shift register diventa anche un contatore avantiindietro
Registro a scorrimento (shift-register) a 3 bit
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
IN
OUT2OUT1OUT0
CK
CK
IN
A_RESET
OUT1
OUT2
OUT0
Registro a scorrimento (shift-register) a 3 bit
57
Esempio 74164 (serial In parallel OUT)
bull In questo registro a traslazione ad ogni fronte positivo del clock i dati sono traslati a destra (Q0 -gt Q1 Q1-gtQ2 etc) Il registro egrave dotato in un Master Reset (vero negato) e il dato inserito nel FF Q0 egrave dato dallrsquoAND dei due ingressi Dsa e Dsb
bull Si noti che lrsquooperazione di shift corrisponde aritmeticamente alle operazioni di divisione e moltiplicazione per 2 Si supponga che in Q0 vi sia il bit meno significativo e in Q7 il meno significativo
0 1 1 0 1 0 1 0
010101102 = 10810
Shift left =gt x2
Shift right =gt 2
101011002 = 21610
001010112 = 5910
NB nel dispositivo i bit sono posti in ordine invertito e quindi un shift left del numero corrisponde a uno shift right sul dispositivo
58
bull Esistono anche i registri a traslazione ldquoaritmeticirdquo In questi shift register a destra anzicheacute fare entrare nel FF piugrave a sinistra lo ldquo0rdquo viene immesso sempre ripetutamente il suo valore logico
Shift aritmetico
Q7 Q6 Q5 Q4 Q3 Q2 Q1 Q0
D7 D6 D5 D4 D3 D2 D1 D0
I LDCK Esempio
11001010SRA
11100101 interpretato in complemento a 2
001101102=5410
C2 C2
000110112=2710
bull Lo shift aritmetico a destra effettua una divisione per 2 mantenendo il segno
59
Rotazione
Nei computer egrave sovente necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register
D0kQ0k
CK DnQn
CK
D0kQ0k
CK Dn-1Qn-1
CK
D0kQ0k
CK Dn-2Qn-2
CK
D0kQ0k
CK D0Q0
CK
Molto spesso nei computer egrave necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register con direzione programmabile In questo caso su D0 ad esempio puograve essere avviato o Q1 o Qn
60
Contatori con shift register ndash Contatore retroazionato EX-OR
Q2Q0
Shift right 3 bitDQ1
110 111 011 101 010 001
Diagramma degli stati disgiunto
Uno shift register con n FF retroazionato con un EX-OR (scelta degli ingressi variabile) egrave un contatore NON binario che conta per 2n-1 (purcheacute presettato a un valore diverso da tutti zeri)
000
100
61
Contatore di Johnson (riempimento e svuotamento)
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
000-gt100-gt110-gt111-gt011-gt001-gt000-gtStati isolati 101-gt010-gt101gt1
Poicheacute configurazioni adiacenti del codice Johnson differiscono di un solo bit il contatore puograve essere utilizzato per generare forme drsquoonda prive di alee
62
Contatore ad anello con un solo 1 (ovvero che genera direttamente il codice 1su n)
FFDD Q
QR
RESET
FFDD Q
QR
RESET
FFDD Q
QPR
RESET
OUT3OUT1OUT0
CK
FFDD Q
QR
RESET
OUT2
0001-gt1000-gt0100-gt0010-gt0010n FF per contare per n (mentre con i contatori binari il numero dei FF egrave il log2m ove m egrave il primo intero maggiore o uguale a n)
63
Barrel shifter (rotore)Un barrel shifter egrave uno shift register in grado di traslare di ldquonrdquo posizioni in un solo clock il contenuto dei suoi FF In figura egrave riportato il barrel shifter della Altera Gli ingressi A-H in presenza dellrsquoattivazione del segnale LDST al primo fronte positivo del clock sono depositati nei FF Quando LDST egrave 0 ad ogni fronte positivo del clock i bit di uscita sono ruotati di n posizioni in senso antiorario (ovvero lrsquouscita H diventa la G la G diventa la Fhellipe lrsquouscita A diventa la H) ove n egrave il valore binario indicato dai segnali S0 S1 e S2
Si noti che il circuito in questione egrave di fatto un registro con 8 FF allrsquoingresso di ciascuno dei quali egrave previsto un MUX a 8 vie che pilotato dai segnali S0 S1 e S2 che seleziona uno degli 8 uscite del dispositivo La struttura interna puograve essere osservata ldquoclikkandordquo due volte sul dispositivo nello schema di Altera
64
Barrel shifter
6565
66
Simulazione timing
67
bull Utilizzando il sistema Altera progettare un orologio con secondi minuti ora partendo da un oscillatore a quarzo con frequenza 500 KHz
bull E se si volesse proseguire e realizzare anche un datario (giorno mese e anno )
bull Come potrebbe essere integrato con una sveglia Si ricordi che lrsquoorologio deve essere anche essere ldquopresettatordquo
bull Quali circuiti utilizzare per la visualizzazione
68
EPROM
X0nZ0m
y0kY0k
Clock
D0kQ0k
FFD0k
CK D0kQ0k CK
Reti sincrone con EPROM
Al posto delle EPROM si utilizzano ora dei PLA ovvero dispositivi nei quali si nei quali le funzioni combinatorie sono ottimizzate ma il principio egrave assolutamente il medesimo
69
Progettare con Altera una rete logica sincrona che utilizzando registri 374 ALU 74181 un contatore e altri dispositivi ritenuti necessari permetta di eseguire in sequenza la somma di due dati di 4 bit senza segno ingresso esegua il complemento a 2 inverta la parte bassa con la parte alta del risultato e infine moltiplichi il tutto logicamente per 2
La soluzione egrave sempre decomponibile in tre sottosistemi il controllo con la sua decodifica (unitagrave di controllo) il percorso dei dati con le unitagrave che li trasformano (datapath) e i registri di deposito e di ingresso dei dati
Questa egrave la struttura base di qualunque unitagrave centrale di qualunque computer
La differenza consiste solo nel fatto che anzicheacute avere una sequenza fissa di operazioni ne viene generata una volta a volta che dipende appunto dalla istruzione che deve essere eseguita Come si vedragrave approfonditamente nel corso di Calcolatori T del II anno (prof Neri e Mattoccia)
Arrivederci al corso di Calcolatori T del II anno (sapendo perfettamente le reti logiche helliphellip)
42
Contatori
EN
Q0 Q1 Q2 Q3CKCY
RESET
bull Attenzione Consideriamo il contatore di figura (questa volta con RESET asincrono) e supponiamo di utilizzarlo per contare per 5 (NB per il Reset si usa il ldquo5rdquo in questo casohellip glitch)
ABCD
ldquo5rdquo
ldquo1rdquo Percheacute questo schema egrave sbagliato
bull Percheacute presenta una corsa critica Nel momento in cui anche uno solo dei FF si resetta (e non tutti nello stesso istante) viene a mancare la configurazione ldquo4rdquo sul decoder e quindi alcuni FF potrebbero non fare in tempo a resettarsi E allora
EN
Q0 Q1 Q2 Q3CKCY
RESET
ABCD
ldquo5rdquo
ldquo1rdquo
RS
Y ldquo0rdquo
bull Cosigrave facendo il ldquo4rdquo attiva il SET e il FF NON si resetta fino a quando non egrave stato raggiunto la ldquo0rdquo NB lo schema ldquosbagliatordquo si puograve usare solo se si egrave certi della rapiditagrave di reset dei FF del contatore
bull Verificare con Altera
Sintesi cassaforte con moduli
Altera Cassaforte sincrona con moduli
Rete di controllo
Contatore con Reset asincrono e Load sincrono
43
NB In questo progetto la sintesi egrave stata condotta in modo ldquodirettordquo ovvero senza passare per la sintesi formale e utilizzando componenti disponibili e helliphellip materia grigia La sintesi dei circuiti sincroni si fa sempre e unicamente cosigrave
44
Simulazione funzionale (no timing)
NB I segnali di ingresso sono campionati SOLO sul fronte positivo del clock anche se si presentano asincroni Il segnale di uscita si attiva al clock successivo al riconoscimento della sequenza La posizione di ldquoriposordquo del contatore egrave il valore 4 I segnali Yi sono le decodifiche dei segnali di di ingresso X1 e X2
00 01 01 10
45
Simulazione timing
46
NB Si egrave scelto di utilizzare SOLO gli ingressi SINCRONI del contatore per semplicitagrave Il contatore rimane al valore 100 fino a quando non si presenta allrsquoingresso il valore 00 Se la sequenza egrave esatta il contatore continua a contare in avanti fino alla generazione dellrsquouscita (valore 11 del contatore) altrimenti si riporta al valore 100 ovvero Qc=1) Il segnale GN (Gate Not) egrave quello che abilita il conteggio Il sistema riamane stabile a 000 per una sequenza lunga a piacere di X1=0 e X2=0 e si sposta quando dopo 00 si ha 01 Come si evince dalla simulazione se la sequenza non egrave corretta o egrave interrotta il contatore si riporta sempre a 100
00 01 11 10
001 000 000
X1
000000 010 100 100001
000 100 100 011010
100 100 100 100011
000 100 100 100100
000 100 100 100101
000 100 100 100110
000 100 100 100111
0
0
0
1
0
0
0
0
X2
000
NB la tabella delle transizioni derivata della rete realizzata NON ha ovviamente condizioni di indifferenza
47
Progettare un contatore packed BCD updown a 8 bit (due digit)
48
Generazione di forme drsquoondabull Ersquo possibile generare forme drsquoonda periodiche mediante circuiti sincroni di periodo
sottomultiplo intero del clock
Esempio 1Divisore di frequenza per 2
D0k Q0k
CK D Q
CK Clock
Q
Esempio 2 generare una forma drsquoonda periodica con periodo 5T (ove T sia il periodo del clock) in cui in un semiperiodo 3T lrsquouscita sia alta e nellrsquoaltro semiperiodo 2T lrsquouscita sia bassa
Q0 Q1 Q2 CK
Cx5
C
B
A
01234
DecoderDemux
Clock
ZZ T
3T2T
3T
NB una rete logica egrave in grado di effettuare delle divisioni di frequenza e mai delle moltiplicazioni di frequenza (che si possono ottenere solo con circuiti analogici non lineari)
49
Di che circuito si tratta
D0k Q0k
CK D0 Q0
CKQ0
D0k Q0k
CK D1 Q1
CK
D0k Q0k
CK D2 Q2
CKClock
Clock
Q0
Q1
Q2
Ersquo un contatore binario ma non sincrono Infatti i vari FF NON utilizzano lo stesso clock e questo porta a un piccolo disallineamento sulle uscite Non egrave sintetizzabile come una rete sincrona e una sintesi formale sarebbe possibile solo trattando il circuito come asincrono ovvero ldquoaprendordquo i FF Sarebbe possibile trasformarlo in un contatore x6 mantenendo la stessa impostazione
Sintetizzare e simulare con Altera
NB il segnale di clock non egrave in comune
50
7493
51
Altera Contatore asincrono
Contatore asincrono
52
Simulazione timing
53
Come puograve essere utilizzato un FFD per catturare un impulso piugrave breve di un periodo
D2 Q2
Q2CKFFD Z
Clock
D1 Q1
Q1CKFFD
D0 Q00
Q0CKFFD
ldquo1rdquo CL
Lrsquoimpulso breve viene catturato dal FF 0 (purcheacute di larghezza sufficiente per la tecnologia del FF) - che quindi agisce come integratore ndash la cui uscita alimenta il monoimpulsore di tipo A Lrsquoattivazione del FF 1 resetta il FF 0 (supponendo che il segnale di CL sia ldquopositiverdquotruerdquo)
Ci puograve essere un problema se il CL agisce in modo asincrono
NB questo circuito e quello del lucido precedente evidenziano il fatto che nella realtagrave nessuna rete egrave solo sincrona ma bensigrave egrave pressocheacute sempre necessario utilizzare reti di natura diversa anche percheacute vi egrave sempre una interazione fra reti con clock diversi eo con segnali provenienti dal mondo esterno NON sincronizzati con il clock
Monoimpulsore di tipo A ldquorivistordquo
54
bull Uno shift register a sinistra (a destra) egrave un registro composto da FFD che ad ogni clock trasferisce il valore del FF a destra (a sinistra) di ciascun FF nel FF stesso Nel FF piugrave a destra (sinistra) viene immesso uno ldquo0rdquo Questi tipi di registri shift si chiamano ldquologicirdquo
Shift register (registri a traslazione o scorrimento)
D0kQ0k
CK DnQn
CK
D0kQ0k
CK Dn-1Qn-1
CK
D0kQ0k
CK Dn-2Qn-2
CK
D0kQ0k
CK D0Q0
CK
ldquo0rdquo
Shift register a sinistra
bull Anche per i registri a traslazione esistono diverse versioni con ingresso parallelo e uscita seriale con ingresso seriale e uscita parallela con reset con load etc etc
bull Si noti che uno shift register egrave anche un contatore Si immagini per esempio che dopo un reset siano inseriti degli uni a partire da destra Lo shift register si riempie progressivamente di uni e quindi la posizione in cui egrave arrivato lrsquouno indica il valore del conteggio in base a un codice ldquouno su nrdquo (un codice decodificato)
bull Spesso uno stesso registro puograve traslare a destra o a sinistra in funzione di una segnale di controllo Ovviamente questo si ottiene premettendo a ogni ingresso Di un MUX a due vie che preleva in funzione del segnale di controllo Qigrave+1 o Qigrave-1 Con questa configurazione lo shift register diventa anche un contatore avantiindietro
Registro a scorrimento (shift-register) a 3 bit
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
IN
OUT2OUT1OUT0
CK
CK
IN
A_RESET
OUT1
OUT2
OUT0
Registro a scorrimento (shift-register) a 3 bit
57
Esempio 74164 (serial In parallel OUT)
bull In questo registro a traslazione ad ogni fronte positivo del clock i dati sono traslati a destra (Q0 -gt Q1 Q1-gtQ2 etc) Il registro egrave dotato in un Master Reset (vero negato) e il dato inserito nel FF Q0 egrave dato dallrsquoAND dei due ingressi Dsa e Dsb
bull Si noti che lrsquooperazione di shift corrisponde aritmeticamente alle operazioni di divisione e moltiplicazione per 2 Si supponga che in Q0 vi sia il bit meno significativo e in Q7 il meno significativo
0 1 1 0 1 0 1 0
010101102 = 10810
Shift left =gt x2
Shift right =gt 2
101011002 = 21610
001010112 = 5910
NB nel dispositivo i bit sono posti in ordine invertito e quindi un shift left del numero corrisponde a uno shift right sul dispositivo
58
bull Esistono anche i registri a traslazione ldquoaritmeticirdquo In questi shift register a destra anzicheacute fare entrare nel FF piugrave a sinistra lo ldquo0rdquo viene immesso sempre ripetutamente il suo valore logico
Shift aritmetico
Q7 Q6 Q5 Q4 Q3 Q2 Q1 Q0
D7 D6 D5 D4 D3 D2 D1 D0
I LDCK Esempio
11001010SRA
11100101 interpretato in complemento a 2
001101102=5410
C2 C2
000110112=2710
bull Lo shift aritmetico a destra effettua una divisione per 2 mantenendo il segno
59
Rotazione
Nei computer egrave sovente necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register
D0kQ0k
CK DnQn
CK
D0kQ0k
CK Dn-1Qn-1
CK
D0kQ0k
CK Dn-2Qn-2
CK
D0kQ0k
CK D0Q0
CK
Molto spesso nei computer egrave necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register con direzione programmabile In questo caso su D0 ad esempio puograve essere avviato o Q1 o Qn
60
Contatori con shift register ndash Contatore retroazionato EX-OR
Q2Q0
Shift right 3 bitDQ1
110 111 011 101 010 001
Diagramma degli stati disgiunto
Uno shift register con n FF retroazionato con un EX-OR (scelta degli ingressi variabile) egrave un contatore NON binario che conta per 2n-1 (purcheacute presettato a un valore diverso da tutti zeri)
000
100
61
Contatore di Johnson (riempimento e svuotamento)
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
000-gt100-gt110-gt111-gt011-gt001-gt000-gtStati isolati 101-gt010-gt101gt1
Poicheacute configurazioni adiacenti del codice Johnson differiscono di un solo bit il contatore puograve essere utilizzato per generare forme drsquoonda prive di alee
62
Contatore ad anello con un solo 1 (ovvero che genera direttamente il codice 1su n)
FFDD Q
QR
RESET
FFDD Q
QR
RESET
FFDD Q
QPR
RESET
OUT3OUT1OUT0
CK
FFDD Q
QR
RESET
OUT2
0001-gt1000-gt0100-gt0010-gt0010n FF per contare per n (mentre con i contatori binari il numero dei FF egrave il log2m ove m egrave il primo intero maggiore o uguale a n)
63
Barrel shifter (rotore)Un barrel shifter egrave uno shift register in grado di traslare di ldquonrdquo posizioni in un solo clock il contenuto dei suoi FF In figura egrave riportato il barrel shifter della Altera Gli ingressi A-H in presenza dellrsquoattivazione del segnale LDST al primo fronte positivo del clock sono depositati nei FF Quando LDST egrave 0 ad ogni fronte positivo del clock i bit di uscita sono ruotati di n posizioni in senso antiorario (ovvero lrsquouscita H diventa la G la G diventa la Fhellipe lrsquouscita A diventa la H) ove n egrave il valore binario indicato dai segnali S0 S1 e S2
Si noti che il circuito in questione egrave di fatto un registro con 8 FF allrsquoingresso di ciascuno dei quali egrave previsto un MUX a 8 vie che pilotato dai segnali S0 S1 e S2 che seleziona uno degli 8 uscite del dispositivo La struttura interna puograve essere osservata ldquoclikkandordquo due volte sul dispositivo nello schema di Altera
64
Barrel shifter
6565
66
Simulazione timing
67
bull Utilizzando il sistema Altera progettare un orologio con secondi minuti ora partendo da un oscillatore a quarzo con frequenza 500 KHz
bull E se si volesse proseguire e realizzare anche un datario (giorno mese e anno )
bull Come potrebbe essere integrato con una sveglia Si ricordi che lrsquoorologio deve essere anche essere ldquopresettatordquo
bull Quali circuiti utilizzare per la visualizzazione
68
EPROM
X0nZ0m
y0kY0k
Clock
D0kQ0k
FFD0k
CK D0kQ0k CK
Reti sincrone con EPROM
Al posto delle EPROM si utilizzano ora dei PLA ovvero dispositivi nei quali si nei quali le funzioni combinatorie sono ottimizzate ma il principio egrave assolutamente il medesimo
69
Progettare con Altera una rete logica sincrona che utilizzando registri 374 ALU 74181 un contatore e altri dispositivi ritenuti necessari permetta di eseguire in sequenza la somma di due dati di 4 bit senza segno ingresso esegua il complemento a 2 inverta la parte bassa con la parte alta del risultato e infine moltiplichi il tutto logicamente per 2
La soluzione egrave sempre decomponibile in tre sottosistemi il controllo con la sua decodifica (unitagrave di controllo) il percorso dei dati con le unitagrave che li trasformano (datapath) e i registri di deposito e di ingresso dei dati
Questa egrave la struttura base di qualunque unitagrave centrale di qualunque computer
La differenza consiste solo nel fatto che anzicheacute avere una sequenza fissa di operazioni ne viene generata una volta a volta che dipende appunto dalla istruzione che deve essere eseguita Come si vedragrave approfonditamente nel corso di Calcolatori T del II anno (prof Neri e Mattoccia)
Arrivederci al corso di Calcolatori T del II anno (sapendo perfettamente le reti logiche helliphellip)
Sintesi cassaforte con moduli
Altera Cassaforte sincrona con moduli
Rete di controllo
Contatore con Reset asincrono e Load sincrono
43
NB In questo progetto la sintesi egrave stata condotta in modo ldquodirettordquo ovvero senza passare per la sintesi formale e utilizzando componenti disponibili e helliphellip materia grigia La sintesi dei circuiti sincroni si fa sempre e unicamente cosigrave
44
Simulazione funzionale (no timing)
NB I segnali di ingresso sono campionati SOLO sul fronte positivo del clock anche se si presentano asincroni Il segnale di uscita si attiva al clock successivo al riconoscimento della sequenza La posizione di ldquoriposordquo del contatore egrave il valore 4 I segnali Yi sono le decodifiche dei segnali di di ingresso X1 e X2
00 01 01 10
45
Simulazione timing
46
NB Si egrave scelto di utilizzare SOLO gli ingressi SINCRONI del contatore per semplicitagrave Il contatore rimane al valore 100 fino a quando non si presenta allrsquoingresso il valore 00 Se la sequenza egrave esatta il contatore continua a contare in avanti fino alla generazione dellrsquouscita (valore 11 del contatore) altrimenti si riporta al valore 100 ovvero Qc=1) Il segnale GN (Gate Not) egrave quello che abilita il conteggio Il sistema riamane stabile a 000 per una sequenza lunga a piacere di X1=0 e X2=0 e si sposta quando dopo 00 si ha 01 Come si evince dalla simulazione se la sequenza non egrave corretta o egrave interrotta il contatore si riporta sempre a 100
00 01 11 10
001 000 000
X1
000000 010 100 100001
000 100 100 011010
100 100 100 100011
000 100 100 100100
000 100 100 100101
000 100 100 100110
000 100 100 100111
0
0
0
1
0
0
0
0
X2
000
NB la tabella delle transizioni derivata della rete realizzata NON ha ovviamente condizioni di indifferenza
47
Progettare un contatore packed BCD updown a 8 bit (due digit)
48
Generazione di forme drsquoondabull Ersquo possibile generare forme drsquoonda periodiche mediante circuiti sincroni di periodo
sottomultiplo intero del clock
Esempio 1Divisore di frequenza per 2
D0k Q0k
CK D Q
CK Clock
Q
Esempio 2 generare una forma drsquoonda periodica con periodo 5T (ove T sia il periodo del clock) in cui in un semiperiodo 3T lrsquouscita sia alta e nellrsquoaltro semiperiodo 2T lrsquouscita sia bassa
Q0 Q1 Q2 CK
Cx5
C
B
A
01234
DecoderDemux
Clock
ZZ T
3T2T
3T
NB una rete logica egrave in grado di effettuare delle divisioni di frequenza e mai delle moltiplicazioni di frequenza (che si possono ottenere solo con circuiti analogici non lineari)
49
Di che circuito si tratta
D0k Q0k
CK D0 Q0
CKQ0
D0k Q0k
CK D1 Q1
CK
D0k Q0k
CK D2 Q2
CKClock
Clock
Q0
Q1
Q2
Ersquo un contatore binario ma non sincrono Infatti i vari FF NON utilizzano lo stesso clock e questo porta a un piccolo disallineamento sulle uscite Non egrave sintetizzabile come una rete sincrona e una sintesi formale sarebbe possibile solo trattando il circuito come asincrono ovvero ldquoaprendordquo i FF Sarebbe possibile trasformarlo in un contatore x6 mantenendo la stessa impostazione
Sintetizzare e simulare con Altera
NB il segnale di clock non egrave in comune
50
7493
51
Altera Contatore asincrono
Contatore asincrono
52
Simulazione timing
53
Come puograve essere utilizzato un FFD per catturare un impulso piugrave breve di un periodo
D2 Q2
Q2CKFFD Z
Clock
D1 Q1
Q1CKFFD
D0 Q00
Q0CKFFD
ldquo1rdquo CL
Lrsquoimpulso breve viene catturato dal FF 0 (purcheacute di larghezza sufficiente per la tecnologia del FF) - che quindi agisce come integratore ndash la cui uscita alimenta il monoimpulsore di tipo A Lrsquoattivazione del FF 1 resetta il FF 0 (supponendo che il segnale di CL sia ldquopositiverdquotruerdquo)
Ci puograve essere un problema se il CL agisce in modo asincrono
NB questo circuito e quello del lucido precedente evidenziano il fatto che nella realtagrave nessuna rete egrave solo sincrona ma bensigrave egrave pressocheacute sempre necessario utilizzare reti di natura diversa anche percheacute vi egrave sempre una interazione fra reti con clock diversi eo con segnali provenienti dal mondo esterno NON sincronizzati con il clock
Monoimpulsore di tipo A ldquorivistordquo
54
bull Uno shift register a sinistra (a destra) egrave un registro composto da FFD che ad ogni clock trasferisce il valore del FF a destra (a sinistra) di ciascun FF nel FF stesso Nel FF piugrave a destra (sinistra) viene immesso uno ldquo0rdquo Questi tipi di registri shift si chiamano ldquologicirdquo
Shift register (registri a traslazione o scorrimento)
D0kQ0k
CK DnQn
CK
D0kQ0k
CK Dn-1Qn-1
CK
D0kQ0k
CK Dn-2Qn-2
CK
D0kQ0k
CK D0Q0
CK
ldquo0rdquo
Shift register a sinistra
bull Anche per i registri a traslazione esistono diverse versioni con ingresso parallelo e uscita seriale con ingresso seriale e uscita parallela con reset con load etc etc
bull Si noti che uno shift register egrave anche un contatore Si immagini per esempio che dopo un reset siano inseriti degli uni a partire da destra Lo shift register si riempie progressivamente di uni e quindi la posizione in cui egrave arrivato lrsquouno indica il valore del conteggio in base a un codice ldquouno su nrdquo (un codice decodificato)
bull Spesso uno stesso registro puograve traslare a destra o a sinistra in funzione di una segnale di controllo Ovviamente questo si ottiene premettendo a ogni ingresso Di un MUX a due vie che preleva in funzione del segnale di controllo Qigrave+1 o Qigrave-1 Con questa configurazione lo shift register diventa anche un contatore avantiindietro
Registro a scorrimento (shift-register) a 3 bit
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
IN
OUT2OUT1OUT0
CK
CK
IN
A_RESET
OUT1
OUT2
OUT0
Registro a scorrimento (shift-register) a 3 bit
57
Esempio 74164 (serial In parallel OUT)
bull In questo registro a traslazione ad ogni fronte positivo del clock i dati sono traslati a destra (Q0 -gt Q1 Q1-gtQ2 etc) Il registro egrave dotato in un Master Reset (vero negato) e il dato inserito nel FF Q0 egrave dato dallrsquoAND dei due ingressi Dsa e Dsb
bull Si noti che lrsquooperazione di shift corrisponde aritmeticamente alle operazioni di divisione e moltiplicazione per 2 Si supponga che in Q0 vi sia il bit meno significativo e in Q7 il meno significativo
0 1 1 0 1 0 1 0
010101102 = 10810
Shift left =gt x2
Shift right =gt 2
101011002 = 21610
001010112 = 5910
NB nel dispositivo i bit sono posti in ordine invertito e quindi un shift left del numero corrisponde a uno shift right sul dispositivo
58
bull Esistono anche i registri a traslazione ldquoaritmeticirdquo In questi shift register a destra anzicheacute fare entrare nel FF piugrave a sinistra lo ldquo0rdquo viene immesso sempre ripetutamente il suo valore logico
Shift aritmetico
Q7 Q6 Q5 Q4 Q3 Q2 Q1 Q0
D7 D6 D5 D4 D3 D2 D1 D0
I LDCK Esempio
11001010SRA
11100101 interpretato in complemento a 2
001101102=5410
C2 C2
000110112=2710
bull Lo shift aritmetico a destra effettua una divisione per 2 mantenendo il segno
59
Rotazione
Nei computer egrave sovente necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register
D0kQ0k
CK DnQn
CK
D0kQ0k
CK Dn-1Qn-1
CK
D0kQ0k
CK Dn-2Qn-2
CK
D0kQ0k
CK D0Q0
CK
Molto spesso nei computer egrave necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register con direzione programmabile In questo caso su D0 ad esempio puograve essere avviato o Q1 o Qn
60
Contatori con shift register ndash Contatore retroazionato EX-OR
Q2Q0
Shift right 3 bitDQ1
110 111 011 101 010 001
Diagramma degli stati disgiunto
Uno shift register con n FF retroazionato con un EX-OR (scelta degli ingressi variabile) egrave un contatore NON binario che conta per 2n-1 (purcheacute presettato a un valore diverso da tutti zeri)
000
100
61
Contatore di Johnson (riempimento e svuotamento)
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
000-gt100-gt110-gt111-gt011-gt001-gt000-gtStati isolati 101-gt010-gt101gt1
Poicheacute configurazioni adiacenti del codice Johnson differiscono di un solo bit il contatore puograve essere utilizzato per generare forme drsquoonda prive di alee
62
Contatore ad anello con un solo 1 (ovvero che genera direttamente il codice 1su n)
FFDD Q
QR
RESET
FFDD Q
QR
RESET
FFDD Q
QPR
RESET
OUT3OUT1OUT0
CK
FFDD Q
QR
RESET
OUT2
0001-gt1000-gt0100-gt0010-gt0010n FF per contare per n (mentre con i contatori binari il numero dei FF egrave il log2m ove m egrave il primo intero maggiore o uguale a n)
63
Barrel shifter (rotore)Un barrel shifter egrave uno shift register in grado di traslare di ldquonrdquo posizioni in un solo clock il contenuto dei suoi FF In figura egrave riportato il barrel shifter della Altera Gli ingressi A-H in presenza dellrsquoattivazione del segnale LDST al primo fronte positivo del clock sono depositati nei FF Quando LDST egrave 0 ad ogni fronte positivo del clock i bit di uscita sono ruotati di n posizioni in senso antiorario (ovvero lrsquouscita H diventa la G la G diventa la Fhellipe lrsquouscita A diventa la H) ove n egrave il valore binario indicato dai segnali S0 S1 e S2
Si noti che il circuito in questione egrave di fatto un registro con 8 FF allrsquoingresso di ciascuno dei quali egrave previsto un MUX a 8 vie che pilotato dai segnali S0 S1 e S2 che seleziona uno degli 8 uscite del dispositivo La struttura interna puograve essere osservata ldquoclikkandordquo due volte sul dispositivo nello schema di Altera
64
Barrel shifter
6565
66
Simulazione timing
67
bull Utilizzando il sistema Altera progettare un orologio con secondi minuti ora partendo da un oscillatore a quarzo con frequenza 500 KHz
bull E se si volesse proseguire e realizzare anche un datario (giorno mese e anno )
bull Come potrebbe essere integrato con una sveglia Si ricordi che lrsquoorologio deve essere anche essere ldquopresettatordquo
bull Quali circuiti utilizzare per la visualizzazione
68
EPROM
X0nZ0m
y0kY0k
Clock
D0kQ0k
FFD0k
CK D0kQ0k CK
Reti sincrone con EPROM
Al posto delle EPROM si utilizzano ora dei PLA ovvero dispositivi nei quali si nei quali le funzioni combinatorie sono ottimizzate ma il principio egrave assolutamente il medesimo
69
Progettare con Altera una rete logica sincrona che utilizzando registri 374 ALU 74181 un contatore e altri dispositivi ritenuti necessari permetta di eseguire in sequenza la somma di due dati di 4 bit senza segno ingresso esegua il complemento a 2 inverta la parte bassa con la parte alta del risultato e infine moltiplichi il tutto logicamente per 2
La soluzione egrave sempre decomponibile in tre sottosistemi il controllo con la sua decodifica (unitagrave di controllo) il percorso dei dati con le unitagrave che li trasformano (datapath) e i registri di deposito e di ingresso dei dati
Questa egrave la struttura base di qualunque unitagrave centrale di qualunque computer
La differenza consiste solo nel fatto che anzicheacute avere una sequenza fissa di operazioni ne viene generata una volta a volta che dipende appunto dalla istruzione che deve essere eseguita Come si vedragrave approfonditamente nel corso di Calcolatori T del II anno (prof Neri e Mattoccia)
Arrivederci al corso di Calcolatori T del II anno (sapendo perfettamente le reti logiche helliphellip)
44
Simulazione funzionale (no timing)
NB I segnali di ingresso sono campionati SOLO sul fronte positivo del clock anche se si presentano asincroni Il segnale di uscita si attiva al clock successivo al riconoscimento della sequenza La posizione di ldquoriposordquo del contatore egrave il valore 4 I segnali Yi sono le decodifiche dei segnali di di ingresso X1 e X2
00 01 01 10
45
Simulazione timing
46
NB Si egrave scelto di utilizzare SOLO gli ingressi SINCRONI del contatore per semplicitagrave Il contatore rimane al valore 100 fino a quando non si presenta allrsquoingresso il valore 00 Se la sequenza egrave esatta il contatore continua a contare in avanti fino alla generazione dellrsquouscita (valore 11 del contatore) altrimenti si riporta al valore 100 ovvero Qc=1) Il segnale GN (Gate Not) egrave quello che abilita il conteggio Il sistema riamane stabile a 000 per una sequenza lunga a piacere di X1=0 e X2=0 e si sposta quando dopo 00 si ha 01 Come si evince dalla simulazione se la sequenza non egrave corretta o egrave interrotta il contatore si riporta sempre a 100
00 01 11 10
001 000 000
X1
000000 010 100 100001
000 100 100 011010
100 100 100 100011
000 100 100 100100
000 100 100 100101
000 100 100 100110
000 100 100 100111
0
0
0
1
0
0
0
0
X2
000
NB la tabella delle transizioni derivata della rete realizzata NON ha ovviamente condizioni di indifferenza
47
Progettare un contatore packed BCD updown a 8 bit (due digit)
48
Generazione di forme drsquoondabull Ersquo possibile generare forme drsquoonda periodiche mediante circuiti sincroni di periodo
sottomultiplo intero del clock
Esempio 1Divisore di frequenza per 2
D0k Q0k
CK D Q
CK Clock
Q
Esempio 2 generare una forma drsquoonda periodica con periodo 5T (ove T sia il periodo del clock) in cui in un semiperiodo 3T lrsquouscita sia alta e nellrsquoaltro semiperiodo 2T lrsquouscita sia bassa
Q0 Q1 Q2 CK
Cx5
C
B
A
01234
DecoderDemux
Clock
ZZ T
3T2T
3T
NB una rete logica egrave in grado di effettuare delle divisioni di frequenza e mai delle moltiplicazioni di frequenza (che si possono ottenere solo con circuiti analogici non lineari)
49
Di che circuito si tratta
D0k Q0k
CK D0 Q0
CKQ0
D0k Q0k
CK D1 Q1
CK
D0k Q0k
CK D2 Q2
CKClock
Clock
Q0
Q1
Q2
Ersquo un contatore binario ma non sincrono Infatti i vari FF NON utilizzano lo stesso clock e questo porta a un piccolo disallineamento sulle uscite Non egrave sintetizzabile come una rete sincrona e una sintesi formale sarebbe possibile solo trattando il circuito come asincrono ovvero ldquoaprendordquo i FF Sarebbe possibile trasformarlo in un contatore x6 mantenendo la stessa impostazione
Sintetizzare e simulare con Altera
NB il segnale di clock non egrave in comune
50
7493
51
Altera Contatore asincrono
Contatore asincrono
52
Simulazione timing
53
Come puograve essere utilizzato un FFD per catturare un impulso piugrave breve di un periodo
D2 Q2
Q2CKFFD Z
Clock
D1 Q1
Q1CKFFD
D0 Q00
Q0CKFFD
ldquo1rdquo CL
Lrsquoimpulso breve viene catturato dal FF 0 (purcheacute di larghezza sufficiente per la tecnologia del FF) - che quindi agisce come integratore ndash la cui uscita alimenta il monoimpulsore di tipo A Lrsquoattivazione del FF 1 resetta il FF 0 (supponendo che il segnale di CL sia ldquopositiverdquotruerdquo)
Ci puograve essere un problema se il CL agisce in modo asincrono
NB questo circuito e quello del lucido precedente evidenziano il fatto che nella realtagrave nessuna rete egrave solo sincrona ma bensigrave egrave pressocheacute sempre necessario utilizzare reti di natura diversa anche percheacute vi egrave sempre una interazione fra reti con clock diversi eo con segnali provenienti dal mondo esterno NON sincronizzati con il clock
Monoimpulsore di tipo A ldquorivistordquo
54
bull Uno shift register a sinistra (a destra) egrave un registro composto da FFD che ad ogni clock trasferisce il valore del FF a destra (a sinistra) di ciascun FF nel FF stesso Nel FF piugrave a destra (sinistra) viene immesso uno ldquo0rdquo Questi tipi di registri shift si chiamano ldquologicirdquo
Shift register (registri a traslazione o scorrimento)
D0kQ0k
CK DnQn
CK
D0kQ0k
CK Dn-1Qn-1
CK
D0kQ0k
CK Dn-2Qn-2
CK
D0kQ0k
CK D0Q0
CK
ldquo0rdquo
Shift register a sinistra
bull Anche per i registri a traslazione esistono diverse versioni con ingresso parallelo e uscita seriale con ingresso seriale e uscita parallela con reset con load etc etc
bull Si noti che uno shift register egrave anche un contatore Si immagini per esempio che dopo un reset siano inseriti degli uni a partire da destra Lo shift register si riempie progressivamente di uni e quindi la posizione in cui egrave arrivato lrsquouno indica il valore del conteggio in base a un codice ldquouno su nrdquo (un codice decodificato)
bull Spesso uno stesso registro puograve traslare a destra o a sinistra in funzione di una segnale di controllo Ovviamente questo si ottiene premettendo a ogni ingresso Di un MUX a due vie che preleva in funzione del segnale di controllo Qigrave+1 o Qigrave-1 Con questa configurazione lo shift register diventa anche un contatore avantiindietro
Registro a scorrimento (shift-register) a 3 bit
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
IN
OUT2OUT1OUT0
CK
CK
IN
A_RESET
OUT1
OUT2
OUT0
Registro a scorrimento (shift-register) a 3 bit
57
Esempio 74164 (serial In parallel OUT)
bull In questo registro a traslazione ad ogni fronte positivo del clock i dati sono traslati a destra (Q0 -gt Q1 Q1-gtQ2 etc) Il registro egrave dotato in un Master Reset (vero negato) e il dato inserito nel FF Q0 egrave dato dallrsquoAND dei due ingressi Dsa e Dsb
bull Si noti che lrsquooperazione di shift corrisponde aritmeticamente alle operazioni di divisione e moltiplicazione per 2 Si supponga che in Q0 vi sia il bit meno significativo e in Q7 il meno significativo
0 1 1 0 1 0 1 0
010101102 = 10810
Shift left =gt x2
Shift right =gt 2
101011002 = 21610
001010112 = 5910
NB nel dispositivo i bit sono posti in ordine invertito e quindi un shift left del numero corrisponde a uno shift right sul dispositivo
58
bull Esistono anche i registri a traslazione ldquoaritmeticirdquo In questi shift register a destra anzicheacute fare entrare nel FF piugrave a sinistra lo ldquo0rdquo viene immesso sempre ripetutamente il suo valore logico
Shift aritmetico
Q7 Q6 Q5 Q4 Q3 Q2 Q1 Q0
D7 D6 D5 D4 D3 D2 D1 D0
I LDCK Esempio
11001010SRA
11100101 interpretato in complemento a 2
001101102=5410
C2 C2
000110112=2710
bull Lo shift aritmetico a destra effettua una divisione per 2 mantenendo il segno
59
Rotazione
Nei computer egrave sovente necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register
D0kQ0k
CK DnQn
CK
D0kQ0k
CK Dn-1Qn-1
CK
D0kQ0k
CK Dn-2Qn-2
CK
D0kQ0k
CK D0Q0
CK
Molto spesso nei computer egrave necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register con direzione programmabile In questo caso su D0 ad esempio puograve essere avviato o Q1 o Qn
60
Contatori con shift register ndash Contatore retroazionato EX-OR
Q2Q0
Shift right 3 bitDQ1
110 111 011 101 010 001
Diagramma degli stati disgiunto
Uno shift register con n FF retroazionato con un EX-OR (scelta degli ingressi variabile) egrave un contatore NON binario che conta per 2n-1 (purcheacute presettato a un valore diverso da tutti zeri)
000
100
61
Contatore di Johnson (riempimento e svuotamento)
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
000-gt100-gt110-gt111-gt011-gt001-gt000-gtStati isolati 101-gt010-gt101gt1
Poicheacute configurazioni adiacenti del codice Johnson differiscono di un solo bit il contatore puograve essere utilizzato per generare forme drsquoonda prive di alee
62
Contatore ad anello con un solo 1 (ovvero che genera direttamente il codice 1su n)
FFDD Q
QR
RESET
FFDD Q
QR
RESET
FFDD Q
QPR
RESET
OUT3OUT1OUT0
CK
FFDD Q
QR
RESET
OUT2
0001-gt1000-gt0100-gt0010-gt0010n FF per contare per n (mentre con i contatori binari il numero dei FF egrave il log2m ove m egrave il primo intero maggiore o uguale a n)
63
Barrel shifter (rotore)Un barrel shifter egrave uno shift register in grado di traslare di ldquonrdquo posizioni in un solo clock il contenuto dei suoi FF In figura egrave riportato il barrel shifter della Altera Gli ingressi A-H in presenza dellrsquoattivazione del segnale LDST al primo fronte positivo del clock sono depositati nei FF Quando LDST egrave 0 ad ogni fronte positivo del clock i bit di uscita sono ruotati di n posizioni in senso antiorario (ovvero lrsquouscita H diventa la G la G diventa la Fhellipe lrsquouscita A diventa la H) ove n egrave il valore binario indicato dai segnali S0 S1 e S2
Si noti che il circuito in questione egrave di fatto un registro con 8 FF allrsquoingresso di ciascuno dei quali egrave previsto un MUX a 8 vie che pilotato dai segnali S0 S1 e S2 che seleziona uno degli 8 uscite del dispositivo La struttura interna puograve essere osservata ldquoclikkandordquo due volte sul dispositivo nello schema di Altera
64
Barrel shifter
6565
66
Simulazione timing
67
bull Utilizzando il sistema Altera progettare un orologio con secondi minuti ora partendo da un oscillatore a quarzo con frequenza 500 KHz
bull E se si volesse proseguire e realizzare anche un datario (giorno mese e anno )
bull Come potrebbe essere integrato con una sveglia Si ricordi che lrsquoorologio deve essere anche essere ldquopresettatordquo
bull Quali circuiti utilizzare per la visualizzazione
68
EPROM
X0nZ0m
y0kY0k
Clock
D0kQ0k
FFD0k
CK D0kQ0k CK
Reti sincrone con EPROM
Al posto delle EPROM si utilizzano ora dei PLA ovvero dispositivi nei quali si nei quali le funzioni combinatorie sono ottimizzate ma il principio egrave assolutamente il medesimo
69
Progettare con Altera una rete logica sincrona che utilizzando registri 374 ALU 74181 un contatore e altri dispositivi ritenuti necessari permetta di eseguire in sequenza la somma di due dati di 4 bit senza segno ingresso esegua il complemento a 2 inverta la parte bassa con la parte alta del risultato e infine moltiplichi il tutto logicamente per 2
La soluzione egrave sempre decomponibile in tre sottosistemi il controllo con la sua decodifica (unitagrave di controllo) il percorso dei dati con le unitagrave che li trasformano (datapath) e i registri di deposito e di ingresso dei dati
Questa egrave la struttura base di qualunque unitagrave centrale di qualunque computer
La differenza consiste solo nel fatto che anzicheacute avere una sequenza fissa di operazioni ne viene generata una volta a volta che dipende appunto dalla istruzione che deve essere eseguita Come si vedragrave approfonditamente nel corso di Calcolatori T del II anno (prof Neri e Mattoccia)
Arrivederci al corso di Calcolatori T del II anno (sapendo perfettamente le reti logiche helliphellip)
45
Simulazione timing
46
NB Si egrave scelto di utilizzare SOLO gli ingressi SINCRONI del contatore per semplicitagrave Il contatore rimane al valore 100 fino a quando non si presenta allrsquoingresso il valore 00 Se la sequenza egrave esatta il contatore continua a contare in avanti fino alla generazione dellrsquouscita (valore 11 del contatore) altrimenti si riporta al valore 100 ovvero Qc=1) Il segnale GN (Gate Not) egrave quello che abilita il conteggio Il sistema riamane stabile a 000 per una sequenza lunga a piacere di X1=0 e X2=0 e si sposta quando dopo 00 si ha 01 Come si evince dalla simulazione se la sequenza non egrave corretta o egrave interrotta il contatore si riporta sempre a 100
00 01 11 10
001 000 000
X1
000000 010 100 100001
000 100 100 011010
100 100 100 100011
000 100 100 100100
000 100 100 100101
000 100 100 100110
000 100 100 100111
0
0
0
1
0
0
0
0
X2
000
NB la tabella delle transizioni derivata della rete realizzata NON ha ovviamente condizioni di indifferenza
47
Progettare un contatore packed BCD updown a 8 bit (due digit)
48
Generazione di forme drsquoondabull Ersquo possibile generare forme drsquoonda periodiche mediante circuiti sincroni di periodo
sottomultiplo intero del clock
Esempio 1Divisore di frequenza per 2
D0k Q0k
CK D Q
CK Clock
Q
Esempio 2 generare una forma drsquoonda periodica con periodo 5T (ove T sia il periodo del clock) in cui in un semiperiodo 3T lrsquouscita sia alta e nellrsquoaltro semiperiodo 2T lrsquouscita sia bassa
Q0 Q1 Q2 CK
Cx5
C
B
A
01234
DecoderDemux
Clock
ZZ T
3T2T
3T
NB una rete logica egrave in grado di effettuare delle divisioni di frequenza e mai delle moltiplicazioni di frequenza (che si possono ottenere solo con circuiti analogici non lineari)
49
Di che circuito si tratta
D0k Q0k
CK D0 Q0
CKQ0
D0k Q0k
CK D1 Q1
CK
D0k Q0k
CK D2 Q2
CKClock
Clock
Q0
Q1
Q2
Ersquo un contatore binario ma non sincrono Infatti i vari FF NON utilizzano lo stesso clock e questo porta a un piccolo disallineamento sulle uscite Non egrave sintetizzabile come una rete sincrona e una sintesi formale sarebbe possibile solo trattando il circuito come asincrono ovvero ldquoaprendordquo i FF Sarebbe possibile trasformarlo in un contatore x6 mantenendo la stessa impostazione
Sintetizzare e simulare con Altera
NB il segnale di clock non egrave in comune
50
7493
51
Altera Contatore asincrono
Contatore asincrono
52
Simulazione timing
53
Come puograve essere utilizzato un FFD per catturare un impulso piugrave breve di un periodo
D2 Q2
Q2CKFFD Z
Clock
D1 Q1
Q1CKFFD
D0 Q00
Q0CKFFD
ldquo1rdquo CL
Lrsquoimpulso breve viene catturato dal FF 0 (purcheacute di larghezza sufficiente per la tecnologia del FF) - che quindi agisce come integratore ndash la cui uscita alimenta il monoimpulsore di tipo A Lrsquoattivazione del FF 1 resetta il FF 0 (supponendo che il segnale di CL sia ldquopositiverdquotruerdquo)
Ci puograve essere un problema se il CL agisce in modo asincrono
NB questo circuito e quello del lucido precedente evidenziano il fatto che nella realtagrave nessuna rete egrave solo sincrona ma bensigrave egrave pressocheacute sempre necessario utilizzare reti di natura diversa anche percheacute vi egrave sempre una interazione fra reti con clock diversi eo con segnali provenienti dal mondo esterno NON sincronizzati con il clock
Monoimpulsore di tipo A ldquorivistordquo
54
bull Uno shift register a sinistra (a destra) egrave un registro composto da FFD che ad ogni clock trasferisce il valore del FF a destra (a sinistra) di ciascun FF nel FF stesso Nel FF piugrave a destra (sinistra) viene immesso uno ldquo0rdquo Questi tipi di registri shift si chiamano ldquologicirdquo
Shift register (registri a traslazione o scorrimento)
D0kQ0k
CK DnQn
CK
D0kQ0k
CK Dn-1Qn-1
CK
D0kQ0k
CK Dn-2Qn-2
CK
D0kQ0k
CK D0Q0
CK
ldquo0rdquo
Shift register a sinistra
bull Anche per i registri a traslazione esistono diverse versioni con ingresso parallelo e uscita seriale con ingresso seriale e uscita parallela con reset con load etc etc
bull Si noti che uno shift register egrave anche un contatore Si immagini per esempio che dopo un reset siano inseriti degli uni a partire da destra Lo shift register si riempie progressivamente di uni e quindi la posizione in cui egrave arrivato lrsquouno indica il valore del conteggio in base a un codice ldquouno su nrdquo (un codice decodificato)
bull Spesso uno stesso registro puograve traslare a destra o a sinistra in funzione di una segnale di controllo Ovviamente questo si ottiene premettendo a ogni ingresso Di un MUX a due vie che preleva in funzione del segnale di controllo Qigrave+1 o Qigrave-1 Con questa configurazione lo shift register diventa anche un contatore avantiindietro
Registro a scorrimento (shift-register) a 3 bit
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
IN
OUT2OUT1OUT0
CK
CK
IN
A_RESET
OUT1
OUT2
OUT0
Registro a scorrimento (shift-register) a 3 bit
57
Esempio 74164 (serial In parallel OUT)
bull In questo registro a traslazione ad ogni fronte positivo del clock i dati sono traslati a destra (Q0 -gt Q1 Q1-gtQ2 etc) Il registro egrave dotato in un Master Reset (vero negato) e il dato inserito nel FF Q0 egrave dato dallrsquoAND dei due ingressi Dsa e Dsb
bull Si noti che lrsquooperazione di shift corrisponde aritmeticamente alle operazioni di divisione e moltiplicazione per 2 Si supponga che in Q0 vi sia il bit meno significativo e in Q7 il meno significativo
0 1 1 0 1 0 1 0
010101102 = 10810
Shift left =gt x2
Shift right =gt 2
101011002 = 21610
001010112 = 5910
NB nel dispositivo i bit sono posti in ordine invertito e quindi un shift left del numero corrisponde a uno shift right sul dispositivo
58
bull Esistono anche i registri a traslazione ldquoaritmeticirdquo In questi shift register a destra anzicheacute fare entrare nel FF piugrave a sinistra lo ldquo0rdquo viene immesso sempre ripetutamente il suo valore logico
Shift aritmetico
Q7 Q6 Q5 Q4 Q3 Q2 Q1 Q0
D7 D6 D5 D4 D3 D2 D1 D0
I LDCK Esempio
11001010SRA
11100101 interpretato in complemento a 2
001101102=5410
C2 C2
000110112=2710
bull Lo shift aritmetico a destra effettua una divisione per 2 mantenendo il segno
59
Rotazione
Nei computer egrave sovente necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register
D0kQ0k
CK DnQn
CK
D0kQ0k
CK Dn-1Qn-1
CK
D0kQ0k
CK Dn-2Qn-2
CK
D0kQ0k
CK D0Q0
CK
Molto spesso nei computer egrave necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register con direzione programmabile In questo caso su D0 ad esempio puograve essere avviato o Q1 o Qn
60
Contatori con shift register ndash Contatore retroazionato EX-OR
Q2Q0
Shift right 3 bitDQ1
110 111 011 101 010 001
Diagramma degli stati disgiunto
Uno shift register con n FF retroazionato con un EX-OR (scelta degli ingressi variabile) egrave un contatore NON binario che conta per 2n-1 (purcheacute presettato a un valore diverso da tutti zeri)
000
100
61
Contatore di Johnson (riempimento e svuotamento)
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
000-gt100-gt110-gt111-gt011-gt001-gt000-gtStati isolati 101-gt010-gt101gt1
Poicheacute configurazioni adiacenti del codice Johnson differiscono di un solo bit il contatore puograve essere utilizzato per generare forme drsquoonda prive di alee
62
Contatore ad anello con un solo 1 (ovvero che genera direttamente il codice 1su n)
FFDD Q
QR
RESET
FFDD Q
QR
RESET
FFDD Q
QPR
RESET
OUT3OUT1OUT0
CK
FFDD Q
QR
RESET
OUT2
0001-gt1000-gt0100-gt0010-gt0010n FF per contare per n (mentre con i contatori binari il numero dei FF egrave il log2m ove m egrave il primo intero maggiore o uguale a n)
63
Barrel shifter (rotore)Un barrel shifter egrave uno shift register in grado di traslare di ldquonrdquo posizioni in un solo clock il contenuto dei suoi FF In figura egrave riportato il barrel shifter della Altera Gli ingressi A-H in presenza dellrsquoattivazione del segnale LDST al primo fronte positivo del clock sono depositati nei FF Quando LDST egrave 0 ad ogni fronte positivo del clock i bit di uscita sono ruotati di n posizioni in senso antiorario (ovvero lrsquouscita H diventa la G la G diventa la Fhellipe lrsquouscita A diventa la H) ove n egrave il valore binario indicato dai segnali S0 S1 e S2
Si noti che il circuito in questione egrave di fatto un registro con 8 FF allrsquoingresso di ciascuno dei quali egrave previsto un MUX a 8 vie che pilotato dai segnali S0 S1 e S2 che seleziona uno degli 8 uscite del dispositivo La struttura interna puograve essere osservata ldquoclikkandordquo due volte sul dispositivo nello schema di Altera
64
Barrel shifter
6565
66
Simulazione timing
67
bull Utilizzando il sistema Altera progettare un orologio con secondi minuti ora partendo da un oscillatore a quarzo con frequenza 500 KHz
bull E se si volesse proseguire e realizzare anche un datario (giorno mese e anno )
bull Come potrebbe essere integrato con una sveglia Si ricordi che lrsquoorologio deve essere anche essere ldquopresettatordquo
bull Quali circuiti utilizzare per la visualizzazione
68
EPROM
X0nZ0m
y0kY0k
Clock
D0kQ0k
FFD0k
CK D0kQ0k CK
Reti sincrone con EPROM
Al posto delle EPROM si utilizzano ora dei PLA ovvero dispositivi nei quali si nei quali le funzioni combinatorie sono ottimizzate ma il principio egrave assolutamente il medesimo
69
Progettare con Altera una rete logica sincrona che utilizzando registri 374 ALU 74181 un contatore e altri dispositivi ritenuti necessari permetta di eseguire in sequenza la somma di due dati di 4 bit senza segno ingresso esegua il complemento a 2 inverta la parte bassa con la parte alta del risultato e infine moltiplichi il tutto logicamente per 2
La soluzione egrave sempre decomponibile in tre sottosistemi il controllo con la sua decodifica (unitagrave di controllo) il percorso dei dati con le unitagrave che li trasformano (datapath) e i registri di deposito e di ingresso dei dati
Questa egrave la struttura base di qualunque unitagrave centrale di qualunque computer
La differenza consiste solo nel fatto che anzicheacute avere una sequenza fissa di operazioni ne viene generata una volta a volta che dipende appunto dalla istruzione che deve essere eseguita Come si vedragrave approfonditamente nel corso di Calcolatori T del II anno (prof Neri e Mattoccia)
Arrivederci al corso di Calcolatori T del II anno (sapendo perfettamente le reti logiche helliphellip)
46
NB Si egrave scelto di utilizzare SOLO gli ingressi SINCRONI del contatore per semplicitagrave Il contatore rimane al valore 100 fino a quando non si presenta allrsquoingresso il valore 00 Se la sequenza egrave esatta il contatore continua a contare in avanti fino alla generazione dellrsquouscita (valore 11 del contatore) altrimenti si riporta al valore 100 ovvero Qc=1) Il segnale GN (Gate Not) egrave quello che abilita il conteggio Il sistema riamane stabile a 000 per una sequenza lunga a piacere di X1=0 e X2=0 e si sposta quando dopo 00 si ha 01 Come si evince dalla simulazione se la sequenza non egrave corretta o egrave interrotta il contatore si riporta sempre a 100
00 01 11 10
001 000 000
X1
000000 010 100 100001
000 100 100 011010
100 100 100 100011
000 100 100 100100
000 100 100 100101
000 100 100 100110
000 100 100 100111
0
0
0
1
0
0
0
0
X2
000
NB la tabella delle transizioni derivata della rete realizzata NON ha ovviamente condizioni di indifferenza
47
Progettare un contatore packed BCD updown a 8 bit (due digit)
48
Generazione di forme drsquoondabull Ersquo possibile generare forme drsquoonda periodiche mediante circuiti sincroni di periodo
sottomultiplo intero del clock
Esempio 1Divisore di frequenza per 2
D0k Q0k
CK D Q
CK Clock
Q
Esempio 2 generare una forma drsquoonda periodica con periodo 5T (ove T sia il periodo del clock) in cui in un semiperiodo 3T lrsquouscita sia alta e nellrsquoaltro semiperiodo 2T lrsquouscita sia bassa
Q0 Q1 Q2 CK
Cx5
C
B
A
01234
DecoderDemux
Clock
ZZ T
3T2T
3T
NB una rete logica egrave in grado di effettuare delle divisioni di frequenza e mai delle moltiplicazioni di frequenza (che si possono ottenere solo con circuiti analogici non lineari)
49
Di che circuito si tratta
D0k Q0k
CK D0 Q0
CKQ0
D0k Q0k
CK D1 Q1
CK
D0k Q0k
CK D2 Q2
CKClock
Clock
Q0
Q1
Q2
Ersquo un contatore binario ma non sincrono Infatti i vari FF NON utilizzano lo stesso clock e questo porta a un piccolo disallineamento sulle uscite Non egrave sintetizzabile come una rete sincrona e una sintesi formale sarebbe possibile solo trattando il circuito come asincrono ovvero ldquoaprendordquo i FF Sarebbe possibile trasformarlo in un contatore x6 mantenendo la stessa impostazione
Sintetizzare e simulare con Altera
NB il segnale di clock non egrave in comune
50
7493
51
Altera Contatore asincrono
Contatore asincrono
52
Simulazione timing
53
Come puograve essere utilizzato un FFD per catturare un impulso piugrave breve di un periodo
D2 Q2
Q2CKFFD Z
Clock
D1 Q1
Q1CKFFD
D0 Q00
Q0CKFFD
ldquo1rdquo CL
Lrsquoimpulso breve viene catturato dal FF 0 (purcheacute di larghezza sufficiente per la tecnologia del FF) - che quindi agisce come integratore ndash la cui uscita alimenta il monoimpulsore di tipo A Lrsquoattivazione del FF 1 resetta il FF 0 (supponendo che il segnale di CL sia ldquopositiverdquotruerdquo)
Ci puograve essere un problema se il CL agisce in modo asincrono
NB questo circuito e quello del lucido precedente evidenziano il fatto che nella realtagrave nessuna rete egrave solo sincrona ma bensigrave egrave pressocheacute sempre necessario utilizzare reti di natura diversa anche percheacute vi egrave sempre una interazione fra reti con clock diversi eo con segnali provenienti dal mondo esterno NON sincronizzati con il clock
Monoimpulsore di tipo A ldquorivistordquo
54
bull Uno shift register a sinistra (a destra) egrave un registro composto da FFD che ad ogni clock trasferisce il valore del FF a destra (a sinistra) di ciascun FF nel FF stesso Nel FF piugrave a destra (sinistra) viene immesso uno ldquo0rdquo Questi tipi di registri shift si chiamano ldquologicirdquo
Shift register (registri a traslazione o scorrimento)
D0kQ0k
CK DnQn
CK
D0kQ0k
CK Dn-1Qn-1
CK
D0kQ0k
CK Dn-2Qn-2
CK
D0kQ0k
CK D0Q0
CK
ldquo0rdquo
Shift register a sinistra
bull Anche per i registri a traslazione esistono diverse versioni con ingresso parallelo e uscita seriale con ingresso seriale e uscita parallela con reset con load etc etc
bull Si noti che uno shift register egrave anche un contatore Si immagini per esempio che dopo un reset siano inseriti degli uni a partire da destra Lo shift register si riempie progressivamente di uni e quindi la posizione in cui egrave arrivato lrsquouno indica il valore del conteggio in base a un codice ldquouno su nrdquo (un codice decodificato)
bull Spesso uno stesso registro puograve traslare a destra o a sinistra in funzione di una segnale di controllo Ovviamente questo si ottiene premettendo a ogni ingresso Di un MUX a due vie che preleva in funzione del segnale di controllo Qigrave+1 o Qigrave-1 Con questa configurazione lo shift register diventa anche un contatore avantiindietro
Registro a scorrimento (shift-register) a 3 bit
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
IN
OUT2OUT1OUT0
CK
CK
IN
A_RESET
OUT1
OUT2
OUT0
Registro a scorrimento (shift-register) a 3 bit
57
Esempio 74164 (serial In parallel OUT)
bull In questo registro a traslazione ad ogni fronte positivo del clock i dati sono traslati a destra (Q0 -gt Q1 Q1-gtQ2 etc) Il registro egrave dotato in un Master Reset (vero negato) e il dato inserito nel FF Q0 egrave dato dallrsquoAND dei due ingressi Dsa e Dsb
bull Si noti che lrsquooperazione di shift corrisponde aritmeticamente alle operazioni di divisione e moltiplicazione per 2 Si supponga che in Q0 vi sia il bit meno significativo e in Q7 il meno significativo
0 1 1 0 1 0 1 0
010101102 = 10810
Shift left =gt x2
Shift right =gt 2
101011002 = 21610
001010112 = 5910
NB nel dispositivo i bit sono posti in ordine invertito e quindi un shift left del numero corrisponde a uno shift right sul dispositivo
58
bull Esistono anche i registri a traslazione ldquoaritmeticirdquo In questi shift register a destra anzicheacute fare entrare nel FF piugrave a sinistra lo ldquo0rdquo viene immesso sempre ripetutamente il suo valore logico
Shift aritmetico
Q7 Q6 Q5 Q4 Q3 Q2 Q1 Q0
D7 D6 D5 D4 D3 D2 D1 D0
I LDCK Esempio
11001010SRA
11100101 interpretato in complemento a 2
001101102=5410
C2 C2
000110112=2710
bull Lo shift aritmetico a destra effettua una divisione per 2 mantenendo il segno
59
Rotazione
Nei computer egrave sovente necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register
D0kQ0k
CK DnQn
CK
D0kQ0k
CK Dn-1Qn-1
CK
D0kQ0k
CK Dn-2Qn-2
CK
D0kQ0k
CK D0Q0
CK
Molto spesso nei computer egrave necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register con direzione programmabile In questo caso su D0 ad esempio puograve essere avviato o Q1 o Qn
60
Contatori con shift register ndash Contatore retroazionato EX-OR
Q2Q0
Shift right 3 bitDQ1
110 111 011 101 010 001
Diagramma degli stati disgiunto
Uno shift register con n FF retroazionato con un EX-OR (scelta degli ingressi variabile) egrave un contatore NON binario che conta per 2n-1 (purcheacute presettato a un valore diverso da tutti zeri)
000
100
61
Contatore di Johnson (riempimento e svuotamento)
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
000-gt100-gt110-gt111-gt011-gt001-gt000-gtStati isolati 101-gt010-gt101gt1
Poicheacute configurazioni adiacenti del codice Johnson differiscono di un solo bit il contatore puograve essere utilizzato per generare forme drsquoonda prive di alee
62
Contatore ad anello con un solo 1 (ovvero che genera direttamente il codice 1su n)
FFDD Q
QR
RESET
FFDD Q
QR
RESET
FFDD Q
QPR
RESET
OUT3OUT1OUT0
CK
FFDD Q
QR
RESET
OUT2
0001-gt1000-gt0100-gt0010-gt0010n FF per contare per n (mentre con i contatori binari il numero dei FF egrave il log2m ove m egrave il primo intero maggiore o uguale a n)
63
Barrel shifter (rotore)Un barrel shifter egrave uno shift register in grado di traslare di ldquonrdquo posizioni in un solo clock il contenuto dei suoi FF In figura egrave riportato il barrel shifter della Altera Gli ingressi A-H in presenza dellrsquoattivazione del segnale LDST al primo fronte positivo del clock sono depositati nei FF Quando LDST egrave 0 ad ogni fronte positivo del clock i bit di uscita sono ruotati di n posizioni in senso antiorario (ovvero lrsquouscita H diventa la G la G diventa la Fhellipe lrsquouscita A diventa la H) ove n egrave il valore binario indicato dai segnali S0 S1 e S2
Si noti che il circuito in questione egrave di fatto un registro con 8 FF allrsquoingresso di ciascuno dei quali egrave previsto un MUX a 8 vie che pilotato dai segnali S0 S1 e S2 che seleziona uno degli 8 uscite del dispositivo La struttura interna puograve essere osservata ldquoclikkandordquo due volte sul dispositivo nello schema di Altera
64
Barrel shifter
6565
66
Simulazione timing
67
bull Utilizzando il sistema Altera progettare un orologio con secondi minuti ora partendo da un oscillatore a quarzo con frequenza 500 KHz
bull E se si volesse proseguire e realizzare anche un datario (giorno mese e anno )
bull Come potrebbe essere integrato con una sveglia Si ricordi che lrsquoorologio deve essere anche essere ldquopresettatordquo
bull Quali circuiti utilizzare per la visualizzazione
68
EPROM
X0nZ0m
y0kY0k
Clock
D0kQ0k
FFD0k
CK D0kQ0k CK
Reti sincrone con EPROM
Al posto delle EPROM si utilizzano ora dei PLA ovvero dispositivi nei quali si nei quali le funzioni combinatorie sono ottimizzate ma il principio egrave assolutamente il medesimo
69
Progettare con Altera una rete logica sincrona che utilizzando registri 374 ALU 74181 un contatore e altri dispositivi ritenuti necessari permetta di eseguire in sequenza la somma di due dati di 4 bit senza segno ingresso esegua il complemento a 2 inverta la parte bassa con la parte alta del risultato e infine moltiplichi il tutto logicamente per 2
La soluzione egrave sempre decomponibile in tre sottosistemi il controllo con la sua decodifica (unitagrave di controllo) il percorso dei dati con le unitagrave che li trasformano (datapath) e i registri di deposito e di ingresso dei dati
Questa egrave la struttura base di qualunque unitagrave centrale di qualunque computer
La differenza consiste solo nel fatto che anzicheacute avere una sequenza fissa di operazioni ne viene generata una volta a volta che dipende appunto dalla istruzione che deve essere eseguita Come si vedragrave approfonditamente nel corso di Calcolatori T del II anno (prof Neri e Mattoccia)
Arrivederci al corso di Calcolatori T del II anno (sapendo perfettamente le reti logiche helliphellip)
47
Progettare un contatore packed BCD updown a 8 bit (due digit)
48
Generazione di forme drsquoondabull Ersquo possibile generare forme drsquoonda periodiche mediante circuiti sincroni di periodo
sottomultiplo intero del clock
Esempio 1Divisore di frequenza per 2
D0k Q0k
CK D Q
CK Clock
Q
Esempio 2 generare una forma drsquoonda periodica con periodo 5T (ove T sia il periodo del clock) in cui in un semiperiodo 3T lrsquouscita sia alta e nellrsquoaltro semiperiodo 2T lrsquouscita sia bassa
Q0 Q1 Q2 CK
Cx5
C
B
A
01234
DecoderDemux
Clock
ZZ T
3T2T
3T
NB una rete logica egrave in grado di effettuare delle divisioni di frequenza e mai delle moltiplicazioni di frequenza (che si possono ottenere solo con circuiti analogici non lineari)
49
Di che circuito si tratta
D0k Q0k
CK D0 Q0
CKQ0
D0k Q0k
CK D1 Q1
CK
D0k Q0k
CK D2 Q2
CKClock
Clock
Q0
Q1
Q2
Ersquo un contatore binario ma non sincrono Infatti i vari FF NON utilizzano lo stesso clock e questo porta a un piccolo disallineamento sulle uscite Non egrave sintetizzabile come una rete sincrona e una sintesi formale sarebbe possibile solo trattando il circuito come asincrono ovvero ldquoaprendordquo i FF Sarebbe possibile trasformarlo in un contatore x6 mantenendo la stessa impostazione
Sintetizzare e simulare con Altera
NB il segnale di clock non egrave in comune
50
7493
51
Altera Contatore asincrono
Contatore asincrono
52
Simulazione timing
53
Come puograve essere utilizzato un FFD per catturare un impulso piugrave breve di un periodo
D2 Q2
Q2CKFFD Z
Clock
D1 Q1
Q1CKFFD
D0 Q00
Q0CKFFD
ldquo1rdquo CL
Lrsquoimpulso breve viene catturato dal FF 0 (purcheacute di larghezza sufficiente per la tecnologia del FF) - che quindi agisce come integratore ndash la cui uscita alimenta il monoimpulsore di tipo A Lrsquoattivazione del FF 1 resetta il FF 0 (supponendo che il segnale di CL sia ldquopositiverdquotruerdquo)
Ci puograve essere un problema se il CL agisce in modo asincrono
NB questo circuito e quello del lucido precedente evidenziano il fatto che nella realtagrave nessuna rete egrave solo sincrona ma bensigrave egrave pressocheacute sempre necessario utilizzare reti di natura diversa anche percheacute vi egrave sempre una interazione fra reti con clock diversi eo con segnali provenienti dal mondo esterno NON sincronizzati con il clock
Monoimpulsore di tipo A ldquorivistordquo
54
bull Uno shift register a sinistra (a destra) egrave un registro composto da FFD che ad ogni clock trasferisce il valore del FF a destra (a sinistra) di ciascun FF nel FF stesso Nel FF piugrave a destra (sinistra) viene immesso uno ldquo0rdquo Questi tipi di registri shift si chiamano ldquologicirdquo
Shift register (registri a traslazione o scorrimento)
D0kQ0k
CK DnQn
CK
D0kQ0k
CK Dn-1Qn-1
CK
D0kQ0k
CK Dn-2Qn-2
CK
D0kQ0k
CK D0Q0
CK
ldquo0rdquo
Shift register a sinistra
bull Anche per i registri a traslazione esistono diverse versioni con ingresso parallelo e uscita seriale con ingresso seriale e uscita parallela con reset con load etc etc
bull Si noti che uno shift register egrave anche un contatore Si immagini per esempio che dopo un reset siano inseriti degli uni a partire da destra Lo shift register si riempie progressivamente di uni e quindi la posizione in cui egrave arrivato lrsquouno indica il valore del conteggio in base a un codice ldquouno su nrdquo (un codice decodificato)
bull Spesso uno stesso registro puograve traslare a destra o a sinistra in funzione di una segnale di controllo Ovviamente questo si ottiene premettendo a ogni ingresso Di un MUX a due vie che preleva in funzione del segnale di controllo Qigrave+1 o Qigrave-1 Con questa configurazione lo shift register diventa anche un contatore avantiindietro
Registro a scorrimento (shift-register) a 3 bit
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
IN
OUT2OUT1OUT0
CK
CK
IN
A_RESET
OUT1
OUT2
OUT0
Registro a scorrimento (shift-register) a 3 bit
57
Esempio 74164 (serial In parallel OUT)
bull In questo registro a traslazione ad ogni fronte positivo del clock i dati sono traslati a destra (Q0 -gt Q1 Q1-gtQ2 etc) Il registro egrave dotato in un Master Reset (vero negato) e il dato inserito nel FF Q0 egrave dato dallrsquoAND dei due ingressi Dsa e Dsb
bull Si noti che lrsquooperazione di shift corrisponde aritmeticamente alle operazioni di divisione e moltiplicazione per 2 Si supponga che in Q0 vi sia il bit meno significativo e in Q7 il meno significativo
0 1 1 0 1 0 1 0
010101102 = 10810
Shift left =gt x2
Shift right =gt 2
101011002 = 21610
001010112 = 5910
NB nel dispositivo i bit sono posti in ordine invertito e quindi un shift left del numero corrisponde a uno shift right sul dispositivo
58
bull Esistono anche i registri a traslazione ldquoaritmeticirdquo In questi shift register a destra anzicheacute fare entrare nel FF piugrave a sinistra lo ldquo0rdquo viene immesso sempre ripetutamente il suo valore logico
Shift aritmetico
Q7 Q6 Q5 Q4 Q3 Q2 Q1 Q0
D7 D6 D5 D4 D3 D2 D1 D0
I LDCK Esempio
11001010SRA
11100101 interpretato in complemento a 2
001101102=5410
C2 C2
000110112=2710
bull Lo shift aritmetico a destra effettua una divisione per 2 mantenendo il segno
59
Rotazione
Nei computer egrave sovente necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register
D0kQ0k
CK DnQn
CK
D0kQ0k
CK Dn-1Qn-1
CK
D0kQ0k
CK Dn-2Qn-2
CK
D0kQ0k
CK D0Q0
CK
Molto spesso nei computer egrave necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register con direzione programmabile In questo caso su D0 ad esempio puograve essere avviato o Q1 o Qn
60
Contatori con shift register ndash Contatore retroazionato EX-OR
Q2Q0
Shift right 3 bitDQ1
110 111 011 101 010 001
Diagramma degli stati disgiunto
Uno shift register con n FF retroazionato con un EX-OR (scelta degli ingressi variabile) egrave un contatore NON binario che conta per 2n-1 (purcheacute presettato a un valore diverso da tutti zeri)
000
100
61
Contatore di Johnson (riempimento e svuotamento)
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
000-gt100-gt110-gt111-gt011-gt001-gt000-gtStati isolati 101-gt010-gt101gt1
Poicheacute configurazioni adiacenti del codice Johnson differiscono di un solo bit il contatore puograve essere utilizzato per generare forme drsquoonda prive di alee
62
Contatore ad anello con un solo 1 (ovvero che genera direttamente il codice 1su n)
FFDD Q
QR
RESET
FFDD Q
QR
RESET
FFDD Q
QPR
RESET
OUT3OUT1OUT0
CK
FFDD Q
QR
RESET
OUT2
0001-gt1000-gt0100-gt0010-gt0010n FF per contare per n (mentre con i contatori binari il numero dei FF egrave il log2m ove m egrave il primo intero maggiore o uguale a n)
63
Barrel shifter (rotore)Un barrel shifter egrave uno shift register in grado di traslare di ldquonrdquo posizioni in un solo clock il contenuto dei suoi FF In figura egrave riportato il barrel shifter della Altera Gli ingressi A-H in presenza dellrsquoattivazione del segnale LDST al primo fronte positivo del clock sono depositati nei FF Quando LDST egrave 0 ad ogni fronte positivo del clock i bit di uscita sono ruotati di n posizioni in senso antiorario (ovvero lrsquouscita H diventa la G la G diventa la Fhellipe lrsquouscita A diventa la H) ove n egrave il valore binario indicato dai segnali S0 S1 e S2
Si noti che il circuito in questione egrave di fatto un registro con 8 FF allrsquoingresso di ciascuno dei quali egrave previsto un MUX a 8 vie che pilotato dai segnali S0 S1 e S2 che seleziona uno degli 8 uscite del dispositivo La struttura interna puograve essere osservata ldquoclikkandordquo due volte sul dispositivo nello schema di Altera
64
Barrel shifter
6565
66
Simulazione timing
67
bull Utilizzando il sistema Altera progettare un orologio con secondi minuti ora partendo da un oscillatore a quarzo con frequenza 500 KHz
bull E se si volesse proseguire e realizzare anche un datario (giorno mese e anno )
bull Come potrebbe essere integrato con una sveglia Si ricordi che lrsquoorologio deve essere anche essere ldquopresettatordquo
bull Quali circuiti utilizzare per la visualizzazione
68
EPROM
X0nZ0m
y0kY0k
Clock
D0kQ0k
FFD0k
CK D0kQ0k CK
Reti sincrone con EPROM
Al posto delle EPROM si utilizzano ora dei PLA ovvero dispositivi nei quali si nei quali le funzioni combinatorie sono ottimizzate ma il principio egrave assolutamente il medesimo
69
Progettare con Altera una rete logica sincrona che utilizzando registri 374 ALU 74181 un contatore e altri dispositivi ritenuti necessari permetta di eseguire in sequenza la somma di due dati di 4 bit senza segno ingresso esegua il complemento a 2 inverta la parte bassa con la parte alta del risultato e infine moltiplichi il tutto logicamente per 2
La soluzione egrave sempre decomponibile in tre sottosistemi il controllo con la sua decodifica (unitagrave di controllo) il percorso dei dati con le unitagrave che li trasformano (datapath) e i registri di deposito e di ingresso dei dati
Questa egrave la struttura base di qualunque unitagrave centrale di qualunque computer
La differenza consiste solo nel fatto che anzicheacute avere una sequenza fissa di operazioni ne viene generata una volta a volta che dipende appunto dalla istruzione che deve essere eseguita Come si vedragrave approfonditamente nel corso di Calcolatori T del II anno (prof Neri e Mattoccia)
Arrivederci al corso di Calcolatori T del II anno (sapendo perfettamente le reti logiche helliphellip)
48
Generazione di forme drsquoondabull Ersquo possibile generare forme drsquoonda periodiche mediante circuiti sincroni di periodo
sottomultiplo intero del clock
Esempio 1Divisore di frequenza per 2
D0k Q0k
CK D Q
CK Clock
Q
Esempio 2 generare una forma drsquoonda periodica con periodo 5T (ove T sia il periodo del clock) in cui in un semiperiodo 3T lrsquouscita sia alta e nellrsquoaltro semiperiodo 2T lrsquouscita sia bassa
Q0 Q1 Q2 CK
Cx5
C
B
A
01234
DecoderDemux
Clock
ZZ T
3T2T
3T
NB una rete logica egrave in grado di effettuare delle divisioni di frequenza e mai delle moltiplicazioni di frequenza (che si possono ottenere solo con circuiti analogici non lineari)
49
Di che circuito si tratta
D0k Q0k
CK D0 Q0
CKQ0
D0k Q0k
CK D1 Q1
CK
D0k Q0k
CK D2 Q2
CKClock
Clock
Q0
Q1
Q2
Ersquo un contatore binario ma non sincrono Infatti i vari FF NON utilizzano lo stesso clock e questo porta a un piccolo disallineamento sulle uscite Non egrave sintetizzabile come una rete sincrona e una sintesi formale sarebbe possibile solo trattando il circuito come asincrono ovvero ldquoaprendordquo i FF Sarebbe possibile trasformarlo in un contatore x6 mantenendo la stessa impostazione
Sintetizzare e simulare con Altera
NB il segnale di clock non egrave in comune
50
7493
51
Altera Contatore asincrono
Contatore asincrono
52
Simulazione timing
53
Come puograve essere utilizzato un FFD per catturare un impulso piugrave breve di un periodo
D2 Q2
Q2CKFFD Z
Clock
D1 Q1
Q1CKFFD
D0 Q00
Q0CKFFD
ldquo1rdquo CL
Lrsquoimpulso breve viene catturato dal FF 0 (purcheacute di larghezza sufficiente per la tecnologia del FF) - che quindi agisce come integratore ndash la cui uscita alimenta il monoimpulsore di tipo A Lrsquoattivazione del FF 1 resetta il FF 0 (supponendo che il segnale di CL sia ldquopositiverdquotruerdquo)
Ci puograve essere un problema se il CL agisce in modo asincrono
NB questo circuito e quello del lucido precedente evidenziano il fatto che nella realtagrave nessuna rete egrave solo sincrona ma bensigrave egrave pressocheacute sempre necessario utilizzare reti di natura diversa anche percheacute vi egrave sempre una interazione fra reti con clock diversi eo con segnali provenienti dal mondo esterno NON sincronizzati con il clock
Monoimpulsore di tipo A ldquorivistordquo
54
bull Uno shift register a sinistra (a destra) egrave un registro composto da FFD che ad ogni clock trasferisce il valore del FF a destra (a sinistra) di ciascun FF nel FF stesso Nel FF piugrave a destra (sinistra) viene immesso uno ldquo0rdquo Questi tipi di registri shift si chiamano ldquologicirdquo
Shift register (registri a traslazione o scorrimento)
D0kQ0k
CK DnQn
CK
D0kQ0k
CK Dn-1Qn-1
CK
D0kQ0k
CK Dn-2Qn-2
CK
D0kQ0k
CK D0Q0
CK
ldquo0rdquo
Shift register a sinistra
bull Anche per i registri a traslazione esistono diverse versioni con ingresso parallelo e uscita seriale con ingresso seriale e uscita parallela con reset con load etc etc
bull Si noti che uno shift register egrave anche un contatore Si immagini per esempio che dopo un reset siano inseriti degli uni a partire da destra Lo shift register si riempie progressivamente di uni e quindi la posizione in cui egrave arrivato lrsquouno indica il valore del conteggio in base a un codice ldquouno su nrdquo (un codice decodificato)
bull Spesso uno stesso registro puograve traslare a destra o a sinistra in funzione di una segnale di controllo Ovviamente questo si ottiene premettendo a ogni ingresso Di un MUX a due vie che preleva in funzione del segnale di controllo Qigrave+1 o Qigrave-1 Con questa configurazione lo shift register diventa anche un contatore avantiindietro
Registro a scorrimento (shift-register) a 3 bit
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
IN
OUT2OUT1OUT0
CK
CK
IN
A_RESET
OUT1
OUT2
OUT0
Registro a scorrimento (shift-register) a 3 bit
57
Esempio 74164 (serial In parallel OUT)
bull In questo registro a traslazione ad ogni fronte positivo del clock i dati sono traslati a destra (Q0 -gt Q1 Q1-gtQ2 etc) Il registro egrave dotato in un Master Reset (vero negato) e il dato inserito nel FF Q0 egrave dato dallrsquoAND dei due ingressi Dsa e Dsb
bull Si noti che lrsquooperazione di shift corrisponde aritmeticamente alle operazioni di divisione e moltiplicazione per 2 Si supponga che in Q0 vi sia il bit meno significativo e in Q7 il meno significativo
0 1 1 0 1 0 1 0
010101102 = 10810
Shift left =gt x2
Shift right =gt 2
101011002 = 21610
001010112 = 5910
NB nel dispositivo i bit sono posti in ordine invertito e quindi un shift left del numero corrisponde a uno shift right sul dispositivo
58
bull Esistono anche i registri a traslazione ldquoaritmeticirdquo In questi shift register a destra anzicheacute fare entrare nel FF piugrave a sinistra lo ldquo0rdquo viene immesso sempre ripetutamente il suo valore logico
Shift aritmetico
Q7 Q6 Q5 Q4 Q3 Q2 Q1 Q0
D7 D6 D5 D4 D3 D2 D1 D0
I LDCK Esempio
11001010SRA
11100101 interpretato in complemento a 2
001101102=5410
C2 C2
000110112=2710
bull Lo shift aritmetico a destra effettua una divisione per 2 mantenendo il segno
59
Rotazione
Nei computer egrave sovente necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register
D0kQ0k
CK DnQn
CK
D0kQ0k
CK Dn-1Qn-1
CK
D0kQ0k
CK Dn-2Qn-2
CK
D0kQ0k
CK D0Q0
CK
Molto spesso nei computer egrave necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register con direzione programmabile In questo caso su D0 ad esempio puograve essere avviato o Q1 o Qn
60
Contatori con shift register ndash Contatore retroazionato EX-OR
Q2Q0
Shift right 3 bitDQ1
110 111 011 101 010 001
Diagramma degli stati disgiunto
Uno shift register con n FF retroazionato con un EX-OR (scelta degli ingressi variabile) egrave un contatore NON binario che conta per 2n-1 (purcheacute presettato a un valore diverso da tutti zeri)
000
100
61
Contatore di Johnson (riempimento e svuotamento)
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
000-gt100-gt110-gt111-gt011-gt001-gt000-gtStati isolati 101-gt010-gt101gt1
Poicheacute configurazioni adiacenti del codice Johnson differiscono di un solo bit il contatore puograve essere utilizzato per generare forme drsquoonda prive di alee
62
Contatore ad anello con un solo 1 (ovvero che genera direttamente il codice 1su n)
FFDD Q
QR
RESET
FFDD Q
QR
RESET
FFDD Q
QPR
RESET
OUT3OUT1OUT0
CK
FFDD Q
QR
RESET
OUT2
0001-gt1000-gt0100-gt0010-gt0010n FF per contare per n (mentre con i contatori binari il numero dei FF egrave il log2m ove m egrave il primo intero maggiore o uguale a n)
63
Barrel shifter (rotore)Un barrel shifter egrave uno shift register in grado di traslare di ldquonrdquo posizioni in un solo clock il contenuto dei suoi FF In figura egrave riportato il barrel shifter della Altera Gli ingressi A-H in presenza dellrsquoattivazione del segnale LDST al primo fronte positivo del clock sono depositati nei FF Quando LDST egrave 0 ad ogni fronte positivo del clock i bit di uscita sono ruotati di n posizioni in senso antiorario (ovvero lrsquouscita H diventa la G la G diventa la Fhellipe lrsquouscita A diventa la H) ove n egrave il valore binario indicato dai segnali S0 S1 e S2
Si noti che il circuito in questione egrave di fatto un registro con 8 FF allrsquoingresso di ciascuno dei quali egrave previsto un MUX a 8 vie che pilotato dai segnali S0 S1 e S2 che seleziona uno degli 8 uscite del dispositivo La struttura interna puograve essere osservata ldquoclikkandordquo due volte sul dispositivo nello schema di Altera
64
Barrel shifter
6565
66
Simulazione timing
67
bull Utilizzando il sistema Altera progettare un orologio con secondi minuti ora partendo da un oscillatore a quarzo con frequenza 500 KHz
bull E se si volesse proseguire e realizzare anche un datario (giorno mese e anno )
bull Come potrebbe essere integrato con una sveglia Si ricordi che lrsquoorologio deve essere anche essere ldquopresettatordquo
bull Quali circuiti utilizzare per la visualizzazione
68
EPROM
X0nZ0m
y0kY0k
Clock
D0kQ0k
FFD0k
CK D0kQ0k CK
Reti sincrone con EPROM
Al posto delle EPROM si utilizzano ora dei PLA ovvero dispositivi nei quali si nei quali le funzioni combinatorie sono ottimizzate ma il principio egrave assolutamente il medesimo
69
Progettare con Altera una rete logica sincrona che utilizzando registri 374 ALU 74181 un contatore e altri dispositivi ritenuti necessari permetta di eseguire in sequenza la somma di due dati di 4 bit senza segno ingresso esegua il complemento a 2 inverta la parte bassa con la parte alta del risultato e infine moltiplichi il tutto logicamente per 2
La soluzione egrave sempre decomponibile in tre sottosistemi il controllo con la sua decodifica (unitagrave di controllo) il percorso dei dati con le unitagrave che li trasformano (datapath) e i registri di deposito e di ingresso dei dati
Questa egrave la struttura base di qualunque unitagrave centrale di qualunque computer
La differenza consiste solo nel fatto che anzicheacute avere una sequenza fissa di operazioni ne viene generata una volta a volta che dipende appunto dalla istruzione che deve essere eseguita Come si vedragrave approfonditamente nel corso di Calcolatori T del II anno (prof Neri e Mattoccia)
Arrivederci al corso di Calcolatori T del II anno (sapendo perfettamente le reti logiche helliphellip)
49
Di che circuito si tratta
D0k Q0k
CK D0 Q0
CKQ0
D0k Q0k
CK D1 Q1
CK
D0k Q0k
CK D2 Q2
CKClock
Clock
Q0
Q1
Q2
Ersquo un contatore binario ma non sincrono Infatti i vari FF NON utilizzano lo stesso clock e questo porta a un piccolo disallineamento sulle uscite Non egrave sintetizzabile come una rete sincrona e una sintesi formale sarebbe possibile solo trattando il circuito come asincrono ovvero ldquoaprendordquo i FF Sarebbe possibile trasformarlo in un contatore x6 mantenendo la stessa impostazione
Sintetizzare e simulare con Altera
NB il segnale di clock non egrave in comune
50
7493
51
Altera Contatore asincrono
Contatore asincrono
52
Simulazione timing
53
Come puograve essere utilizzato un FFD per catturare un impulso piugrave breve di un periodo
D2 Q2
Q2CKFFD Z
Clock
D1 Q1
Q1CKFFD
D0 Q00
Q0CKFFD
ldquo1rdquo CL
Lrsquoimpulso breve viene catturato dal FF 0 (purcheacute di larghezza sufficiente per la tecnologia del FF) - che quindi agisce come integratore ndash la cui uscita alimenta il monoimpulsore di tipo A Lrsquoattivazione del FF 1 resetta il FF 0 (supponendo che il segnale di CL sia ldquopositiverdquotruerdquo)
Ci puograve essere un problema se il CL agisce in modo asincrono
NB questo circuito e quello del lucido precedente evidenziano il fatto che nella realtagrave nessuna rete egrave solo sincrona ma bensigrave egrave pressocheacute sempre necessario utilizzare reti di natura diversa anche percheacute vi egrave sempre una interazione fra reti con clock diversi eo con segnali provenienti dal mondo esterno NON sincronizzati con il clock
Monoimpulsore di tipo A ldquorivistordquo
54
bull Uno shift register a sinistra (a destra) egrave un registro composto da FFD che ad ogni clock trasferisce il valore del FF a destra (a sinistra) di ciascun FF nel FF stesso Nel FF piugrave a destra (sinistra) viene immesso uno ldquo0rdquo Questi tipi di registri shift si chiamano ldquologicirdquo
Shift register (registri a traslazione o scorrimento)
D0kQ0k
CK DnQn
CK
D0kQ0k
CK Dn-1Qn-1
CK
D0kQ0k
CK Dn-2Qn-2
CK
D0kQ0k
CK D0Q0
CK
ldquo0rdquo
Shift register a sinistra
bull Anche per i registri a traslazione esistono diverse versioni con ingresso parallelo e uscita seriale con ingresso seriale e uscita parallela con reset con load etc etc
bull Si noti che uno shift register egrave anche un contatore Si immagini per esempio che dopo un reset siano inseriti degli uni a partire da destra Lo shift register si riempie progressivamente di uni e quindi la posizione in cui egrave arrivato lrsquouno indica il valore del conteggio in base a un codice ldquouno su nrdquo (un codice decodificato)
bull Spesso uno stesso registro puograve traslare a destra o a sinistra in funzione di una segnale di controllo Ovviamente questo si ottiene premettendo a ogni ingresso Di un MUX a due vie che preleva in funzione del segnale di controllo Qigrave+1 o Qigrave-1 Con questa configurazione lo shift register diventa anche un contatore avantiindietro
Registro a scorrimento (shift-register) a 3 bit
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
IN
OUT2OUT1OUT0
CK
CK
IN
A_RESET
OUT1
OUT2
OUT0
Registro a scorrimento (shift-register) a 3 bit
57
Esempio 74164 (serial In parallel OUT)
bull In questo registro a traslazione ad ogni fronte positivo del clock i dati sono traslati a destra (Q0 -gt Q1 Q1-gtQ2 etc) Il registro egrave dotato in un Master Reset (vero negato) e il dato inserito nel FF Q0 egrave dato dallrsquoAND dei due ingressi Dsa e Dsb
bull Si noti che lrsquooperazione di shift corrisponde aritmeticamente alle operazioni di divisione e moltiplicazione per 2 Si supponga che in Q0 vi sia il bit meno significativo e in Q7 il meno significativo
0 1 1 0 1 0 1 0
010101102 = 10810
Shift left =gt x2
Shift right =gt 2
101011002 = 21610
001010112 = 5910
NB nel dispositivo i bit sono posti in ordine invertito e quindi un shift left del numero corrisponde a uno shift right sul dispositivo
58
bull Esistono anche i registri a traslazione ldquoaritmeticirdquo In questi shift register a destra anzicheacute fare entrare nel FF piugrave a sinistra lo ldquo0rdquo viene immesso sempre ripetutamente il suo valore logico
Shift aritmetico
Q7 Q6 Q5 Q4 Q3 Q2 Q1 Q0
D7 D6 D5 D4 D3 D2 D1 D0
I LDCK Esempio
11001010SRA
11100101 interpretato in complemento a 2
001101102=5410
C2 C2
000110112=2710
bull Lo shift aritmetico a destra effettua una divisione per 2 mantenendo il segno
59
Rotazione
Nei computer egrave sovente necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register
D0kQ0k
CK DnQn
CK
D0kQ0k
CK Dn-1Qn-1
CK
D0kQ0k
CK Dn-2Qn-2
CK
D0kQ0k
CK D0Q0
CK
Molto spesso nei computer egrave necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register con direzione programmabile In questo caso su D0 ad esempio puograve essere avviato o Q1 o Qn
60
Contatori con shift register ndash Contatore retroazionato EX-OR
Q2Q0
Shift right 3 bitDQ1
110 111 011 101 010 001
Diagramma degli stati disgiunto
Uno shift register con n FF retroazionato con un EX-OR (scelta degli ingressi variabile) egrave un contatore NON binario che conta per 2n-1 (purcheacute presettato a un valore diverso da tutti zeri)
000
100
61
Contatore di Johnson (riempimento e svuotamento)
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
000-gt100-gt110-gt111-gt011-gt001-gt000-gtStati isolati 101-gt010-gt101gt1
Poicheacute configurazioni adiacenti del codice Johnson differiscono di un solo bit il contatore puograve essere utilizzato per generare forme drsquoonda prive di alee
62
Contatore ad anello con un solo 1 (ovvero che genera direttamente il codice 1su n)
FFDD Q
QR
RESET
FFDD Q
QR
RESET
FFDD Q
QPR
RESET
OUT3OUT1OUT0
CK
FFDD Q
QR
RESET
OUT2
0001-gt1000-gt0100-gt0010-gt0010n FF per contare per n (mentre con i contatori binari il numero dei FF egrave il log2m ove m egrave il primo intero maggiore o uguale a n)
63
Barrel shifter (rotore)Un barrel shifter egrave uno shift register in grado di traslare di ldquonrdquo posizioni in un solo clock il contenuto dei suoi FF In figura egrave riportato il barrel shifter della Altera Gli ingressi A-H in presenza dellrsquoattivazione del segnale LDST al primo fronte positivo del clock sono depositati nei FF Quando LDST egrave 0 ad ogni fronte positivo del clock i bit di uscita sono ruotati di n posizioni in senso antiorario (ovvero lrsquouscita H diventa la G la G diventa la Fhellipe lrsquouscita A diventa la H) ove n egrave il valore binario indicato dai segnali S0 S1 e S2
Si noti che il circuito in questione egrave di fatto un registro con 8 FF allrsquoingresso di ciascuno dei quali egrave previsto un MUX a 8 vie che pilotato dai segnali S0 S1 e S2 che seleziona uno degli 8 uscite del dispositivo La struttura interna puograve essere osservata ldquoclikkandordquo due volte sul dispositivo nello schema di Altera
64
Barrel shifter
6565
66
Simulazione timing
67
bull Utilizzando il sistema Altera progettare un orologio con secondi minuti ora partendo da un oscillatore a quarzo con frequenza 500 KHz
bull E se si volesse proseguire e realizzare anche un datario (giorno mese e anno )
bull Come potrebbe essere integrato con una sveglia Si ricordi che lrsquoorologio deve essere anche essere ldquopresettatordquo
bull Quali circuiti utilizzare per la visualizzazione
68
EPROM
X0nZ0m
y0kY0k
Clock
D0kQ0k
FFD0k
CK D0kQ0k CK
Reti sincrone con EPROM
Al posto delle EPROM si utilizzano ora dei PLA ovvero dispositivi nei quali si nei quali le funzioni combinatorie sono ottimizzate ma il principio egrave assolutamente il medesimo
69
Progettare con Altera una rete logica sincrona che utilizzando registri 374 ALU 74181 un contatore e altri dispositivi ritenuti necessari permetta di eseguire in sequenza la somma di due dati di 4 bit senza segno ingresso esegua il complemento a 2 inverta la parte bassa con la parte alta del risultato e infine moltiplichi il tutto logicamente per 2
La soluzione egrave sempre decomponibile in tre sottosistemi il controllo con la sua decodifica (unitagrave di controllo) il percorso dei dati con le unitagrave che li trasformano (datapath) e i registri di deposito e di ingresso dei dati
Questa egrave la struttura base di qualunque unitagrave centrale di qualunque computer
La differenza consiste solo nel fatto che anzicheacute avere una sequenza fissa di operazioni ne viene generata una volta a volta che dipende appunto dalla istruzione che deve essere eseguita Come si vedragrave approfonditamente nel corso di Calcolatori T del II anno (prof Neri e Mattoccia)
Arrivederci al corso di Calcolatori T del II anno (sapendo perfettamente le reti logiche helliphellip)
50
7493
51
Altera Contatore asincrono
Contatore asincrono
52
Simulazione timing
53
Come puograve essere utilizzato un FFD per catturare un impulso piugrave breve di un periodo
D2 Q2
Q2CKFFD Z
Clock
D1 Q1
Q1CKFFD
D0 Q00
Q0CKFFD
ldquo1rdquo CL
Lrsquoimpulso breve viene catturato dal FF 0 (purcheacute di larghezza sufficiente per la tecnologia del FF) - che quindi agisce come integratore ndash la cui uscita alimenta il monoimpulsore di tipo A Lrsquoattivazione del FF 1 resetta il FF 0 (supponendo che il segnale di CL sia ldquopositiverdquotruerdquo)
Ci puograve essere un problema se il CL agisce in modo asincrono
NB questo circuito e quello del lucido precedente evidenziano il fatto che nella realtagrave nessuna rete egrave solo sincrona ma bensigrave egrave pressocheacute sempre necessario utilizzare reti di natura diversa anche percheacute vi egrave sempre una interazione fra reti con clock diversi eo con segnali provenienti dal mondo esterno NON sincronizzati con il clock
Monoimpulsore di tipo A ldquorivistordquo
54
bull Uno shift register a sinistra (a destra) egrave un registro composto da FFD che ad ogni clock trasferisce il valore del FF a destra (a sinistra) di ciascun FF nel FF stesso Nel FF piugrave a destra (sinistra) viene immesso uno ldquo0rdquo Questi tipi di registri shift si chiamano ldquologicirdquo
Shift register (registri a traslazione o scorrimento)
D0kQ0k
CK DnQn
CK
D0kQ0k
CK Dn-1Qn-1
CK
D0kQ0k
CK Dn-2Qn-2
CK
D0kQ0k
CK D0Q0
CK
ldquo0rdquo
Shift register a sinistra
bull Anche per i registri a traslazione esistono diverse versioni con ingresso parallelo e uscita seriale con ingresso seriale e uscita parallela con reset con load etc etc
bull Si noti che uno shift register egrave anche un contatore Si immagini per esempio che dopo un reset siano inseriti degli uni a partire da destra Lo shift register si riempie progressivamente di uni e quindi la posizione in cui egrave arrivato lrsquouno indica il valore del conteggio in base a un codice ldquouno su nrdquo (un codice decodificato)
bull Spesso uno stesso registro puograve traslare a destra o a sinistra in funzione di una segnale di controllo Ovviamente questo si ottiene premettendo a ogni ingresso Di un MUX a due vie che preleva in funzione del segnale di controllo Qigrave+1 o Qigrave-1 Con questa configurazione lo shift register diventa anche un contatore avantiindietro
Registro a scorrimento (shift-register) a 3 bit
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
IN
OUT2OUT1OUT0
CK
CK
IN
A_RESET
OUT1
OUT2
OUT0
Registro a scorrimento (shift-register) a 3 bit
57
Esempio 74164 (serial In parallel OUT)
bull In questo registro a traslazione ad ogni fronte positivo del clock i dati sono traslati a destra (Q0 -gt Q1 Q1-gtQ2 etc) Il registro egrave dotato in un Master Reset (vero negato) e il dato inserito nel FF Q0 egrave dato dallrsquoAND dei due ingressi Dsa e Dsb
bull Si noti che lrsquooperazione di shift corrisponde aritmeticamente alle operazioni di divisione e moltiplicazione per 2 Si supponga che in Q0 vi sia il bit meno significativo e in Q7 il meno significativo
0 1 1 0 1 0 1 0
010101102 = 10810
Shift left =gt x2
Shift right =gt 2
101011002 = 21610
001010112 = 5910
NB nel dispositivo i bit sono posti in ordine invertito e quindi un shift left del numero corrisponde a uno shift right sul dispositivo
58
bull Esistono anche i registri a traslazione ldquoaritmeticirdquo In questi shift register a destra anzicheacute fare entrare nel FF piugrave a sinistra lo ldquo0rdquo viene immesso sempre ripetutamente il suo valore logico
Shift aritmetico
Q7 Q6 Q5 Q4 Q3 Q2 Q1 Q0
D7 D6 D5 D4 D3 D2 D1 D0
I LDCK Esempio
11001010SRA
11100101 interpretato in complemento a 2
001101102=5410
C2 C2
000110112=2710
bull Lo shift aritmetico a destra effettua una divisione per 2 mantenendo il segno
59
Rotazione
Nei computer egrave sovente necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register
D0kQ0k
CK DnQn
CK
D0kQ0k
CK Dn-1Qn-1
CK
D0kQ0k
CK Dn-2Qn-2
CK
D0kQ0k
CK D0Q0
CK
Molto spesso nei computer egrave necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register con direzione programmabile In questo caso su D0 ad esempio puograve essere avviato o Q1 o Qn
60
Contatori con shift register ndash Contatore retroazionato EX-OR
Q2Q0
Shift right 3 bitDQ1
110 111 011 101 010 001
Diagramma degli stati disgiunto
Uno shift register con n FF retroazionato con un EX-OR (scelta degli ingressi variabile) egrave un contatore NON binario che conta per 2n-1 (purcheacute presettato a un valore diverso da tutti zeri)
000
100
61
Contatore di Johnson (riempimento e svuotamento)
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
000-gt100-gt110-gt111-gt011-gt001-gt000-gtStati isolati 101-gt010-gt101gt1
Poicheacute configurazioni adiacenti del codice Johnson differiscono di un solo bit il contatore puograve essere utilizzato per generare forme drsquoonda prive di alee
62
Contatore ad anello con un solo 1 (ovvero che genera direttamente il codice 1su n)
FFDD Q
QR
RESET
FFDD Q
QR
RESET
FFDD Q
QPR
RESET
OUT3OUT1OUT0
CK
FFDD Q
QR
RESET
OUT2
0001-gt1000-gt0100-gt0010-gt0010n FF per contare per n (mentre con i contatori binari il numero dei FF egrave il log2m ove m egrave il primo intero maggiore o uguale a n)
63
Barrel shifter (rotore)Un barrel shifter egrave uno shift register in grado di traslare di ldquonrdquo posizioni in un solo clock il contenuto dei suoi FF In figura egrave riportato il barrel shifter della Altera Gli ingressi A-H in presenza dellrsquoattivazione del segnale LDST al primo fronte positivo del clock sono depositati nei FF Quando LDST egrave 0 ad ogni fronte positivo del clock i bit di uscita sono ruotati di n posizioni in senso antiorario (ovvero lrsquouscita H diventa la G la G diventa la Fhellipe lrsquouscita A diventa la H) ove n egrave il valore binario indicato dai segnali S0 S1 e S2
Si noti che il circuito in questione egrave di fatto un registro con 8 FF allrsquoingresso di ciascuno dei quali egrave previsto un MUX a 8 vie che pilotato dai segnali S0 S1 e S2 che seleziona uno degli 8 uscite del dispositivo La struttura interna puograve essere osservata ldquoclikkandordquo due volte sul dispositivo nello schema di Altera
64
Barrel shifter
6565
66
Simulazione timing
67
bull Utilizzando il sistema Altera progettare un orologio con secondi minuti ora partendo da un oscillatore a quarzo con frequenza 500 KHz
bull E se si volesse proseguire e realizzare anche un datario (giorno mese e anno )
bull Come potrebbe essere integrato con una sveglia Si ricordi che lrsquoorologio deve essere anche essere ldquopresettatordquo
bull Quali circuiti utilizzare per la visualizzazione
68
EPROM
X0nZ0m
y0kY0k
Clock
D0kQ0k
FFD0k
CK D0kQ0k CK
Reti sincrone con EPROM
Al posto delle EPROM si utilizzano ora dei PLA ovvero dispositivi nei quali si nei quali le funzioni combinatorie sono ottimizzate ma il principio egrave assolutamente il medesimo
69
Progettare con Altera una rete logica sincrona che utilizzando registri 374 ALU 74181 un contatore e altri dispositivi ritenuti necessari permetta di eseguire in sequenza la somma di due dati di 4 bit senza segno ingresso esegua il complemento a 2 inverta la parte bassa con la parte alta del risultato e infine moltiplichi il tutto logicamente per 2
La soluzione egrave sempre decomponibile in tre sottosistemi il controllo con la sua decodifica (unitagrave di controllo) il percorso dei dati con le unitagrave che li trasformano (datapath) e i registri di deposito e di ingresso dei dati
Questa egrave la struttura base di qualunque unitagrave centrale di qualunque computer
La differenza consiste solo nel fatto che anzicheacute avere una sequenza fissa di operazioni ne viene generata una volta a volta che dipende appunto dalla istruzione che deve essere eseguita Come si vedragrave approfonditamente nel corso di Calcolatori T del II anno (prof Neri e Mattoccia)
Arrivederci al corso di Calcolatori T del II anno (sapendo perfettamente le reti logiche helliphellip)
51
Altera Contatore asincrono
Contatore asincrono
52
Simulazione timing
53
Come puograve essere utilizzato un FFD per catturare un impulso piugrave breve di un periodo
D2 Q2
Q2CKFFD Z
Clock
D1 Q1
Q1CKFFD
D0 Q00
Q0CKFFD
ldquo1rdquo CL
Lrsquoimpulso breve viene catturato dal FF 0 (purcheacute di larghezza sufficiente per la tecnologia del FF) - che quindi agisce come integratore ndash la cui uscita alimenta il monoimpulsore di tipo A Lrsquoattivazione del FF 1 resetta il FF 0 (supponendo che il segnale di CL sia ldquopositiverdquotruerdquo)
Ci puograve essere un problema se il CL agisce in modo asincrono
NB questo circuito e quello del lucido precedente evidenziano il fatto che nella realtagrave nessuna rete egrave solo sincrona ma bensigrave egrave pressocheacute sempre necessario utilizzare reti di natura diversa anche percheacute vi egrave sempre una interazione fra reti con clock diversi eo con segnali provenienti dal mondo esterno NON sincronizzati con il clock
Monoimpulsore di tipo A ldquorivistordquo
54
bull Uno shift register a sinistra (a destra) egrave un registro composto da FFD che ad ogni clock trasferisce il valore del FF a destra (a sinistra) di ciascun FF nel FF stesso Nel FF piugrave a destra (sinistra) viene immesso uno ldquo0rdquo Questi tipi di registri shift si chiamano ldquologicirdquo
Shift register (registri a traslazione o scorrimento)
D0kQ0k
CK DnQn
CK
D0kQ0k
CK Dn-1Qn-1
CK
D0kQ0k
CK Dn-2Qn-2
CK
D0kQ0k
CK D0Q0
CK
ldquo0rdquo
Shift register a sinistra
bull Anche per i registri a traslazione esistono diverse versioni con ingresso parallelo e uscita seriale con ingresso seriale e uscita parallela con reset con load etc etc
bull Si noti che uno shift register egrave anche un contatore Si immagini per esempio che dopo un reset siano inseriti degli uni a partire da destra Lo shift register si riempie progressivamente di uni e quindi la posizione in cui egrave arrivato lrsquouno indica il valore del conteggio in base a un codice ldquouno su nrdquo (un codice decodificato)
bull Spesso uno stesso registro puograve traslare a destra o a sinistra in funzione di una segnale di controllo Ovviamente questo si ottiene premettendo a ogni ingresso Di un MUX a due vie che preleva in funzione del segnale di controllo Qigrave+1 o Qigrave-1 Con questa configurazione lo shift register diventa anche un contatore avantiindietro
Registro a scorrimento (shift-register) a 3 bit
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
IN
OUT2OUT1OUT0
CK
CK
IN
A_RESET
OUT1
OUT2
OUT0
Registro a scorrimento (shift-register) a 3 bit
57
Esempio 74164 (serial In parallel OUT)
bull In questo registro a traslazione ad ogni fronte positivo del clock i dati sono traslati a destra (Q0 -gt Q1 Q1-gtQ2 etc) Il registro egrave dotato in un Master Reset (vero negato) e il dato inserito nel FF Q0 egrave dato dallrsquoAND dei due ingressi Dsa e Dsb
bull Si noti che lrsquooperazione di shift corrisponde aritmeticamente alle operazioni di divisione e moltiplicazione per 2 Si supponga che in Q0 vi sia il bit meno significativo e in Q7 il meno significativo
0 1 1 0 1 0 1 0
010101102 = 10810
Shift left =gt x2
Shift right =gt 2
101011002 = 21610
001010112 = 5910
NB nel dispositivo i bit sono posti in ordine invertito e quindi un shift left del numero corrisponde a uno shift right sul dispositivo
58
bull Esistono anche i registri a traslazione ldquoaritmeticirdquo In questi shift register a destra anzicheacute fare entrare nel FF piugrave a sinistra lo ldquo0rdquo viene immesso sempre ripetutamente il suo valore logico
Shift aritmetico
Q7 Q6 Q5 Q4 Q3 Q2 Q1 Q0
D7 D6 D5 D4 D3 D2 D1 D0
I LDCK Esempio
11001010SRA
11100101 interpretato in complemento a 2
001101102=5410
C2 C2
000110112=2710
bull Lo shift aritmetico a destra effettua una divisione per 2 mantenendo il segno
59
Rotazione
Nei computer egrave sovente necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register
D0kQ0k
CK DnQn
CK
D0kQ0k
CK Dn-1Qn-1
CK
D0kQ0k
CK Dn-2Qn-2
CK
D0kQ0k
CK D0Q0
CK
Molto spesso nei computer egrave necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register con direzione programmabile In questo caso su D0 ad esempio puograve essere avviato o Q1 o Qn
60
Contatori con shift register ndash Contatore retroazionato EX-OR
Q2Q0
Shift right 3 bitDQ1
110 111 011 101 010 001
Diagramma degli stati disgiunto
Uno shift register con n FF retroazionato con un EX-OR (scelta degli ingressi variabile) egrave un contatore NON binario che conta per 2n-1 (purcheacute presettato a un valore diverso da tutti zeri)
000
100
61
Contatore di Johnson (riempimento e svuotamento)
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
000-gt100-gt110-gt111-gt011-gt001-gt000-gtStati isolati 101-gt010-gt101gt1
Poicheacute configurazioni adiacenti del codice Johnson differiscono di un solo bit il contatore puograve essere utilizzato per generare forme drsquoonda prive di alee
62
Contatore ad anello con un solo 1 (ovvero che genera direttamente il codice 1su n)
FFDD Q
QR
RESET
FFDD Q
QR
RESET
FFDD Q
QPR
RESET
OUT3OUT1OUT0
CK
FFDD Q
QR
RESET
OUT2
0001-gt1000-gt0100-gt0010-gt0010n FF per contare per n (mentre con i contatori binari il numero dei FF egrave il log2m ove m egrave il primo intero maggiore o uguale a n)
63
Barrel shifter (rotore)Un barrel shifter egrave uno shift register in grado di traslare di ldquonrdquo posizioni in un solo clock il contenuto dei suoi FF In figura egrave riportato il barrel shifter della Altera Gli ingressi A-H in presenza dellrsquoattivazione del segnale LDST al primo fronte positivo del clock sono depositati nei FF Quando LDST egrave 0 ad ogni fronte positivo del clock i bit di uscita sono ruotati di n posizioni in senso antiorario (ovvero lrsquouscita H diventa la G la G diventa la Fhellipe lrsquouscita A diventa la H) ove n egrave il valore binario indicato dai segnali S0 S1 e S2
Si noti che il circuito in questione egrave di fatto un registro con 8 FF allrsquoingresso di ciascuno dei quali egrave previsto un MUX a 8 vie che pilotato dai segnali S0 S1 e S2 che seleziona uno degli 8 uscite del dispositivo La struttura interna puograve essere osservata ldquoclikkandordquo due volte sul dispositivo nello schema di Altera
64
Barrel shifter
6565
66
Simulazione timing
67
bull Utilizzando il sistema Altera progettare un orologio con secondi minuti ora partendo da un oscillatore a quarzo con frequenza 500 KHz
bull E se si volesse proseguire e realizzare anche un datario (giorno mese e anno )
bull Come potrebbe essere integrato con una sveglia Si ricordi che lrsquoorologio deve essere anche essere ldquopresettatordquo
bull Quali circuiti utilizzare per la visualizzazione
68
EPROM
X0nZ0m
y0kY0k
Clock
D0kQ0k
FFD0k
CK D0kQ0k CK
Reti sincrone con EPROM
Al posto delle EPROM si utilizzano ora dei PLA ovvero dispositivi nei quali si nei quali le funzioni combinatorie sono ottimizzate ma il principio egrave assolutamente il medesimo
69
Progettare con Altera una rete logica sincrona che utilizzando registri 374 ALU 74181 un contatore e altri dispositivi ritenuti necessari permetta di eseguire in sequenza la somma di due dati di 4 bit senza segno ingresso esegua il complemento a 2 inverta la parte bassa con la parte alta del risultato e infine moltiplichi il tutto logicamente per 2
La soluzione egrave sempre decomponibile in tre sottosistemi il controllo con la sua decodifica (unitagrave di controllo) il percorso dei dati con le unitagrave che li trasformano (datapath) e i registri di deposito e di ingresso dei dati
Questa egrave la struttura base di qualunque unitagrave centrale di qualunque computer
La differenza consiste solo nel fatto che anzicheacute avere una sequenza fissa di operazioni ne viene generata una volta a volta che dipende appunto dalla istruzione che deve essere eseguita Come si vedragrave approfonditamente nel corso di Calcolatori T del II anno (prof Neri e Mattoccia)
Arrivederci al corso di Calcolatori T del II anno (sapendo perfettamente le reti logiche helliphellip)
52
Simulazione timing
53
Come puograve essere utilizzato un FFD per catturare un impulso piugrave breve di un periodo
D2 Q2
Q2CKFFD Z
Clock
D1 Q1
Q1CKFFD
D0 Q00
Q0CKFFD
ldquo1rdquo CL
Lrsquoimpulso breve viene catturato dal FF 0 (purcheacute di larghezza sufficiente per la tecnologia del FF) - che quindi agisce come integratore ndash la cui uscita alimenta il monoimpulsore di tipo A Lrsquoattivazione del FF 1 resetta il FF 0 (supponendo che il segnale di CL sia ldquopositiverdquotruerdquo)
Ci puograve essere un problema se il CL agisce in modo asincrono
NB questo circuito e quello del lucido precedente evidenziano il fatto che nella realtagrave nessuna rete egrave solo sincrona ma bensigrave egrave pressocheacute sempre necessario utilizzare reti di natura diversa anche percheacute vi egrave sempre una interazione fra reti con clock diversi eo con segnali provenienti dal mondo esterno NON sincronizzati con il clock
Monoimpulsore di tipo A ldquorivistordquo
54
bull Uno shift register a sinistra (a destra) egrave un registro composto da FFD che ad ogni clock trasferisce il valore del FF a destra (a sinistra) di ciascun FF nel FF stesso Nel FF piugrave a destra (sinistra) viene immesso uno ldquo0rdquo Questi tipi di registri shift si chiamano ldquologicirdquo
Shift register (registri a traslazione o scorrimento)
D0kQ0k
CK DnQn
CK
D0kQ0k
CK Dn-1Qn-1
CK
D0kQ0k
CK Dn-2Qn-2
CK
D0kQ0k
CK D0Q0
CK
ldquo0rdquo
Shift register a sinistra
bull Anche per i registri a traslazione esistono diverse versioni con ingresso parallelo e uscita seriale con ingresso seriale e uscita parallela con reset con load etc etc
bull Si noti che uno shift register egrave anche un contatore Si immagini per esempio che dopo un reset siano inseriti degli uni a partire da destra Lo shift register si riempie progressivamente di uni e quindi la posizione in cui egrave arrivato lrsquouno indica il valore del conteggio in base a un codice ldquouno su nrdquo (un codice decodificato)
bull Spesso uno stesso registro puograve traslare a destra o a sinistra in funzione di una segnale di controllo Ovviamente questo si ottiene premettendo a ogni ingresso Di un MUX a due vie che preleva in funzione del segnale di controllo Qigrave+1 o Qigrave-1 Con questa configurazione lo shift register diventa anche un contatore avantiindietro
Registro a scorrimento (shift-register) a 3 bit
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
IN
OUT2OUT1OUT0
CK
CK
IN
A_RESET
OUT1
OUT2
OUT0
Registro a scorrimento (shift-register) a 3 bit
57
Esempio 74164 (serial In parallel OUT)
bull In questo registro a traslazione ad ogni fronte positivo del clock i dati sono traslati a destra (Q0 -gt Q1 Q1-gtQ2 etc) Il registro egrave dotato in un Master Reset (vero negato) e il dato inserito nel FF Q0 egrave dato dallrsquoAND dei due ingressi Dsa e Dsb
bull Si noti che lrsquooperazione di shift corrisponde aritmeticamente alle operazioni di divisione e moltiplicazione per 2 Si supponga che in Q0 vi sia il bit meno significativo e in Q7 il meno significativo
0 1 1 0 1 0 1 0
010101102 = 10810
Shift left =gt x2
Shift right =gt 2
101011002 = 21610
001010112 = 5910
NB nel dispositivo i bit sono posti in ordine invertito e quindi un shift left del numero corrisponde a uno shift right sul dispositivo
58
bull Esistono anche i registri a traslazione ldquoaritmeticirdquo In questi shift register a destra anzicheacute fare entrare nel FF piugrave a sinistra lo ldquo0rdquo viene immesso sempre ripetutamente il suo valore logico
Shift aritmetico
Q7 Q6 Q5 Q4 Q3 Q2 Q1 Q0
D7 D6 D5 D4 D3 D2 D1 D0
I LDCK Esempio
11001010SRA
11100101 interpretato in complemento a 2
001101102=5410
C2 C2
000110112=2710
bull Lo shift aritmetico a destra effettua una divisione per 2 mantenendo il segno
59
Rotazione
Nei computer egrave sovente necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register
D0kQ0k
CK DnQn
CK
D0kQ0k
CK Dn-1Qn-1
CK
D0kQ0k
CK Dn-2Qn-2
CK
D0kQ0k
CK D0Q0
CK
Molto spesso nei computer egrave necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register con direzione programmabile In questo caso su D0 ad esempio puograve essere avviato o Q1 o Qn
60
Contatori con shift register ndash Contatore retroazionato EX-OR
Q2Q0
Shift right 3 bitDQ1
110 111 011 101 010 001
Diagramma degli stati disgiunto
Uno shift register con n FF retroazionato con un EX-OR (scelta degli ingressi variabile) egrave un contatore NON binario che conta per 2n-1 (purcheacute presettato a un valore diverso da tutti zeri)
000
100
61
Contatore di Johnson (riempimento e svuotamento)
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
000-gt100-gt110-gt111-gt011-gt001-gt000-gtStati isolati 101-gt010-gt101gt1
Poicheacute configurazioni adiacenti del codice Johnson differiscono di un solo bit il contatore puograve essere utilizzato per generare forme drsquoonda prive di alee
62
Contatore ad anello con un solo 1 (ovvero che genera direttamente il codice 1su n)
FFDD Q
QR
RESET
FFDD Q
QR
RESET
FFDD Q
QPR
RESET
OUT3OUT1OUT0
CK
FFDD Q
QR
RESET
OUT2
0001-gt1000-gt0100-gt0010-gt0010n FF per contare per n (mentre con i contatori binari il numero dei FF egrave il log2m ove m egrave il primo intero maggiore o uguale a n)
63
Barrel shifter (rotore)Un barrel shifter egrave uno shift register in grado di traslare di ldquonrdquo posizioni in un solo clock il contenuto dei suoi FF In figura egrave riportato il barrel shifter della Altera Gli ingressi A-H in presenza dellrsquoattivazione del segnale LDST al primo fronte positivo del clock sono depositati nei FF Quando LDST egrave 0 ad ogni fronte positivo del clock i bit di uscita sono ruotati di n posizioni in senso antiorario (ovvero lrsquouscita H diventa la G la G diventa la Fhellipe lrsquouscita A diventa la H) ove n egrave il valore binario indicato dai segnali S0 S1 e S2
Si noti che il circuito in questione egrave di fatto un registro con 8 FF allrsquoingresso di ciascuno dei quali egrave previsto un MUX a 8 vie che pilotato dai segnali S0 S1 e S2 che seleziona uno degli 8 uscite del dispositivo La struttura interna puograve essere osservata ldquoclikkandordquo due volte sul dispositivo nello schema di Altera
64
Barrel shifter
6565
66
Simulazione timing
67
bull Utilizzando il sistema Altera progettare un orologio con secondi minuti ora partendo da un oscillatore a quarzo con frequenza 500 KHz
bull E se si volesse proseguire e realizzare anche un datario (giorno mese e anno )
bull Come potrebbe essere integrato con una sveglia Si ricordi che lrsquoorologio deve essere anche essere ldquopresettatordquo
bull Quali circuiti utilizzare per la visualizzazione
68
EPROM
X0nZ0m
y0kY0k
Clock
D0kQ0k
FFD0k
CK D0kQ0k CK
Reti sincrone con EPROM
Al posto delle EPROM si utilizzano ora dei PLA ovvero dispositivi nei quali si nei quali le funzioni combinatorie sono ottimizzate ma il principio egrave assolutamente il medesimo
69
Progettare con Altera una rete logica sincrona che utilizzando registri 374 ALU 74181 un contatore e altri dispositivi ritenuti necessari permetta di eseguire in sequenza la somma di due dati di 4 bit senza segno ingresso esegua il complemento a 2 inverta la parte bassa con la parte alta del risultato e infine moltiplichi il tutto logicamente per 2
La soluzione egrave sempre decomponibile in tre sottosistemi il controllo con la sua decodifica (unitagrave di controllo) il percorso dei dati con le unitagrave che li trasformano (datapath) e i registri di deposito e di ingresso dei dati
Questa egrave la struttura base di qualunque unitagrave centrale di qualunque computer
La differenza consiste solo nel fatto che anzicheacute avere una sequenza fissa di operazioni ne viene generata una volta a volta che dipende appunto dalla istruzione che deve essere eseguita Come si vedragrave approfonditamente nel corso di Calcolatori T del II anno (prof Neri e Mattoccia)
Arrivederci al corso di Calcolatori T del II anno (sapendo perfettamente le reti logiche helliphellip)
53
Come puograve essere utilizzato un FFD per catturare un impulso piugrave breve di un periodo
D2 Q2
Q2CKFFD Z
Clock
D1 Q1
Q1CKFFD
D0 Q00
Q0CKFFD
ldquo1rdquo CL
Lrsquoimpulso breve viene catturato dal FF 0 (purcheacute di larghezza sufficiente per la tecnologia del FF) - che quindi agisce come integratore ndash la cui uscita alimenta il monoimpulsore di tipo A Lrsquoattivazione del FF 1 resetta il FF 0 (supponendo che il segnale di CL sia ldquopositiverdquotruerdquo)
Ci puograve essere un problema se il CL agisce in modo asincrono
NB questo circuito e quello del lucido precedente evidenziano il fatto che nella realtagrave nessuna rete egrave solo sincrona ma bensigrave egrave pressocheacute sempre necessario utilizzare reti di natura diversa anche percheacute vi egrave sempre una interazione fra reti con clock diversi eo con segnali provenienti dal mondo esterno NON sincronizzati con il clock
Monoimpulsore di tipo A ldquorivistordquo
54
bull Uno shift register a sinistra (a destra) egrave un registro composto da FFD che ad ogni clock trasferisce il valore del FF a destra (a sinistra) di ciascun FF nel FF stesso Nel FF piugrave a destra (sinistra) viene immesso uno ldquo0rdquo Questi tipi di registri shift si chiamano ldquologicirdquo
Shift register (registri a traslazione o scorrimento)
D0kQ0k
CK DnQn
CK
D0kQ0k
CK Dn-1Qn-1
CK
D0kQ0k
CK Dn-2Qn-2
CK
D0kQ0k
CK D0Q0
CK
ldquo0rdquo
Shift register a sinistra
bull Anche per i registri a traslazione esistono diverse versioni con ingresso parallelo e uscita seriale con ingresso seriale e uscita parallela con reset con load etc etc
bull Si noti che uno shift register egrave anche un contatore Si immagini per esempio che dopo un reset siano inseriti degli uni a partire da destra Lo shift register si riempie progressivamente di uni e quindi la posizione in cui egrave arrivato lrsquouno indica il valore del conteggio in base a un codice ldquouno su nrdquo (un codice decodificato)
bull Spesso uno stesso registro puograve traslare a destra o a sinistra in funzione di una segnale di controllo Ovviamente questo si ottiene premettendo a ogni ingresso Di un MUX a due vie che preleva in funzione del segnale di controllo Qigrave+1 o Qigrave-1 Con questa configurazione lo shift register diventa anche un contatore avantiindietro
Registro a scorrimento (shift-register) a 3 bit
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
IN
OUT2OUT1OUT0
CK
CK
IN
A_RESET
OUT1
OUT2
OUT0
Registro a scorrimento (shift-register) a 3 bit
57
Esempio 74164 (serial In parallel OUT)
bull In questo registro a traslazione ad ogni fronte positivo del clock i dati sono traslati a destra (Q0 -gt Q1 Q1-gtQ2 etc) Il registro egrave dotato in un Master Reset (vero negato) e il dato inserito nel FF Q0 egrave dato dallrsquoAND dei due ingressi Dsa e Dsb
bull Si noti che lrsquooperazione di shift corrisponde aritmeticamente alle operazioni di divisione e moltiplicazione per 2 Si supponga che in Q0 vi sia il bit meno significativo e in Q7 il meno significativo
0 1 1 0 1 0 1 0
010101102 = 10810
Shift left =gt x2
Shift right =gt 2
101011002 = 21610
001010112 = 5910
NB nel dispositivo i bit sono posti in ordine invertito e quindi un shift left del numero corrisponde a uno shift right sul dispositivo
58
bull Esistono anche i registri a traslazione ldquoaritmeticirdquo In questi shift register a destra anzicheacute fare entrare nel FF piugrave a sinistra lo ldquo0rdquo viene immesso sempre ripetutamente il suo valore logico
Shift aritmetico
Q7 Q6 Q5 Q4 Q3 Q2 Q1 Q0
D7 D6 D5 D4 D3 D2 D1 D0
I LDCK Esempio
11001010SRA
11100101 interpretato in complemento a 2
001101102=5410
C2 C2
000110112=2710
bull Lo shift aritmetico a destra effettua una divisione per 2 mantenendo il segno
59
Rotazione
Nei computer egrave sovente necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register
D0kQ0k
CK DnQn
CK
D0kQ0k
CK Dn-1Qn-1
CK
D0kQ0k
CK Dn-2Qn-2
CK
D0kQ0k
CK D0Q0
CK
Molto spesso nei computer egrave necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register con direzione programmabile In questo caso su D0 ad esempio puograve essere avviato o Q1 o Qn
60
Contatori con shift register ndash Contatore retroazionato EX-OR
Q2Q0
Shift right 3 bitDQ1
110 111 011 101 010 001
Diagramma degli stati disgiunto
Uno shift register con n FF retroazionato con un EX-OR (scelta degli ingressi variabile) egrave un contatore NON binario che conta per 2n-1 (purcheacute presettato a un valore diverso da tutti zeri)
000
100
61
Contatore di Johnson (riempimento e svuotamento)
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
000-gt100-gt110-gt111-gt011-gt001-gt000-gtStati isolati 101-gt010-gt101gt1
Poicheacute configurazioni adiacenti del codice Johnson differiscono di un solo bit il contatore puograve essere utilizzato per generare forme drsquoonda prive di alee
62
Contatore ad anello con un solo 1 (ovvero che genera direttamente il codice 1su n)
FFDD Q
QR
RESET
FFDD Q
QR
RESET
FFDD Q
QPR
RESET
OUT3OUT1OUT0
CK
FFDD Q
QR
RESET
OUT2
0001-gt1000-gt0100-gt0010-gt0010n FF per contare per n (mentre con i contatori binari il numero dei FF egrave il log2m ove m egrave il primo intero maggiore o uguale a n)
63
Barrel shifter (rotore)Un barrel shifter egrave uno shift register in grado di traslare di ldquonrdquo posizioni in un solo clock il contenuto dei suoi FF In figura egrave riportato il barrel shifter della Altera Gli ingressi A-H in presenza dellrsquoattivazione del segnale LDST al primo fronte positivo del clock sono depositati nei FF Quando LDST egrave 0 ad ogni fronte positivo del clock i bit di uscita sono ruotati di n posizioni in senso antiorario (ovvero lrsquouscita H diventa la G la G diventa la Fhellipe lrsquouscita A diventa la H) ove n egrave il valore binario indicato dai segnali S0 S1 e S2
Si noti che il circuito in questione egrave di fatto un registro con 8 FF allrsquoingresso di ciascuno dei quali egrave previsto un MUX a 8 vie che pilotato dai segnali S0 S1 e S2 che seleziona uno degli 8 uscite del dispositivo La struttura interna puograve essere osservata ldquoclikkandordquo due volte sul dispositivo nello schema di Altera
64
Barrel shifter
6565
66
Simulazione timing
67
bull Utilizzando il sistema Altera progettare un orologio con secondi minuti ora partendo da un oscillatore a quarzo con frequenza 500 KHz
bull E se si volesse proseguire e realizzare anche un datario (giorno mese e anno )
bull Come potrebbe essere integrato con una sveglia Si ricordi che lrsquoorologio deve essere anche essere ldquopresettatordquo
bull Quali circuiti utilizzare per la visualizzazione
68
EPROM
X0nZ0m
y0kY0k
Clock
D0kQ0k
FFD0k
CK D0kQ0k CK
Reti sincrone con EPROM
Al posto delle EPROM si utilizzano ora dei PLA ovvero dispositivi nei quali si nei quali le funzioni combinatorie sono ottimizzate ma il principio egrave assolutamente il medesimo
69
Progettare con Altera una rete logica sincrona che utilizzando registri 374 ALU 74181 un contatore e altri dispositivi ritenuti necessari permetta di eseguire in sequenza la somma di due dati di 4 bit senza segno ingresso esegua il complemento a 2 inverta la parte bassa con la parte alta del risultato e infine moltiplichi il tutto logicamente per 2
La soluzione egrave sempre decomponibile in tre sottosistemi il controllo con la sua decodifica (unitagrave di controllo) il percorso dei dati con le unitagrave che li trasformano (datapath) e i registri di deposito e di ingresso dei dati
Questa egrave la struttura base di qualunque unitagrave centrale di qualunque computer
La differenza consiste solo nel fatto che anzicheacute avere una sequenza fissa di operazioni ne viene generata una volta a volta che dipende appunto dalla istruzione che deve essere eseguita Come si vedragrave approfonditamente nel corso di Calcolatori T del II anno (prof Neri e Mattoccia)
Arrivederci al corso di Calcolatori T del II anno (sapendo perfettamente le reti logiche helliphellip)
54
bull Uno shift register a sinistra (a destra) egrave un registro composto da FFD che ad ogni clock trasferisce il valore del FF a destra (a sinistra) di ciascun FF nel FF stesso Nel FF piugrave a destra (sinistra) viene immesso uno ldquo0rdquo Questi tipi di registri shift si chiamano ldquologicirdquo
Shift register (registri a traslazione o scorrimento)
D0kQ0k
CK DnQn
CK
D0kQ0k
CK Dn-1Qn-1
CK
D0kQ0k
CK Dn-2Qn-2
CK
D0kQ0k
CK D0Q0
CK
ldquo0rdquo
Shift register a sinistra
bull Anche per i registri a traslazione esistono diverse versioni con ingresso parallelo e uscita seriale con ingresso seriale e uscita parallela con reset con load etc etc
bull Si noti che uno shift register egrave anche un contatore Si immagini per esempio che dopo un reset siano inseriti degli uni a partire da destra Lo shift register si riempie progressivamente di uni e quindi la posizione in cui egrave arrivato lrsquouno indica il valore del conteggio in base a un codice ldquouno su nrdquo (un codice decodificato)
bull Spesso uno stesso registro puograve traslare a destra o a sinistra in funzione di una segnale di controllo Ovviamente questo si ottiene premettendo a ogni ingresso Di un MUX a due vie che preleva in funzione del segnale di controllo Qigrave+1 o Qigrave-1 Con questa configurazione lo shift register diventa anche un contatore avantiindietro
Registro a scorrimento (shift-register) a 3 bit
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
IN
OUT2OUT1OUT0
CK
CK
IN
A_RESET
OUT1
OUT2
OUT0
Registro a scorrimento (shift-register) a 3 bit
57
Esempio 74164 (serial In parallel OUT)
bull In questo registro a traslazione ad ogni fronte positivo del clock i dati sono traslati a destra (Q0 -gt Q1 Q1-gtQ2 etc) Il registro egrave dotato in un Master Reset (vero negato) e il dato inserito nel FF Q0 egrave dato dallrsquoAND dei due ingressi Dsa e Dsb
bull Si noti che lrsquooperazione di shift corrisponde aritmeticamente alle operazioni di divisione e moltiplicazione per 2 Si supponga che in Q0 vi sia il bit meno significativo e in Q7 il meno significativo
0 1 1 0 1 0 1 0
010101102 = 10810
Shift left =gt x2
Shift right =gt 2
101011002 = 21610
001010112 = 5910
NB nel dispositivo i bit sono posti in ordine invertito e quindi un shift left del numero corrisponde a uno shift right sul dispositivo
58
bull Esistono anche i registri a traslazione ldquoaritmeticirdquo In questi shift register a destra anzicheacute fare entrare nel FF piugrave a sinistra lo ldquo0rdquo viene immesso sempre ripetutamente il suo valore logico
Shift aritmetico
Q7 Q6 Q5 Q4 Q3 Q2 Q1 Q0
D7 D6 D5 D4 D3 D2 D1 D0
I LDCK Esempio
11001010SRA
11100101 interpretato in complemento a 2
001101102=5410
C2 C2
000110112=2710
bull Lo shift aritmetico a destra effettua una divisione per 2 mantenendo il segno
59
Rotazione
Nei computer egrave sovente necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register
D0kQ0k
CK DnQn
CK
D0kQ0k
CK Dn-1Qn-1
CK
D0kQ0k
CK Dn-2Qn-2
CK
D0kQ0k
CK D0Q0
CK
Molto spesso nei computer egrave necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register con direzione programmabile In questo caso su D0 ad esempio puograve essere avviato o Q1 o Qn
60
Contatori con shift register ndash Contatore retroazionato EX-OR
Q2Q0
Shift right 3 bitDQ1
110 111 011 101 010 001
Diagramma degli stati disgiunto
Uno shift register con n FF retroazionato con un EX-OR (scelta degli ingressi variabile) egrave un contatore NON binario che conta per 2n-1 (purcheacute presettato a un valore diverso da tutti zeri)
000
100
61
Contatore di Johnson (riempimento e svuotamento)
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
000-gt100-gt110-gt111-gt011-gt001-gt000-gtStati isolati 101-gt010-gt101gt1
Poicheacute configurazioni adiacenti del codice Johnson differiscono di un solo bit il contatore puograve essere utilizzato per generare forme drsquoonda prive di alee
62
Contatore ad anello con un solo 1 (ovvero che genera direttamente il codice 1su n)
FFDD Q
QR
RESET
FFDD Q
QR
RESET
FFDD Q
QPR
RESET
OUT3OUT1OUT0
CK
FFDD Q
QR
RESET
OUT2
0001-gt1000-gt0100-gt0010-gt0010n FF per contare per n (mentre con i contatori binari il numero dei FF egrave il log2m ove m egrave il primo intero maggiore o uguale a n)
63
Barrel shifter (rotore)Un barrel shifter egrave uno shift register in grado di traslare di ldquonrdquo posizioni in un solo clock il contenuto dei suoi FF In figura egrave riportato il barrel shifter della Altera Gli ingressi A-H in presenza dellrsquoattivazione del segnale LDST al primo fronte positivo del clock sono depositati nei FF Quando LDST egrave 0 ad ogni fronte positivo del clock i bit di uscita sono ruotati di n posizioni in senso antiorario (ovvero lrsquouscita H diventa la G la G diventa la Fhellipe lrsquouscita A diventa la H) ove n egrave il valore binario indicato dai segnali S0 S1 e S2
Si noti che il circuito in questione egrave di fatto un registro con 8 FF allrsquoingresso di ciascuno dei quali egrave previsto un MUX a 8 vie che pilotato dai segnali S0 S1 e S2 che seleziona uno degli 8 uscite del dispositivo La struttura interna puograve essere osservata ldquoclikkandordquo due volte sul dispositivo nello schema di Altera
64
Barrel shifter
6565
66
Simulazione timing
67
bull Utilizzando il sistema Altera progettare un orologio con secondi minuti ora partendo da un oscillatore a quarzo con frequenza 500 KHz
bull E se si volesse proseguire e realizzare anche un datario (giorno mese e anno )
bull Come potrebbe essere integrato con una sveglia Si ricordi che lrsquoorologio deve essere anche essere ldquopresettatordquo
bull Quali circuiti utilizzare per la visualizzazione
68
EPROM
X0nZ0m
y0kY0k
Clock
D0kQ0k
FFD0k
CK D0kQ0k CK
Reti sincrone con EPROM
Al posto delle EPROM si utilizzano ora dei PLA ovvero dispositivi nei quali si nei quali le funzioni combinatorie sono ottimizzate ma il principio egrave assolutamente il medesimo
69
Progettare con Altera una rete logica sincrona che utilizzando registri 374 ALU 74181 un contatore e altri dispositivi ritenuti necessari permetta di eseguire in sequenza la somma di due dati di 4 bit senza segno ingresso esegua il complemento a 2 inverta la parte bassa con la parte alta del risultato e infine moltiplichi il tutto logicamente per 2
La soluzione egrave sempre decomponibile in tre sottosistemi il controllo con la sua decodifica (unitagrave di controllo) il percorso dei dati con le unitagrave che li trasformano (datapath) e i registri di deposito e di ingresso dei dati
Questa egrave la struttura base di qualunque unitagrave centrale di qualunque computer
La differenza consiste solo nel fatto che anzicheacute avere una sequenza fissa di operazioni ne viene generata una volta a volta che dipende appunto dalla istruzione che deve essere eseguita Come si vedragrave approfonditamente nel corso di Calcolatori T del II anno (prof Neri e Mattoccia)
Arrivederci al corso di Calcolatori T del II anno (sapendo perfettamente le reti logiche helliphellip)
Registro a scorrimento (shift-register) a 3 bit
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
IN
OUT2OUT1OUT0
CK
CK
IN
A_RESET
OUT1
OUT2
OUT0
Registro a scorrimento (shift-register) a 3 bit
57
Esempio 74164 (serial In parallel OUT)
bull In questo registro a traslazione ad ogni fronte positivo del clock i dati sono traslati a destra (Q0 -gt Q1 Q1-gtQ2 etc) Il registro egrave dotato in un Master Reset (vero negato) e il dato inserito nel FF Q0 egrave dato dallrsquoAND dei due ingressi Dsa e Dsb
bull Si noti che lrsquooperazione di shift corrisponde aritmeticamente alle operazioni di divisione e moltiplicazione per 2 Si supponga che in Q0 vi sia il bit meno significativo e in Q7 il meno significativo
0 1 1 0 1 0 1 0
010101102 = 10810
Shift left =gt x2
Shift right =gt 2
101011002 = 21610
001010112 = 5910
NB nel dispositivo i bit sono posti in ordine invertito e quindi un shift left del numero corrisponde a uno shift right sul dispositivo
58
bull Esistono anche i registri a traslazione ldquoaritmeticirdquo In questi shift register a destra anzicheacute fare entrare nel FF piugrave a sinistra lo ldquo0rdquo viene immesso sempre ripetutamente il suo valore logico
Shift aritmetico
Q7 Q6 Q5 Q4 Q3 Q2 Q1 Q0
D7 D6 D5 D4 D3 D2 D1 D0
I LDCK Esempio
11001010SRA
11100101 interpretato in complemento a 2
001101102=5410
C2 C2
000110112=2710
bull Lo shift aritmetico a destra effettua una divisione per 2 mantenendo il segno
59
Rotazione
Nei computer egrave sovente necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register
D0kQ0k
CK DnQn
CK
D0kQ0k
CK Dn-1Qn-1
CK
D0kQ0k
CK Dn-2Qn-2
CK
D0kQ0k
CK D0Q0
CK
Molto spesso nei computer egrave necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register con direzione programmabile In questo caso su D0 ad esempio puograve essere avviato o Q1 o Qn
60
Contatori con shift register ndash Contatore retroazionato EX-OR
Q2Q0
Shift right 3 bitDQ1
110 111 011 101 010 001
Diagramma degli stati disgiunto
Uno shift register con n FF retroazionato con un EX-OR (scelta degli ingressi variabile) egrave un contatore NON binario che conta per 2n-1 (purcheacute presettato a un valore diverso da tutti zeri)
000
100
61
Contatore di Johnson (riempimento e svuotamento)
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
000-gt100-gt110-gt111-gt011-gt001-gt000-gtStati isolati 101-gt010-gt101gt1
Poicheacute configurazioni adiacenti del codice Johnson differiscono di un solo bit il contatore puograve essere utilizzato per generare forme drsquoonda prive di alee
62
Contatore ad anello con un solo 1 (ovvero che genera direttamente il codice 1su n)
FFDD Q
QR
RESET
FFDD Q
QR
RESET
FFDD Q
QPR
RESET
OUT3OUT1OUT0
CK
FFDD Q
QR
RESET
OUT2
0001-gt1000-gt0100-gt0010-gt0010n FF per contare per n (mentre con i contatori binari il numero dei FF egrave il log2m ove m egrave il primo intero maggiore o uguale a n)
63
Barrel shifter (rotore)Un barrel shifter egrave uno shift register in grado di traslare di ldquonrdquo posizioni in un solo clock il contenuto dei suoi FF In figura egrave riportato il barrel shifter della Altera Gli ingressi A-H in presenza dellrsquoattivazione del segnale LDST al primo fronte positivo del clock sono depositati nei FF Quando LDST egrave 0 ad ogni fronte positivo del clock i bit di uscita sono ruotati di n posizioni in senso antiorario (ovvero lrsquouscita H diventa la G la G diventa la Fhellipe lrsquouscita A diventa la H) ove n egrave il valore binario indicato dai segnali S0 S1 e S2
Si noti che il circuito in questione egrave di fatto un registro con 8 FF allrsquoingresso di ciascuno dei quali egrave previsto un MUX a 8 vie che pilotato dai segnali S0 S1 e S2 che seleziona uno degli 8 uscite del dispositivo La struttura interna puograve essere osservata ldquoclikkandordquo due volte sul dispositivo nello schema di Altera
64
Barrel shifter
6565
66
Simulazione timing
67
bull Utilizzando il sistema Altera progettare un orologio con secondi minuti ora partendo da un oscillatore a quarzo con frequenza 500 KHz
bull E se si volesse proseguire e realizzare anche un datario (giorno mese e anno )
bull Come potrebbe essere integrato con una sveglia Si ricordi che lrsquoorologio deve essere anche essere ldquopresettatordquo
bull Quali circuiti utilizzare per la visualizzazione
68
EPROM
X0nZ0m
y0kY0k
Clock
D0kQ0k
FFD0k
CK D0kQ0k CK
Reti sincrone con EPROM
Al posto delle EPROM si utilizzano ora dei PLA ovvero dispositivi nei quali si nei quali le funzioni combinatorie sono ottimizzate ma il principio egrave assolutamente il medesimo
69
Progettare con Altera una rete logica sincrona che utilizzando registri 374 ALU 74181 un contatore e altri dispositivi ritenuti necessari permetta di eseguire in sequenza la somma di due dati di 4 bit senza segno ingresso esegua il complemento a 2 inverta la parte bassa con la parte alta del risultato e infine moltiplichi il tutto logicamente per 2
La soluzione egrave sempre decomponibile in tre sottosistemi il controllo con la sua decodifica (unitagrave di controllo) il percorso dei dati con le unitagrave che li trasformano (datapath) e i registri di deposito e di ingresso dei dati
Questa egrave la struttura base di qualunque unitagrave centrale di qualunque computer
La differenza consiste solo nel fatto che anzicheacute avere una sequenza fissa di operazioni ne viene generata una volta a volta che dipende appunto dalla istruzione che deve essere eseguita Come si vedragrave approfonditamente nel corso di Calcolatori T del II anno (prof Neri e Mattoccia)
Arrivederci al corso di Calcolatori T del II anno (sapendo perfettamente le reti logiche helliphellip)
CK
IN
A_RESET
OUT1
OUT2
OUT0
Registro a scorrimento (shift-register) a 3 bit
57
Esempio 74164 (serial In parallel OUT)
bull In questo registro a traslazione ad ogni fronte positivo del clock i dati sono traslati a destra (Q0 -gt Q1 Q1-gtQ2 etc) Il registro egrave dotato in un Master Reset (vero negato) e il dato inserito nel FF Q0 egrave dato dallrsquoAND dei due ingressi Dsa e Dsb
bull Si noti che lrsquooperazione di shift corrisponde aritmeticamente alle operazioni di divisione e moltiplicazione per 2 Si supponga che in Q0 vi sia il bit meno significativo e in Q7 il meno significativo
0 1 1 0 1 0 1 0
010101102 = 10810
Shift left =gt x2
Shift right =gt 2
101011002 = 21610
001010112 = 5910
NB nel dispositivo i bit sono posti in ordine invertito e quindi un shift left del numero corrisponde a uno shift right sul dispositivo
58
bull Esistono anche i registri a traslazione ldquoaritmeticirdquo In questi shift register a destra anzicheacute fare entrare nel FF piugrave a sinistra lo ldquo0rdquo viene immesso sempre ripetutamente il suo valore logico
Shift aritmetico
Q7 Q6 Q5 Q4 Q3 Q2 Q1 Q0
D7 D6 D5 D4 D3 D2 D1 D0
I LDCK Esempio
11001010SRA
11100101 interpretato in complemento a 2
001101102=5410
C2 C2
000110112=2710
bull Lo shift aritmetico a destra effettua una divisione per 2 mantenendo il segno
59
Rotazione
Nei computer egrave sovente necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register
D0kQ0k
CK DnQn
CK
D0kQ0k
CK Dn-1Qn-1
CK
D0kQ0k
CK Dn-2Qn-2
CK
D0kQ0k
CK D0Q0
CK
Molto spesso nei computer egrave necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register con direzione programmabile In questo caso su D0 ad esempio puograve essere avviato o Q1 o Qn
60
Contatori con shift register ndash Contatore retroazionato EX-OR
Q2Q0
Shift right 3 bitDQ1
110 111 011 101 010 001
Diagramma degli stati disgiunto
Uno shift register con n FF retroazionato con un EX-OR (scelta degli ingressi variabile) egrave un contatore NON binario che conta per 2n-1 (purcheacute presettato a un valore diverso da tutti zeri)
000
100
61
Contatore di Johnson (riempimento e svuotamento)
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
000-gt100-gt110-gt111-gt011-gt001-gt000-gtStati isolati 101-gt010-gt101gt1
Poicheacute configurazioni adiacenti del codice Johnson differiscono di un solo bit il contatore puograve essere utilizzato per generare forme drsquoonda prive di alee
62
Contatore ad anello con un solo 1 (ovvero che genera direttamente il codice 1su n)
FFDD Q
QR
RESET
FFDD Q
QR
RESET
FFDD Q
QPR
RESET
OUT3OUT1OUT0
CK
FFDD Q
QR
RESET
OUT2
0001-gt1000-gt0100-gt0010-gt0010n FF per contare per n (mentre con i contatori binari il numero dei FF egrave il log2m ove m egrave il primo intero maggiore o uguale a n)
63
Barrel shifter (rotore)Un barrel shifter egrave uno shift register in grado di traslare di ldquonrdquo posizioni in un solo clock il contenuto dei suoi FF In figura egrave riportato il barrel shifter della Altera Gli ingressi A-H in presenza dellrsquoattivazione del segnale LDST al primo fronte positivo del clock sono depositati nei FF Quando LDST egrave 0 ad ogni fronte positivo del clock i bit di uscita sono ruotati di n posizioni in senso antiorario (ovvero lrsquouscita H diventa la G la G diventa la Fhellipe lrsquouscita A diventa la H) ove n egrave il valore binario indicato dai segnali S0 S1 e S2
Si noti che il circuito in questione egrave di fatto un registro con 8 FF allrsquoingresso di ciascuno dei quali egrave previsto un MUX a 8 vie che pilotato dai segnali S0 S1 e S2 che seleziona uno degli 8 uscite del dispositivo La struttura interna puograve essere osservata ldquoclikkandordquo due volte sul dispositivo nello schema di Altera
64
Barrel shifter
6565
66
Simulazione timing
67
bull Utilizzando il sistema Altera progettare un orologio con secondi minuti ora partendo da un oscillatore a quarzo con frequenza 500 KHz
bull E se si volesse proseguire e realizzare anche un datario (giorno mese e anno )
bull Come potrebbe essere integrato con una sveglia Si ricordi che lrsquoorologio deve essere anche essere ldquopresettatordquo
bull Quali circuiti utilizzare per la visualizzazione
68
EPROM
X0nZ0m
y0kY0k
Clock
D0kQ0k
FFD0k
CK D0kQ0k CK
Reti sincrone con EPROM
Al posto delle EPROM si utilizzano ora dei PLA ovvero dispositivi nei quali si nei quali le funzioni combinatorie sono ottimizzate ma il principio egrave assolutamente il medesimo
69
Progettare con Altera una rete logica sincrona che utilizzando registri 374 ALU 74181 un contatore e altri dispositivi ritenuti necessari permetta di eseguire in sequenza la somma di due dati di 4 bit senza segno ingresso esegua il complemento a 2 inverta la parte bassa con la parte alta del risultato e infine moltiplichi il tutto logicamente per 2
La soluzione egrave sempre decomponibile in tre sottosistemi il controllo con la sua decodifica (unitagrave di controllo) il percorso dei dati con le unitagrave che li trasformano (datapath) e i registri di deposito e di ingresso dei dati
Questa egrave la struttura base di qualunque unitagrave centrale di qualunque computer
La differenza consiste solo nel fatto che anzicheacute avere una sequenza fissa di operazioni ne viene generata una volta a volta che dipende appunto dalla istruzione che deve essere eseguita Come si vedragrave approfonditamente nel corso di Calcolatori T del II anno (prof Neri e Mattoccia)
Arrivederci al corso di Calcolatori T del II anno (sapendo perfettamente le reti logiche helliphellip)
57
Esempio 74164 (serial In parallel OUT)
bull In questo registro a traslazione ad ogni fronte positivo del clock i dati sono traslati a destra (Q0 -gt Q1 Q1-gtQ2 etc) Il registro egrave dotato in un Master Reset (vero negato) e il dato inserito nel FF Q0 egrave dato dallrsquoAND dei due ingressi Dsa e Dsb
bull Si noti che lrsquooperazione di shift corrisponde aritmeticamente alle operazioni di divisione e moltiplicazione per 2 Si supponga che in Q0 vi sia il bit meno significativo e in Q7 il meno significativo
0 1 1 0 1 0 1 0
010101102 = 10810
Shift left =gt x2
Shift right =gt 2
101011002 = 21610
001010112 = 5910
NB nel dispositivo i bit sono posti in ordine invertito e quindi un shift left del numero corrisponde a uno shift right sul dispositivo
58
bull Esistono anche i registri a traslazione ldquoaritmeticirdquo In questi shift register a destra anzicheacute fare entrare nel FF piugrave a sinistra lo ldquo0rdquo viene immesso sempre ripetutamente il suo valore logico
Shift aritmetico
Q7 Q6 Q5 Q4 Q3 Q2 Q1 Q0
D7 D6 D5 D4 D3 D2 D1 D0
I LDCK Esempio
11001010SRA
11100101 interpretato in complemento a 2
001101102=5410
C2 C2
000110112=2710
bull Lo shift aritmetico a destra effettua una divisione per 2 mantenendo il segno
59
Rotazione
Nei computer egrave sovente necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register
D0kQ0k
CK DnQn
CK
D0kQ0k
CK Dn-1Qn-1
CK
D0kQ0k
CK Dn-2Qn-2
CK
D0kQ0k
CK D0Q0
CK
Molto spesso nei computer egrave necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register con direzione programmabile In questo caso su D0 ad esempio puograve essere avviato o Q1 o Qn
60
Contatori con shift register ndash Contatore retroazionato EX-OR
Q2Q0
Shift right 3 bitDQ1
110 111 011 101 010 001
Diagramma degli stati disgiunto
Uno shift register con n FF retroazionato con un EX-OR (scelta degli ingressi variabile) egrave un contatore NON binario che conta per 2n-1 (purcheacute presettato a un valore diverso da tutti zeri)
000
100
61
Contatore di Johnson (riempimento e svuotamento)
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
000-gt100-gt110-gt111-gt011-gt001-gt000-gtStati isolati 101-gt010-gt101gt1
Poicheacute configurazioni adiacenti del codice Johnson differiscono di un solo bit il contatore puograve essere utilizzato per generare forme drsquoonda prive di alee
62
Contatore ad anello con un solo 1 (ovvero che genera direttamente il codice 1su n)
FFDD Q
QR
RESET
FFDD Q
QR
RESET
FFDD Q
QPR
RESET
OUT3OUT1OUT0
CK
FFDD Q
QR
RESET
OUT2
0001-gt1000-gt0100-gt0010-gt0010n FF per contare per n (mentre con i contatori binari il numero dei FF egrave il log2m ove m egrave il primo intero maggiore o uguale a n)
63
Barrel shifter (rotore)Un barrel shifter egrave uno shift register in grado di traslare di ldquonrdquo posizioni in un solo clock il contenuto dei suoi FF In figura egrave riportato il barrel shifter della Altera Gli ingressi A-H in presenza dellrsquoattivazione del segnale LDST al primo fronte positivo del clock sono depositati nei FF Quando LDST egrave 0 ad ogni fronte positivo del clock i bit di uscita sono ruotati di n posizioni in senso antiorario (ovvero lrsquouscita H diventa la G la G diventa la Fhellipe lrsquouscita A diventa la H) ove n egrave il valore binario indicato dai segnali S0 S1 e S2
Si noti che il circuito in questione egrave di fatto un registro con 8 FF allrsquoingresso di ciascuno dei quali egrave previsto un MUX a 8 vie che pilotato dai segnali S0 S1 e S2 che seleziona uno degli 8 uscite del dispositivo La struttura interna puograve essere osservata ldquoclikkandordquo due volte sul dispositivo nello schema di Altera
64
Barrel shifter
6565
66
Simulazione timing
67
bull Utilizzando il sistema Altera progettare un orologio con secondi minuti ora partendo da un oscillatore a quarzo con frequenza 500 KHz
bull E se si volesse proseguire e realizzare anche un datario (giorno mese e anno )
bull Come potrebbe essere integrato con una sveglia Si ricordi che lrsquoorologio deve essere anche essere ldquopresettatordquo
bull Quali circuiti utilizzare per la visualizzazione
68
EPROM
X0nZ0m
y0kY0k
Clock
D0kQ0k
FFD0k
CK D0kQ0k CK
Reti sincrone con EPROM
Al posto delle EPROM si utilizzano ora dei PLA ovvero dispositivi nei quali si nei quali le funzioni combinatorie sono ottimizzate ma il principio egrave assolutamente il medesimo
69
Progettare con Altera una rete logica sincrona che utilizzando registri 374 ALU 74181 un contatore e altri dispositivi ritenuti necessari permetta di eseguire in sequenza la somma di due dati di 4 bit senza segno ingresso esegua il complemento a 2 inverta la parte bassa con la parte alta del risultato e infine moltiplichi il tutto logicamente per 2
La soluzione egrave sempre decomponibile in tre sottosistemi il controllo con la sua decodifica (unitagrave di controllo) il percorso dei dati con le unitagrave che li trasformano (datapath) e i registri di deposito e di ingresso dei dati
Questa egrave la struttura base di qualunque unitagrave centrale di qualunque computer
La differenza consiste solo nel fatto che anzicheacute avere una sequenza fissa di operazioni ne viene generata una volta a volta che dipende appunto dalla istruzione che deve essere eseguita Come si vedragrave approfonditamente nel corso di Calcolatori T del II anno (prof Neri e Mattoccia)
Arrivederci al corso di Calcolatori T del II anno (sapendo perfettamente le reti logiche helliphellip)
58
bull Esistono anche i registri a traslazione ldquoaritmeticirdquo In questi shift register a destra anzicheacute fare entrare nel FF piugrave a sinistra lo ldquo0rdquo viene immesso sempre ripetutamente il suo valore logico
Shift aritmetico
Q7 Q6 Q5 Q4 Q3 Q2 Q1 Q0
D7 D6 D5 D4 D3 D2 D1 D0
I LDCK Esempio
11001010SRA
11100101 interpretato in complemento a 2
001101102=5410
C2 C2
000110112=2710
bull Lo shift aritmetico a destra effettua una divisione per 2 mantenendo il segno
59
Rotazione
Nei computer egrave sovente necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register
D0kQ0k
CK DnQn
CK
D0kQ0k
CK Dn-1Qn-1
CK
D0kQ0k
CK Dn-2Qn-2
CK
D0kQ0k
CK D0Q0
CK
Molto spesso nei computer egrave necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register con direzione programmabile In questo caso su D0 ad esempio puograve essere avviato o Q1 o Qn
60
Contatori con shift register ndash Contatore retroazionato EX-OR
Q2Q0
Shift right 3 bitDQ1
110 111 011 101 010 001
Diagramma degli stati disgiunto
Uno shift register con n FF retroazionato con un EX-OR (scelta degli ingressi variabile) egrave un contatore NON binario che conta per 2n-1 (purcheacute presettato a un valore diverso da tutti zeri)
000
100
61
Contatore di Johnson (riempimento e svuotamento)
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
000-gt100-gt110-gt111-gt011-gt001-gt000-gtStati isolati 101-gt010-gt101gt1
Poicheacute configurazioni adiacenti del codice Johnson differiscono di un solo bit il contatore puograve essere utilizzato per generare forme drsquoonda prive di alee
62
Contatore ad anello con un solo 1 (ovvero che genera direttamente il codice 1su n)
FFDD Q
QR
RESET
FFDD Q
QR
RESET
FFDD Q
QPR
RESET
OUT3OUT1OUT0
CK
FFDD Q
QR
RESET
OUT2
0001-gt1000-gt0100-gt0010-gt0010n FF per contare per n (mentre con i contatori binari il numero dei FF egrave il log2m ove m egrave il primo intero maggiore o uguale a n)
63
Barrel shifter (rotore)Un barrel shifter egrave uno shift register in grado di traslare di ldquonrdquo posizioni in un solo clock il contenuto dei suoi FF In figura egrave riportato il barrel shifter della Altera Gli ingressi A-H in presenza dellrsquoattivazione del segnale LDST al primo fronte positivo del clock sono depositati nei FF Quando LDST egrave 0 ad ogni fronte positivo del clock i bit di uscita sono ruotati di n posizioni in senso antiorario (ovvero lrsquouscita H diventa la G la G diventa la Fhellipe lrsquouscita A diventa la H) ove n egrave il valore binario indicato dai segnali S0 S1 e S2
Si noti che il circuito in questione egrave di fatto un registro con 8 FF allrsquoingresso di ciascuno dei quali egrave previsto un MUX a 8 vie che pilotato dai segnali S0 S1 e S2 che seleziona uno degli 8 uscite del dispositivo La struttura interna puograve essere osservata ldquoclikkandordquo due volte sul dispositivo nello schema di Altera
64
Barrel shifter
6565
66
Simulazione timing
67
bull Utilizzando il sistema Altera progettare un orologio con secondi minuti ora partendo da un oscillatore a quarzo con frequenza 500 KHz
bull E se si volesse proseguire e realizzare anche un datario (giorno mese e anno )
bull Come potrebbe essere integrato con una sveglia Si ricordi che lrsquoorologio deve essere anche essere ldquopresettatordquo
bull Quali circuiti utilizzare per la visualizzazione
68
EPROM
X0nZ0m
y0kY0k
Clock
D0kQ0k
FFD0k
CK D0kQ0k CK
Reti sincrone con EPROM
Al posto delle EPROM si utilizzano ora dei PLA ovvero dispositivi nei quali si nei quali le funzioni combinatorie sono ottimizzate ma il principio egrave assolutamente il medesimo
69
Progettare con Altera una rete logica sincrona che utilizzando registri 374 ALU 74181 un contatore e altri dispositivi ritenuti necessari permetta di eseguire in sequenza la somma di due dati di 4 bit senza segno ingresso esegua il complemento a 2 inverta la parte bassa con la parte alta del risultato e infine moltiplichi il tutto logicamente per 2
La soluzione egrave sempre decomponibile in tre sottosistemi il controllo con la sua decodifica (unitagrave di controllo) il percorso dei dati con le unitagrave che li trasformano (datapath) e i registri di deposito e di ingresso dei dati
Questa egrave la struttura base di qualunque unitagrave centrale di qualunque computer
La differenza consiste solo nel fatto che anzicheacute avere una sequenza fissa di operazioni ne viene generata una volta a volta che dipende appunto dalla istruzione che deve essere eseguita Come si vedragrave approfonditamente nel corso di Calcolatori T del II anno (prof Neri e Mattoccia)
Arrivederci al corso di Calcolatori T del II anno (sapendo perfettamente le reti logiche helliphellip)
59
Rotazione
Nei computer egrave sovente necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register
D0kQ0k
CK DnQn
CK
D0kQ0k
CK Dn-1Qn-1
CK
D0kQ0k
CK Dn-2Qn-2
CK
D0kQ0k
CK D0Q0
CK
Molto spesso nei computer egrave necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF La cosa si ottiene retroazionando uno shift register con direzione programmabile In questo caso su D0 ad esempio puograve essere avviato o Q1 o Qn
60
Contatori con shift register ndash Contatore retroazionato EX-OR
Q2Q0
Shift right 3 bitDQ1
110 111 011 101 010 001
Diagramma degli stati disgiunto
Uno shift register con n FF retroazionato con un EX-OR (scelta degli ingressi variabile) egrave un contatore NON binario che conta per 2n-1 (purcheacute presettato a un valore diverso da tutti zeri)
000
100
61
Contatore di Johnson (riempimento e svuotamento)
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
000-gt100-gt110-gt111-gt011-gt001-gt000-gtStati isolati 101-gt010-gt101gt1
Poicheacute configurazioni adiacenti del codice Johnson differiscono di un solo bit il contatore puograve essere utilizzato per generare forme drsquoonda prive di alee
62
Contatore ad anello con un solo 1 (ovvero che genera direttamente il codice 1su n)
FFDD Q
QR
RESET
FFDD Q
QR
RESET
FFDD Q
QPR
RESET
OUT3OUT1OUT0
CK
FFDD Q
QR
RESET
OUT2
0001-gt1000-gt0100-gt0010-gt0010n FF per contare per n (mentre con i contatori binari il numero dei FF egrave il log2m ove m egrave il primo intero maggiore o uguale a n)
63
Barrel shifter (rotore)Un barrel shifter egrave uno shift register in grado di traslare di ldquonrdquo posizioni in un solo clock il contenuto dei suoi FF In figura egrave riportato il barrel shifter della Altera Gli ingressi A-H in presenza dellrsquoattivazione del segnale LDST al primo fronte positivo del clock sono depositati nei FF Quando LDST egrave 0 ad ogni fronte positivo del clock i bit di uscita sono ruotati di n posizioni in senso antiorario (ovvero lrsquouscita H diventa la G la G diventa la Fhellipe lrsquouscita A diventa la H) ove n egrave il valore binario indicato dai segnali S0 S1 e S2
Si noti che il circuito in questione egrave di fatto un registro con 8 FF allrsquoingresso di ciascuno dei quali egrave previsto un MUX a 8 vie che pilotato dai segnali S0 S1 e S2 che seleziona uno degli 8 uscite del dispositivo La struttura interna puograve essere osservata ldquoclikkandordquo due volte sul dispositivo nello schema di Altera
64
Barrel shifter
6565
66
Simulazione timing
67
bull Utilizzando il sistema Altera progettare un orologio con secondi minuti ora partendo da un oscillatore a quarzo con frequenza 500 KHz
bull E se si volesse proseguire e realizzare anche un datario (giorno mese e anno )
bull Come potrebbe essere integrato con una sveglia Si ricordi che lrsquoorologio deve essere anche essere ldquopresettatordquo
bull Quali circuiti utilizzare per la visualizzazione
68
EPROM
X0nZ0m
y0kY0k
Clock
D0kQ0k
FFD0k
CK D0kQ0k CK
Reti sincrone con EPROM
Al posto delle EPROM si utilizzano ora dei PLA ovvero dispositivi nei quali si nei quali le funzioni combinatorie sono ottimizzate ma il principio egrave assolutamente il medesimo
69
Progettare con Altera una rete logica sincrona che utilizzando registri 374 ALU 74181 un contatore e altri dispositivi ritenuti necessari permetta di eseguire in sequenza la somma di due dati di 4 bit senza segno ingresso esegua il complemento a 2 inverta la parte bassa con la parte alta del risultato e infine moltiplichi il tutto logicamente per 2
La soluzione egrave sempre decomponibile in tre sottosistemi il controllo con la sua decodifica (unitagrave di controllo) il percorso dei dati con le unitagrave che li trasformano (datapath) e i registri di deposito e di ingresso dei dati
Questa egrave la struttura base di qualunque unitagrave centrale di qualunque computer
La differenza consiste solo nel fatto che anzicheacute avere una sequenza fissa di operazioni ne viene generata una volta a volta che dipende appunto dalla istruzione che deve essere eseguita Come si vedragrave approfonditamente nel corso di Calcolatori T del II anno (prof Neri e Mattoccia)
Arrivederci al corso di Calcolatori T del II anno (sapendo perfettamente le reti logiche helliphellip)
60
Contatori con shift register ndash Contatore retroazionato EX-OR
Q2Q0
Shift right 3 bitDQ1
110 111 011 101 010 001
Diagramma degli stati disgiunto
Uno shift register con n FF retroazionato con un EX-OR (scelta degli ingressi variabile) egrave un contatore NON binario che conta per 2n-1 (purcheacute presettato a un valore diverso da tutti zeri)
000
100
61
Contatore di Johnson (riempimento e svuotamento)
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
000-gt100-gt110-gt111-gt011-gt001-gt000-gtStati isolati 101-gt010-gt101gt1
Poicheacute configurazioni adiacenti del codice Johnson differiscono di un solo bit il contatore puograve essere utilizzato per generare forme drsquoonda prive di alee
62
Contatore ad anello con un solo 1 (ovvero che genera direttamente il codice 1su n)
FFDD Q
QR
RESET
FFDD Q
QR
RESET
FFDD Q
QPR
RESET
OUT3OUT1OUT0
CK
FFDD Q
QR
RESET
OUT2
0001-gt1000-gt0100-gt0010-gt0010n FF per contare per n (mentre con i contatori binari il numero dei FF egrave il log2m ove m egrave il primo intero maggiore o uguale a n)
63
Barrel shifter (rotore)Un barrel shifter egrave uno shift register in grado di traslare di ldquonrdquo posizioni in un solo clock il contenuto dei suoi FF In figura egrave riportato il barrel shifter della Altera Gli ingressi A-H in presenza dellrsquoattivazione del segnale LDST al primo fronte positivo del clock sono depositati nei FF Quando LDST egrave 0 ad ogni fronte positivo del clock i bit di uscita sono ruotati di n posizioni in senso antiorario (ovvero lrsquouscita H diventa la G la G diventa la Fhellipe lrsquouscita A diventa la H) ove n egrave il valore binario indicato dai segnali S0 S1 e S2
Si noti che il circuito in questione egrave di fatto un registro con 8 FF allrsquoingresso di ciascuno dei quali egrave previsto un MUX a 8 vie che pilotato dai segnali S0 S1 e S2 che seleziona uno degli 8 uscite del dispositivo La struttura interna puograve essere osservata ldquoclikkandordquo due volte sul dispositivo nello schema di Altera
64
Barrel shifter
6565
66
Simulazione timing
67
bull Utilizzando il sistema Altera progettare un orologio con secondi minuti ora partendo da un oscillatore a quarzo con frequenza 500 KHz
bull E se si volesse proseguire e realizzare anche un datario (giorno mese e anno )
bull Come potrebbe essere integrato con una sveglia Si ricordi che lrsquoorologio deve essere anche essere ldquopresettatordquo
bull Quali circuiti utilizzare per la visualizzazione
68
EPROM
X0nZ0m
y0kY0k
Clock
D0kQ0k
FFD0k
CK D0kQ0k CK
Reti sincrone con EPROM
Al posto delle EPROM si utilizzano ora dei PLA ovvero dispositivi nei quali si nei quali le funzioni combinatorie sono ottimizzate ma il principio egrave assolutamente il medesimo
69
Progettare con Altera una rete logica sincrona che utilizzando registri 374 ALU 74181 un contatore e altri dispositivi ritenuti necessari permetta di eseguire in sequenza la somma di due dati di 4 bit senza segno ingresso esegua il complemento a 2 inverta la parte bassa con la parte alta del risultato e infine moltiplichi il tutto logicamente per 2
La soluzione egrave sempre decomponibile in tre sottosistemi il controllo con la sua decodifica (unitagrave di controllo) il percorso dei dati con le unitagrave che li trasformano (datapath) e i registri di deposito e di ingresso dei dati
Questa egrave la struttura base di qualunque unitagrave centrale di qualunque computer
La differenza consiste solo nel fatto che anzicheacute avere una sequenza fissa di operazioni ne viene generata una volta a volta che dipende appunto dalla istruzione che deve essere eseguita Come si vedragrave approfonditamente nel corso di Calcolatori T del II anno (prof Neri e Mattoccia)
Arrivederci al corso di Calcolatori T del II anno (sapendo perfettamente le reti logiche helliphellip)
61
Contatore di Johnson (riempimento e svuotamento)
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
000-gt100-gt110-gt111-gt011-gt001-gt000-gtStati isolati 101-gt010-gt101gt1
Poicheacute configurazioni adiacenti del codice Johnson differiscono di un solo bit il contatore puograve essere utilizzato per generare forme drsquoonda prive di alee
62
Contatore ad anello con un solo 1 (ovvero che genera direttamente il codice 1su n)
FFDD Q
QR
RESET
FFDD Q
QR
RESET
FFDD Q
QPR
RESET
OUT3OUT1OUT0
CK
FFDD Q
QR
RESET
OUT2
0001-gt1000-gt0100-gt0010-gt0010n FF per contare per n (mentre con i contatori binari il numero dei FF egrave il log2m ove m egrave il primo intero maggiore o uguale a n)
63
Barrel shifter (rotore)Un barrel shifter egrave uno shift register in grado di traslare di ldquonrdquo posizioni in un solo clock il contenuto dei suoi FF In figura egrave riportato il barrel shifter della Altera Gli ingressi A-H in presenza dellrsquoattivazione del segnale LDST al primo fronte positivo del clock sono depositati nei FF Quando LDST egrave 0 ad ogni fronte positivo del clock i bit di uscita sono ruotati di n posizioni in senso antiorario (ovvero lrsquouscita H diventa la G la G diventa la Fhellipe lrsquouscita A diventa la H) ove n egrave il valore binario indicato dai segnali S0 S1 e S2
Si noti che il circuito in questione egrave di fatto un registro con 8 FF allrsquoingresso di ciascuno dei quali egrave previsto un MUX a 8 vie che pilotato dai segnali S0 S1 e S2 che seleziona uno degli 8 uscite del dispositivo La struttura interna puograve essere osservata ldquoclikkandordquo due volte sul dispositivo nello schema di Altera
64
Barrel shifter
6565
66
Simulazione timing
67
bull Utilizzando il sistema Altera progettare un orologio con secondi minuti ora partendo da un oscillatore a quarzo con frequenza 500 KHz
bull E se si volesse proseguire e realizzare anche un datario (giorno mese e anno )
bull Come potrebbe essere integrato con una sveglia Si ricordi che lrsquoorologio deve essere anche essere ldquopresettatordquo
bull Quali circuiti utilizzare per la visualizzazione
68
EPROM
X0nZ0m
y0kY0k
Clock
D0kQ0k
FFD0k
CK D0kQ0k CK
Reti sincrone con EPROM
Al posto delle EPROM si utilizzano ora dei PLA ovvero dispositivi nei quali si nei quali le funzioni combinatorie sono ottimizzate ma il principio egrave assolutamente il medesimo
69
Progettare con Altera una rete logica sincrona che utilizzando registri 374 ALU 74181 un contatore e altri dispositivi ritenuti necessari permetta di eseguire in sequenza la somma di due dati di 4 bit senza segno ingresso esegua il complemento a 2 inverta la parte bassa con la parte alta del risultato e infine moltiplichi il tutto logicamente per 2
La soluzione egrave sempre decomponibile in tre sottosistemi il controllo con la sua decodifica (unitagrave di controllo) il percorso dei dati con le unitagrave che li trasformano (datapath) e i registri di deposito e di ingresso dei dati
Questa egrave la struttura base di qualunque unitagrave centrale di qualunque computer
La differenza consiste solo nel fatto che anzicheacute avere una sequenza fissa di operazioni ne viene generata una volta a volta che dipende appunto dalla istruzione che deve essere eseguita Come si vedragrave approfonditamente nel corso di Calcolatori T del II anno (prof Neri e Mattoccia)
Arrivederci al corso di Calcolatori T del II anno (sapendo perfettamente le reti logiche helliphellip)
62
Contatore ad anello con un solo 1 (ovvero che genera direttamente il codice 1su n)
FFDD Q
QR
RESET
FFDD Q
QR
RESET
FFDD Q
QPR
RESET
OUT3OUT1OUT0
CK
FFDD Q
QR
RESET
OUT2
0001-gt1000-gt0100-gt0010-gt0010n FF per contare per n (mentre con i contatori binari il numero dei FF egrave il log2m ove m egrave il primo intero maggiore o uguale a n)
63
Barrel shifter (rotore)Un barrel shifter egrave uno shift register in grado di traslare di ldquonrdquo posizioni in un solo clock il contenuto dei suoi FF In figura egrave riportato il barrel shifter della Altera Gli ingressi A-H in presenza dellrsquoattivazione del segnale LDST al primo fronte positivo del clock sono depositati nei FF Quando LDST egrave 0 ad ogni fronte positivo del clock i bit di uscita sono ruotati di n posizioni in senso antiorario (ovvero lrsquouscita H diventa la G la G diventa la Fhellipe lrsquouscita A diventa la H) ove n egrave il valore binario indicato dai segnali S0 S1 e S2
Si noti che il circuito in questione egrave di fatto un registro con 8 FF allrsquoingresso di ciascuno dei quali egrave previsto un MUX a 8 vie che pilotato dai segnali S0 S1 e S2 che seleziona uno degli 8 uscite del dispositivo La struttura interna puograve essere osservata ldquoclikkandordquo due volte sul dispositivo nello schema di Altera
64
Barrel shifter
6565
66
Simulazione timing
67
bull Utilizzando il sistema Altera progettare un orologio con secondi minuti ora partendo da un oscillatore a quarzo con frequenza 500 KHz
bull E se si volesse proseguire e realizzare anche un datario (giorno mese e anno )
bull Come potrebbe essere integrato con una sveglia Si ricordi che lrsquoorologio deve essere anche essere ldquopresettatordquo
bull Quali circuiti utilizzare per la visualizzazione
68
EPROM
X0nZ0m
y0kY0k
Clock
D0kQ0k
FFD0k
CK D0kQ0k CK
Reti sincrone con EPROM
Al posto delle EPROM si utilizzano ora dei PLA ovvero dispositivi nei quali si nei quali le funzioni combinatorie sono ottimizzate ma il principio egrave assolutamente il medesimo
69
Progettare con Altera una rete logica sincrona che utilizzando registri 374 ALU 74181 un contatore e altri dispositivi ritenuti necessari permetta di eseguire in sequenza la somma di due dati di 4 bit senza segno ingresso esegua il complemento a 2 inverta la parte bassa con la parte alta del risultato e infine moltiplichi il tutto logicamente per 2
La soluzione egrave sempre decomponibile in tre sottosistemi il controllo con la sua decodifica (unitagrave di controllo) il percorso dei dati con le unitagrave che li trasformano (datapath) e i registri di deposito e di ingresso dei dati
Questa egrave la struttura base di qualunque unitagrave centrale di qualunque computer
La differenza consiste solo nel fatto che anzicheacute avere una sequenza fissa di operazioni ne viene generata una volta a volta che dipende appunto dalla istruzione che deve essere eseguita Come si vedragrave approfonditamente nel corso di Calcolatori T del II anno (prof Neri e Mattoccia)
Arrivederci al corso di Calcolatori T del II anno (sapendo perfettamente le reti logiche helliphellip)
63
Barrel shifter (rotore)Un barrel shifter egrave uno shift register in grado di traslare di ldquonrdquo posizioni in un solo clock il contenuto dei suoi FF In figura egrave riportato il barrel shifter della Altera Gli ingressi A-H in presenza dellrsquoattivazione del segnale LDST al primo fronte positivo del clock sono depositati nei FF Quando LDST egrave 0 ad ogni fronte positivo del clock i bit di uscita sono ruotati di n posizioni in senso antiorario (ovvero lrsquouscita H diventa la G la G diventa la Fhellipe lrsquouscita A diventa la H) ove n egrave il valore binario indicato dai segnali S0 S1 e S2
Si noti che il circuito in questione egrave di fatto un registro con 8 FF allrsquoingresso di ciascuno dei quali egrave previsto un MUX a 8 vie che pilotato dai segnali S0 S1 e S2 che seleziona uno degli 8 uscite del dispositivo La struttura interna puograve essere osservata ldquoclikkandordquo due volte sul dispositivo nello schema di Altera
64
Barrel shifter
6565
66
Simulazione timing
67
bull Utilizzando il sistema Altera progettare un orologio con secondi minuti ora partendo da un oscillatore a quarzo con frequenza 500 KHz
bull E se si volesse proseguire e realizzare anche un datario (giorno mese e anno )
bull Come potrebbe essere integrato con una sveglia Si ricordi che lrsquoorologio deve essere anche essere ldquopresettatordquo
bull Quali circuiti utilizzare per la visualizzazione
68
EPROM
X0nZ0m
y0kY0k
Clock
D0kQ0k
FFD0k
CK D0kQ0k CK
Reti sincrone con EPROM
Al posto delle EPROM si utilizzano ora dei PLA ovvero dispositivi nei quali si nei quali le funzioni combinatorie sono ottimizzate ma il principio egrave assolutamente il medesimo
69
Progettare con Altera una rete logica sincrona che utilizzando registri 374 ALU 74181 un contatore e altri dispositivi ritenuti necessari permetta di eseguire in sequenza la somma di due dati di 4 bit senza segno ingresso esegua il complemento a 2 inverta la parte bassa con la parte alta del risultato e infine moltiplichi il tutto logicamente per 2
La soluzione egrave sempre decomponibile in tre sottosistemi il controllo con la sua decodifica (unitagrave di controllo) il percorso dei dati con le unitagrave che li trasformano (datapath) e i registri di deposito e di ingresso dei dati
Questa egrave la struttura base di qualunque unitagrave centrale di qualunque computer
La differenza consiste solo nel fatto che anzicheacute avere una sequenza fissa di operazioni ne viene generata una volta a volta che dipende appunto dalla istruzione che deve essere eseguita Come si vedragrave approfonditamente nel corso di Calcolatori T del II anno (prof Neri e Mattoccia)
Arrivederci al corso di Calcolatori T del II anno (sapendo perfettamente le reti logiche helliphellip)
64
Barrel shifter
6565
66
Simulazione timing
67
bull Utilizzando il sistema Altera progettare un orologio con secondi minuti ora partendo da un oscillatore a quarzo con frequenza 500 KHz
bull E se si volesse proseguire e realizzare anche un datario (giorno mese e anno )
bull Come potrebbe essere integrato con una sveglia Si ricordi che lrsquoorologio deve essere anche essere ldquopresettatordquo
bull Quali circuiti utilizzare per la visualizzazione
68
EPROM
X0nZ0m
y0kY0k
Clock
D0kQ0k
FFD0k
CK D0kQ0k CK
Reti sincrone con EPROM
Al posto delle EPROM si utilizzano ora dei PLA ovvero dispositivi nei quali si nei quali le funzioni combinatorie sono ottimizzate ma il principio egrave assolutamente il medesimo
69
Progettare con Altera una rete logica sincrona che utilizzando registri 374 ALU 74181 un contatore e altri dispositivi ritenuti necessari permetta di eseguire in sequenza la somma di due dati di 4 bit senza segno ingresso esegua il complemento a 2 inverta la parte bassa con la parte alta del risultato e infine moltiplichi il tutto logicamente per 2
La soluzione egrave sempre decomponibile in tre sottosistemi il controllo con la sua decodifica (unitagrave di controllo) il percorso dei dati con le unitagrave che li trasformano (datapath) e i registri di deposito e di ingresso dei dati
Questa egrave la struttura base di qualunque unitagrave centrale di qualunque computer
La differenza consiste solo nel fatto che anzicheacute avere una sequenza fissa di operazioni ne viene generata una volta a volta che dipende appunto dalla istruzione che deve essere eseguita Come si vedragrave approfonditamente nel corso di Calcolatori T del II anno (prof Neri e Mattoccia)
Arrivederci al corso di Calcolatori T del II anno (sapendo perfettamente le reti logiche helliphellip)
6565
66
Simulazione timing
67
bull Utilizzando il sistema Altera progettare un orologio con secondi minuti ora partendo da un oscillatore a quarzo con frequenza 500 KHz
bull E se si volesse proseguire e realizzare anche un datario (giorno mese e anno )
bull Come potrebbe essere integrato con una sveglia Si ricordi che lrsquoorologio deve essere anche essere ldquopresettatordquo
bull Quali circuiti utilizzare per la visualizzazione
68
EPROM
X0nZ0m
y0kY0k
Clock
D0kQ0k
FFD0k
CK D0kQ0k CK
Reti sincrone con EPROM
Al posto delle EPROM si utilizzano ora dei PLA ovvero dispositivi nei quali si nei quali le funzioni combinatorie sono ottimizzate ma il principio egrave assolutamente il medesimo
69
Progettare con Altera una rete logica sincrona che utilizzando registri 374 ALU 74181 un contatore e altri dispositivi ritenuti necessari permetta di eseguire in sequenza la somma di due dati di 4 bit senza segno ingresso esegua il complemento a 2 inverta la parte bassa con la parte alta del risultato e infine moltiplichi il tutto logicamente per 2
La soluzione egrave sempre decomponibile in tre sottosistemi il controllo con la sua decodifica (unitagrave di controllo) il percorso dei dati con le unitagrave che li trasformano (datapath) e i registri di deposito e di ingresso dei dati
Questa egrave la struttura base di qualunque unitagrave centrale di qualunque computer
La differenza consiste solo nel fatto che anzicheacute avere una sequenza fissa di operazioni ne viene generata una volta a volta che dipende appunto dalla istruzione che deve essere eseguita Come si vedragrave approfonditamente nel corso di Calcolatori T del II anno (prof Neri e Mattoccia)
Arrivederci al corso di Calcolatori T del II anno (sapendo perfettamente le reti logiche helliphellip)
66
Simulazione timing
67
bull Utilizzando il sistema Altera progettare un orologio con secondi minuti ora partendo da un oscillatore a quarzo con frequenza 500 KHz
bull E se si volesse proseguire e realizzare anche un datario (giorno mese e anno )
bull Come potrebbe essere integrato con una sveglia Si ricordi che lrsquoorologio deve essere anche essere ldquopresettatordquo
bull Quali circuiti utilizzare per la visualizzazione
68
EPROM
X0nZ0m
y0kY0k
Clock
D0kQ0k
FFD0k
CK D0kQ0k CK
Reti sincrone con EPROM
Al posto delle EPROM si utilizzano ora dei PLA ovvero dispositivi nei quali si nei quali le funzioni combinatorie sono ottimizzate ma il principio egrave assolutamente il medesimo
69
Progettare con Altera una rete logica sincrona che utilizzando registri 374 ALU 74181 un contatore e altri dispositivi ritenuti necessari permetta di eseguire in sequenza la somma di due dati di 4 bit senza segno ingresso esegua il complemento a 2 inverta la parte bassa con la parte alta del risultato e infine moltiplichi il tutto logicamente per 2
La soluzione egrave sempre decomponibile in tre sottosistemi il controllo con la sua decodifica (unitagrave di controllo) il percorso dei dati con le unitagrave che li trasformano (datapath) e i registri di deposito e di ingresso dei dati
Questa egrave la struttura base di qualunque unitagrave centrale di qualunque computer
La differenza consiste solo nel fatto che anzicheacute avere una sequenza fissa di operazioni ne viene generata una volta a volta che dipende appunto dalla istruzione che deve essere eseguita Come si vedragrave approfonditamente nel corso di Calcolatori T del II anno (prof Neri e Mattoccia)
Arrivederci al corso di Calcolatori T del II anno (sapendo perfettamente le reti logiche helliphellip)
67
bull Utilizzando il sistema Altera progettare un orologio con secondi minuti ora partendo da un oscillatore a quarzo con frequenza 500 KHz
bull E se si volesse proseguire e realizzare anche un datario (giorno mese e anno )
bull Come potrebbe essere integrato con una sveglia Si ricordi che lrsquoorologio deve essere anche essere ldquopresettatordquo
bull Quali circuiti utilizzare per la visualizzazione
68
EPROM
X0nZ0m
y0kY0k
Clock
D0kQ0k
FFD0k
CK D0kQ0k CK
Reti sincrone con EPROM
Al posto delle EPROM si utilizzano ora dei PLA ovvero dispositivi nei quali si nei quali le funzioni combinatorie sono ottimizzate ma il principio egrave assolutamente il medesimo
69
Progettare con Altera una rete logica sincrona che utilizzando registri 374 ALU 74181 un contatore e altri dispositivi ritenuti necessari permetta di eseguire in sequenza la somma di due dati di 4 bit senza segno ingresso esegua il complemento a 2 inverta la parte bassa con la parte alta del risultato e infine moltiplichi il tutto logicamente per 2
La soluzione egrave sempre decomponibile in tre sottosistemi il controllo con la sua decodifica (unitagrave di controllo) il percorso dei dati con le unitagrave che li trasformano (datapath) e i registri di deposito e di ingresso dei dati
Questa egrave la struttura base di qualunque unitagrave centrale di qualunque computer
La differenza consiste solo nel fatto che anzicheacute avere una sequenza fissa di operazioni ne viene generata una volta a volta che dipende appunto dalla istruzione che deve essere eseguita Come si vedragrave approfonditamente nel corso di Calcolatori T del II anno (prof Neri e Mattoccia)
Arrivederci al corso di Calcolatori T del II anno (sapendo perfettamente le reti logiche helliphellip)
68
EPROM
X0nZ0m
y0kY0k
Clock
D0kQ0k
FFD0k
CK D0kQ0k CK
Reti sincrone con EPROM
Al posto delle EPROM si utilizzano ora dei PLA ovvero dispositivi nei quali si nei quali le funzioni combinatorie sono ottimizzate ma il principio egrave assolutamente il medesimo
69
Progettare con Altera una rete logica sincrona che utilizzando registri 374 ALU 74181 un contatore e altri dispositivi ritenuti necessari permetta di eseguire in sequenza la somma di due dati di 4 bit senza segno ingresso esegua il complemento a 2 inverta la parte bassa con la parte alta del risultato e infine moltiplichi il tutto logicamente per 2
La soluzione egrave sempre decomponibile in tre sottosistemi il controllo con la sua decodifica (unitagrave di controllo) il percorso dei dati con le unitagrave che li trasformano (datapath) e i registri di deposito e di ingresso dei dati
Questa egrave la struttura base di qualunque unitagrave centrale di qualunque computer
La differenza consiste solo nel fatto che anzicheacute avere una sequenza fissa di operazioni ne viene generata una volta a volta che dipende appunto dalla istruzione che deve essere eseguita Come si vedragrave approfonditamente nel corso di Calcolatori T del II anno (prof Neri e Mattoccia)
Arrivederci al corso di Calcolatori T del II anno (sapendo perfettamente le reti logiche helliphellip)
69
Progettare con Altera una rete logica sincrona che utilizzando registri 374 ALU 74181 un contatore e altri dispositivi ritenuti necessari permetta di eseguire in sequenza la somma di due dati di 4 bit senza segno ingresso esegua il complemento a 2 inverta la parte bassa con la parte alta del risultato e infine moltiplichi il tutto logicamente per 2
La soluzione egrave sempre decomponibile in tre sottosistemi il controllo con la sua decodifica (unitagrave di controllo) il percorso dei dati con le unitagrave che li trasformano (datapath) e i registri di deposito e di ingresso dei dati
Questa egrave la struttura base di qualunque unitagrave centrale di qualunque computer
La differenza consiste solo nel fatto che anzicheacute avere una sequenza fissa di operazioni ne viene generata una volta a volta che dipende appunto dalla istruzione che deve essere eseguita Come si vedragrave approfonditamente nel corso di Calcolatori T del II anno (prof Neri e Mattoccia)
Arrivederci al corso di Calcolatori T del II anno (sapendo perfettamente le reti logiche helliphellip)