Проектирование функциональных узлов последовательностного типа: от триггеров до сложных счетных систем

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

1. Теоретические основы цифровых автоматов с памятью и математическое описание последовательностных схем

Любая комбинационная логическая схема страдает абсолютной «амнезией». Значение на её выходе в момент времени зависит исключительно от комбинации входных сигналов в этот же самый момент (с поправкой на задержку распространения сигнала через вентили). Как только входное воздействие снимается, результат вычисления бесследно исчезает. Чтобы построить систему, способную к счету, фильтрации последовательностей или управлению сложными процессами, необходимо ввести понятие внутреннего состояния. Схемы, выход которых зависит не только от текущих входов, но и от предыстории работы, называются последовательностными схемами, или цифровыми автоматами с памятью.

Архитектура цифрового автомата с памятью

Фундаментальное отличие последовательностной схемы от комбинационной заключается в наличии петель обратной связи. Выходы логических элементов подаются обратно на их входы, формируя замкнутый контур циркуляции информации. Именно эта топологическая особенность превращает набор логических вентилей в элемент памяти.

Обобщенная структура цифрового автомата базируется на концепции разделения системы на комбинационную часть и блок памяти.

!Обобщенная структурная схема цифрового автомата

В этой модели выделяются три ключевых вектора сигналов:

  • Вектор входных сигналов — внешние воздействия на систему.
  • Вектор выходных сигналов — реакция системы, передаваемая во внешнюю среду.
  • Вектор внутренних состояний — сигналы, хранящиеся в блоке памяти и подаваемые по цепи обратной связи на вход комбинационной логики.
  • Комбинационная часть автомата решает две независимые задачи: формирование выходов и вычисление следующего состояния , которое должно быть записано в память.

    Математическая модель последовательностной схемы

    Для строгого инженерного анализа цифровых устройств используется математический аппарат теории конечных автоматов. Конечный автомат определяется как шестерка объектов: , где:

  • , , — конечные непустые множества входов, выходов и состояний соответственно.
  • — функция переходов, определяющая, в какое состояние перейдет автомат.
  • — функция выходов, определяющая реакцию автомата.
  • — начальное состояние системы при включении питания или после сигнала сброса.
  • В зависимости от того, как формируется функция выходов , вся классификация цифровых автоматов делится на два фундаментальных класса: автоматы Мили (Mealy) и автоматы Мура (Moore).

    Автомат Мили

    В автомате Мили выходной сигнал зависит как от текущего внутреннего состояния, так и от текущей комбинации на входах. Система уравнений, описывающая динамику автомата Мили в дискретном времени , выглядит так:

    Главная инженерная особенность автомата Мили — «прозрачность» для входных сигналов. Изменение входа может мгновенно (с учетом задержки логических вентилей) изменить выход , даже если тактовый сигнал не поступал и внутреннее состояние не изменилось. Это делает схемы Мили более быстродействующими, но подверженными трансляции помех (гличей) со входов прямо на выходы.

    Автомат Мура

    В автомате Мура выходной сигнал является функцией исключительно внутреннего состояния. Входы влияют только на то, в какое состояние перейдет система на следующем шаге. Уравнения автомата Мура:

    Схемотехнически это означает, что выходы автомата Мура изолированы от входов регистром памяти. Любые высокочастотные колебания или помехи на входах не отразятся на выходах до тех пор, пока автомат не перейдет в новое состояние. Это обеспечивает высокую стабильность выходных сигналов.

    | Характеристика | Автомат Мили | Автомат Мура | |---|---|---| | Зависимость выхода | От входов и состояния | Только от состояния | | Реакция на вход | Мгновенная (асинхронная) | Задержанная (до смены состояния) | | Количество состояний | Обычно требуется меньше | Обычно требуется больше | | Помехоустойчивость выхода | Низкая (пропускает гличи) | Высокая (выход стабилизирован памятью) |

    !Сравнение графов переходов автоматов Мили и Мура

    Формы представления логики работы

    Для синтеза реальных схем абстрактные функции и необходимо перевести в булеву алгебру. Проектирование начинается с формализации задачи одним из трех способов.

    1. Таблицы переходов и выходов. Это двумерные матрицы, где строки соответствуют текущим состояниям , а столбцы — возможным входным комбинациям . На пересечении записывается следующее состояние и/или выход . Для бинарной логики эти таблицы напрямую трансформируются в карты Карно, из которых выводятся минимизированные булевы функции.

    2. Графы переходов (диаграммы состояний). Вершины графа обозначают внутренние состояния . Направленные дуги показывают переходы. Для автомата Мили вес дуги записывается в формате (условие перехода / формируемый выход). Для автомата Мура выход привязан к вершине графа: в кружке пишется , а над дугой — только условие перехода .

    3. Характеристические уравнения. Это аналитическое представление логики работы элемента памяти с использованием аппарата булевой алгебры, расширенного временными индексами. Например, характеристическое уравнение простейшей ячейки памяти описывается логической функцией:

    Здесь (Set) и (Reset) — входные переменные, — текущее состояние, а — состояние, которое установится по завершении переходного процесса. Уравнение четко показывает: единица на выходе будет на следующем шаге, если сейчас подан сигнал установки (), либо если единица там уже была () и при этом нет сигнала сброса ().

    Фактор времени: асинхронные и синхронные системы

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

    Асинхронные автоматы

    В асинхронных схемах смена состояния происходит немедленно при изменении входных сигналов. Роль задержки времени, разделяющей и , играет естественная физическая задержка распространения сигнала через логические вентили ().

    Проектирование асинхронных автоматов сопряжено с серьезной инженерной проблемой — состязаниями (гонками) сигналов. Если для перехода в новое состояние должны одновременно измениться несколько переменных состояния (например, переход от состояния к ), из-за микроскопической разницы в задержках вентилей схема фактически пройдет через промежуточное состояние или . Если это промежуточное состояние является устойчивым, автомат может «застрять» в нем, так и не достигнув целевого состояния . Такое явление называется критическим состязанием. Из-за сложности борьбы с гонками, асинхронные автоматы применяются редко, в основном там, где требуется предельно возможная скорость реакции, не ограниченная тактовым генератором.

    Синхронные автоматы

    Для устранения проблем с гонками вводится глобальный сигнал синхронизации — тактовый сигнал (Clock, CLK). В синхронных автоматах переход из состояния в разрешен только в строго определенные моменты времени, задаваемые активным фронтом или уровнем тактового импульса.

    Введение тактового сигнала превращает непрерывное время в дискретное. В течение такта логические элементы комбинационной части могут переключаться сколько угодно раз, сигналы могут обгонять друг друга, могут возникать гличи. Но память зафиксирует результат вычислений (новое состояние ) только в момент прихода активного фронта CLK. К этому моменту все переходные процессы в комбинационной логике обязаны завершиться.

    !Временная диаграмма работы синхронного автомата

    Для надежной работы синхронной последовательностной схемы необходимо строгое соблюдение двух временных параметров относительно фронта синхросигнала:

  • Время предустановки () — минимальное время до активного фронта CLK, в течение которого входной информационный сигнал должен оставаться неизменным. Если сигнал изменится внутри этого окна, элемент памяти может перейти в метастабильное состояние (зависнуть между логическим нулем и единицей).
  • Время удержания () — минимальное время после активного фронта CLK, в течение которого входной сигнал все еще не должен меняться, чтобы процесс записи надежно завершился.
  • Математическая модель автомата предполагает мгновенный переход, но реальное проектирование требует расчета временных ограничений. Максимальная частота работы синхронного автомата () строго ограничена сверху суммой задержки логики, времени предустановки и задержки самого элемента памяти:

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

    2. Классификация и динамические характеристики триггеров: от асинхронных структур до универсальных двухступенчатых MS-систем

    Классификация и динамические характеристики триггеров: от асинхронных структур до универсальных двухступенчатых MS-систем

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

    Асинхронные RS-триггеры: топология и проблема метастабильности

    Фундаментом любых последовательностных устройств является асинхронный RS-триггер (Reset-Set). В зависимости от используемого логического базиса, он реализуется либо на двух элементах ИЛИ-НЕ (NOR), либо на двух элементах И-НЕ (NAND).

    Рассмотрим классическую структуру в базисе ИЛИ-НЕ. Выход первого элемента подключается ко входу второго, а выход второго — ко входу первого.

    !Логическая схема асинхронного RS-триггера на элементах ИЛИ-НЕ

    Логика работы описывается системой уравнений:

    Где — прямой выход триггера, — инверсный выход, (Reset) — сигнал сброса, (Set) — сигнал установки. Символ обозначает логическое ИЛИ, а верхнее подчеркивание — инверсию (НЕ).

    В нормальном режиме работы сигналы и не могут быть активны одновременно. Если на вход подать логическую единицу (), выход принудительно устанавливается в . Этот поступает на верхний вентиль ИЛИ-НЕ вместе с , что формирует на прямом выходе единицу. Триггер перешел в состояние логической единицы.

    Критический изъян асинхронного RS-триггера кроется в комбинации . В базисе ИЛИ-НЕ это приводит к тому, что на обоих выходах ( и ) устанавливаются логические нули. Это нарушает базовое правило: выходы должны быть взаимно инверсными. Но главная проблема возникает при одновременном снятии единиц ().

    В этот момент оба вентиля ИЛИ-НЕ видят на своих входах нули и пытаются переключить свои выходы в единицу. Из-за технологического разброса параметров транзисторов один из вентилей сработает на пикосекунды быстрее. Тот вентиль, который первым установит на выходе, заблокирует другой вентиль, принудив его выход к . Проблема в том, что предсказать, какой именно вентиль «победит», невозможно. Возникает состояние метастабильности — триггер может зависнуть в промежуточном напряжении или случайным образом свалиться в или . В синхронных цифровых автоматах такое поведение недопустимо.

    Синхронизация по уровню и D-защелки

    Для управления моментом записи информации в схему вводят дополнительный вход синхронизации (Clock). В синхронном RS-триггере сигналы и проходят на базовую ячейку памяти только при .

    Характеристическое уравнение синхронного RS-триггера принимает вид:

    Где — состояние в следующем такте, — текущее состояние, — логическое И.

    Чтобы полностью исключить появление запрещенной комбинации , инженеры объединили информационные входы через инвертор. Так появился D-триггер (Data). На вход подается сигнал , а на вход — сигнал .

    Уравнение D-триггера предельно лаконично: (при )

    Однако здесь возникает проблема прозрачности по уровню (level-triggered). Пока синхросигнал равен логической единице, D-триггер работает как открытая дверь: любые изменения на входе немедленно отражаются на выходе .

    Представим сдвиговый регистр, где выход первого D-триггера соединен со входом второго, и оба тактируются одним сигналом . Ожидается, что за один такт бит информации сдвинется ровно на одну позицию. Но если длительность импульса превышает суммарную задержку распространения сигнала через два триггера, бит «проскочит» сразу через обе ячейки. Это делает невозможным проектирование надежных схем с обратными связями (например, счетчиков) на базе триггеров, управляемых по уровню.

    Двухступенчатая архитектура (Master-Slave) и динамическое управление

    Решением проблемы прозрачности стал переход к управлению по фронту (edge-triggered). Идея заключается в том, чтобы триггер реагировал на входные данные не в течение всего времени, пока , а только в короткий момент изменения синхросигнала от к (передний фронт) или от к (задний фронт).

    Классическая реализация этой концепции — двухступенчатая MS-архитектура (Master-Slave, ведущий-ведомый).

    !Процесс передачи данных в двухступенчатом MS-триггере

    MS-триггер состоит из двух последовательно соединенных D-защелок (управляемых по уровню). Ключевой элемент архитектуры — инвертор в цепи синхронизации. Если на ведущий триггер (Master) подается синхросигнал , то на ведомый (Slave) поступает .

    Рассмотрим динамику процесса:

  • Фаза записи (): Ведущий триггер прозрачен. Он принимает данные со входа . Ведомый триггер в этот момент заблокирован (так как ) и надежно хранит предыдущее значение, отдавая его на выход всей схемы.
  • Фронт спада (): Ведущий триггер мгновенно защелкивается, фиксируя то значение , которое было на входе в момент спада. Одновременно становится равным . Ведомый триггер открывается и копирует зафиксированное состояние ведущего на выход .
  • Внешнему наблюдателю кажется, что триггер мгновенно считал вход и изменил выход точно по спаду синхросигнала. Прозрачность полностью исключена: вход и выход никогда не бывают соединены напрямую. Это позволяет безопасно замыкать выход MS-триггера на его же вход через комбинационную логику.

    Универсальные триггеры: JK и T

    На базе MS-архитектуры или архитектуры с динамическим управлением строятся более сложные функциональные ячейки. Самым универсальным является JK-триггер. Он решает проблему запрещенного состояния RS-триггера путем введения перекрестных обратных связей с выходов на входы.

    Формально, входы базового RS-триггера внутри JK-структуры формируются так:

    Где и — информационные входы, а и — текущие состояния выходов. Подставив эти выражения в характеристическое уравнение синхронного RS-триггера, получаем уравнение JK-триггера:

    Анализ этого уравнения показывает уникальное свойство. Если и , уравнение упрощается до:

    Вместо запрещенного состояния мы получили счетный режим (toggle). При каждой активной смене синхросигнала триггер меняет свое состояние на противоположное.

    Если объединить входы и в один общий вход , мы получим T-триггер (счетный триггер). Его характеристическое уравнение строится на операции исключающего ИЛИ (XOR):

    Где — логическая операция XOR. Если , то (инверсия). Если , то (хранение). Именно T-триггеры образуют базис для построения всех типов цифровых счетчиков.

    Динамические ограничения и таблицы переходов

    При проектировании узлов на базе триггеров необходимо учитывать их физические задержки, которые накладывают жесткие ограничения на максимальную тактовую частоту системы.

    Главный динамический параметр — время задержки распространения (propagation delay). Это интервал между активным фронтом синхросигнала и моментом, когда новые данные стабилизируются на выходе .

    В замкнутой последовательностной схеме (например, автомате Мура) сигнал с выхода триггера должен пройти через комбинационную логику и успеть стабилизироваться на входе следующего триггера до наступления нового такта. Максимальная тактовая частота рассчитывается по формуле:

    Где — задержка самого триггера, — максимальная задержка комбинационной логики между триггерами, — время предустановки принимающего триггера. Если период тактового сигнала окажется меньше этой суммы, система считает нестабильные данные, что приведет к фатальной ошибке автомата.

    Для синтеза комбинационной логики , управляющей входами триггеров, используются таблицы переходов (таблицы возбуждения). В отличие от таблиц истинности, они отвечают на обратный вопрос: какие сигналы нужно подать на входы триггера, чтобы перевести его из заданного текущего состояния в требуемое состояние ?

    Для JK-триггера таблица переходов выглядит следующим образом:

  • Переход : требуется , (безразличное состояние, может быть или ).
  • Переход : требуется , .
  • Переход : требуется , .
  • Переход : требуется , .
  • Наличие безразличных состояний () делает JK-триггер исключительно удобным для ручного синтеза автоматов с помощью карт Карно, так как символы можно доопределять нулями или единицами для максимального упрощения логических функций.

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

    3. Архитектура и функциональные возможности регистров: параллельные, сдвигающие и универсальные структуры

    Архитектура и функциональные возможности регистров: параллельные, сдвигающие и универсальные структуры

    Одиночный триггер способен запомнить лишь один бит информации, однако вычислительные системы оперируют машинными словами разрядностью 8, 32, 64 и более бит. Для параллельной обработки, хранения и маршрутизации многоразрядных данных триггеры объединяются в регулярные структуры — регистры. В зависимости от организации связей между базовыми ячейками памяти, регистры способны не только хранить код, но и выполнять над ним микрооперации: сдвиг, преобразование форматов и побитовые логические операции.

    Параллельные регистры и интерфейс с шиной данных

    Параллельный регистр (Parallel-In Parallel-Out, PIPO) представляет собой массив из триггеров, объединенных общей цепью тактирования. В простейшем случае это набор D-триггеров с динамическим управлением, входы которых подключены к шине источника данных, а выходы — к шине приемника.

    Инженерная проблема при проектировании параллельных регистров заключается в организации режима хранения. Если тактовый сигнал подается на регистр непрерывно, он будет перезаписывать свое значение на каждом фронте. Блокировка самого тактового сигнала (clock gating) логическими вентилями И/ИЛИ для запрета записи является грубой ошибкой в синхронном дизайне: это порождает глитчи (ложные импульсы) и нарушает глобальную синхронизацию кристалла.

    Синхронное разрешение записи (Clock Enable, CE) реализуется через мультиплексирование данных на входе D-триггера:

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

    Вторая архитектурная особенность параллельных регистров — подключение к общей магистрали (шине). Выходы нескольких регистров нельзя напрямую соединять проводами из-за риска короткого замыкания (один регистр выдает логический «0», другой — «1»). Для решения этой задачи на выходе регистра устанавливаются буферы с третьим (высокоимпедансным) состоянием — Z-состоянием. В режиме Z-состояния выходные транзисторы буфера закрыты, и регистр физически отключается от шины, обладая бесконечно большим сопротивлением. Сигнал Output Enable (OE) управляет этими буферами, гарантируя, что в любой момент времени только один регистр имеет право «говорить» на системной шине.

    Сдвиговые регистры: преобразование форматов и временные задержки

    Сдвиговый регистр формируется путем каскадного соединения D-триггеров, где выход предыдущего разряда жестко связан со входом последующего: . Все триггеры тактируются общим синхросигналом.

    !Пошаговое продвижение данных в сдвиговом регистре

    Работоспособность такой структуры базируется на строгом соотношении временных параметров триггеров. На фронте синхросигнала первый триггер захватывает входной бит, а второй триггер должен захватить бит, который хранился в первом триггере до фронта. Возникает кажущееся противоречие: если данные на выходе первого триггера меняются по тому же фронту, не захватит ли второй триггер уже новые данные?

    Схема работает корректно благодаря задержке распространения сигнала . Изменение на выходе происходит не мгновенно, а спустя время после фронта тактового сигнала. Чтобы последующий триггер успешно зафиксировал старое значение, это значение должно оставаться стабильным в течение времени удержания . Следовательно, фундаментальное условие работоспособности любого сдвигового регистра:

    В современных библиотеках стандартных ячеек (Standard Cell Library) триггеры проектируются так, чтобы время удержания было минимальным (часто нулевым или отрицательным), что гарантированно удовлетворяет этому неравенству при каскадном соединении.

    Топологии сдвиговых регистров

    Каскадная архитектура позволяет реализовать два критически важных преобразования данных:

  • SIPO (Serial-In Parallel-Out) — преобразование последовательного кода в параллельный. Данные поступают бит за битом по одной линии на вход первого триггера. Спустя тактов полное слово оказывается распределенным по выходам , после чего может быть параллельно считано. Применяется в приемниках UART, SPI и сетевых интерфейсах.
  • PISO (Parallel-In Serial-Out) — преобразование параллельного кода в последовательный. Регистр требует комбинированной логики на входах D-триггеров. По сигналу Load (Загрузка) мультиплексоры на входах переключаются на параллельную шину данных, и по фронту тактового сигнала слово записывается в триггеры. Затем сигнал Load снимается, мультиплексоры переключаются в режим каскада (), и в течение следующих тактов данные выдаются наружу через выход последнего триггера.
  • Универсальные регистры

    Для построения арифметико-логических устройств (АЛУ) и микропроцессорных ядер требуются регистры, способные выполнять весь спектр микроопераций: параллельную загрузку, хранение, сдвиг влево и сдвиг вправо. Такие устройства называются универсальными многофункциональными регистрами.

    Архитектура универсального регистра строится на комбинации D-триггера и мультиплексора 4-в-1 перед каждым информационным входом. Мультиплексор управляется двухразрядным кодом операции .

    !Логическая схема ячейки универсального регистра

    Рассмотрим логику работы -го разряда:

  • При (Хранение): на вход подается собственный выход .
  • При (Сдвиг вправо): на вход подается выход предыдущего старшего разряда .
  • При (Сдвиг влево): на вход подается выход предыдущего младшего разряда .
  • При (Параллельная загрузка): на вход подается бит с внешней шины.
  • Характеристическое уравнение комбинационной части для -го разряда принимает вид:

    Такая структура легко масштабируется на любую разрядность путем простого тиражирования ячеек, при этом на крайние входы (младший при сдвиге влево, старший при сдвиге вправо) могут подаваться логические нули, единицы или выходы с противоположного конца регистра (для организации кольцевого циклического сдвига).

    Проблема перекоса тактового сигнала (Clock Skew)

    При проектировании регистровых структур на кристалле возникает физическая проблема разводки тактового дерева. Сигнал синхронизации не поступает на все триггеры абсолютно одновременно. Разница во времени прихода фронта тактового сигнала на два соседних триггера называется перекосом тактового сигнала ().

    В сдвиговом регистре перекос может привести к фатальной ошибке — гонке данных (Race Condition). Рассмотрим каскад из двух триггеров: передает данные в . Допустим, из-за длины проводников тактовый сигнал приходит на позже, чем на , на величину .

  • Фронт приходит на в момент .
  • Новые данные появляются на выходе (и, соответственно, на входе ) в момент .
  • Фронт приходит на в момент .
  • Чтобы корректно зафиксировал старые данные, они не должны меняться в течение времени удержания после фронта на . То есть старые данные должны оставаться стабильными до момента . Новые данные от разрушат старые в момент .

    Математическое условие надежной работы сдвигового регистра с учетом перекоса:

    Сокращая , получаем фундаментальное ограничение для hold-анализа:

    Если перекос оказывается слишком большим (например, тактовая линия идет навстречу потоку данных), новое значение «проскочит» через два триггера за один такт. Эта ошибка не лечится снижением тактовой частоты, так как зависит исключительно от задержек распространения. Для её устранения инженеры искусственно увеличивают , вставляя буферы-задержки между и , либо разводят тактовое дерево так, чтобы сигнал распространялся в направлении, противоположном движению данных (тогда становится отрицательным и помогает удерживать старые данные).

    Регистры формируют базис для маршрутизации и хранения операндов. Объединение функции сдвига с логикой инверсии и обратными связями позволяет перейти от простой передачи данных к генерации последовательностей и аппаратному счету.

    4. Проектирование и анализ асинхронных счетчиков прямого и обратного счета

    Проектирование и анализ асинхронных счетчиков прямого и обратного счета

    Если соединить счетных T-триггеров в последовательную цепь, получится делитель частоты с коэффициентом , требующий минимального количества транзисторов на кристалле. Однако попытка считать параллельный код с выходов такого устройства в произвольный момент времени с высокой вероятностью выдаст несуществующее, мусорное значение. Этот парадокс лежит в основе главного инженерного компромисса асинхронных счетчиков: предельная аппаратная простота достигается ценой накопления временных задержек и возникновения ложных состояний.

    Архитектура прямого счета и механизм последовательного переноса

    Асинхронный (последовательный) счетчик строится путем каскадирования триггеров, работающих в счетном режиме. В такой схеме внешний тактовый сигнал подается только на синхровход первого (младшего) триггера. Каждый последующий триггер тактируется выходным сигналом предыдущего.

    Для реализации прямого счета (увеличения значения на единицу с каждым тактом) необходимо, чтобы следующий разряд переключался в тот момент, когда текущий разряд обнуляется. В двоичной арифметике перенос в старший разряд происходит именно при переходе младшего из в .

    Если используются триггеры с динамическим управлением по спаду (заднему фронту, переходу ), то для прямого счета достаточно соединить прямой выход с синхровходом следующего каскада.

    Математически состояние -го триггера после поступления активного фронта описывается базовым уравнением T-триггера:

    Поскольку в счетчике информационные входы всех T-триггеров аппаратно зафиксированы в логической единице (), уравнение упрощается до инверсии текущего состояния:

    Событие переключения для -го триггера (где ) наступает при условии:

    где — бесконечно малый интервал времени, в течение которого происходит спад напряжения на выходе предыдущего каскада.

    !Волновой перенос и ложные состояния в 3-битном счетчике

    Обратный счет и инверсная логика переноса

    Для построения вычитающего счетчика логика межразрядных связей должна быть инвертирована. Заем из старшего разряда в двоичной системе происходит, когда младший разряд переходит от к .

    При использовании тех же триггеров, срабатывающих по спаду (), подавать сигнал с прямого выхода больше нельзя. Вместо этого синхровход следующего каскада подключается к инверсному выходу предыдущего. Когда прямой выход переключается из в , инверсный выход синхронно с ним переключается из в . Именно этот спад на инверсном выходе формирует активный фронт для следующего триггера, заставляя его изменить состояние.

    Альтернативный путь проектирования вычитающего счетчика — использование прямых выходов , но замена самих триггеров на модификации, срабатывающие по фронту (переходу ). В схемотехнике чаще применяется первый вариант (использование ), так как он позволяет строить схемы на базе унифицированных библиотечных элементов с одинаковым типом синхронизации.

    Синтез реверсивного счетчика и проблема коммутационных помех

    На практике часто требуется устройство, способное менять направление счета по внешнему управляющему сигналу. Реверсивный асинхронный счетчик объединяет обе описанные выше архитектуры с помощью комбинационной логики (мультиплексоров), установленной между каскадами.

    !Схема 3-битного реверсивного асинхронного счетчика

    Логическое уравнение сигнала, поступающего на синхровход -го каскада, имеет вид:

    где:

  • — сигнал на тактовом входе следующего триггера;
  • — управляющий сигнал направления (Direction): для прямого счета, для обратного;
  • и — прямой и инверсный выходы предыдущего триггера.
  • При проектировании такого узла возникает специфическая аппаратная проблема — коммутационная помеха при смене направления счета. Если в момент переключения сигнала прямой выход (и, соответственно, ), то при смене с на выход мультиплексора мгновенно изменится с на . Триггер следующего каскада воспримет этот перепад как полноценный рабочий тактовый импульс и ложно переключится, нарушив счетную последовательность.

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

    Анализ переходных процессов: эффект "ряби" и ложные состояния

    Фундаментальный недостаток асинхронного счетчика кроется в его названии: триггеры переключаются не одновременно. Задержка распространения сигнала каждого триггера суммируется по мере продвижения фронта от младшего разряда к старшему. Этот процесс называется сквозным переносом (ripple effect).

    Рассмотрим детально временную диаграмму перехода 3-битного счетчика прямого счета из состояния (десятичная 3) в состояние (десятичная 4). Пусть исходное состояние: .

  • На вход поступает внешний спад напряжения. Спустя время нулевой триггер переключается: становится .
  • Текущее физическое состояние выходов: (десятичная 2).
  • Переход из в формирует спад на входе . Спустя еще одно время первый триггер переключается: становится .
  • Текущее физическое состояние выходов: (десятичная 0).
  • Переход из в формирует спад на входе . Спустя третье время второй триггер переключается: становится .
  • Текущее физическое состояние выходов: (десятичная 4).

    Вместо чистого перехода , на выходах счетчика в течение времени последовательно появляются ложные (переходные) состояния: .

    Если выходы такого счетчика подключены к комбинационному дешифратору (например, для выборки адреса памяти или управления автоматом), эти кратковременные ложные состояния вызовут появление на выходах дешифратора острых паразитных импульсов — "иголок" (decoding spikes). Ширина такой "иголки" равна , что достаточно для ложного срабатывания последующих асинхронных цепей.

    Частотные ограничения двух режимов работы

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

    Режим 1: Делитель частоты. Если счетчик используется исключительно для понижения частоты входного сигнала, и потребителя интересует только сигнал со старшего разряда (параллельный код не считывается), то предельная частота ограничивается только быстродействием первого триггера:

    где — время восстановления триггера (минимальное время между окончанием переключения и новым фронтом). В этом режиме входной сигнал может переключаться быстрее, чем волна переноса достигает старшего разряда. Внутри длинного счетчика могут одновременно распространяться несколько волн переключения.

    Режим 2: Параллельный счетчик. Если схема должна выдавать достоверный параллельный двоичный код, который синхронно считывается внешним устройством (например, регистром), период тактового сигнала обязан превышать суммарное время сквозного переноса по всей цепочке плюс время предустановки принимающего регистра:

    Соответственно, максимальная частота падает пропорционально разрядности:

    Для 16-разрядного счетчика на базе триггеров с нс, время установления кода составит нс. Это означает, что считывать параллельный код можно с частотой не более МГц, хотя первый триггер физически способен принимать тактовые импульсы с частотой свыше МГц.

    Асинхронные счетчики демонстрируют высокую эффективность в задачах аппаратного деления частоты и построения электронных часов, где важна минимизация энергопотребления и площади кристалла (отсутствует сложное дерево тактирования). Однако линейное падение производительности при увеличении разрядности и генерация ложных состояний делают их непригодными для высокоскоростных вычислительных трактов и систем адресации, требуя перехода к архитектурам с параллельным распространением тактового сигнала.

    5. Синтез синхронных счетчиков и систем с произвольным коэффициентом пересчета

    Синтез синхронных счетчиков и систем с произвольным коэффициентом пересчета

    Физический предел быстродействия последовательностных схем определяется не столько скоростью переключения одного транзистора, сколько архитектурой распределения тактового сигнала. Когда задержки распространения накапливаются каскадно, схема неизбежно генерирует ложные состояния и теряет работоспособность на высоких частотах. Единственный инженерный выход из этой ситуации — переход к полностью синхронным системам, где тактовый импульс доставляется ко всем элементам памяти одновременно, а логика переходов вычисляется комбинационными цепями до наступления активного фронта.

    Архитектура синхронного двоичного счетчика

    В синхронном счетчике тактовые входы всех триггеров объединены и подключены к единой шине синхронизации. Изменение состояний происходит строго параллельно. Чтобы схема работала как двоичный счетчик, необходимо управлять информационными входами каждого каскада так, чтобы триггер менял свое состояние только в строго определенные такты.

    Для реализации прямого двоичного счета используется базовое математическое правило: -й разряд инвертируется в следующем такте тогда и только тогда, когда все младшие разряды от до находятся в состоянии логической единицы. Если использовать T-триггеры (или JK-триггеры в счетном режиме, где ), функция возбуждения для любого разряда описывается уравнением:

    Для нулевого разряда (он переключается в каждом такте). Для первого — . Для второго — . Для третьего — .

    Существуют два фундаментальных подхода к аппаратной реализации этой функции: последовательный и параллельный перенос.

    При последовательном (каскадном) переносе сигнал разрешения счета формируется цепочкой двухвходовых элементов И. Выход каждого элемента И служит входом для следующего. Уравнение принимает рекурсивный вид: . Несмотря на одновременное тактирование триггеров, комбинационная логика вносит свою задержку. Максимальная частота такой схемы ограничивается временем распространения сигнала через цепочку логических вентилей:

    При параллельном (сквозном) переносе используются многовходовые элементы И. Сигнал для каждого триггера формируется напрямую от выходов всех младших разрядов за один логический шаг.

    !Схема 4-разрядного синхронного счетчика с параллельным переносом

    В архитектуре с параллельным переносом задержка комбинационной части перестает зависеть от разрядности счетчика и определяется задержкой одного многовходового вентиля:

    Ограничением параллельного переноса становится физическая реализация многовходовых элементов И (fan-in limit) и нагрузочная способность выходов младших триггеров (fan-out limit), так как выход вынужден управлять входами вентилей всех последующих каскадов. На практике в счетчиках большой разрядности (например, 32 бита) применяют комбинированную архитектуру: счетчик разбивается на 4-битные блоки с параллельным переносом внутри блока и последовательным переносом между блоками.

    Проектирование систем с произвольным коэффициентом пересчета

    Двоичные счетчики имеют коэффициент пересчета (модуль счета) . В цифровой технике часто требуются делители частоты и конечные автоматы с произвольным модулем, например (десятичный счетчик) или (электронные часы).

    Самый примитивный метод укорочения цикла — асинхронный сброс по совпадению. Для создания счетчика по модулю 5 () берется 3-разрядный двоичный счетчик. Как только на его выходах появляется код (число 5), комбинационная схема (элемент И) формирует сигнал, который подается на асинхронные входы сброса (CLR) всех триггеров. Этот метод категорически не рекомендуется для надежных синхронных систем. Причина кроется в переходных процессах: состояние существует физически, но очень короткое время (доли наносекунд), пока сигнал сброса не обнулит триггеры. Это порождает «иголки» (glitches) на выходах дешифраторов и может привести к метастабильности, если сброс совпадет с фронтом следующего такта.

    Инженерно корректный подход — формальный синхронный синтез. Схема должна переходить из состояния (число 4) сразу в состояние по фронту тактового сигнала, вообще не формируя код .

    Алгоритм формального синтеза на примере

    Для требуется триггера. Рабочий цикл состоит из пяти состояний: . Состояния являются неиспользуемыми.

    Синтез проводится на базе JK-триггеров, так как наличие двух управляющих входов и безразличных состояний (X) позволяет максимально минимизировать комбинационную логику.

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

    | Текущее состояние () | Следующее состояние () | | | | | :--- | :--- | :--- | :--- | :--- | | 0 0 0 | 0 0 1 | 0 X | 0 X | 1 X | | 0 0 1 | 0 1 0 | 0 X | 1 X | X 1 | | 0 1 0 | 0 1 1 | 0 X | X 0 | 1 X | | 0 1 1 | 1 0 0 | 1 X | X 1 | X 1 | | 1 0 0 | 0 0 0 | X 1 | 0 X | 0 X |

    Шаг 2. Минимизация логических функций. Для каждого из шести входов () составляется карта Карно как функция от текущих состояний . Неиспользуемые состояния () заполняются символом «X» (don't care), что позволяет объединять их с единицами для получения более простых уравнений.

    Рассмотрим минимизацию для входа . Из таблицы видно, что при и ; при . В остальных рабочих состояниях () значение . Добавив «X» от неиспользуемых состояний (), мы можем покрыть область так, что уравнение сводится к простейшему виду:

    Проведя аналогичную минимизацию для остальных входов, получаем итоговую систему характеристических уравнений счетчика:

  • ,
  • ,
  • ,
  • !Симуляция работы синхронного счетчика по модулю 5

    Обратите внимание на аппаратную элегантность результата. Входы и жестко подключены к логической единице. Триггер первого разряда работает в чистом счетном режиме (). Вся логика управления модулем счета свелась к одному инвертору на входе и одному элементу И на входе .

    Проблема неиспользуемых состояний и самовосстановление

    При проектировании узлов с возникает скрытая угроза. Мы использовали состояния как безразличные (X) для минимизации уравнений. Но что произойдет, если в результате мощной электромагнитной помехи или сбоя питания триггеры случайно окажутся в одном из этих состояний?

    Если автомат, попав в неиспользуемое состояние, начинает циркулировать внутри замкнутого кольца нерабочих состояний (например, ), происходит фатальный отказ. Схема никогда не вернется к нормальному счету без аппаратного сброса.

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

    Проверим состояние ():

  • Триггер 0: , . Переход по входам означает принудительный сброс: .
  • Триггер 1: , . Переход означает инверсию: .
  • Триггер 2: , . Переход означает инверсию: .
  • Следовательно, из состояния автомат в следующем же такте перейдет в состояние , которое является легитимной точкой старта рабочего цикла. Аналогичная проверка для даст переход в , а для — переход в . Все неиспользуемые состояния безусловно «сваливаются» в рабочий цикл. Наш счетчик обладает 100% самовосстановлением.

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