Sintesi delle reti sequenziali - riconoscitore di sequenza e codifica degli stati
In questa pagina 7
La sintesi è il progetto di una rete sequenziale sincrona a partire da una descrizione a parole. È l'inverso dell'analisi (Analisi delle reti sequenziali - tabella e diagramma degli stati, Mealy e MooreAnalizzare una rete sequenziale sincrona significa ricavare, dal circuito, le equazioni di ingresso dei flip-flop (stato futuro) e dell'uscita, la tabella degli stati ($2^{m+n}$ righe per $m$ FF e $n$ ingressi), il diagramma degli stati (cerchi = stati, frecce = transizioni con ingresso/uscita) e la simulazione temporale. Mealy: uscita funzione di stato e ingresso (scritta sulle frecce, può cambiare tra due fronti di clock); Moore: uscita funzione del solo stato (scritta nel cerchio, cambia solo al fronte). Due stati sono equivalenti se danno le stesse uscite e portano a stati equivalenti: si fondono per ridurre i FF.Analisi delle reti sequenziali - tabella e diagramma degli stati, Mealy e Moore →) e il passo più difficile è il primo: tradurre le specifiche in un diagramma degli stati.
Procedura
- Ottenere le specifiche (ingressi, uscite, comportamento, stato iniziale).
- Disegnare il diagramma degli stati.
- Costruire la tabella degli stati e delle uscite, riducendo gli stati equivalenti.
- Assegnare una codifica binaria a ogni stato.
- Scegliere il tipo di flip-flop (qui D positive-edge-triggered).
- Ricavare le equazioni di ingresso dei flip-flop dagli stati futuri della tabella.
- Ricavare le equazioni delle uscite.
- Minimizzare le equazioni (mappe di Karnaugh, Mappe di Karnaugh - implicanti e copertura minimaLa mappa di Karnaugh è la tabella di verità disposta in una griglia con righe e colonne in codice Gray, così che celle adiacenti (anche tra bordi opposti) differiscano in una sola variabile. Si raggruppano gli 1 in rettangoli di $2^k$ celle: ogni gruppo elimina $k$ variabili e dà un prodotto. Implicante primo = gruppo massimo; essenziale = unico a coprire un mintermine; la copertura minima contiene tutti gli essenziali più il minimo di altri primi (può non essere unica). Efficace fino a 4 variabili.Mappe di Karnaugh - implicanti e copertura minima →).
- Disegnare il circuito e verificarlo con diagramma temporale e transizioni.
Una volta fissata la codifica, il progetto si riduce a due reti combinatorie: una per lo stato futuro, una per l'uscita. Per un D flip-flop lo stato futuro è direttamente l'ingresso .
Il diagramma degli stati
Non esiste un algoritmo: servono pratica e attenzione. Lo stato è la sintesi della storia pregressa che serve a decidere il comportamento futuro: dipende dalla sequenza degli ingressi ricevuti. Conviene descrivere ogni stato a parole, in modo preciso.
Esempi di descrizioni di stato.
- "Il sistema è in se ha ricevuto per gli ultimi tre fronti di clock consecutivi": vi si trova dopo o , non dopo o .
- "Il sistema è in se ha ricevuto agli ingressi , nell'ordine, le combinazioni (ciascuna ripetuta quante volte si vuole) con come ultima".
Quanti stati. Ogni transizione potrebbe creare uno stato nuovo; conviene riusare gli stati esistenti quando la loro descrizione vale ancora. Se significa "gli ultimi tre ingressi sono stati " e si riceve ancora (sequenza ) si può restare in , perché non ci sono vincoli sul numero massimo di 1. Si cerca il numero minimo di stati: una buona definizione degli stati lo rende evidente.
Reset. Un sistema sequenziale all'accensione si trova in uno stato indefinito. Prima di operare serve uno stato iniziale noto, imposto da un segnale di reset. Il reset sincrono richiede un fronte di clock per avere effetto: si realizza con una AND in ingresso a ogni D (il reset porta a 0 tutti i flip-flop). Il reset asincrono agisce subito sul flip-flop (VHDL - latch, flip-flop e reset sincrono e asincronoIn VHDL un elemento di memoria si descrive con un process il cui ramo non assegna sempre il segnale: latch D = process(D,C) con if C='1' then Q<=D; flip-flop positive-edge-triggered = process(CLK) con if CLK'event and CLK='1'. Reset asincrono: RST nella sensitivity list e testato per primo (if RST='1' ... elsif fronte); reset sincrono: solo CLK in lista e RST testato dentro al ramo del fronte (serve un fronte per averne effetto). Il testbench di un circuito sincrono ha un process che genera il clock e uno che applica gli ingressi lontano dal fronte attivo.VHDL - latch, flip-flop e reset sincrono e asincrono →). Il reset può anche servire come uscita da uno stato di errore (watchdog).
Riconoscitore di sequenza
Un riconoscitore di sequenza rivela che una certa sequenza è comparsa in ingresso, indipendentemente da ciò che è successo prima. Esempio: ingresso , uscita ; riconoscere (le sequenze possono sovrapporsi); quando si è presentata la sequenza e ; altrimenti.
Passo 1: Mealy o Moore? L'uscita dipende dallo stato (aver visto ) e dall'ingresso (): con Mealy si segnala il riconoscimento nell'istante dell'ultimo bit, senza aspettare un ciclo. È più conveniente (Moore è possibile, con uno stato in più).
Passo 2: stati. Si parte dallo stato iniziale ("nessun simbolo riconosciuto") e si aggiungono stati lungo la sequenza giusta:
- : riconosciuto il primo bit ();
- : riconosciuti i primi due ();
- : riconosciuti i primi tre ();
- da con : sequenza completa, .
Poi si completano tutte le altre transizioni, chiedendosi dove porta ogni ingresso sbagliato, riusando la più lunga parte finale della sequenza già riconosciuta (la regola della sovrapposizione):
- , : resta in ;
- (), : ricevuto , nessun prefisso utile ;
- (), : ricevuto , restano gli ultimi ;
- (), : ricevuto , nessun prefisso ;
- , (sequenza riconosciuta, ): l'ultimo può essere l'inizio di una nuova sequenza .
Tabella degli stati e delle uscite (stato futuro / uscita ):
| stato | ||
|---|---|---|
(8 combinazioni stato-ingresso. Il reset porta in .)
Codifica degli stati
Per rappresentare stati servono bit (). Le scelte possibili sono molte; meno bit (meno flip-flop) non vuol dire sempre costo minore: conta anche la rete combinatoria. L'ottimizzazione della codifica è un problema complesso, risolto con metodi euristici. Si confrontano due codifiche.
- Codice Gray: numero minimo di bit; facilita il riempimento delle mappe di Karnaugh. .
- Codifica 1-hot: un flip-flop per stato, un solo 1 nella codifica; più FF ma di solito logica più semplice, perché la logica per entrare in ogni stato è indipendente dalle altre: .
Gray (2 flip-flop )
Dalla tabella con le codifiche, per ogni bit di stato futuro si riempie una mappa nelle variabili .
| stato futuro | |||
|---|---|---|---|
| 00 () | 0 | 00 | 0 |
| 00 | 1 | 01 | 0 |
| 01 () | 0 | 00 | 0 |
| 01 | 1 | 11 | 0 |
| 11 () | 0 | 10 | 0 |
| 11 | 1 | 11 | 0 |
| 10 () | 0 | 00 | 0 |
| 10 | 1 | 01 | 1 |
- per : ;
- per , cioè esattamente per : ;
- solo per : .
Costo (numero di ingressi delle porte, senza contare gli inverter sugli ingressi): : 2 AND a 2 ingressi più OR a 2 ; : nessuna porta; : AND a 3 ingressi . Rete combinatoria ; due flip-flop (un D flip-flop PET costa ingressi) ; totale .
1-hot (4 flip-flop )
Si legge direttamente la tabella: si raggiunge da con ; da con ; da con ; da con . Costo della rete combinatoria (senza l'inverter di ); quattro flip-flop ; totale . (Il valore esatto dipende dalla convenzione di conteggio degli inverter, ma la conclusione non cambia.) Il reset deve poi mettere a 1 il solo , più complesso che azzerare tutti i bit.
Conclusione: con la codifica Gray si spende circa la metà; la 1-hot può però dare un progetto più facile da scrivere, più affidabile e a volte più veloce.
Entrambe le realizzazioni riproducono la tabella per tutte le combinazioni stato-ingresso (controllo fatto una per una).
Verifica
Si applicano ingressi diversi e si controlla che a ogni fronte il circuito faccia le transizioni previste, partendo da un reset. Per circuiti piccoli si percorrono tutte le combinazioni stato-ingresso (qui 8), il che richiede più transizioni, perché bisogna ripassare più volte sugli stessi stati. Una sequenza di ingresso che le copre tutte, dopo il reset in : produce gli stati e l'uscita solo all'ingresso di posizione 6 (l'ultimo bit di nella sottosequenza ). Con ingresso l'uscita vale in tre punti (posizioni 5, 8, 13), anche quando le sequenze si sovrappongono. Per circuiti più grandi non si possono provare tutte le sequenze: si scelgono vettori di test significativi (la verifica è un'attività molto complessa che qui non si affronta).
Versione di Moore
Con Moore l'uscita sta nello stato, quindi serve uno stato in più che significhi "riconosciuto": (nessun prefisso), (), (), (), (, uscita 1). Transizioni (ingresso / ingresso ):
| stato (uscita) | ||
|---|---|---|
| (0) | ||
| (0) | ||
| (0) | ||
| (0) | ||
| (1) |
Da con si va in : l'ultima parte della sequenza ricevuta () termina con , che è il prefisso riconosciuto da . L'uscita compare un ciclo dopo l'ultimo bit (appena lo stato diventa ), mentre nella macchina di Mealy compare nell'istante dell'ultimo bit.
Errori comuni
- Dimenticare di completare tutte le transizioni (per ogni stato, ogni valore dell'ingresso).
- Tornare sempre allo stato iniziale dopo un errore: se la sequenza ammette sovrapposizioni si deve tornare al prefisso più lungo ancora valido.
- Usare Moore e aspettarsi l'uscita nello stesso ciclo di Mealy.
- Scegliere la codifica solo sul numero di FF: conta anche la logica combinatoria.
- Non prevedere lo stato iniziale/reset.
Versione ripasso
- Passi: specifiche diagramma tabella (riduzione) codifica FF D PET equazioni dei e delle uscite minimizzazione circuito e verifica. Stato = riassunto utile della storia; riusare gli stati; reset (sincrono = AND sui ).
- Riconoscitore 1101 (Mealy, sovrapposto): ; : ; : ; : ; : , con . Tabella: , , , .
- Codifica: . Gray : , , ; costo . 1-hot (4 FF): , , , , ; costo .
- Verifica: sequenza percorre tutte le 8 coppie stato-ingresso; solo alla posizione 6.
- Moore: 5 stati, uscita un ciclo dopo.
- Errori: transizioni mancanti; ritorno al solo stato iniziale; costo valutato sui soli FF (Reti sequenziali e automi a stati finitiModello di una rete sequenziale sincrona (stato in flip-flop, logica di stato prossimo e di uscita); automi di Moore e di Mealy; procedimento di sintesi con esempio svolto di un riconoscitore della sequenza 11.Reti sequenziali e automi a stati finiti →).
Esercizi su questo argomento
- Esercizio 2 · macchina del caffè come macchina a stati finiti (tema d'esame giugno 2022)
- Esercizio 5 · cancello automatico (tema d'esame luglio 2022)
- Esercizio 8 · semaforo di un passaggio a livello (tema d'esame settembre 2022)
- Esercizio 11 · dispenser automatico di disinfettante (tema d'esame febbraio 2023)
- Esercizio 14 · circuito sequenziale di Moore con codifica Gray (tema d'esame settembre 2025)
- Esercizio 17 · riconoscitore della sequenza 1001 di Mealy e codifica 1-hot (tema d'esame giugno 2026)
- Esercizio 22 · quiz su latch, flip-flop, temporizzazione e macchine a stati (temi d'esame 2022-2026)
Teoria collegata
- Analisi delle reti sequenziali - tabella e diagramma degli stati, Mealy e Moore
- Datapath e unità di controllo - un sistema digitale non programmabile
- Decoder, encoder e priority encoder
- Verificare reti logiche e automi con Python
- VHDL - latch, flip-flop e reset sincrono e asincrono
- VHDL - macchine a stati finiti e testbench sequenziale