Problema macchina di Mealy
Salve a tutti,
ho un problema riguardante la macchina di Mealy, o meglio non riesco a capire un esempio che ho trovato su internet all'indirizzo seguente (alla pagina 9 dove dice "Procedura Mealy =>Moore").
In questo esempio non riesco a capire perchè:
1- nello stato C (dove ho uno 011) se ricevo un 0 (e quindi ho 110 che appartiene alla codifica richiesta dalla specifica) va nello stato D
2- perchè nelle stato D (dove ho un 010) se ho uno 0 (e quindi 100) ritorna in A, mentre se ho uno 1 (e quindi 101 che appartiene alla codifica richiesta nelle specifiche) torna in B.
Spero possiate aiutarmi
Grazie mille
LINK 1: http://docs.google.com/viewer?a=v&q=cac ... 6yGtDZh9CA
LINK 2: http://www.unife.it/ing/informazione/an ... -del-corso
ho un problema riguardante la macchina di Mealy, o meglio non riesco a capire un esempio che ho trovato su internet all'indirizzo seguente (alla pagina 9 dove dice "Procedura Mealy =>Moore").
In questo esempio non riesco a capire perchè:
1- nello stato C (dove ho uno 011) se ricevo un 0 (e quindi ho 110 che appartiene alla codifica richiesta dalla specifica) va nello stato D
2- perchè nelle stato D (dove ho un 010) se ho uno 0 (e quindi 100) ritorna in A, mentre se ho uno 1 (e quindi 101 che appartiene alla codifica richiesta nelle specifiche) torna in B.
Spero possiate aiutarmi
Grazie mille
LINK 1: http://docs.google.com/viewer?a=v&q=cac ... 6yGtDZh9CA
LINK 2: http://www.unife.it/ing/informazione/an ... -del-corso
Risposte
cosa non hai capito scusa?
L'ho scritto nei punti 1 e 2.
Anche un'altra cosa non mi è chiara aggiungo un punto 3 per esempio in questo esercizio:
3- una volta che ho trovato una configurazione 101 o 110 la freccia dove deve terminare
3- una volta che ho trovato una configurazione 101 o 110 la freccia dove deve terminare
Allora facciamo una cosa io scrivo tutto il mio ragionamento:
1. Parto dallo stato A(inizializzato a 000)
- finchè ricevo uno zero rimango in A
- se ricevo un 1 passo in B e do in uscita 0
2. Sono in B (dove è inizializzato a 001)
- se ho 1 passo in C e do in uscita 0
- se ho 0 passo in D e do in uscita 0
3. Sono in C (inizializzato a 011)
- se ho un 1 perchè devo rimanere in C e non devo andare in un altro stato per esempio E inizializzato a 111?
- se ho 0 perchè devo andare in D? o cosa devo fare?
4. Sono in D (inizializzato a 010)
- se ho 1 allora l'uscita diventa 1, ma dove devo collegare la freccia?
- se ho 0, dove in uscita 0, ma dove devo collegare la freccia?
ecco spero possiate aiutarmi
1. Parto dallo stato A(inizializzato a 000)
- finchè ricevo uno zero rimango in A
- se ricevo un 1 passo in B e do in uscita 0
2. Sono in B (dove è inizializzato a 001)
- se ho 1 passo in C e do in uscita 0
- se ho 0 passo in D e do in uscita 0
3. Sono in C (inizializzato a 011)
- se ho un 1 perchè devo rimanere in C e non devo andare in un altro stato per esempio E inizializzato a 111?
- se ho 0 perchè devo andare in D? o cosa devo fare?
4. Sono in D (inizializzato a 010)
- se ho 1 allora l'uscita diventa 1, ma dove devo collegare la freccia?
- se ho 0, dove in uscita 0, ma dove devo collegare la freccia?
ecco spero possiate aiutarmi
allora
devi considerare solo gli ultimi bit rilevanti.
cioè
1) sei in A
- 0 => 0,A
- 1 => 0,B perchè hai incontrato il primo carattere di una delle due possibili sequenze
2)sei in B
- 0 => 0,D perchè la sequenza degli ultimi due bit era 10 e quindi potrebbe essere la prima sequenza
- 1 => 0,C perchè la sequenza degli ultimi due bit era 11 e quindi potrebbe essere la seconda sequenza
3) sei in C
- 0 => 1,C infatti uscita=1 perchè è stata ricevuta la sequenza e stato futuro = D perchè gli ultimi tre bit sono stati 110 ,
cioè gli ultimi 2 sono stati 10 quindi se venisse fuori 1 sarebbe stata ricevuta (sovrapposta) anche l'altra sequenza
- 1 => 0,C perchè gli ultimi 3 bit ricevuti sono 111 quindi gli ultimi due sono 11 e dunque se esce 0 ci sarebbe la sequenza 110 e dunque devo stare in C
4) sei in D
- 0 => 0,A infatti gli ultimi due bit sono 00 e non sono rilevanti, ergo da capo!
- 1 => 1,B infatti uscita=1 perche 101 mentre stato futuro = B perch gli ultimi due bit sono stati 01 e quindi sei logicamente in B
devi considerare solo gli ultimi bit rilevanti.
cioè
1) sei in A
- 0 => 0,A
- 1 => 0,B perchè hai incontrato il primo carattere di una delle due possibili sequenze
2)sei in B
- 0 => 0,D perchè la sequenza degli ultimi due bit era 10 e quindi potrebbe essere la prima sequenza
- 1 => 0,C perchè la sequenza degli ultimi due bit era 11 e quindi potrebbe essere la seconda sequenza
3) sei in C
- 0 => 1,C infatti uscita=1 perchè è stata ricevuta la sequenza e stato futuro = D perchè gli ultimi tre bit sono stati 110 ,
cioè gli ultimi 2 sono stati 10 quindi se venisse fuori 1 sarebbe stata ricevuta (sovrapposta) anche l'altra sequenza
- 1 => 0,C perchè gli ultimi 3 bit ricevuti sono 111 quindi gli ultimi due sono 11 e dunque se esce 0 ci sarebbe la sequenza 110 e dunque devo stare in C
4) sei in D
- 0 => 0,A infatti gli ultimi due bit sono 00 e non sono rilevanti, ergo da capo!
- 1 => 1,B infatti uscita=1 perche 101 mentre stato futuro = B perch gli ultimi due bit sono stati 01 e quindi sei logicamente in B
Grazie mille sei stato chiarissimo, solo una cosa non mi è ancora chiara, ovvero perchè devo controllare solo gli ultimi due bit e non tutti e tre i bit insieme?
non è questione di 2, 3 o 1 bit è questione di rilevanza.
essendo una sequenza di 3 bit sono sufficienti 2 bit finali per prevedere lo stato futuro poiche l'ultimo bit lascia due possibilità che nel grafo partono da un solo nodo
cioè in parole piu semplici, una volta che sai gli ultimi due bit, nel caso tu abbia una sequenza di 3 bit, puoi dimenticarti gli altri poichè hai completamente identificato lo stato in cui ti devi trovare, ovvero quello che risponde in un certo modo se il bit successivo
sarà uno zero e in un altro certo modo se sarà un 1 indipendentemente da cio che è successo prima.
(ovviamente questo vale solo per stpidi riconoscitori di sequenze)
se pero ad esempio ti trovi a dover riconoscere 111 o 011 se ti capita uno 0 non rientrando all'interno di nessuna sequenza ti identifica subito lo stato futuro, cioè quello che corrisponde all'aver ricevuto il primo carattere della seconda sequenza
essendo una sequenza di 3 bit sono sufficienti 2 bit finali per prevedere lo stato futuro poiche l'ultimo bit lascia due possibilità che nel grafo partono da un solo nodo
cioè in parole piu semplici, una volta che sai gli ultimi due bit, nel caso tu abbia una sequenza di 3 bit, puoi dimenticarti gli altri poichè hai completamente identificato lo stato in cui ti devi trovare, ovvero quello che risponde in un certo modo se il bit successivo
sarà uno zero e in un altro certo modo se sarà un 1 indipendentemente da cio che è successo prima.
(ovviamente questo vale solo per stpidi riconoscitori di sequenze)
se pero ad esempio ti trovi a dover riconoscere 111 o 011 se ti capita uno 0 non rientrando all'interno di nessuna sequenza ti identifica subito lo stato futuro, cioè quello che corrisponde all'aver ricevuto il primo carattere della seconda sequenza
e in generale come faccio a sapere quanti bit sono rilevanti, se io cioè devo riconoscere in una sequenza di 5 bit la parola 11111 quanti bit sono rilevanti?
beh lo vedi, non so se esista un metodo generale,
ma comunque in fase di sintesi del grafo non c'è nemmeno bisogno di porselo tale problema infatti se tieni in mente che le sequenze possono "intersecarsi"
diventa facile costruirlo vedendo stato per stato cosa comporta...man mano che fai esercizio ti verrà iu semplice
ma comunque in fase di sintesi del grafo non c'è nemmeno bisogno di porselo tale problema infatti se tieni in mente che le sequenze possono "intersecarsi"
diventa facile costruirlo vedendo stato per stato cosa comporta...man mano che fai esercizio ti verrà iu semplice
OK grazie mille ancora!!
ok GRAZIE MILLE!!
Grazie mille ancora!!