2

所以我的状态图有七个状态(000 到 110),一个输入 B 按钮和四个输出 P、Q、R 和 S。

我制作了真值表,它有 16 行(其中两行有 X)。我应该从中制作 7 个 K-Maps,S2' S1' S0' PQR 和 S。我知道输入 B (0, 1) 将位于列侧(或行),但我是行有问题。S2 为最高有效位,S0 最低。

我从未见过一侧有 3 位 (S2/S1/S0) 的 K-Map,但我不知道如何以任何其他方式表示它。如果是三位,这些数字的顺序是什么?对于两个,我知道现在是 00/01/11/10。

如果是两个,这似乎是正确的想法,那么您如何在三个(S2/S1/S0)中的两个之间做出决定?输入 B 侧旁边是否有一个额外的变量(所以它会是列上的 S2/S1 和行上的 B/S0?)。您如何决定将 S2/S1/S0 中的哪一个放在另一侧,这是否重要?

对我来说,一个很大的帮助是查看 S2/S1/S0 状态图的真值表/k-map 示例。我只见过 S1/S0 的例子,所以不超过 4 个状态 (00/01/10/11)。

感谢您提供任何帮助。如果我的问题令人困惑,我很抱歉。请让我知道我是否可以更清楚地了解我的问题。

4

1 回答 1

0

首先是您的问题的答案:

每个卡诺图中的单元格数与所有可能的输入组合数相匹配。地图单元格的索引方式必须与真值表相对应。下图是不同大小的卡诺图示例,其中相邻单元格的可视化仍然非常容易。

不同大小的卡诺图

如您所见,关键是,两个相邻单元格仅在一个变量的值上不同,四个相邻单元格在两个变量的值上不同,依此类推。这就是为什么您应该寻找具有 2^n 大小的组的原因。Map 的索引可能看起来有点混乱,但这是为了显示真值表中每一行之间的所有关系。

如果您对 K-map 进行索引,但不知道哪些行对应哪些变量以及它们应该按什么顺序进入,那么您可以像这样检查它:

  • 索引 0 =没有一个变量为真
  • 索引 1 = 只有最低有效位为真(对于排序为abcd的真值表,即d
  • index 2 = 只有第二个最低有效位为真(对于与c相同的真值表)
  • 索引 4 = 只有第三个最低有效位为真(对于与b相同的真值表)
  • 索引 8 = 只有第四个最低有效位为真(对于与a相同的真值表)

举个例子:这里你可以看到一个 01364 序列发生器的状态图,它被实现为一个摩尔机。机器的所有边缘都标有复位按钮的输入值。

01364 序列发生器实现为摩尔机

机器的期望行为和与状态匹配的输出值可以通过这个转换表来描述:

 state || output (decimal) | reset || next state
-------------------------------------------------
  S_0  ||        0         |   0   ||    S_1
       ||                  |   1   ||    S_0
-------------------------------------------------
  S_1  ||        1         |   0   ||    S_2
       ||                  |   1   ||    S_0
-------------------------------------------------
  S_2  ||        3         |   0   ||    S_3
       ||                  |   1   ||    S_0
-------------------------------------------------
  S_3  ||        6         |   0   ||    S_4
       ||                  |   1   ||    S_0
-------------------------------------------------
  S_4  ||        4         |   0   ||    S_0
       ||                  |   1   ||    S_0

在对状态的表示进行编码以匹配二进制的十进制输出(q_2q_1q_0d_2d_1d_0)后,转换表如下所示:

 state || q_2 | q_1 | q_0 | reset || d_2 | d_1 | d_0 || next state
-------------------------------------------------------------------
  S_0  ||  0  |  0  |  0  |   0   ||  0  |  0  |  1  ||    S_1
       ||     |     |     |   1   ||  0  |  0  |  0  ||    S_0
-------------------------------------------------------------------
  S_1  ||  0  |  0  |  1  |   0   ||  0  |  1  |  1  ||    S_2
       ||     |     |     |   1   ||  0  |  0  |  0  ||    S_0
-------------------------------------------------------------------
  S_2  ||  0  |  1  |  1  |   0   ||  1  |  1  |  0  ||    S_3
       ||     |     |     |   1   ||  0  |  0  |  0  ||    S_0
-------------------------------------------------------------------
  S_3  ||  1  |  1  |  0  |   0   ||  1  |  0  |  0  ||    S_4
       ||     |     |     |   1   ||  0  |  0  |  0  ||    S_0
-------------------------------------------------------------------
  S_4  ||  1  |  0  |  0  |   0   ||  0  |  0  |  0  ||    S_0
       ||     |     |     |   1   ||  0  |  0  |  0  ||    S_0

研究每个可能的输入组合的转换表很有用,因为有一些“不关心”(x)输出值(对于状态,序列中不存在),可用于最小化卡诺图。

 index | state || q_2 | q_1 | q_0 | reset || d_2 | d_1 | d_0 || next state
---------------------------------------------------------------------------
   0   |  S_0  ||  0  |  0  |  0  |   0   ||  0  |  0  |  1  ||    S_1
   1   |  S_0  ||  0  |  0  |  0  |   1   ||  0  |  0  |  0  ||    S_0
---------------------------------------------------------------------------
   2   |  S_1  ||  0  |  0  |  1  |   0   ||  0  |  1  |  1  ||    S_2
   3   |  S_1  ||  0  |  0  |  1  |   1   ||  0  |  0  |  0  ||    S_0
---------------------------------------------------------------------------
   4   |   -   ||  0  |  1  |  0  |   0   ||  x  |  x  |  x  ||     -
   5   |   -   ||  0  |  1  |  0  |   1   ||  0  |  0  |  0  ||    S_0
---------------------------------------------------------------------------
   6   |  S_2  ||  0  |  1  |  1  |   0   ||  1  |  1  |  0  ||    S_3
   7   |  S_2  ||  0  |  1  |  1  |   1   ||  0  |  0  |  0  ||    S_0
---------------------------------------------------------------------------
   8   |  S_4  ||  1  |  0  |  0  |   0   ||  0  |  0  |  0  ||    S_0
   9   |  S_4  ||  1  |  0  |  0  |   1   ||  0  |  0  |  0  ||    S_0
---------------------------------------------------------------------------
  10   |   -   ||  1  |  0  |  1  |   0   ||  x  |  x  |  x  ||     -
  11   |   -   ||  1  |  0  |  1  |   1   ||  0  |  0  |  0  ||    S_0
---------------------------------------------------------------------------
  12   |  S_3  ||  1  |  1  |  0  |   0   ||  1  |  0  |  0  ||    S_4
  13   |  S_3  ||  1  |  1  |  0  |   1   ||  0  |  0  |  0  ||    S_0
---------------------------------------------------------------------------
  14   |   -   ||  1  |  1  |  1  |   0   ||  x  |  x  |  x  ||     -
  15   |   -   ||  1  |  1  |  1  |   1   ||  0  |  0  |  0  ||    S_0

最后您可以看到,定义d_2d_1d_0的函数(即与 01364 序列中的数字匹配的二进制编码状态/输出)可以在以下 K-map 中简单地标记出来。

定义二进制编码的函数

f(d_2) = q_1 ⋅ ¬(reset)
f(d_1) = q_0 ⋅ ¬(reset)
f(d_0) = ¬(q_2) ⋅ ¬(q_1) ⋅ ¬(reset)

(所有图像均使用乳胶生成。)

于 2016-03-09T02:26:29.093 回答