Создание K-карт с S2, S1, S0 (семь состояний), одна кнопка ввода и четыре выхода

Итак, моя диаграмма состояний имеет семь состояний (от 000 до 110), кнопку входа B и четыре выхода P, Q, R и S.

Я составил таблицу истинности, в которой 16 строк (две из которых имеют крестики). Я должен сделать из этого 7 K-Maps, S2' S1' S0' P Q R и S. Я понимаю, что ввод B (0, 1) будет на стороне столбца (или строки), но я проблемы со строками. S2 — старшая значащая цифра, S0 — младшая.

Я никогда не видел K-Map с 3 битами (S2/S1/S0) на одной стороне, но я не знаю, как представить это по-другому. И если это три бита, в каком порядке идут эти числа? На двоих я знаю, что это 01.00.11.10.

Если два, что кажется правильным, то как выбрать между двумя из трех (S2/S1/S0)? Получает ли сторона ввода B дополнительную переменную рядом с ней (так что это будет S2/S1 в столбце и B/S0 в строках?). Как вы решаете, какой из S2/S1/S0 находится на другой стороне, имеет ли это вообще значение?

Мне очень помогло бы увидеть пример таблицы истинности/k-карт для диаграммы состояний S2/S1/S0. Я видел только примеры S1/S0, поэтому не более 4 состояний (01.00.10.11).

Спасибо за любую помощь, которую вы можете предоставить. Извините, если мой вопрос сбивает с толку. Пожалуйста, дайте мне знать, если я могу прояснить мою проблему.


person sumitz1212    schedule 13.09.2015    source источник


Ответы (1)


Сначала ответы на ваши вопросы:

Количество ячеек на каждой карте Карно соответствует количеству всех возможных входных комбинаций. Способ индексации ячеек карты должен соответствовать таблице истинности. На следующем рисунке приведены примеры различных размеров карт Карно, где визуализация соседних ячеек все еще довольно проста.

Различные размеры карт Карно

Как видите, дело в том, что две соседние ячейки отличаются только значением одной переменной, четыре соседние ячейки отличаются значениями двух переменных и так далее. Вот почему вам следует искать группы размером 2^n. Индексирование карты может выглядеть немного запутанным, но это делается для отображения всех взаимосвязей между каждой строкой в ​​таблице истинности.

Если вы индексируете К-карту, но не знаете, какие строки для каких переменных и в каком порядке они должны идти, то проверить это можно так:

  • индекс 0 = где не ни одна переменная верна
  • индекс 1 = где только наименьший значащий бит является истинным (для таблицы истинности, упорядоченной abcd это будет d)
  • индекс 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_2, q_1 и q_0; d_2, d_1 и d_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_2, d_1 и d_0 (то есть двоичное кодированное состояние/выход, соответствующие числу в последовательность 01364) можно просто выделить на следующих К-картах.

Функция, определяющая двоичную кодировку

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

(Все изображения были созданы с использованием латекса.)

person Kit Ostrihon    schedule 09.03.2016