4 To 1 Mux Design
Часть раздела Основы путешествия по 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Аппаратное обеспечение и программное обеспечениеВаш первый модульКомментарииУровни абстракции проектирования4Operators Part 1
Arithmetic OperatorsModulo OperatorComparison OperatorsRecap - Simple MathBitwise Operators7Assign And Gates
Continuous AssignmentAssign With OperatorsBuilt In Gate PrimitivesAND OR NOT GatesXOR XNOR GatesRecap - Logic Gate Circuit10Decision Making
If StatementIf - ElseRecap - Simple ComparatorCase StatementCasex And CasezRecap - ALU Design5Operators Part 2
Logical OperatorsReduction OperatorsShift OperatorsConcatenation OperatorConditional OperatorRecap - Operator Challenge3Number System
Binary RepresentationSized NumbersUnsized NumbersNegative NumbersSpecial Values X And ZRecap - Number Formats6Modules
Module StructureInput And Output PortsInout PortsModule InstantiationPort Mapping By NamePort Mapping By OrderRecap - Build A Module9Procedural Blocks
Always BlockInitial BlockSensitivity ListBlocking AssignmentNon Blocking AssignmentRecap - Always vs Initial15Traffic Light Controller
Defining The StatesState Machine LogicПотренируйтесь самостоятельно: Онлайн-компилятор Verilog