Повторение — проектирование ALU
Часть раздела Основы путешествия по Verilog на Coddy. Урок 57 из 90.
Задание
ALU (арифметико-логическое устройство) — это цифровая схема, которая принимает два inputs, выполняет над ними операцию и выдаёт один output. Она выполняет арифметические и логические операции над двумя inputs на основе сигнала select. Сигнал select выбирает одну операцию для выполнения.
Как это работает
| select | Операция | Output |
|---|---|---|
2'b00 | Сложение | a + b |
2'b01 | Вычитание | a - b |
2'b10 | Побитовая операция AND | a & b |
2'b11 | Побитовая операция OR | a | b |
Создайте простую ALU с помощью оператора case.
Что нужно сделать:
- Create модуль с именем
alu - Add inputs:
a(4-битный),b(4-битный),select(2-битный) - Add output:
result(4-битный, тип reg) - Add блок
always @(*) - Внутри добавьте оператор
case (select) - Add четыре варианта для
2'b00,2'b01,2'b10,2'b11 - Add вариант
default, чтобы установитьresult = 0 - Завершите с помощью
endcaseиendmodule
Попробуйте сами
// TODO: Создать модуль alu
// TODO: Добавить входы (a, b, select)
// TODO: Добавить выход (result)
// TODO: Добавить блок always @(*)
// TODO: Добавить case (select)
// TODO: Добавить case 2'b00: result = a + b;
// TODO: Добавить case 2'b01: result = a - b;
// TODO: Добавить case 2'b10: result = a & b;
// TODO: Добавить case 2'b11: result = a | b;
// TODO: Добавить default: result = 0;
// TODO: Добавить endcase
// TODO: Добавить 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 и InitialПотренируйтесь самостоятельно: Онлайн-компилятор Verilog