Проектирование цифровой логики: от таблиц истинности к автоматам состояний
Проектирование цифровой логики: от требований к вентилям и автоматам состояний
Дизайн цифровой логики преобразует поведенческие требования в схему, которая генерирует заданные выходы. Используйте комбинаторную логику, когда текущие входы содержат всё необходимое для принятия решения. Добавьте сохраняемое состояние, когда необходимо различать различные истории, например, был ли уже инициирован запрос транзакции.
Начните с определения значений входов и ожидаемого поведения. В этом руководстве разрабатывается логическое выражение и контроллер; физические пороговые уровни напряжения и реализация на печатной плате требуют отдельного рассмотрения.
Начните с полного описания требований к входам и выходам
Таблица истинности описывает выход для каждой допустимой комбинации входных сигналов. При трех двоичных входах необходимо учитывать восемь комбинаций. Лекция Массачусетского технологического института по введению в комбинаторную логику объясняет связь между функциональным описанием и таблицей истинности.
Для иллюстративной схемы запрос-прием определите три входа:
request: был выполнен запрос.ready: блок обработки может принять его.inhibit: прием должен быть заблокирован.
Укажите accept = request AND ready AND NOT inhibit. Только комбинация входов request=1, ready=1, inhibit=0 даёт 1; остальные семь комбинаций дают 0. Это утверждение полностью определяет функцию без необходимости восьмистрочной таблицы.
Проверьте требование с помощью контрпримеров. Если ready = 1, но request = 0, то acceptance должен оставаться равным 0. Если request и ready оба равны 1, но inhibit становится 1, то acceptance также должен быть равен 0. Эти проверки выявляют ожидаемое поведение, а не просто повторяют выражение.
Преобразуйте выражение в полезные логические блоки
Выражение соответствует инвертору на входе запрета, за которым следует операция И. Синтезатор может реализовать эквивалентную сеть с использованием других элементов. Логическая функция — это контракт; конкретная схема включения элементов — выбор реализации.
Мультиплексор выбирает входной сигнал; сумматор складывает двоичные величины; дешифратор преобразует код в сигналы выбора. Проверьте упрощённое выражение для каждого необходимого сочетания входных сигналов.
Не следует отождествлять произвольную сеть вентилей с комбинированной логикой. Обратная связь может создавать элементы памяти. Ключевое — зависит ли заданный выход исключительно от текущих входов или требуется сохранение информации.
Когда схеме нужна внутренняя память?
Состояние необходимо, когда одинаковые текущие входные сигналы должны приводить к различному поведению из-за различий в предыдущих событиях. Предположим, что запрос на обработку длится только один цикл, но блок обработки должен оставаться активным до завершения. Выражение принятия запроса само по себе не способно запомнить, что обработка уже идет.
Конечный автомат, или КА, разделяет регистр состояния, логику следующего состояния и логику выходов. Эти три элемента описаны в документации AMD Vivado (https://docs.amd.com/r/2022.2-English/ug901-vivado-synthesis/FSM-Description). Выходы по Муру зависят от состояния; выходы по Мили также зависят непосредственно от текущих входов.
В этом примере предполагается, что все входные события синхронны с одним тактовым сигналом и стабильны для считывания. Используйте три состояния, синхронный сброс и выход по типу Мура под названием done.
Создание и отслеживание контроллера с тремя состояниями
Контроллер принимает сигнал start в состоянии IDLE, ожидает сигнал complete в состоянии RUN и удерживает состояние DONE до поступления сигнала acknowledge. Сигнал сброса имеет приоритет над всеми другими условиями и переводит контроллер в состояние IDLE на следующем активном фронте тактового импульса.
| Текущее состояние | Условие на активном фронте | Следующее состояние | признак done в текущем состоянии |
|---|---|---|---|
| Любое состояние | reset = 1 | IDLE | Определяется текущим состоянием |
| IDLE | start = 1, reset = 0 | RUN | 0 |
| RUN | complete = 1, reset = 0 | DONE | 0 |
| ГОТОВО | acknowledge = 1, reset = 0 | ОЖИДАНИЕ | 1 \n |
| IDLE / RUN / DONE | Нет применимого перехода, сброс = 0 | Сохранить текущее состояние | 0 / 0 / 1 |
Иллюстрация опущена стрелки состояния удержания ради ясности. В этом примере сброс синхронный, а сигнал done устанавливается только в состоянии DONE.
Пройдите по конкретной последовательности. После срабатывания сигнала сброса состояние — IDLE, done = 0. Образец сигнала start переводит систему в состояние RUN. Два цикла без завершения остаются в состоянии RUN. Образец сигнала complete переводит систему в состояние DONE, при этом done становится равным 1 после обновления состояния. Подтверждение возвращает систему в состояние IDLE.
Для реализации трёх состояний требуется как минимум два бинарных разряда состояния. Выберите восстановление в состояние IDLE для неиспользуемого кодирования. Это функциональный выбор при проектировании, а не требование сертификации безопасности.
Проверьте граничные случаи перед реализацией
Проверьте события в неправильном состоянии: завершение в состоянии IDLE не должно приводить к сигналу done, а запуск во время RUN не должен перезапускать транзакцию. Если сигналы complete и acknowledge поступают одновременно в состоянии RUN, контроллер переходит в состояние DONE; подтверждение оценивается только при уже находящемся в состоянии DONE.
Начало, удерживаемое в высоком состоянии до завершения, может инициировать другую транзакцию после того, как контроллер вернется в состояние IDLE. Если это нежелательно, измените контракт интерфейса или добавьте детектирование фронта запроса. Также протестируйте сброс во время состояний RUN и DONE. Поскольку сброс здесь синхронный, состояние не меняется до активного фронта.
ЧАВО
Ограничены ли все выходы триггеров изменениями только на фронтах тактового сигнала?
Нет. Некоторые устройства имеют асинхронные сигналы установки или сброса. Например, в техническом описании SN74HC74 от TI указаны асинхронная установка (preset) и сброс (clear). Согласуйте поведение схемы или RTL-модели с заданным контрактом сброса.
Доказывает ли правильная таблица истинности, что законченная схема будет работать?
Это подтверждает только заданное логическое отображение при правильной реализации. Полный дизайн также требует последовательной верификации, где применимо, анализа временных параметров и проверки электрических интерфейсов.
Перенесите поведение в схему
Сохраняйте определения входов, логические выражения, переходы между состояниями и приоритет сброса вместе. Они обеспечивают конкретные проверки для моделирования и помогают отличить ошибку логики от проблемы реализации.
Вам нужна помощь с производством печатных плат или сборкой PCBA?
Предоставьте требования к производству печатных плат или сборке печатных плат для получения коммерческого предложения.



















