Altifigence Academy

30 / 63 · Теория

Следующее состояние счётчика и приоритет сброса

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

Сначала задайте функцию следующего состояния

Добавим синхронный reset и enable к свободно увеличивающемуся NN-битному счётчику:

Ck+1={0rk=1(Ck+1) mod 2Nrk=0, ek=1Ckrk=0, ek=0C_{k+1}=\begin{cases} 0&r_k=1\\ (C_k+1)\bmod2^N&r_k=0,\ e_k=1\\ C_k&r_k=0,\ e_k=0 \end{cases}

СбросСброс возвращает состояние к заданному начальному значению. Нужно определить, синхронен он или асинхронен и имеет ли приоритет над другими управляющими сигналами. имеет высший приоритет, при enable=0 значение хранится. В визуализации ниже можно переключать enable и сравнивать увеличение с удержанием значения.

При начальном q=11 выбор reset=1 сначала изменяет только следующее состояние на 00. Нажмите следующий такт и проверьте момент изменения сохранённого значения. После снятия reset пройдите 00→01→10→11→00; при enable=0 проверьте, что номер фронта растёт, а q сохраняется.

Сравните состояния до и после положительного фронта

Синхронный сброс приоритетнее enable. При enable=0 сохранённое значение удерживается. q=11; q_next = (q + 1) mod 4

Составьте прогноз по фронтам

Если начальное состояние 2-битного счётчика 3, на первом фронте reset=1, далее reset=0, состояния после фронтов будут 0, 1, 2, 3, 0. Даже если reset поднят между тактами, синхронный регистрРегистр хранит многобитное состояние. Синхронные регистры в этом курсе записывают определённый вход на фронте тактового сигнала. Подробнее не становится нулём до положительного фронтаПоложительный фронт — момент перехода такта из 0 в 1. Его следует отличать от уровня, означающего весь интервал CLK=1. Подробнее.

Фронтreset перед фронтомПрежнее CНовое C
1130
2001
3012
4023
5030

Каждый столбец — запись наблюдения одного положительного фронтаПоложительный фронт — момент перехода такта из 0 в 1. Его следует отличать от уровня, означающего весь интервал CLK=1. Подробнее. Входы показаны непосредственно перед фронтом, состояния со словом «после» в имени — сразу после обновления. Выравнивание столбцов обозначает порядок выборок, а не физическую задержку распространенияЗадержка распространения — время от изменения входа до установления правильного выхода. Логическая эквивалентность выражений и их временные характеристики — разные вопросы. Подробнее.
Начальное состояние — 3; на первом фронте reset приоритетнее увеличения. Последний фронт возвращает 3 в 0.

Сброс и циклический переход 2-битного счётчика
Показать данные диаграммы
Данные диаграммы: каждый символ — один интервал; точка сохраняет предыдущее состояние; p — один тактовый цикл.
СигналДиаграммаЗначения шины
фронт23452E0 → E1 → E2 → E3 → E4
reset10...
count до2345211 → 00 → 01 → 10 → 11
count после2345200 → 01 → 10 → 11 → 00

Не смешивайте разные виды reset

if(rst) внутри always_ff @(posedge clk) — синхронный reset. Он не эквивалентен асинхронному reset с добавленным фронтом сброса в список событий. Снятие асинхронного reset имеет отдельные условия recovery/removal; заменять им синхронный только ради более быстрого нуля нельзя.

Если счётчик выдаёт периодический импульс, определите и состояние его появления. Выходная формула и момент наблюдения различаются для «1 всё время максимального значения» и «1 один цикл после фронта возврата в 0».

Попробуйте сами

3-битный счётчик равен 7. На первом фронте rst=0, en=0, на следующем rst=0, en=1. Каковы состояния после них?

Прочитать объяснение

Первый фронт сохраняет 7, следующий переходит через границу 3-битного диапазона в 0. Для сохранения 8 нужна большая ширина либо отдельная политика насыщения или ошибки.

Выбор действует в этом браузере. Его можно изменить внизу страницы.