Menu
Coddy logo textTech

4 To 1 Mux Design

Часть раздела Основы путешествия по Verilog на Coddy. Урок 65 из 90.

challenge icon

Задание

Мультиплексор 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-битного сигнала выбора.

Таблица истинности

sel1sel0out
00out = in0
01out = in1
10out = in2
11out = in3

Когда sel равно 00, выход повторяет значение in0. Когда sel равно 01, выход повторяет значение in1. Когда sel равно 10, выход повторяет значение in2. Когда sel равно 11, выход повторяет значение in3.

Что нужно сделать:

  1. Создать модуль с именем mux4to1
  2. Добавить вход in0 (1 бит)
  3. Добавить вход in1 (1 бит)
  4. Добавить вход in2 (1 бит)
  5. Добавить вход in3 (1 бит)
  6. Добавить вход sel (2 бита)
  7. Добавить выход out (1 бит, тип reg)
  8. Добавить блок always @(*)
  9. Внутри добавить оператор if-else, проверяющий sel:
    • Если sel == 2'b00, установить out = in0
    • Иначе, если sel == 2'b01, установить out = in1
    • Иначе, если sel == 2'b10, установить out = in2
    • Иначе установить out = in3
  10. Завершить с помощью 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

Все уроки раздела Основы

Потренируйтесь самостоятельно: Онлайн-компилятор Verilog