18 / 36 · Теория
Фронты такта и состояние
Разделяйте изменение входов и обновление регистров.
Уроки доступны бесплатно. Запишитесь, чтобы сохранять прогресс.
Цели урока
- Разделяйте изменение входов и обновление регистров.
Фронт — мгновение, не интервал
posedge clk — нарастающий фронт. Счётчик не растёт всё время высокого уровня, а обновляется один раз на фронт. Отметьте первый фронт и пронумеруйте следующие, сравнивая рассчитанные значения и удержание между ними.
Сброс тоже считывается на фронте
always_ff слушает только posedge clk. Подъём rst не меняет count до фронта. На фронте при rst=1 сохраняется 00 вместо увеличения. Это синхронный сброс; асинхронный проект может реагировать иначе. Читайте условие события, а не только имя сигнала.
| Событие | rst | Изменение count |
|---|---|---|
| Между фронтами | 0 → 1 | Удержание |
| Нарастающий фронт | 1 | Записать 00 |
| Спадающий фронт | 0 | Удержание |
| Следующий нарастающий фронт | 0 | Увеличение на один |
Попробуйте сами
Станет ли count=10 сразу 00, если rst поднялся между фронтами?
Прочитать объяснение
Нет. Он держит 10 до следующего фронта и станет 00, если rst всё ещё высок.
✓ Изучено