Проектирование мультиплексора 4 в 1
Часть раздела Основы путешествия по Verilog на Coddy — урок 65 из 90.
Задание
Мультиплексор 4-в-1
Мультиплексор 4-в-1 имеет четыре информационных входа (in0, in1, in2, in3), два бита выбора (sel[1:0]) и один выход (out). Два бита выбора определяют, какой вход проходит на выход:
- Когда
sel = 2'b00, выход равенin0 - Когда
sel = 2'b01, выход равенin1 - Когда
sel = 2'b10, выход равенin2 - Когда
sel = 2'b11, выход равенin3
Вы создадите этот мультиплексор двумя способами: сначала с помощью операторов if-else, а затем в следующем уроке с помощью оператора case. Оба метода работают, но case часто выглядит чище, когда есть много вариантов выбора.
Мультиплексор 4-в-1 выбирает один из четырех входов и передает его на выход на основе 2-битного сигнала выбора.
Таблица истинности
| sel1 | sel0 | out |
|---|---|---|
| 0 | 0 | out = in0 |
| 0 | 1 | out = in1 |
| 1 | 0 | out = in2 |
| 1 | 1 | out = in3 |
Когда sel равен 00, выход соответствует in0. Когда sel равен 01, выход соответствует in1. Когда sel равен 10, выход соответствует in2. Когда sel равен 11, выход соответствует in3.
Что нужно сделать:
- Создайте модуль с именем
mux4to1 - Добавьте вход
in0(1 бит) - Добавьте вход
in1(1 бит) - Добавьте вход
in2(1 бит) - Добавьте вход
in3(1 бит) - Добавьте вход
sel(2 бита) - Добавьте выход
out(1 бит, типreg) - Добавьте блок
always @(*) - Внутри добавьте оператор
if-else, проверяющийsel:- Если
sel == 2'b00, установитеout = in0 - Иначе, если
sel == 2'b01, установитеout = in1 - Иначе, если
sel == 2'b10, установитеout = in2 - Иначе, установите
out = in3
- Если
- Закройте модуль с помощью
endmodule
Попробуйте сами
// Шаг 1: Создайте модуль с именем mux4to1
// Шаг 2: Добавьте вход in0
// Шаг 3: Добавьте вход in1
// Шаг 4: Добавьте вход in2
// Шаг 5: Добавьте вход in3
// Шаг 6: Добавьте вход sel (2 бита)
// Шаг 7: Добавьте выход out (тип reg)
// Шаг 8: Добавьте блок always @(*)
// Шаг 9: Добавьте оператор if-else
// если sel == 2'b00, out = in0
// иначе если sel == 2'b01, out = in1
// иначе если sel == 2'b10, out = in2
// иначе, out = in3
// Шаг 10: EndmoduleВсе уроки раздела Основы
1Введение
Что такое VerilogHardware против SoftwareУровни абстракции проектированияВаш первый модульКомментарии4Операторы. Часть 1
Арифметические операторыОператор остатка от деленияОператоры сравненияПовторение: простая математикаПобитовые операторы7Оператор Assign и логические вентили
Непрерывное присваиваниеAssign с операторамиВстроенные примитивы вентилейВентили AND, OR, NOTВентили XOR, XNORИтоги: Схемы на логических вентилях10Принятие решений
Оператор ifКонструкция if - elseПовторение: простой компараторОператор caseОператоры casex и casezПовторение: проектирование ALU5Операторы. Часть 2
Логические операторыОператоры редукцииОператоры сдвигаОператор конкатенацииУсловный операторПовторение — Испытание по операторам3Системы счисления
Двоичное представлениеЧисла с заданным размеромЧисла без заданного размераОтрицательные числаСпециальные значения X и ZИтоги — форматы чисел6Модули
Структура модуляВходные и выходные портыПорты InoutИнстанцирование модуляПодключение портов по имениПодключение портов по порядкуИтоги: создание модуля9Процедурные блоки
Блок alwaysБлок initialСписок чувствительностиБлокирующее присваиваниеНеблокирующее присваиваниеИтоги: always против initial12Проект: Мультиплексор
Проектирование мультиплексора 2 в 1Проектирование мультиплексора 4 в 1