bitGateLab Digital · Обучение
Русский
Открыть симулятор

Обучение › Тема 12

Временные диаграммы, глитчи и статические риски

8 мин чтения · Команда bitGateLab

На бумаге логический элемент реагирует мгновенно; в действительности каждому элементу нужно несколько наносекунд. Для таблицы истинности эта разница почти никогда не важна, а вот для временной диаграммы — важна: два пути с разными задержками могут породить ложные импульсы, называемые глитчами, из-за которых счётчик делает лишний шаг или защёлка срабатывает, когда не должна. Здесь вы научитесь читать временную диаграмму, вычислять задержки, а также находить и устранять статические риски с помощью карты Карно.

Как читать временную диаграмму

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

Задержка распространения и критический путь

Задержка распространения — это время между изменением на входе и вызванным им изменением на выходе, измеренное между точками на уровне 50 % каждого перехода. Различают два значения:

В семействе 74HC при питании 5 V задержки простого элемента составляют порядка 10 ns; они растут с увеличением ёмкостной нагрузки и при снижении напряжения питания.

Задержка схемы — это задержка самого медленного пути от любого входа до выхода, то есть критического пути. Её находят, складывая задержки элементов вдоль каждого пути и выбирая наибольшую сумму.

Пример: F = A·B + A·C при tNOT = 5 ns, tAND = 10 ns и tOR = 10 ns.

  • Путь от B или от C: AND + OR = 20 ns.
  • Путь от A через верхний элемент AND: AND + OR = 20 ns.
  • Путь от A через инвертор: NOT + AND + OR = 25 ns.

Критический путь — от A через инвертор, 25 ns. Ни одно изменение на входах не заставит ждать установления F дольше этого времени.

Глитчи и статические риски

Говорят, что есть статический риск в 1, когда выход должен был бы оставаться равным 1 при изменении входа, но может ненадолго упасть в 0. А статический риск в 0 — противоположный случай: выход должен был бы оставаться равным 0, но выдаёт короткий выброс в 1. Оба возникают, когда переменная и её инверсия приходят к выходу по путям с разной задержкой.

Возьмём схему из предыдущего примера при B = C = 1. Логически F = A + A = 1 всегда. Но когда A переходит из 1 в 0, член A·B выключается раньше, чем включается A·C, потому что сигналу A сначала нужно пройти через инвертор.

A Ā A·B Ā·C F 0 5 10 15 20 25 t (ns)
При B = C = 1 сигнал A спадает в момент t = 0. Между 10 и 15 ns оба входа элемента OR равны 0, и F проваливается с 20 до 25 ns: глитч длительностью 5 ns.

Хронология глитча (B = C = 1, A спадает в момент t = 0):

  1. t = 5 ns: инвертор поднимает A.
  2. t = 10 ns: элемент AND, формирующий A·B, опускает свой выход (он отреагировал на изменение A в момент t = 0).
  3. t = 15 ns: элемент AND, формирующий A·C, поднимает свой выход (он отреагировал на изменение A в момент t = 5).
  4. Между 10 и 15 ns оба входа элемента OR равны 0. OR реагирует на 10 ns позже: F равна 0 с момента t = 20 до t = 25 ns.

Ширина глитча равна разности задержек двух путей: 5 ns, задержка инвертора. Если A нарастает, A·B включается в момент t = 10, а A·C выключается в момент t = 15; в этом интервале оба члена равны 1, и глитча нет.

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

Обнаружение и устранение рисков по карте Карно

На карте Карно для суммы произведений статический риск в 1 возникает, когда две клетки с 1 — соседние, но покрыты разными группами и ни одна группа не покрывает обе. Переход из одной клетки в другую означает изменение единственной переменной, и во время этого изменения схема «перепрыгивает» с одного члена на другой.

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

Пример: F = A·B + A·C.

  1. A·B покрывает клетки ABC = 110 и 111. A·C покрывает 001 и 011.
  2. Клетки 011 и 111 соседние (меняется только A) и находятся в разных группах: это и есть риск, который мы видели, при B = C = 1.
  3. Группа, покрывающая обе, — это B·C, консенсус членов A·B и A·C: отбрасывают переменную, которая входит в один член в прямом виде, а в другой — с отрицанием, и перемножают оставшееся.
  4. Схема без риска: F = A·B + A·C + B·C. При B = C = 1 член B·C всё время равен 1, и выход OR уже не может упасть.

Для произведения сумм рассуждение двойственное: ищут соседние нули в разных группах и добавляют сумму консенсуса, чтобы устранить статический риск в 0. Например, у F = (A + B)·(A + C) есть риск при B = C = 0, и он исправляется добавлением множителя (B + C).

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

Типичные ошибки

Попробуйте в симуляторе

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

  1. Поместите инвертор, два элемента AND и один OR и соберите F = A·B + A·C.
  2. Зафиксируйте B = 1 и C = 1, а A подключите ко входу, который можно переключать, или к медленному тактовому сигналу.
  3. Откройте временную диаграмму и несколько раз переключите A из 1 в 0; наблюдайте за F в момент перехода — появляется ли короткий импульс или предупреждение о глитче.
  4. Добавьте третий элемент AND, формирующий B·C, и подайте его на OR.
  5. Повторите переключение A и убедитесь, что F остаётся равной 1.

Упражнения

  1. Найдите статический риск в F = A·C + B·C и запишите вариант без риска.
    Ответ

    A·C покрывает 100 и 110; B·C покрывает 011 и 111. Клетки 110 и 111 соседние (меняется C) и лежат в разных группах, при A = B = 1. Консенсус: A·B. F = A·C + B·C + A·B.

  2. В схеме из упражнения 1 при tNOT = 4 ns, tAND = 8 ns и tOR = 8 ns, A = B = 1: при каком переходе C возникает глитч, когда и сколько он длится?
    Ответ

    Когда C спадает в момент t = 0: B·C спадает в момент t = 8, C нарастает в момент t = 4, а A·C нарастает в момент t = 12. Между 8 и 12 ns элемент OR видит два нуля, поэтому F равна 0 с t = 16 до t = 20 ns: 4 ns. Когда C нарастает, глитча нет.

  3. Каков критический путь F = A·C + B·C при задержках из упражнения 2?
    Ответ

    От C через инвертор: 4 + 8 + 8 = 20 ns.

  4. Для F = (A + B)·(A + C): каким должен быть выход при B = C = 0 и какой глитч может возникнуть?
    Ответ

    При B = C = 0 получаем F = A·A = 0. При изменении A может возникнуть короткий выброс в 1 (статический риск в 0). Он устраняется добавлением множителя (B + C).