28 / 36 · Теория
Срезы и конкатенация
Проследите размещение объединённых битов в регистре.
Уроки доступны бесплатно. Запишитесь, чтобы сохранять прогресс.
Цели урока
- Проследите размещение объединённых битов в регистре.
Скобки соединяют, а не складывают
q<={q[1:0],din} ставит биты рядом. Срез 01 и din=1 дают 011, а не арифметическую сумму. Правая часть целиком читает прежний q. Один фронт не записывает din и затем многократно копирует новое значение по всем ступеням.
always_ff @(posedge clk)
if (rst) q <= 3'b000;
else q <= {q[1:0], din};| Новая позиция | Источник |
|---|---|
| q[2] | Прежнее q[1] |
| q[1] | Прежнее q[0] |
| q[0] | din на фронте |
Порядок меняет направление
{din,q[2:1]} вставляет вход в старший разряд. Ширина прежняя, но направление иное. Для q=101,din=1 исходное выражение даёт 011, обратное — 110. Корректный синтаксис не означает эквивалентную схему.
Попробуйте сами
Для q=010,din=0 чему равно {q[1:0],din}?
Прочитать объяснение
Добавьте 0 к срезу 10: получится 100. Старый q[2] не используется.
✓ Изучено