Esercizi su macchine a stati finiti sincrone.

Pubblicità

GianD95

Nuovo Utente
Messaggi
6
Reazioni
0
Punteggio
19
Salve a tutti, preparando l'esame di architettura degli elaboratori ho notato di avere qualche difficoltà nel capire il ragionamento alla base di questo tipo di esercizi. Gentilmente qualcuno potrebbe spiegarmi in che modo si arriva all'ultimo stato della macchina? Bisogna effettuare operazioni sulla sequenza di bit data dalla traccia?

Allego screenshot dell'esercizio con relativa soluzione.
 

Allegati

  • Screenshot (47).webp
    Screenshot (47).webp
    88.4 KB · Visualizzazioni: 231
  • Screenshot (48).webp
    Screenshot (48).webp
    53.2 KB · Visualizzazioni: 291
Intanto per i modelli ASF di Moore e di Mealy vedi qui:
https://forum.tomshw.it/threads/il-bar-di-lido-the-spam-is-back.298258/post-6700691
Nel nostro caso ci troviamo di fronte ad una macchina di Mealy, in cui l'uscita dipende sia dallo stato che dall'ingresso :sisi:
Nei grafi (detti diagrammi degli stati) ciascuno stato è rappresentato da un nodo e ciascuna transizione da un arco orientato.
Su ogni arco si scrive lo stato dell'ingresso che ha causato la transizione e la conseguente uscita, separati dallo slash (/).
Ad esempio se siamo nello stato S1, in caso di applicazione dell'ingresso 0, la macchina si porta allo stato S2 producendo l'uscita 0, per cui sull'arco che congiunge S1 e S2 verrà rappresentato 0/0 ;)
Ora, supponendo di voler realizzare un automa di Mealy riconoscitore della sequenza 101, ad es., la macchina presenterà un ingresso su cui arriva la sequenza di bit 0 e 1 (ad es. potrebbe essere l'ingresso di clock sincrono con gli ingressi dei Flip-Flop del contatore sequenziale) e un'uscita che assume lo stato logico alto (bit 1) quando in ingresso si presenta la sequenza 101.
Possiamo pensare di utilizzare una macchina con 3 stati S0, S1 e S2 in cui S0 è lo stato in cui non viene riconosciuto niente in ingresso, S1 lo stato in cui la macchina si trova nel momento in cui viene riconosciuta una sequenza di bit 1 e infine S2 lo stato in cui si trova quando viene riconosciuta la sequenza 10.
Cosa succede a questo punto ? :asd:
Se arriva un bit 1, viene riconosciuta la sequenza 101 mentre se arriva un bit 0 non viene riconosciuto nulla.
Ad ogni modo si torna a S0 con uscite, però, diverse, a seconda che sia stata riconosciuta la sequenza o meno ;)
Ti costruisci la tabella degli stati, poi ottimizzi il numero degli stati, li codifichi, fai la tabella delle eccitazioni e infine "sintetizzi" la RC delle funzioni stato futuro e d'uscita :)
A presto :sisi:
 
Spiegato terra terra, abbiamo 4 stati: A,B,C,D,E.
Dobbiamo riuscire a formare la sequenza di bit: 01101.

A:
- Se in ingresso ho 1 non accade nulla e si rimane sempre in A
- Se in ingresso ho 0 si passa allo stato B

B:
- Se in ingresso ho 0 non accade nulla e si rimane sempre in B
- Se in ingresso ho 1 si passa allo stato C

C
- Se in ingresso ho 0 si torna allo stato B
- Se in ingresso ho 1 si passa allo stato D

D:
- Se in ingresso ho 1 si torna allo stato A
- Se in ingresso ho 0 si passa allo stato E

E:
- Se in ingresso ho 1 si passa allo stato C
- Se in ingresso ho 0 si passa allo stato B

In base all''errore' si torna indietro o ci si ferma su uno stato.
 
Spiegato terra terra, abbiamo 4 stati: A,B,C,D,E.
Dobbiamo riuscire a formare la sequenza di bit: 01101.

A:
- Se in ingresso ho 1 non accade nulla e si rimane sempre in A
- Se in ingresso ho 0 si passa allo stato B

B:
- Se in ingresso ho 0 non accade nulla e si rimane sempre in B
- Se in ingresso ho 1 si passa allo stato C

C
- Se in ingresso ho 0 si torna allo stato B
- Se in ingresso ho 1 si passa allo stato D

D:
- Se in ingresso ho 1 si torna allo stato A
- Se in ingresso ho 0 si passa allo stato E

E:
- Se in ingresso ho 1 si passa allo stato C
- Se in ingresso ho 0 si passa allo stato B

In base all''errore' si torna indietro o ci si ferma su uno stato.


Ciao scusa il ritardo, fin qui ci sono anch'io ma quello che non capisco è, perchè dallo stato E si passa allo stato C e non ad A dove solitamente tornano gli 1? Se ho 0 vado in B e anche gli altri 0 vanno lì. Questa cosa della sovrapposizione non mi entra.
 
E' una fsm che da in output 1 se riceve 01101 (ricorda che prima e dopo ci possono essere combinazioni qualsiasi di 0/1). Quando ha ricevuto l'ultimo 1, torna allo stato C perchè potenzialmente potrebbe ricevere come prossimi input ancora 01101, ma 01 li ha già letti (in altri termini, 01101101 che è ancora una stringa accettata). Similmente, se dopo aver letto 0110 riceve uno 0, tornerà a B perchè ricomincerà a contare (quindi 011001101 è ancora una stringa accettata).
 
Scusate se intervengo a muzzo ma lo farei con 3 stati (ammesso che i tempi del trasmettitore e del ricevitore siano sincroni):
A: il primo stato: aspetto un 1. Se arriva passo a B
B: seconda cifra: se arriva 0 passo a C, se no torno in A (11...!=101)
C: ultima cifra. Se arriva 1 ho trovato, quindi agisco e torno ad A. Se no torno ad A senza agire (se no=ne arriva!=1, ovvero se arriva 0, e 100!=101).

Se preferite mettiamo "agisco" in uno stato D dal quale ritorno ad A senza se e senza ma.
Sono andato troppo fuori tema?
 
Scusate se intervengo a muzzo ma lo farei con 3 stati (ammesso che i tempi del trasmettitore e del ricevitore siano sincroni):
A: il primo stato: aspetto un 1. Se arriva passo a B
B: seconda cifra: se arriva 0 passo a C, se no torno in A (11...!=101)
C: ultima cifra. Se arriva 1 ho trovato, quindi agisco e torno ad A. Se no torno ad A senza agire (se no=ne arriva!=1, ovvero se arriva 0, e 100!=101).

Se preferite mettiamo "agisco" in uno stato D dal quale ritorno ad A senza se e senza ma.
Sono andato troppo fuori tema?
fsm.webp Intendi una cosa del genere?
Non si può fare in 3/4 stati :ok:
 
Ultima modifica:
Perché no? Io posso essere
1) all'inizio, devo ricevere il primo 1
2) secondo pezzo, devo ricevere 0
3) pezzo finale, devo ricevere 1, ed é l'ultimo
4) ho finito di ricevere il messaggio corretto. Può essere uno stato separato o interno al 3
Quale altro passo serve?
 
Perché no? Io posso essere
1) all'inizio, devo ricevere il primo 1
2) secondo pezzo, devo ricevere 0
3) pezzo finale, devo ricevere 1, ed é l'ultimo
4) ho finito di ricevere il messaggio corretto. Può essere uno stato separato o interno al 3
Quale altro passo serve?
La stringa accettata è 01101, non 101 ( e si, per quello bastano 3 stati ).
 
Pubblicità
Pubblicità
Indietro
Top