📅  最后修改于: 2020-11-26 10:09:57             🧑  作者: Mango
有限自动机可能具有与每个过渡相对应的输出。产生输出的有限状态机有两种类型-
Mealy机器是FSM,其输出取决于当前状态以及当前输入。
可以用6个元组(Q,∑,O,δ,X,q 0 )描述,其中-
Q是一组有限的状态。
∑是一组有限的符号,称为输入字母。
O是一组有限的符号,称为输出字母。
δ是输入转换函数,其中δ:Q×∑→Q
X是输出转换函数,其中X:Q×∑→O
Q 0是从那里的任何输入被处理(Q 0∈Q)的初始状态。
Mealy机器的状态表如下所示-
Present state | Next state | |||
---|---|---|---|---|
input = 0 | input = 1 | |||
State | Output | State | Output | |
→ a | b | x1 | c | x1 |
b | b | x2 | d | x3 |
c | d | x3 | c | x1 |
d | d | x3 | d | x2 |
上述Mealy机器的状态图为-
摩尔机是FSM,其输出仅取决于当前状态。
摩尔机器可以由6个元组(Q,∑,O,δ,X,q 0 )描述,其中-
Q是一组有限的状态。
∑是一组有限的符号,称为输入字母。
O是一组有限的符号,称为输出字母。
δ是输入转换函数,其中δ:Q×∑→Q
X是输出转换函数,其中X:Q→O
Q 0是从那里的任何输入被处理(Q 0∈Q)的初始状态。
摩尔机的状态表如下所示-
Present state | Next State | Output | |
---|---|---|---|
Input = 0 | Input = 1 | ||
→ a | b | c | x2 |
b | b | d | x1 |
c | c | d | x2 |
d | d | d | x3 |
上面的摩尔机的状态图是-
下表突出显示了区分Mealy机器和Moore机器的要点。
Mealy Machine | Moore Machine |
---|---|
Output depends both upon the present state and the present input | Output depends only upon the present state. |
Generally, it has fewer states than Moore Machine. | Generally, it has more states than Mealy Machine. |
The value of the output function is a function of the transitions and the changes, when the input logic on the present state is done. | The value of the output function is a function of the current state and the changes at the clock edges, whenever state changes occur. |
Mealy machines react faster to inputs. They generally react in the same clock cycle. | In Moore machines, more logic is required to decode the outputs resulting in more circuit delays. They generally react one clock cycle later. |
输入-摩尔机
输出-小机器
步骤1-采取空白的Mealy Machine过渡表格式。
步骤2-将所有摩尔机的过渡状态复制到此表格式。
步骤3-在摩尔机状态表中检查当前状态及其对应的输出;如果状态Q i的输出为m,则将其复制到Mealy Machine状态表的输出列中,无论Q i在下一状态出现的位置。
让我们考虑以下摩尔机器-
Present State | Next State | Output | |
---|---|---|---|
a = 0 | a = 1 | ||
→ a | d | b | 1 |
b | a | d | 0 |
c | c | c | 0 |
d | b | a | 1 |
现在我们应用算法4将其转换为Mealy Machine。
步骤1和2-
Present State | Next State | |||
---|---|---|---|---|
a = 0 | a = 1 | |||
State | Output | State | Output | |
→ a | d | b | ||
b | a | d | ||
c | c | c | ||
d | b | a |
步骤3-
Present State | Next State | |||
---|---|---|---|---|
a = 0 | a = 1 | |||
State | Output | State | Output | |
=> a | d | 1 | b | 0 |
b | a | 1 | d | 1 |
c | c | 0 | c | 0 |
d | b | 0 | a | 1 |
输入-计量机
输出-摩尔机
步骤1-计算Mealy机器的状态表中可用的每个状态(Q i )的不同输出的数量。
步骤2-如果Qi的所有输出都相同,则复制状态Q i 。如果它具有n个不同的输出,则将Q i分解为n个状态,作为Q ,其中n = 0、1、2 ……..
步骤3-如果初始状态的输出为1,则在开头插入一个新的初始状态,输出为0。
让我们考虑以下Mealy Machine-
Present State | Next State | |||
---|---|---|---|---|
a = 0 | a = 1 | |||
Next State | Output | Next State | Output | |
→ a | d | 0 | b | 1 |
b | a | 1 | d | 0 |
c | c | 1 | c | 0 |
d | b | 0 | a | 1 |
在这里,状态“ a”和“ d”分别仅提供1和0输出,因此我们保留状态“ a”和“ d”。但是状态“ b”和“ c”产生不同的输出(1和0)。因此,我们将b分为b 0 ,b 1和c分为c 0 ,c 1 。
Present State | Next State | Output | |
---|---|---|---|
a = 0 | a = 1 | ||
→ a | d | b1 | 1 |
b0 | a | d | 0 |
b1 | a | d | 1 |
c0 | c1 | C0 | 0 |
c1 | c1 | C0 | 1 |
d | b0 | a | 0 |