Разбор примера: контроллер светофора
← Все статьи

Разбор примера: контроллер светофора

5 мин

Три состояния, три сигнала

Обычный светофор циклически проходит ровно через три состояния — зелёный, жёлтый, красный — всегда в одном и том же порядке, всегда переходя дальше по некоторому тактовому сигналу. Поскольку набор включённых сигналов зависит только от того, в каком состоянии находится автомат, и никогда — от какого-либо дополнительного входа, это классический учебный автомат Мура.

Кодируем состояния

Для трёх состояний достаточно двух бит:

  • Зелёный = 00, жёлтый = 01, красный = 10 (четвёртая комбинация, 11, просто не используется) — хранится в 2-битном регистре.
  • Логика следующего состояния: зелёный (00) → жёлтый (01), жёлтый (01) → красный (10), красный (10) → зелёный (00) — три перехода, подключённые напрямую от битов текущего состояния обратно на вход регистра через небольшой блок вентилей или блок PLM, настроенный ровно на эту таблицу истинности.
ЗелёныйS1S0 = 00ЖёлтыйS1S0 = 01КрасныйS1S0 = 10

Логика выхода: от состояния к сигналам

Каждый из трёх светодиодов — это просто булева функция от двух битов состояния: зелёный = ¬S1·¬S0, жёлтый = ¬S1·S0, красный = S1·¬S0 — та же самая структура «однозначного» декодирования, что и у декодера, поскольку логика выхода автомата Мура — это не более чем комбинационная логика, читающая регистр состояния.

Попробуйте сами

Соберите 2-битный регистр состояния и логику следующего состояния в редакторе схем, подайте на его такт сигнал от медленного элемента CLOCK и подключите три уравнения выхода к трём элементам LED — понаблюдайте, как они циклически загораются зелёным, жёлтым, красным, зелёным — точно как настоящий светофор.

Собрать контроллер светофора в редакторе схем →