Moore e Mealy Machines

Gli automi finiti possono avere uscite corrispondenti a ciascuna transizione. Esistono due tipi di macchine a stati finiti che generano output:

  • Macchina farinosa
  • Macchina di Moore

Macchina farinosa

Una Mealy Machine è una FSM il cui output dipende dallo stato attuale e dall'input presente.

Può essere descritto da una tupla 6 (Q, ∑, O, δ, X, q 0 ) dove -

  • Q è un insieme finito di stati.

  • è un insieme finito di simboli chiamato alfabeto di input.

  • O è un insieme finito di simboli chiamato alfabeto di output.

  • δ è la funzione di transizione di ingresso dove δ: Q × ∑ → Q

  • X è la funzione di transizione dell'uscita dove X: Q × ∑ → O

  • q0è lo stato iniziale da cui viene elaborato qualsiasi input (q 0 ∈ Q).

La tabella degli stati di una macchina farinosa è mostrata di seguito:

Stato attuale Stato successivo
ingresso = 0 ingresso = 1
Stato Produzione Stato Produzione
→ a b x 1 c x 1
b b x 2 d x 3
c d x 3 c x 1
d d x 3 d x 2

Il diagramma di stato della suddetta Mealy Machine è:

Moore Machine

La macchina Moore è una FSM i cui output dipendono solo dallo stato presente.

Una macchina di Moore può essere descritta da una tupla 6 (Q, ∑, O, δ, X, q 0 ) dove -

  • Q è un insieme finito di stati.

  • è un insieme finito di simboli chiamato alfabeto di input.

  • O è un insieme finito di simboli chiamato alfabeto di output.

  • δ è la funzione di transizione di ingresso dove δ: Q × ∑ → Q

  • X è la funzione di transizione dell'uscita dove X: Q → O

  • q0è lo stato iniziale da cui viene elaborato qualsiasi input (q 0 ∈ Q).

La tabella degli stati di una macchina Moore è mostrata di seguito:

Stato attuale Stato successivo Produzione
Ingresso = 0 Ingresso = 1
→ a b c x 2
b b d x 1
c c d x 2
d d d x 3

Il diagramma di stato della macchina Moore sopra è:

Mealy Machine contro Moore Machine

La tabella seguente evidenzia i punti che differenziano una Mealy Machine da una Moore Machine.

Macchina farinosa Moore Machine
L'uscita dipende sia dallo stato presente che dall'ingresso presente L'output dipende solo dallo stato attuale.
In generale, ha meno stati di Moore Machine. In generale, ha più stati di Mealy Machine.
Il valore della funzione di uscita è una funzione delle transizioni e dei cambiamenti, quando viene eseguita la logica di ingresso sullo stato attuale. Il valore della funzione di uscita è una funzione dello stato corrente e dei cambiamenti ai fronti di clock, ogni volta che si verificano cambiamenti di stato.
Le macchine farinose reagiscono più velocemente agli input. Generalmente reagiscono nello stesso ciclo di clock. Nelle macchine Moore, è necessaria più logica per decodificare le uscite, con conseguenti più ritardi del circuito. Generalmente reagiscono dopo un ciclo di clock.

Moore Machine to Mealy Machine

Algoritmo 4

Input - Moore Machine

Output - Macchina farinosa

Step 1 - Prendi un formato di tabella di transizione Mealy Machine vuoto.

Step 2 - Copia tutti gli stati di transizione della Moore Machine in questo formato di tabella.

Step 3- Verificare gli stati presenti e le relative uscite nella tabella degli stati della macchina Moore; se per uno stato Q i l' output è m, copiarlo nelle colonne di output della tabella di stato Mealy Machine ovunque Q i appare nello stato successivo.

Esempio

Consideriamo la seguente macchina Moore:

Stato attuale Stato successivo Produzione
a = 0 a = 1
→ a d b 1
b un d 0
c c c 0
d b un 1

Ora applichiamo l'algoritmo 4 per convertirlo in Mealy Machine.

Step 1 & 2 -

Stato attuale Stato successivo
a = 0 a = 1
Stato Produzione Stato Produzione
→ a d b
b un d
c c c
d b un

Step 3 -

Stato attuale Stato successivo
a = 0 a = 1
Stato Produzione Stato Produzione
=> a d 1 b 0
b un 1 d 1
c c 0 c 0
d b 0 un 1

Mealy Machine to Moore Machine

Algoritmo 5

Input - Macchina farinosa

Output - Moore Machine

Step 1- Calcola il numero di differenti uscite per ogni stato (Q i ) che sono disponibili nella tabella degli stati della macchina Mealy.

Step 2- Se tutte le uscite di Qi sono uguali, copia lo stato Q i . Se ha n uscite distinte, spezza Q i in n stati come Q in doven = 0, 1, 2 .......

Step 3 - Se l'uscita dello stato iniziale è 1, inserire un nuovo stato iniziale all'inizio che restituisce 0 output.

Esempio

Consideriamo la seguente macchina farinosa:

Stato attuale Stato successivo
a = 0 a = 1
Stato successivo Produzione Stato successivo Produzione
→ a d 0 b 1
b un 1 d 0
c c 1 c 0
d b 0 un 1

Qui, gli stati "a" e "d" forniscono rispettivamente solo 1 e 0 output, quindi conserviamo gli stati "a" e "d". Ma gli stati "b" e "c" producono output diversi (1 e 0). Quindi, ci dividiamob in b0, b1 e c in c0, c1.

Stato attuale Stato successivo Produzione
a = 0 a = 1
→ a d b 1 1
b 0 un d 0
b 1 un d 1
c 0 c 1 C 0 0
c 1 c 1 C 0 1
d b 0 un 0