Проектирование мультиплексора 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
// else, out = in3
// Шаг 10: EndmoduleВсе уроки раздела Основы
1Введение
Что такое VerilogАппаратное и программное обеспечениеВаш первый модульКомментарииУровни абстракции проектирования4Операторы. Часть 1
Арифметические операторыОператор взятия остаткаОператоры сравненияПовторение — простая математикаПобитовые операторы7Присваивание и логические элементы
Непрерывное присваиваниеПрисваивание с операторамиВстроенные примитивы логических элементовЭлементы И, ИЛИ и НЕЭлементы XOR и XNORПовторение — схема на логических элементах10Принятие решений
Оператор ifif—elseПовторение — простой компараторОператор casecaseх и casezПовторение — проектирование ALU5Операторы, часть 2
Логические операторыОператоры свёрткиОператоры сдвигаОператор конкатенацииУсловный операторПовторение — задание на операторы11Циклы
Цикл forЦикл whileЦикл повторенияБесконечный циклОператор отключенияПовторение — шаблоны циклов3Система счисления
Двоичное представлениеЧисла заданной разрядностиЧисла без указания разрядностиОтрицательные числаСпециальные значения X и ZПовторение — форматы чисел6Модули
Структура модуляВходные и выходные портыДвунаправленные портыСоздание экземпляра модуляПодключение портов по имениПодключение портов по порядкуПовторение — создание модуля9Процедурные блоки
Блок AlwaysБлок InitialСписок чувствительностиБлокирующее присваиваниеНеблокирующее присваиваниеПовторение: Always и Initial12Проект мультиплексора
Проектирование мультиплексора 2 к 1Проектирование мультиплексора 4 к 1Потренируйтесь самостоятельно: Онлайн-компилятор Verilog