Circuito sequenziali

203
1 Circuito sequenziali L’output dipende dall’input corrente e dalla storia passata degli input Lo “stato” racchiude tutte le informazioni sul passato necessarie per predire l’output corrente basato sull’input corrente Variabili di stato, uno o più bit di informazione Esempio di circuito sequenziale: il contatore Le variabili di stato sono i bit del conteggio il conteggio definisce lo stato Ad un certo istante lo stato (conteggio) dipende dalla storia passata

description

Circuito sequenziali. L’output dipende dall’input corrente e dalla storia passata degli input. Lo “ stato ” racchiude tutte le informazioni sul passato necessarie per predire l’output corrente basato sull’input corrente. Variabili di stato , uno o più bit di informazione. - PowerPoint PPT Presentation

Transcript of Circuito sequenziali

Page 1: Circuito sequenziali

1

Circuito sequenziali

L’output dipende dall’input corrente e dalla storia passata degli input

Lo “stato” racchiude tutte le informazioni sul passato necessarie per predire l’output corrente basato sull’input corrente

Variabili di stato, uno o più bit di informazione

Esempio di circuito sequenziale: il contatore

Le variabili di stato sono i bit del conteggio il conteggio definisce lo stato

Ad un certo istante lo stato (conteggio) dipende dalla storia passata

Page 2: Circuito sequenziali

2

Page 3: Circuito sequenziali

3

Descrizione dei circuiti sequenziali: tavola degli stati

Per ciascuno stato corrente, specifica gli stati successivi in funzione degli input

Per ciascuno stato corrente, specifica gli output in funzione degli input

Esempio: contatore a 3 bit

Q2Q1Q0 Q2*Q1*Q0*

0 0 0 0 0 1 0 0 1 0 1 00 1 0 0 1 10 1 1 1 0 01 0 0 1 0 11 0 1 1 1 01 1 0 1 1 11 1 1 0 0 0

Stato corrente Stato successivo

Notazione: Q* denota i bit dello stato successivo

N.B.: questo circuito sequenziale non ha input (oltre clock e reset)

Page 4: Circuito sequenziali

4

Descrizione dei circuiti sequenziali: tavola degli stati

Contatore a 2 bit con enable: il conteggio (stato) cambia solo se il segnale di enable è 1

Q1Q0 EN Q1*Q0*

0 0 0 0 0 0 0 1 0 1 0 1 0 0 1 0 1 1 1 0 1 0 0 1 01 0 1 1 11 1 0 1 11 1 1 0 0

Stato corrente Stato successivo

input

Page 5: Circuito sequenziali

5

Circuito sequenziale con input: contatore con enable

Page 6: Circuito sequenziali

6

Circuito sequenziale con output: segnale che ci dice quando il contatore ha raggiunto il conteggio massimo

Page 7: Circuito sequenziali

7

Descrizione dei circuiti sequenziali: diagramma degli stati

Versione grafica della tavola degli stati

S0

S1 S2

S3

S4

S5S6S7

Le frecce indicano la transizione da uno stato (conteggio) al successivo.

Quando si verificano le transizioni?

Page 8: Circuito sequenziali

8

• Fondamentali nei circuiti sequenziali– Le variabili di stato cambiano sui fronti del clock

Segnali di clock

Page 9: Circuito sequenziali

9

Le transizioni si possono verificare solo in corrispondenza dei fronti di salita del segnale di clock

Page 10: Circuito sequenziali

10

Page 11: Circuito sequenziali

11

Segnale sincrono: cambia sempre a un istante fissato un pò dopo il fronte di salita del segnale di clock

Tutti i segnali di input di un circuito sequenziale devono essere sincroni col segnale di clock (altrimenti il circuito può funzionale male)

Page 12: Circuito sequenziali

12

Tutti i segnali di output prodotti da un circuito sequenziali sono sincroni col segnale di clock

Page 13: Circuito sequenziali

13

Page 14: Circuito sequenziali

14

Page 15: Circuito sequenziali

15Può essere mandato in input al contatore

Page 16: Circuito sequenziali

16

Macchine a stati e circuiti digitali sincroni

Lo scopo di questa parte del corso è l’analisi dei circuiti sequenziali più importanti: le macchine a stati

Macchine a stati: controllano tutti gli altri elementi di circuito e coordinano lo svolgimento nel tempo di tutti processi/operazioni

Poichè gli stati cambiano solo su ogni fronte del clock, in un circuito digitale sincrono qualunque cambiamento non può avvenire a un istante qualsiasi

Risoluzione temporale determinata dal periodo del clock determina la massima velocità del circuito

Page 17: Circuito sequenziali

17

• Il circuito sequenziale più semplice• Due stati

– Una variabile di stato, diciamo Q

LOW HIGH

HIGH LOW

Elemento bistabile

Page 18: Circuito sequenziali

18

– Assumiamo soglie CMOS, 5V rail– Il centro teorico della soglia è 2.5 V

Analisi analogica

Page 19: Circuito sequenziali

19

• La metastabilità è presente in ogni circuito bistabile

• Due punti stabili, un punto metastabile

Stati stabili e metastabili

Page 20: Circuito sequenziali

20

Page 21: Circuito sequenziali

21

Page 22: Circuito sequenziali

22

2.5 V 2.5 V

2.5 V 2.5 V

Analisi analogica

– Assumiamo soglie CMOS, 5V rail– Il centro teorico della soglia è 2.5 V

Page 23: Circuito sequenziali

23

2.5 V

2.5 V 2.5 V

2.0 V

2.0 V 4.8 V

2.5 V2.51 V4.8 V 0.0 V

0.0 V 5.0 V

Analisi analogica

– Assumiamo soglie CMOS, 5V rail– Il centro teorico della soglia è 2.5 V

Page 24: Circuito sequenziali

24

Un altro sguardo alla metastabilità

Page 25: Circuito sequenziali

25

– Vi sono soggetti tutti i sistemi reali• I problemi sono causati dagli “input asincroni” che non soddisfano

i tempi di setup e hold dei flip-flop

– Problema severo in sistemi ad alta velocità poichè i periodi di clock sono così brevi che il “tempo di risoluzione della metastabilità” può essere più lungo di un ciclo di clock.

– Molti progettisti, prodotti e compagnie sono state rovinati da questo fenomeno.

Perchè tutta questa attenzione sulla metastabilità?

Page 26: Circuito sequenziali

26

• Come controllarlo?– Input di controllo

• Latch S-R

Latch S-R: bistabile con input di controllo

Page 27: Circuito sequenziali

27

QNQ

SR

Se S=0 e R=0, quali sono gli stati stabili di questo circuito?

(i) Assumiamo QN=0;0

0

0

QN=0 e Q=1 è stabile1

Latch Set-Reset: condizione hold

Page 28: Circuito sequenziali

28

QNQ

SR

se S=0 e R=0, quali sono gli stati stabili di questo circuito?

(i) Assumiamo QN=0;0

0

1

(ii) Assumiamo QN=1;

QN=0 e Q=1 è stabile0

QN=1 e Q=0 è stabile

Latch Set-Reset: condizione hold

Condizione hold: vengono mantenuti i valori presenti precedentemente

Page 29: Circuito sequenziali

29

QNQ

SR

Se lo stato è QN=1 e Q=0, e l’input S cambia a 1, cosa accade?

00

10

1

01 Il nuovo stato stabile è

QN=0 e Q=1

Cosa accade se S cambia a zero ora?

0

Lo stato non cambia!

Latch Set-Reset: condizione set

Condizione S(et): Q viene “forzato” a 1

Page 30: Circuito sequenziali

30

QNQ

SR

Se lo stato è QN=0 e Q=1,E l’input R è cambiato a 1, cosa accade?

00

01

1

10 Il nuovo stato stabile è

QN=1 and Q=0

Cosa accade se R cambia a zero ora?

0

Lo stato non cambia!

Latch Set-Reset: condizione reset

Questa è la condizione R(eset): Q viene “forzato” a 0

Page 31: Circuito sequenziali

31

Riassumendo:

- se S cambia a 1 per un breve periodo di tempo, il latch va nello stato QN=0, Q=1;

- Se R cambia a 1 per un breve periodo di tempo, il latch va nello stato QN=1, Q=0;

consideriamo Q l’output del latch,Per cui S è l’input “Set”, mentre R è l’input “Reset”.

Cosa accade se R e S sono 1 contemporaneamente?

Latch Set-Reset

Page 32: Circuito sequenziali

32

QNQ

SR

Assumiamo che QN=0, Q=1inizialmente e che R ed Sdivengano 1.

00

01

11

0 Il nuovo stato stabile èQN=0 e Q=0

Ma questo non è più un latch perchè QN non è più il complemento di Q!

S=1 e R=1 non è permesso.

Latch Set-Reset: input non permessi

Page 33: Circuito sequenziali

33

Si può avere metastabilitàSe S e R sono deasseritisimultaneamente.

(provate in Quartus)

Latch Set-Reset: diagrammi temporali

Page 34: Circuito sequenziali

34

• Ritardo di propagazione• Minima larghezza dell’impulso

Latch Set-Reset: parametri temporali

Page 35: Circuito sequenziali

35

Latch Set-Reset: tavola della transizione degli stati

Una tavola delle transizioni degli stati è un modo alternativo di illustrare il funzionamento

Una tavola delle transizioni degli stati può essere espressa anche in forma di diagramma di stati.

S(t) R(t) Q(t) Q(t+)0 0 0 00 0 1 10 1 0 00 1 1 01 0 0 11 0 1 11 1 0 -1 1 1 -

+

Page 36: Circuito sequenziali

36

Latch Set-Reset: diagramma degli stati

Un diagramma degli stati in questo caso ha 2 stati: Q=0 e Q=1

Il diagramma degli stati mostra le condizioni di input richieste per la transizione fra gli stati. In questo caso vediamo che ci sono 4 possibili transizioni.

Consideriamole una per volta.

Page 37: Circuito sequenziali

37

Condizione di hold

Page 38: Circuito sequenziali

38

S=1, R=0

Condizione di set (se inizialmente il circuito è nello stato Q=0)

Page 39: Circuito sequenziali

39

S=0, R=1Condizione di reset (se inizialmente il circuito è nello stato Q=1)

Page 40: Circuito sequenziali

40

S=1, R=0Condizione di set (se inizialmente Q=1)

Page 41: Circuito sequenziali

41

S=0, R=1Condizione di reset (se inizialmente Q=0)

Page 42: Circuito sequenziali

42

Diagramma finale

Page 43: Circuito sequenziali

43

S(t) R(t) Q(t) Q(t+)0 0 0 00 0 1 10 1 0 00 1 1 01 0 0 11 0 1 11 1 0 -1 1 1 -

+

Q=0, Q*=0Dalla tavola vediamo S’R’+S’R=S’

Q=1 Q*=1Dalla tavola vediamoS’R’+SR’=R’

Q=0, Q*=1Dalla tavola vediamo cheSR’

Q=1, Q*=0Dalla tavola vediamo cheS’R

Costruzione del diagramma degli stati a partire dalla tavola delle transizioni

Page 44: Circuito sequenziali

44

S’

SR’

R’

S’R

Page 45: Circuito sequenziali

45

Q=0, Q*=0Dalla tavola vediamo S’R’+S’R+SR=S’R’+R=S’+R

Q=1 Q*=1Dalla tavola vediamoS’R’+SR’=R’

Q=0, Q*=1Dalla tavola vediamo cheSR’

Q=1, Q*=0Dalla tavola vediamo cheS’R+SR=R

Se includiamo anche le condizioni illegali

S(t) R(t) Q(t) Q(t+)0 0 0 00 0 1 10 1 0 00 1 1 01 0 0 11 0 1 11 1 0 -1 1 1 -

+

00

Page 46: Circuito sequenziali

46

S’+R

SR’

R’

R

Page 47: Circuito sequenziali

47

Latch Set-Reset: simboli

Page 48: Circuito sequenziali

48

Latch Set-Reset utilizzando gate NAND

Page 49: Circuito sequenziali

49

Latch con gate NOR

Page 50: Circuito sequenziali

50

Page 51: Circuito sequenziali

51

Clock e circuiti sincroni

Nel caso del latch RS appena descritto, vediamo che i cambiamenti dello stato di output si vericano direttamente in risposta a cambiamenti degli input.

Questo funzionamento è detto asincrono.

Tuttavia, abbiamo visto che virtualmente tutti i circuiti sequenziali attualmente si basano sulla nozione di funzionamento sincrono.

L’output di un circuito sequenziale è vincolato a cambiare solo ad un istante specificato da un segnale di abilitazione globale.

Questo segnale è generalmente il clock del sistema.

Page 52: Circuito sequenziali

52

Latch D trasparente

Modifichiamo adesso il latch RS in modo tale che il suo stato di output possa cambiare solo quando un segnale di enable valido (che potrebbe essere il clock di sistema) è presente.

Ciò è ottenuto introducendo una coppia di gate AND in cascata con gli input R e S che sono controllati da un input addizionale noto come input di enable (EN).

Page 53: Circuito sequenziali

53

Latch D trasparente

La funzione complemento assicura che R e S non possono essere mai 0 contemporaneamente

Dalla tavola della verità di un AND: - se uno degli input, diciamo a è 0, l’output è sempre 0.

- L’output segue D se C=1

C D

simbolo

Page 54: Circuito sequenziali

54

Primo stadio

Latch D trasparente: funzionamento del circuito

Assumiamo C=1

Page 55: Circuito sequenziali

55

Page 56: Circuito sequenziali

56

Page 57: Circuito sequenziali

57

Page 58: Circuito sequenziali

58

Perchè si chiama trasparente?

Quando C=1 ogni variazione di D passa a Q instantaneamente (trascurando i ritardi di propagazione) in modo trasparente

E’ preferibile avere un circuito in cui Q cambia solo a un ben determinato istante

Fronte di salita di C

Page 59: Circuito sequenziali

59

Latch D: funzionamento

Page 60: Circuito sequenziali

60

Flip-flop D triggerato sul bordo

Il latch D trasparente è detto triggerato sul livello. Vediamo che presenta un comportamento trasparente se EN=1

E’ spesso più semplice disegnare circuiti sequenziali se gli output cambiamo solo o sui bordi di salita o di discesa del segnale di clock (cioè il segnale di enable)

Possiamo realizzare questo tipo di funzionamento combinando due latch D trasparenti in una configurazione detta master-slave.

Page 61: Circuito sequenziali

61

Flip-flop D triggerato sul bordo master-slave

Page 62: Circuito sequenziali

62

• Ritardo di propagazione (da CLK)• Setup time (D prima di CLK)• Hold time (D dopo CLK)

Flip-flop D: parametri di timing

Page 63: Circuito sequenziali

63

Segnale che va bene perchè rispetta la condizione del tempo di setup

Page 64: Circuito sequenziali

64

Nelle moderne tecnologie il tempo di hold è molto piccolo

Page 65: Circuito sequenziali

65

res

Nome del componente: dff

Forza Q a 1

asincrono

Page 66: Circuito sequenziali

66

Page 67: Circuito sequenziali

67

Flip-flop D triggerati sul bordo reali

La configurazione master-slave è stata oggi superata da nuovi circuiti F-F più semplici da implementare e aventi prestazioni migliori (Non considereremo la realizzazione di tali F-F nel corso).

Nella progettazione di circuiti sincroni è meglio usare dispositivi F-F veramente triggerati sul bordo.

Page 68: Circuito sequenziali

68

Due FF D in cascata

Page 69: Circuito sequenziali

69

n FF D in cascata: registro a scorrimento o shift register

Page 70: Circuito sequenziali

70

Page 71: Circuito sequenziali

71

Page 72: Circuito sequenziali

72

Page 73: Circuito sequenziali

73

Page 74: Circuito sequenziali

74

Problemi: quando comincia la trasmissione? A che istanti RX deve memorizzare i bit?

Page 75: Circuito sequenziali

75

Page 76: Circuito sequenziali

76

Sulla linea di sincronizzazione viene generato un segnale di clock con un numero di fronti pari al numero di bit da trasmettere

Page 77: Circuito sequenziali

77

Page 78: Circuito sequenziali

78

L’estremo ricevente “guarda”, vale a dire campiona, la linea seriale con uno shift register in cui il clock proviene dalla linea di sincronizzazione

Deve campionare sui fronti di discesa quando i bit sono stabili

Quindi il segnale SER_CLK è invertito prima di andare ai FF

Page 79: Circuito sequenziali

79

Page 80: Circuito sequenziali

80

Page 81: Circuito sequenziali

81

SER: ingresso del primo FF Q0: uscita del primo FF

Page 82: Circuito sequenziali

82

Q0: ingresso del secondo FF Q1: uscita del secondo FF

Page 83: Circuito sequenziali

83

Q1: ingresso del terzo FF Q2: uscita del terzo FF

Page 84: Circuito sequenziali

84

Q2: ingresso del quarto FF Q3: uscita del quarto FF

Page 85: Circuito sequenziali

85

Q3: ingresso del quinto FF Q4: uscita del quinto FF

Page 86: Circuito sequenziali

86

Q4: ingresso del sesto FF Q5: uscita del sesto FF

Page 87: Circuito sequenziali

87

Q5: ingresso del settimo FF Q6: uscita del settimo FF

Page 88: Circuito sequenziali

88Q6: ingresso dell’ottavo FF Q7: uscita dell’ottavo FF

Page 89: Circuito sequenziali

89

Dopo l’ultimo fronte di discesa i bit Q0, Q1, ... Non cambiano più e restano stabili

q[7]

q[6]

q[5]

q[4]

q[3]

q[2]

q[1]

q[0]

Q7Q6...Q0 contiene la parola a 8 bit q[7..0] trasmessa

Page 90: Circuito sequenziali

90

Progetto 4: interfaccia tastiera

Page 91: Circuito sequenziali

91

La tastiera PS/2

Il connettore per collegare la tastiera è posto sull’altro lato della scheda

Interfaccia fisica formata da due linee:

KEY_CLK: clock (10-20 kHz) KEY_DATA: dati

Page 92: Circuito sequenziali

92

Le due linee KEY_CLK e KEY_DATA sono collegate direttamente a due pin della FPGA

KEY_CLK pin 113

KEY_DATA pin 112

Page 93: Circuito sequenziali

93

Protocollo

Cosa succede quando schiacciate un tasto?

La tastiera trasmette 11 impulsi di clock lungo la linea KEY_CLK: ci sono 11 fronti di salita e 11 fronti di discesa

La tastiera trasmette 11 bit di dati lungo KEY_DATA sincroni con KEY_CLK: ogni nuovo bit viene messo sul fronte di salita di KEY_CLK

Page 94: Circuito sequenziali

94

Cosa viene trasmesso?

bit Start: sempre 0

8 bit di dati che identificano il tasto schiacciato

Bit di parità dispari che permette di rilevare errori di trasmissione

bit Sop: sempre 1

Page 95: Circuito sequenziali

95Illustration from http://www.beyondlogic.org/keyboard/keybrd.htm

Scan code

Il codice di identificazione del tasto a 8 bit è detto scan code

Viene trasmesso prima il bit meno significativo

Non è il codice ASCII (in un PC il software decodifica lo scan code e lo converte in una mappa di caratteri o gestisce lo Shift, Caps Lock, Control, ...)

Page 96: Circuito sequenziali

96

Alcuni scan code in realtà sono molto più lunghi di 8 bit!

Guardate ad esempio il tasto Break!

Page 97: Circuito sequenziali

97

Lo scan code è generato quando premete un tasto

Quando rilasciate un tasto vengono generati due codici (due sequenze di 11 bit sono trasmesse):

- Prima sequenza: viene trasmesso il codice F0 - Seconda sequenza: viene trasmesso lo scan code del tasto

Se il tasto è tenuto premuto, lo scan code viene ripetuto continuamente

Esempio: - Space bar premuto, viene mandato 29 - Space bar rilasciato, viene mandato F0, 29

Page 98: Circuito sequenziali

98

Funzionamento bidirezionale

Trasmissione:

Da tastiera a host (PC o FPGA) o da host (PC o FPGA) a tastiera tramite la stesse connessioni

Esempio: led verde acceso quando si preme CAPS LOCK

Per trasmettere, l’host mette a zero la linea di dati (qualche volta mette a zero prima la linea di clock)

Quindi la tastiera inizia a generare il clock e l’host manda i dati sincronizzati al clock

In ogni caso, non manderemo dati alla tastiera

Page 99: Circuito sequenziali

99

• Pagine web http://www.beyondlogic.org/keyboard/keybrd.htmhttp://govschl.ndsu.nodak.edu/~achapwes/PICmicro/PS2/ps2.htm

• Scan codeshttp://panda.cs.ndsu.nodak.edu/~achapwes/PICmicro/keyboard/scancodes2.html

referenze

Page 100: Circuito sequenziali

100

Progetto

Conversione seriale-parallelo:

I bit trasmessi lungo la linea seriale dalla tastiera devono essere convertiti in una parola a 11 bit tramite uno shift register

Il componente va posizionato nel foglio principale assieme all’interfaccia del display. Gli otto bit dello scan code devono essere quindi visualizzati sul display come due cifre ciascuna a 4 bit (usando 2 dei 4 array)

Passo 1: Progettazione dell’interfaccia della tastiera

KEY_CLK

KEY_DATA

SCAN_CODE[7..0]

Parity_Error

Componente da disegnare su un foglio dedicato chiamato Keyboard_interface (che verrà poi posizionato nel foglio principale)

Keyboard_interface

Page 101: Circuito sequenziali

101

Determinare le nuove equazioni logiche dei segmenti con le mappe di Karnaugh e ridisegnare seven-seg-decoder

Problema: l’interfaccia del display attualmente visualizza solo i numeri da 0 a 7 (cifre a 3 bit)

Passo 2 L’interfaccia del display deve essere modificata in modo da visualizzare cifre a 4 bit.

Devono essere visualizzati tutti i numeri fino a 15 in caratteri esadecimali

Page 102: Circuito sequenziali

102

Bit di parità

Il bit di parità è 1 se il numero di bit=1 nello scan code è dispari, altrimenti è zero

(E’ calcolato da un circuito nella tastiera prima della trasmissione e trasmesso subito dopo lo scan code)

Sistema per rivelare errori durante la trasmissione. Supponiamo che sia presente rumore che durante la trasmissione cambia un bit (10 o 10 )

L’host dopo la ricezione ricalcola la parità e la confronta col bit di parità trasmesso

Se non coincidono c’è stato un errore (domanda: ciò è sempre corretto?)

Page 103: Circuito sequenziali

103

Circuito per il calcolo della parità

Un circuito per calcolare la parità può essere costruito utilizzando il gate XOR

X Y = XY’ + X’YX Y C0 0 00 1 11 0 11 1 0

Se X=1 OR Y=1, maNon entrambi, allora C=1

A[1]A[0]

P=1 se il numero di bit=1 è dispari

rivelatore di parità per un numero a 2 bit

XY

C

Page 104: Circuito sequenziali

104

Passo 3 costruire un rivelatore di parità utilizzando dei gate XOR per un numero di input a 8 bit in un foglio dedicato (chiamatelo ParityCheck)

Posizionate il componente nel foglio dell’interfaccia della tastiera

Confrontate il bit di parità col bit di parità trasmesso:

Se coincidono: segnale Parity_Error = 0

Se non coincidono: segnale Parity_Error = 1

Nel foglio principale collegate Parity_Error a uno dei pin della FPGA che pilotano i 4 led della scheda

In questo modo un eventuale errore di trasmissione verrà segnalato dall’accensione del led

Page 105: Circuito sequenziali

105

Macchine a stati

Una macchina a stati è un circuito con una memoria interna formata da un insieme di flip-flop D

Il valore della memoria a un dato istante è detto stato

Il numero di bit (n. di flip-flop) determina il numero massimo di stati possibili

Gli stati che la memoria può assumere può essere un sottoinsieme di tutti i possibili stati

FlipFlops

clk

Page 106: Circuito sequenziali

106

Page 107: Circuito sequenziali

107

Page 108: Circuito sequenziali

108

Lo stato di una macchina a stati può cambiare solo poco dopo un fronte di salita del segnale di clock

Page 109: Circuito sequenziali

109

Page 110: Circuito sequenziali

110

Macchine a stati

Il circuito può avere degli input (stimoli)

FlipFlops

clk

Inputs

A ogni fronte di clock, lo stato successivo dipende dallo stato corrente e dagli input

Esempio: contatore a 2 bit con enable (slide successiva)

Page 111: Circuito sequenziali

111

Page 112: Circuito sequenziali

112

Lo stato successivo allo stato 4 dipende dal valore del segnale IN

IN=0 transizione 45 IN=1 transizione 40

Page 113: Circuito sequenziali

113

Page 114: Circuito sequenziali

114

Page 115: Circuito sequenziali

115

Page 116: Circuito sequenziali

116

Macchine a stati

Stato successivo determinato da un circuito combinatorio:

FlipFlops

clk

Next StateCombinatorial

Logic

Ha come input i segnali di input esterni e i segnali di output dei flip flop (stato corrente)

Ha come output i valori degli input D dei flip flop necessari per produrre lo stato successivo

InputsStato corrente

Stato successivo

Page 117: Circuito sequenziali

117

Contatore free running: non ha input

Output: il registro di stato

Contatore a n bit: ha n FF e 2n stati attraverso cui passa nell’ordine 0, 1, 2, ..., 2n-1, 0, 1, ...

Utilizzi:

Generazione di ritardi di una particulare durata

Sequenziatori per la logica di controllo di un processore

Contatore dividi per m (un divisore) come quelli usati in un orologio digitale

Le macchine a stati più semplici: contatori

Page 118: Circuito sequenziali

118

Diagramma temporale di un contatore a 3 bit

Gli input del clock di tutti i FF sono collegati al segnale di clock per cui gli output di tutti i FF cambiano allo stesso tempo, cioè in modo sincrono

0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 conteggio

Page 119: Circuito sequenziali

119

Per un contatore da 0 a 7 sono necessari 3 FF D

Stato corrente

Stato successivo

Secondo passo determinare la logica che dato uno stato produce lo stato successivo

Primo passo costruiamo una tavola in cui per ogni stato mostriamo lo stato successivo

Q2 Q1 Q0 Q2* Q1* Q0*

0 0 0 0 0 1

0 0 1 0 1 0

0 1 0 0 1 1

0 1 1 1 0 0

1 0 0 1 0 1

1 0 1 1 1 0

1 1 0 1 1 1

1 1 1 0 0 0

Page 120: Circuito sequenziali

120

La tavola caratteristica di un FF dà lo stato successivo dell’output, cioè Q*, in termini del suo stato corrente Q e degli input correnti.

equazione caratteristica Q*=D

lo stato di ouput successivo è uguale al valore dell’input corrente

Tavola caratteristica

Q D Q*

Poichè Q* è indipendente da Q, la tavola caratteristica può essere riscritta come

Q*D

Page 121: Circuito sequenziali

121

Tavola di eccitazione

La tavola caratteristica può essere modificata in modo da ottenere la tavola di eccitazione. Questa tavola ci dice il valore di input del FF richiesto per ottenere un particolare stato successivo a partire da un dato stato corrente.

Come per la tavola caratteristica vediamo che D non dipende da Q e D=Q* (questo non è vero per altri FF)

Q Q* D

Page 122: Circuito sequenziali

122

Q2 Q1 Q0 Q2* Q1* Q0*

0 0 0 0 0 1

0 0 1 0 1 0

0 1 0 0 1 1

0 1 1 1 0 0

1 0 0 1 0 1

1 0 1 1 1 0

1 1 0 1 1 1

1 1 1 0 0 0

D0 = Q2’Q1’Q0’+Q2’Q1’Q0+Q2Q1Q0’+ Q2Q1Q0

D1=Q2’Q1’Q0+Q2’Q1Q0+Q2’Q1Q0’+ Q2Q1Q0’

D2=Q2’Q1Q0’+Q2Q1Q0’+Q2Q1Q0+ Q2Q1’Q0

Semplifichiamo queste espressioni

Poichè D=Q*, la tavola degli stati successivi ci dà le equazioni logiche per gli input D che determinano tali stati successivi

Q2 Q1 Q0 Q2* Q1* Q0* D2 D1 D0

0 0 0 0 0 1 0 0 1

0 0 1 0 1 0 0 1 0

0 1 0 0 1 1 0 1 1

0 1 1 1 0 0 1 0 0

1 0 0 1 0 1 1 0 1

1 0 1 1 1 0 1 1 0

1 1 0 1 1 1 1 1 1

1 1 1 0 0 0 0 0 0

Page 123: Circuito sequenziali

123

Page 124: Circuito sequenziali

124

Page 125: Circuito sequenziali

125

Page 126: Circuito sequenziali

126

Page 127: Circuito sequenziali

127

Page 128: Circuito sequenziali

128

Possiamo visualizzare il funzionamento del contatore tramite un diagramma degli stati. Le frecce indicano la transizione da uno stato (conteggio) al successivo che si verifica a ogni ciclo di clock.

Il modulo di un contatore è il numero di stati nel ciclo.

Un contatore con m stati è detto un contatore modulo-m o un Contatore dividi per m.

Sm

S1 S2

S3

S4

S5

Contatori sincroni: diagramma degli stati

Page 129: Circuito sequenziali

129

Una simile procedura può essere usata per disegnare contatori aventi una sequenza di conteggio arbitraria:

Disegnamo un contatore a tre bit avente come sequenza di conteggio il codice Gray

Codice Gray a tre bit:

000001011010110111101100

Codice riflessorispetto a questa lina

Nella transizione da uno stato al successivo solo un bit cambia

Page 130: Circuito sequenziali

130

Q2Q1Q0 Q2*Q1*Q0*0 0 0 0 0 1 0 0 1 0 1 10 1 1 0 1 00 1 0 1 1 01 1 0 1 1 11 1 1 1 0 11 0 1 1 0 01 0 0 0 0 0

D0 = Q2’Q1’Q0’+Q2’Q1’Q0+Q2Q1Q0’+ Q2Q1Q0

D1=Q2’Q1’Q0+Q2’Q1Q0+Q2’Q1Q0’+ Q2Q1Q0’

D2=Q2’Q1Q0’+Q2Q1Q0’+Q2Q1Q0+ Q2Q1’Q0

Semplifichiamo queste espressioni

Page 131: Circuito sequenziali

131

FlipFlops

OutputCombinatorial

Logic

Next StateCombinatorial

Logic

Mealy Machine

Inputs Outputs

FlipFlops

OutputCombinatorial

Logic

Next StateCombinatorial

Logic

Moore Machine

Inputs Outputs

Macchine di Mealy e Moore

Page 132: Circuito sequenziali

132

Macchine di Mealy e Moore a confronto

Gli output delle macchine di Mealy dipendono dalla temporizzazione degli input

Gli output delle macchine di Moore provengono direttamente da FF clockati per cui

- Hanno precise caratteristiche di temporizzazione- Non hanno glitch

Qualunque macchina di Mealy può essere convertita in una macchina di Moore e vice versa, sebbene le loro proprietà di temporizzazione saranno diverse.

Page 133: Circuito sequenziali

133

Contatore a 2 bit con enable

S0S1

S2S3

EN’ EN EN’

EN’EN’

ENEN

EN

Disegnamo un contatore che incrementa solo in presenza di un segnale di enable.

La macchina genera un output Cout=1 quando raggiunge il conteggio massimo.

Cout

Notazione tipica per indicare in quali stati un segnale di output è asserito

Page 134: Circuito sequenziali

134

Q1Q0 EN Q1*Q0* 0 0 0 0 0 0 0 1 0 1 0 1 0 0 1 0 1 1 1 0 1 0 0 1 0 1 0 1 1 1 1 1 0 1 1 1 1 1 0 0

D0 = Q1’Q0’EN+Q1’Q0EN’+Q1Q0’EN+Q1Q0EN’

D1=Q1’Q0EN+Q1Q0’EN’+Q1Q0’EN+ Q1Q0EN

Semplifichiamo queste espressioni

Abbiamo Cout=1 quando la macchina si trova nello stato S3. Cout=Q1Q0

Page 135: Circuito sequenziali

135

Page 136: Circuito sequenziali

136

Page 137: Circuito sequenziali

137

Page 138: Circuito sequenziali

138

Page 139: Circuito sequenziali

139

Progetto in classe: cronometro digitale

Page 140: Circuito sequenziali

140

Per fare una frequenza approssimativamente di un Hz a partire da un clock a 50 MHz bisogna usare un contatore a 25 bit

Page 141: Circuito sequenziali

141

Page 142: Circuito sequenziali

142

Page 143: Circuito sequenziali

143

Page 144: Circuito sequenziali

144

Page 145: Circuito sequenziali

145

Page 146: Circuito sequenziali

146

Page 147: Circuito sequenziali

147

Page 148: Circuito sequenziali

148

Page 149: Circuito sequenziali

149

Completare il diagramma temporale

Page 150: Circuito sequenziali

150

Risposte date (focalizziamo l’attenzione su quando il primo contatore torna a zero e il secondo deve incrementare)

I segnali di input provocano dei cambiamenti nello stato di un circuito sequenziale

Punto importante: i segnali sono sincroni per cui cambiano sempre un pò dopo il bordo di clk

EN1 provoca un cambiamento sul fronte in cui è campionato alto, in questo caso poco prima che torni a zero

Quindi nella seconda possibilità En1 arriverebbe troppo tardi

Lo stato cambierebbe qui con la seconda scelta di EN1

Page 151: Circuito sequenziali

151

Domanda: chi genera il segnale EN1 per il contatore delle decine?

Risposta: il contatore delle unità

=EN1

Page 152: Circuito sequenziali

152

Nella tavola della transizione degli stati aggiungiamo una colonna per l’output Cout

Cout deve essere 1 quando il conteggio è 9

Page 153: Circuito sequenziali

153

Domanda: cosa succede se l’enable per il contatore delle unità viene deasserito quando il conteggio vale nove?

Completare il seguente diagramma temporale:

Page 154: Circuito sequenziali

154

Soluzione:

Il diagramma evidenzia un problema:

Se il contatore delle unità si ferma a nove, tiene abilitato permanentemente il contatore delle decine

Page 155: Circuito sequenziali

155

Domanda: come si risolve questo problema:

Risposta: possiamo mettere in AND Cout=q3q2’q1’q0 col segnale di enable in ingresso:

Counter_mod_9

ENCout=ENq3q2’q1’q0

Page 156: Circuito sequenziali

156

Circuito cronometro free running

Quattro contatori Counter_mod_9: l’enable del primo può vetare i contatori successivi

Page 157: Circuito sequenziali

157

Implementazione di un cronometro con start e stop

Start e stop controllato dai tasti

Ci serve un circuito con input SW0 e SW1 che generi il segnale di enable per il contatore delle unità

Page 158: Circuito sequenziali

158

Descrizione a parole su cosa deve fare questo circuito:

Page 159: Circuito sequenziali

159

Page 160: Circuito sequenziali

160

Un possibile diagramma proposto dagli studenti

Page 161: Circuito sequenziali

161

Un altro possibile diagramma proposto dagli studenti

Page 162: Circuito sequenziali

162

Un’ulteriore discussione fa convergere su questo diagramma

Page 163: Circuito sequenziali

163

Devono essere soddisfatte queste regole:

Dallo stato S0 escono due frecce (quale transizione si verifichi dipende dalla condizione logica dei segnali di input)

start

start’

Page 164: Circuito sequenziali

164

start’

start

Page 165: Circuito sequenziali

165

Page 166: Circuito sequenziali

166

Reset del cronometro: tramite il tasto sw2

Reset asincrono: tuttal la logica resettata da un segnale che è l’OR di SW2 e de segnale di reset di default RES

N.B. I segnali sono attivi bassi:

SW2

res

SW2res

dalla legge di De Morgan

Page 167: Circuito sequenziali

167

Sincronizzazione dei segnali di input

START (STOP) è un segnale asincrono

Se arriva entro la finestra del tempo di setup del Flip-Flop del circuito Latch-RS-sincrono, può indurre un comportamento metastabile del FF

Page 168: Circuito sequenziali

168

Page 169: Circuito sequenziali

169

Non risolve completamente il problema della metastabilità: anche il FF sincronizzatore può andare in uno stato metastabile

START_SYNC

START_SYNC Poichè lo stato metastabile corrisponde a uno stato di equilibrio instabile, dopo un certo tempo il FF ritorna sempre a uno stato valido.

Problema se questo tempo è maggiore di Tclk

Tuttavia l’eventuale stato metastabile viene campionato dal FF di Latch-RS-sincrono un ciclo di clock dopo

Page 170: Circuito sequenziali

170

Un sincronizzatore più sicuro è formato da due FF in cascata (in pratica uno shift register)

Page 171: Circuito sequenziali

171

Controller di un semaforoSemaforo: dispositivo con 3 luci che compie un ciclo

Stato “R”

Stato “RA”

Stato “G”

Stato “A”

Abbiamo 4 stati:

Possiamo costruire una macchina a stati che cicla attraverso questi stati come nel caso di un contatore

Page 172: Circuito sequenziali

172

Sulla scheda sono presenti due led verdi, un led giallo e un led verde

Macchina a stati che controlla tre led simulando il comportamento del semaforo

Diagramma degli stati?

Page 173: Circuito sequenziali

173

Primo diagramma proposto dagli studenti

In questo circuito si passa automaticamente da uno stato all’altro ogni ciclo di clock.

Supponiamo che Tclk=1 min la durata delle varie luci è la stessa

Tuttavia, in un semaforo realistico la durata può essere diversa

Page 174: Circuito sequenziali

174

Il circuito deve stare in ciascuno stato un tempo diverso.

Secondo diagramma proposto dagli studenti

In questo circuito posso controllare la transizione col segnale EN

Page 175: Circuito sequenziali

175

Con un solo segnale EN però in ogni caso la durata di tutte le luci è sempre la stessa.

Risolviamo la durata diversa in un secondo momento. Prima domanda:

Chi genera EN?

Page 176: Circuito sequenziali

176

Il segnale EN che fa passare da uno stato all’altro può essere il segnale Cout di un contatore che viene asserito quando questo raggiunge il conteggio massimo

Page 177: Circuito sequenziali

177

In questo esempio il contatore può essere free running

Tuttavia, in altri casi può essere necessario controllare il contatore.

Esempio: supponiamo che sia richiesto che la luce verde sia accesa 5 minuti.

Cout viene generato quando count=5. Dopodichè il contatore va resettato perchè continua a incrementare fino al conteggio massimo (ciò può essere fatto ad esempio nello stato A). Se è free-running, tuttavia dopo il reset riparte da zero e quando torna nello stato V non è garantito che il conteggio sia a zero.

Ci potrebbe quindi essere una situazione del genere

Page 178: Circuito sequenziali

178

Page 179: Circuito sequenziali

179

La macchina a stati controlla il segnale di enable del contatore (CNT_EN)

Page 180: Circuito sequenziali

180

Se CNT_EN viene asserito un ciclo prima che lo stato sia V, il contatore incrementa di una unità e poi il conteggio non cambia

Cout non viene asserito e lo stato V non cambia

Page 181: Circuito sequenziali

181

Anche asserendo CNT_EN solo nel primo ciclo di clock dello stato V non risolve

Page 182: Circuito sequenziali

182

Soluzione: viene asserito CNT_EN per tutto il tempo che la macchina a stati si trova nello stato V

Il contatore comincia a incrementare

Quando COUNT=15 viene asserito Cout

La macchina a stati campiona Cout e quando vede Cout=1 passa allo stato R, mentre il segnale CN_EN viene deasserito

Page 183: Circuito sequenziali

183

Diagramma finale: utilizziamo tre contatori distinti per i tempi di accensione delle tre luci

Page 184: Circuito sequenziali

184

Tavola delle transizioni

Poichè abbiamo tre stati, ci servono due bit. Dobbiamo assegnare un codice a ciascuno stato. Ad esempio:

X: condizione “don’t care”

Page 185: Circuito sequenziali

185

Read-Ony Memory (ROM)

Memoria a “sola lettura”

Page 186: Circuito sequenziali

186

Page 187: Circuito sequenziali

187

• Memoria che contiene programmi–Es. al boot un personal computer carica il

programma da una ROM

• In realtà, una ROM è un circuito combinatorio: –può implementare una qualunque funzione logica–inputs di indirizzo = inputs della funzione–outputs dei dati = outputs della funzione

Perchè le ROM?

Page 188: Circuito sequenziali

188

Esempio

Page 189: Circuito sequenziali

189

Esempio: moltiplicatore 4x4

Page 190: Circuito sequenziali

190

PDP-11 boot ROM(64 words, 1024 diodes)

Struttura interna

Page 191: Circuito sequenziali

191

?

Decodifica bidimensionale

Page 192: Circuito sequenziali

192

Un esempio più grande: ROM 32Kx8

Page 193: Circuito sequenziali

193

• 256K bytes, 1M byte, o più grandi• Utilizzano transistor MOS

Le ROM al giorno d’oggi

Page 194: Circuito sequenziali

194

• Disegni organizzati gerarchicamente• Ciascun elemento del disegno ha:

– Un’interfaccia ben definita– Una precisa specifica del comportamento usando o:

• Una descrizione algoritmica• Una descrizione strutturale dell’hardware

• Modella la concorrenza, la temporizzazione, e il clock:– Gestisce circuiti asincroni e sincroni– I disegni possono essere simulati

VERILOG HDL (Hardware Description Language)

Page 195: Circuito sequenziali

195

Macchina a stati semaforo in verilog

Il blocco costruttivo fondamentale di verilog è il modulo

module semaforo();

Dichiarazione varibili…Funzionalità

endmodule;

Sintassi:

Page 196: Circuito sequenziali

196

macchina a stati semaforo in verilog

module semaforo();

Dichiarazione varibili…Funzionalità

endmodule;

Sintassi:

Cout_V

Cout_A

Cout_R

clkres

module semaforo(res,clk,Cout_R,Cout_A,Cout_V, CNT_EN_V,CNT_EN_A,CNT_EN_R, LED_V,LED_A,LED_R);

Dichiarazione varibili…Funzionalità

endmodule;

Sintassi:

CNT_EN_V

CNT_EN_A

CNT_EN_R

LED_V

LED_A

LED_R

Il blocco costruttivo fondamentale di verilog è il modulo

Page 197: Circuito sequenziali

197

Dichiarazione dei segnali: segnali di input

Cout_V

Cout_A

Cout_R

clkres

module semaforo( res,clk,Cout_V,Cout_A,Cout_R, CNT_EN_V,CNT_EN_A,CNT_EN_R, LED_V,LED_A,LED_R);

Input res, clk, Cout_V, Cout_A, Cout_R;…Funzionalità

endmodule;

Sintassi:

CNT_EN_V

CNT_EN_A

CNT_EN_R

LED_V

LED_A

LED_R

Il blocco costruttivo fondamentale di verilog è il modulo

Page 198: Circuito sequenziali

198

Dichiarazione dei segnali: segnali di output

Cout_V

Cout_A

Cout_R

clkres

module semaforo( res,clk,Cout_V,Cout_A,Cout_R, CNT_EN_V,CNT_EN_A,CNT_EN_R, LED_V,LED_A,LED_R);

input res, clk, Cout_V, Cout_A, Cout_R;output CNT_EN_V,CNT_EN_A,CNT_EN_R,LED_V,LED_A,LED_R;reg CNT_EN_V,CNT_EN_A,CNT_EN_R,LED_V,LED_A,LED_R;

…Funzionalità

endmodule;

CNT_EN_V

CNT_EN_A

CNT_EN_R

LED_V

LED_A

LED_R

Page 199: Circuito sequenziali

199

Definizione degli stati

module semaforo( res,clk,Cout_V,Cout_A,Cout_R, CNT_EN_V,CNT_EN_A,CNT_EN_R, LED_V,LED_A,LED_R);

input res, clk, Cout_V, Cout_A, Cout_R;output CNT_EN_V,CNT_EN_A,CNT_EN_R,LED_V,LED_A,LED_R;reg CNT_EN_V,CNT_EN_A,CNT_EN_R,LED_V,LED_A,LED_R;

reg [1:0] state;parameter Verde = 2'b00;parameter Arancione = 2'b01;parameter Rosso = 2’b11;

Funzionalità

endmodule;

Page 200: Circuito sequenziali

200

Le transizioni degli stati

module semaforo( res,clk,Cout_V,Cout_A,Cout_R, CNT_EN_V,CNT_EN_A,CNT_EN_R, LED_V,LED_A,LED_R);

input res, clk, Cout_V, Cout_A, Cout_R;output CNT_EN_V,CNT_EN_A,CNT_EN_R,LED_V,LED_A,LED_R;reg CNT_EN_V,CNT_EN_A,CNT_EN_R,LED_V,LED_A,LED_R;

reg [1:0] state;parameter Verde = 2'b00;parameter Arancione = 2'b01;parameter Rosso = 2’b11;

always @ (posedge clk or negedge reset) begin if (reset == 0) state = V; else …endendmodule;

Page 201: Circuito sequenziali

201

Statement alwaysalways @(condizione) begin … end

Ogni volta che è soddisfatta la condizione in parentesi, vengono eseguiti tutti gli stament contenuti all’interno del blocco begin-end

Blocco begin-end: analogo a un raggruppamento di istruzioni {} del linguaggio di programmazione C.

state=V è eseguito ogni volta che il segnale res compie una transizione negativa

always @(negedge res) state=V

state=V è eseguito ogni volta che il segnale res compie una transizione negativa

Altrimenti su ogni bordo positivo di clk ...

always @(posedge clk or negedge res) beginIf(reset == 0) state=Velse …

Page 202: Circuito sequenziali

202

always @ (posedge clk or negedge reset) begin if (reset == 0) state = V; else case (state)

Verde: if(Cout_V == 1) state = Arancione; else state = Verde;

Arancone: if(Cout_A == 1) state = Rosso; else state = Arancione; Rosso: if(Cout_R == 1) state = Verde; else state = Rosso; endcaseendendmodule;

Page 203: Circuito sequenziali

203

La definizione dei segnali di output

always @ (state) begin case (state) Verde: begin CNT_EN_V= 1; CNT_EN_A = 0; CNT_EN_R = 0; LED_V= 1; LED_A = 0; LED_R = 0; end

Arancione: begin CNT_EN_V= 0; CNT_EN_A = 1; CNT_EN_R = 0; LED_V= 0; LED_A = 1; LED_R = 0; end

Rosso: begin CNT_EN_V= 0; CNT_EN_A = 0; CNT_EN_R = 1; LED_V= 0; LED_A = 0; LED_R = 1; end endcase end