Skip to main content

Такт, импульсы и тайминги

Цифровая схема выглядит простой, пока вы не начинаете считать время.

🎓 В курсе nand2cpu
Тактовые сигналы в действии: Урок 25: 555 таймер

Импульс и его параметры

          ┌────────┐          ┌────────┐
          │        │          │        │
          │  HIGH  │          │  HIGH  │
    ──────┘        └──────────┘        └──────
       ↑           ↑       ↑
       │           │       │
    rising      falling  rising
     edge        edge     edge
    (фронт)    (спад)   (фронт)
    
    |←── t_high ──→|←─ t_low ─→|
    |←───────── T (период) ────→|

Ключевые понятия

ТерминОписание
ИмпульсКратковременное изменение уровня
Фронт (rising edge)Переход 0 → 1
Спад (falling edge)Переход 1 → 0
Период TВремя одного полного цикла
Частота fСколько циклов в секунду

Период и частота

\[ T = \frac{1}{f}, \qquad f = \frac{1}{T} \]
ЧастотаПериодГде встречается
1 Гц1 сМигание LED
100 Гц10 мсДатчики, кнопки
1 кГц1 мсСервоприводы, PWM
16 МГц62.5 нсArduino Uno
240 МГц4.17 нсESP32

Скважность (duty cycle)

D = 25%:                    D = 75%:

    ┌──┐        ┌──┐            ┌──────┐    ┌──────┐
    │  │        │  │            │      │    │      │
────┘  └────────┘  └────    ────┘      └────┘      └──
   |25%|  75%  |              |  75%  |25%|
\[ D = \frac{t_{high}}{T} \times 100\% \]

Применение PWM:

  • D = 0% → мотор стоит, LED выключен
  • D = 50% → половина мощности
  • D = 100% → полная мощность

Такт (clock) — сердце цифровой системы

CLK:  ┌──┐  ┌──┐  ┌──┐  ┌──┐  ┌──┐
      │  │  │  │  │  │  │  │  │  │
   ───┘  └──┘  └──┘  └──┘  └──┘  └──
         ↑     ↑     ↑     ↑
         │     │     │     │
      Триггеры защёлкивают данные
      ТОЛЬКО по фронту CLK

Зачем нужен такт:

  1. Синхронизация — все части схемы работают в одном ритме
  2. Предсказуемость — изменения только в определённые моменты
  3. Фильтрация помех — короткие пики между тактами игнорируются

Источники тактового сигнала

ИсточникЧастотаТочностьВ курсе nand2cpu
RC-генератор~1 кГц – 1 МГц±10-20%
555 таймер~1 Гц – 500 кГц±5%Урок 25
Кварцевый резонатордо 200 МГц±0.01%
Керамический резонатордо 20 МГц±0.5%

Проблемы с таймингами

1) Дребезг контактов

Идеально:              Реально (дребезг):

    ┌─────────              ┌┐┌┐┌─────
    │                       │││││
────┘                   ────┘└┘└┘
    1 фронт                5-10 фронтов!

Решение: антидребезг

2) Шум на длинных проводах

Провод > 30 см работает как антенна и ловит помехи.

Решения:

  • Подтягивающий резистор (4.7–10 кОм)
  • RC-фильтр на входе
  • Экранированный кабель
  • Триггер Шмитта (74HC14)

3) Метастабильность

Если данные меняются слишком близко к фронту CLK, триггер может «зависнуть» между 0 и 1.

Решение: соблюдать setup time и hold time (из datasheet).

Триггер Шмитта (Schmitt trigger)

Специальный вход с гистерезисом — два разных порога:

Обычный вход:           Триггер Шмитта:

    ───────── порог         ─────── верхний порог
                            ─────── нижний порог

На шумном сигнале обычный вход даёт много фронтов, Шмитт — чистый.

74HC14 — 6 инверторов с триггером Шмитта.

Практические правила

  1. Внешний сигнал → фильтруй: подтяжка + антидребезг
  2. Считаешь импульсы → проверь длительность: импульс должен быть ≥ 2 такта счётчика
  3. PWM для мотора → частота 1–20 кГц (не слышно, не греет драйвер)
  4. PWM для LED → частота ≥ 100 Гц (не мерцает)

Связь с другими темами

  • Антидребезг — фильтрация механических контактов: debouncing
  • Последовательная логика — триггеры и такт: sequential_logic
  • Счётчики — подсчёт тактов: counters
  • 555 таймер — генератор тактов: nand2cpu урок 25
  • Стабильное питание — для чистого CLK: power_supplies

Мини‑задания

  1. Найдите период для \(f=2\,\text{кГц}\).

  2. PWM 1 кГц, \(D=25\%\). Чему равно \(t_{high}\)?

  3. Arduino работает на 16 МГц. Сколько тактов в 1 мс?

  4. Почему триггер Шмитта лучше для кнопки, чем обычный вход?

  5. Какая минимальная частота PWM для LED, чтобы не было мерцания?

Details
  1. \(T=1/2000=0.5\,\text{мс}\).

  2. \(T=1\,\text{мс}\), \(t_{high}=0.25 \times 1=0.25\,\text{мс}=250\,\text{мкс}\).

  3. \(16\,000\,000 \times 0.001 = 16\,000\) тактов.

  4. Гистерезис отсекает шум — переключение происходит чётко, без дребезга на пороге.

  5. ≥ 100 Гц (лучше 200+ Гц).