Уровень 32: Мультиплексор (Verilog)

Задание

Напишите мультиплексор 2→1. Если sel = 0, на выход проходит a; если sel = 1b.

Модуль Mux имеет три однобитных входа (a, b, sel) и один выход out.

Важно: Verilog описывает соединения — все строки срабатывают одновременно, а не по порядку.

Материалы по теме

Решение

Формула мультиплексора: out = (a AND NOT sel) OR (b AND sel).

  1. Объявите три внутренних провода: wire nsel, w1, w2;
  2. Инвертируйте sel в nsel: not u1(nsel, sel);
  3. Пропустите a через AND с инвертированным sel: and u2(w1, a, nsel);
  4. Пропустите b через AND с прямым sel: and u3(w2, b, sel);
  5. Объедините через OR: or u4(out, w1, w2);

Ровно один из двух AND выдаёт 1 — тот, чей управляющий вход активен. Второй всегда даёт 0, поэтому OR честно пропускает нужный сигнал.