Последовательные функциональные схемы
Последовательные функциональные схемы — это класс цифровых логических устройств, в которых выходные сигналы зависят не только от текущих значений входных сигналов, но и от предшествующего состояния устройства (истории входных воздействий). В отличие от комбинационных схем, где выход однозначно определяется комбинацией входов в данный момент времени, последовательные схемы обладают памятью. Основным элементом памяти в таких схемах является триггер — бистабильная ячейка, способная хранить один бит информации.
Принцип работы и отличия от комбинационных схем
Фундаментальное различие между комбинационными и последовательными схемами заключается в наличии обратной связи и элементов памяти. В комбинационной схеме сигнал распространяется от входов к выходам без запоминания промежуточных результатов. В последовательной схеме часть выходного сигнала или внутреннего состояния подаётся обратно на вход, что и позволяет учитывать предыдущие состояния.
Математически работу последовательной схемы можно описать двумя функциями:
- Функция переходов: определяет следующее состояние схемы (S(t+1)) на основе текущего состояния (S(t)) и текущих входов (X(t)).
- Функция выходов: определяет текущие выходы (Y(t)) на основе текущего состояния (S(t)) и, возможно, текущих входов (X(t)).
В зависимости от реализации функции выходов, последовательные схемы делятся на два основных типа:
- Автоматы Мура: выход зависит только от текущего состояния схемы (Y(t) = f(S(t))).
- Автоматы Мили: выход зависит как от текущего состояния, так и от текущих входов (Y(t) = f(S(t), X(t))).
Классификация по способу синхронизации
Последовательные схемы подразделяются на два больших класса в зависимости от того, как управляется изменение их состояния.
Асинхронные последовательные схемы
В асинхронных схемах изменение состояния происходит немедленно при изменении любого входного сигнала. Время переключения определяется только задержками распространения сигнала в логических элементах. Основным достоинством асинхронных схем является высокое быстродействие в идеальных условиях, так как нет необходимости ждать тактового импульса. Однако они чрезвычайно чувствительны к «гонкам» (состязаниям) сигналов — ситуациям, когда из-за разных задержек на разных путях распространения сигнала схема может перейти в непредсказуемое состояние. Проектирование надёжных асинхронных схем значительно сложнее, чем синхронных, и требует тщательного анализа временных диаграмм. На практике асинхронные схемы часто используются в простых устройствах (например, RS-триггеры) или в специализированных высокоскоростных интерфейсах.
Синхронные последовательные схемы
Синхронные схемы работают под управлением единого тактового сигнала (clock). Изменение состояния происходит только в определённые моменты времени — по фронту (переднему или заднему) или по уровню тактового импульса. Это позволяет избежать проблем с гонками сигналов, так как все изменения синхронизированы. Подавляющее большинство современных цифровых устройств — от микропроцессоров до микроконтроллеров и ПЛИС — строятся на основе синхронных последовательных схем. Основным недостатком является ограничение максимальной тактовой частоты, которая определяется самым длинным путём распространения сигнала между двумя триггерами.
Основные элементы памяти: триггеры
Триггер является базовым строительным блоком любой последовательной схемы. Существует несколько основных типов триггеров, различающихся логикой работы.
RS-триггер (Reset-Set)
Простейший тип триггера, имеющий два входа: S (Set — установка) и R (Reset — сброс). При подаче сигнала на вход S триггер устанавливается в единичное состояние (Q=1), при подаче на R — сбрасывается в нулевое (Q=0). Комбинация S=1 и R=1 является запрещённой, так как приводит к неопределённому состоянию. RS-триггер может быть реализован как на элементах И-НЕ, так и на ИЛИ-НЕ.
D-триггер (Data или Delay)
Наиболее распространённый тип триггера в синхронных схемах. Он имеет один информационный вход D и вход синхронизации C. D-триггер запоминает значение на входе D в момент прихода тактового импульса (по фронту) и хранит его до следующего импульса. Таким образом, он выполняет функцию задержки сигнала на один такт. D-триггеры используются для построения регистров, сдвиговых регистров и счётчиков.
JK-триггер
Универсальный тип триггера, лишённый недостатков RS-триггера. Он имеет входы J и K. При J=1, K=0 — устанавливается в 1; при J=0, K=1 — сбрасывается в 0; при J=0, K=0 — хранит состояние; при J=1, K=1 — инвертирует своё состояние (переключается). JK-триггеры широко применяются в счётчиках благодаря режиму T-триггера (счётного триггера).
T-триггер (Toggle)
Счётный триггер, который меняет своё состояние на противоположное при каждом тактовом импульсе. Он может быть получен из JK-триггера путём объединения входов J и K (J=K=1). T-триггеры используются в делителях частоты и двоичных счётчиках.
Примеры последовательных схем
На основе триггеров и комбинационной логики строятся более сложные функциональные узлы.
Регистры
Регистр — это набор триггеров (обычно D-триггеров), объединённых общим тактовым сигналом. Он предназначен для хранения многоразрядного двоичного числа (слова). Разрядность регистра равна количеству триггеров. Регистры бывают параллельными (запись всех битов одновременно) и последовательными (сдвиговые регистры, где данные вводятся и выводятся по одному биту за такт).
Счётчики
Счётчик — это последовательное устройство, которое подсчитывает количество импульсов, поступивших на его вход, и выдает результат в виде двоичного кода. Счётчики делятся на:
- Суммирующие: увеличивают своё значение на 1 с каждым импульсом.
- Вычитающие: уменьшают значение на 1.
- Реверсивные: могут работать в обоих режимах.
Счётчики могут быть двоичными (счёт по модулю 2^n) и с произвольным модулем счёта (например, десятичные счётчики, счётчики по модулю 60 для часов).
Конечные автоматы
Конечный автомат — это математическая модель последовательной схемы, описывающая её поведение. Он состоит из конечного числа состояний, входных и выходных сигналов, а также правил перехода между состояниями. На практике конечные автоматы реализуются в виде схемы, содержащей регистр состояний (набор триггеров) и комбинационную логику, формирующую сигналы переходов и выходов. Конечные автоматы используются для управления сложными последовательностями операций, например, в процессорах (блок управления), контроллерах и протоколах передачи данных.
Применение
Последовательные функциональные схемы являются основой практически всей современной цифровой электроники. Они применяются:
- В процессорах и микроконтроллерах: для хранения данных (регистры, кэш-память), управления выполнением команд (конечные автоматы), подсчёта тактов (счётчики).
- В устройствах памяти: статическая оперативная память (SRAM) строится на основе триггеров.
- В системах связи: для синхронизации, буферизации и обработки последовательных потоков данных (сдвиговые регистры).
- В измерительной технике: для построения таймеров, частотомеров и генераторов сигналов.
- В промышленной автоматике: для реализации программируемых логических контроллеров (ПЛК), где последовательные схемы реализуются программно.
Проблемы проектирования
Проектирование синхронных последовательных схем сопряжено с рядом проблем, которые необходимо решать для обеспечения надёжной работы:
- Метастабильность: при нарушении требований к времени установки и удержания (setup/hold time) триггер может войти в неопределённое состояние, которое может сохраняться неопределённо долго.
- Тактовый джиттер и перекос (clock skew): разница во времени прихода тактового сигнала на разные триггеры может привести к неправильной работе.
- Гонки сигналов: хотя синхронные схемы менее подвержены гонкам, чем асинхронные, они могут возникать при неправильном проектировании комбинационной логики между триггерами.
Источники
- Угрюмов Е. П. Цифровая схемотехника. — БХВ-Петербург, 2004.
- Хоровиц П., Хилл У. Искусство схемотехники. — Мир, 2003.
- Таненбаум Э., Остин Т. Архитектура компьютера. — Питер, 2013.
- Harris D., Harris S. Digital Design and Computer Architecture. — Morgan Kaufmann, 2012.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →