Три состояния, три сигнала
Обычный светофор циклически проходит ровно через три состояния — зелёный, жёлтый, красный — всегда в одном и том же порядке, всегда переходя дальше по некоторому тактовому сигналу. Поскольку набор включённых сигналов зависит только от того, в каком состоянии находится автомат, и никогда — от какого-либо дополнительного входа, это классический учебный автомат Мура.
Кодируем состояния
Для трёх состояний достаточно двух бит:
- Зелёный = 00, жёлтый = 01, красный = 10 (четвёртая комбинация, 11, просто не используется) — хранится в 2-битном регистре.
- Логика следующего состояния: зелёный (00) → жёлтый (01), жёлтый (01) → красный (10), красный (10) → зелёный (00) — три перехода, подключённые напрямую от битов текущего состояния обратно на вход регистра через небольшой блок вентилей или блок PLM, настроенный ровно на эту таблицу истинности.
Логика выхода: от состояния к сигналам
Каждый из трёх светодиодов — это просто булева функция от двух битов состояния: зелёный = ¬S1·¬S0, жёлтый = ¬S1·S0, красный = S1·¬S0 — та же самая структура «однозначного» декодирования, что и у декодера, поскольку логика выхода автомата Мура — это не более чем комбинационная логика, читающая регистр состояния.
Попробуйте сами
Соберите 2-битный регистр состояния и логику следующего состояния в редакторе схем, подайте на его такт сигнал от медленного элемента CLOCK и подключите три уравнения выхода к трём элементам LED — понаблюдайте, как они циклически загораются зелёным, жёлтым, красным, зелёным — точно как настоящий светофор.