Обучение › Тема 12
Временные диаграммы, глитчи и статические риски
8 мин чтения · Команда bitGateLab
На бумаге логический элемент реагирует мгновенно; в действительности каждому элементу нужно несколько наносекунд. Для таблицы истинности эта разница почти никогда не важна, а вот для временной диаграммы — важна: два пути с разными задержками могут породить ложные импульсы, называемые глитчами, из-за которых счётчик делает лишний шаг или защёлка срабатывает, когда не должна. Здесь вы научитесь читать временную диаграмму, вычислять задержки, а также находить и устранять статические риски с помощью карты Карно.
Как читать временную диаграмму
На временной диаграмме каждый сигнал изображается линией, которая поднимается (1) или опускается (0) над общей горизонтальной осью времени. Воображаемая вертикальная линия в любой момент даёт значения всех сигналов. Фронты входных сигналов — это причины; расстояние между фронтом на входе и вызванным им изменением на выходе — это задержка. В тактируемых схемах читайте значения непосредственно перед каждым активным фронтом — именно тогда триггеры захватывают данные.
Задержка распространения и критический путь
Задержка распространения — это время между изменением на входе и вызванным им изменением на выходе, измеренное между точками на уровне 50 % каждого перехода. Различают два значения:
- tPLH: задержка при переходе выхода из низкого уровня в высокий.
- tPHL: задержка при переходе выхода из высокого уровня в низкий.
В семействе 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 сначала нужно пройти через инвертор.
Хронология глитча (B = C = 1, A спадает в момент t = 0):
- t = 5 ns: инвертор поднимает A.
- t = 10 ns: элемент AND, формирующий A·B, опускает свой выход (он отреагировал на изменение A в момент t = 0).
- t = 15 ns: элемент AND, формирующий A·C, поднимает свой выход (он отреагировал на изменение A в момент t = 5).
- Между 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.
- A·B покрывает клетки ABC = 110 и 111. A·C покрывает 001 и 011.
- Клетки 011 и 111 соседние (меняется только A) и находятся в разных группах: это и есть риск, который мы видели, при B = C = 1.
- Группа, покрывающая обе, — это B·C, консенсус членов A·B и A·C: отбрасывают переменную, которая входит в один член в прямом виде, а в другой — с отрицанием, и перемножают оставшееся.
- Схема без риска: 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).
Типичные ошибки
- Думать, что схема с правильной таблицей истинности не может давать сбоев: таблица ничего не говорит о поведении во время переходов.
- Убирать при упрощении член консенсуса, «потому что он лишний», в схеме, которая формирует тактовый сигнал или сброс.
- Складывать задержки всех элементов схемы, а не только тех, что лежат на самом медленном пути.
- Считать, что консенсус устраняет глитчи, когда одновременно меняются два входа: он покрывает только изменения одной переменной.
Попробуйте в симуляторе
На временной диаграмме можно увидеть выброс и то, как он исчезает после добавления консенсуса.
- Поместите инвертор, два элемента AND и один OR и соберите F = A·B + A·C.
- Зафиксируйте B = 1 и C = 1, а A подключите ко входу, который можно переключать, или к медленному тактовому сигналу.
- Откройте временную диаграмму и несколько раз переключите A из 1 в 0; наблюдайте за F в момент перехода — появляется ли короткий импульс или предупреждение о глитче.
- Добавьте третий элемент AND, формирующий B·C, и подайте его на OR.
- Повторите переключение A и убедитесь, что F остаётся равной 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.
- В схеме из упражнения 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 нарастает, глитча нет.
- Каков критический путь F = A·C + B·C при задержках из упражнения 2?
Ответ
От C через инвертор: 4 + 8 + 8 = 20 ns.
- Для F = (A + B)·(A + C): каким должен быть выход при B = C = 0 и какой глитч может возникнуть?
Ответ
При B = C = 0 получаем F = A·A = 0. При изменении A может возникнуть короткий выброс в 1 (статический риск в 0). Он устраняется добавлением множителя (B + C).