Esercizi su macchine a stati finiti sincrone.

GianD95

Nuovo Utente
6
0
CPU
Intel core i7 6700k
Dissipatore
Lepa exllusion 240
Scheda Madre
Asus z170 pro gaming
HDD
WD blue 1tb, samsung 850 evo.
RAM
16gb ddr4
GPU
gtx 970
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).png
    Screenshot (47).png
    200.8 KB · Visualizzazioni: 229
  • Screenshot (48).png
    Screenshot (48).png
    165.6 KB · Visualizzazioni: 289
U

Utente 16812

Ospite
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:
 

Fenix27

Utente Attivo
863
220
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.
 

GianD95

Nuovo Utente
6
0
CPU
Intel core i7 6700k
Dissipatore
Lepa exllusion 240
Scheda Madre
Asus z170 pro gaming
HDD
WD blue 1tb, samsung 850 evo.
RAM
16gb ddr4
GPU
gtx 970
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.
 

rodhellas

Utente Èlite
1,522
427
CPU
Ryzen 5 3600
Dissipatore
GELID Phantom
Scheda Madre
MSI B450 Gaming Plus Max
HDD
500GB m.2 + 2TB HDD
RAM
16GB Corsair LPX 3000mhz
GPU
Gigabyte GTX 960 OC
Audio
Integrata
Monitor
SyncMaster 223BW
PSU
Antec HCG-520M
Case
Meshify C
Net
Gigabit Fastweb
OS
Windows 10 64bit
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).
 

Zeus Giove

Nuovo Utente
21
11
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?
 

rodhellas

Utente Èlite
1,522
427
CPU
Ryzen 5 3600
Dissipatore
GELID Phantom
Scheda Madre
MSI B450 Gaming Plus Max
HDD
500GB m.2 + 2TB HDD
RAM
16GB Corsair LPX 3000mhz
GPU
Gigabyte GTX 960 OC
Audio
Integrata
Monitor
SyncMaster 223BW
PSU
Antec HCG-520M
Case
Meshify C
Net
Gigabit Fastweb
OS
Windows 10 64bit
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.jpg Intendi una cosa del genere?
Non si può fare in 3/4 stati :ok:
 
Ultima modifica:

Zeus Giove

Nuovo Utente
21
11
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?
 

rodhellas

Utente Èlite
1,522
427
CPU
Ryzen 5 3600
Dissipatore
GELID Phantom
Scheda Madre
MSI B450 Gaming Plus Max
HDD
500GB m.2 + 2TB HDD
RAM
16GB Corsair LPX 3000mhz
GPU
Gigabyte GTX 960 OC
Audio
Integrata
Monitor
SyncMaster 223BW
PSU
Antec HCG-520M
Case
Meshify C
Net
Gigabit Fastweb
OS
Windows 10 64bit
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 ).
 

Ci sono discussioni simili a riguardo, dai un'occhiata!

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!

Discussioni Simili