Уровень 32: Мультиплексор (Verilog)
Задание
Напишите мультиплексор 2→1. Если sel = 0, на выход проходит a; если sel = 1 — b.
Модуль Mux имеет три однобитных входа (a, b, sel) и один выход out.
Важно: Verilog описывает соединения — все строки срабатывают одновременно, а не по порядку.
Материалы по теме
- Мультиплексор — переключатель сигналов
- MUX — мультиплексор
Решение
Формула мультиплексора: out = (a AND NOT sel) OR (b AND sel).
- Объявите три внутренних провода:
wire nsel, w1, w2; - Инвертируйте
selвnsel:not u1(nsel, sel); - Пропустите
aчерез AND с инвертированным sel:and u2(w1, a, nsel); - Пропустите
bчерез AND с прямым sel:and u3(w2, b, sel); - Объедините через OR:
or u4(out, w1, w2);
Ровно один из двух AND выдаёт 1 — тот, чей управляющий вход активен. Второй всегда даёт 0, поэтому OR честно пропускает нужный сигнал.