Altifigence Academy

20 / 36 · Теория

Следующее значение из прежнего

Прочитайте неблокирующие присваивания и приоритет сброса.

Цели урока

  • Прочитайте неблокирующие присваивания и приоритет сброса.

Расчёт по прежнему состоянию

В count<=count+2'b01 справа используется старый count. При 01 следующим будет 10. Неблокирующее <= планирует рассчитанное значение на фазу неблокирующего обновления. Разделение старого и нового полезно и для нескольких регистров на одном фронте.

Фрагмент RTL
always_ff @(posedge clk)
    if (rst) count <= 2'b00;
    else count <= count + 2'b01;

Только одна ветвь

if/else выбирает один путь. При rst=1 сохраняется 00 без увеличения. Это не сброс, за которым на том же фронте следует добавление до 01. Запишите текущий count, rst, выбранную ветвь и следующий count: так видны приоритет и переход через максимум.

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

При count=11,rst=1 после фронта будет 00 или 01?

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

00. Выбрана ветвь сброса, ветвь увеличения не выполняется.

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