Повторение: проектирование ALU
Часть раздела Основы путешествия по Verilog на Coddy — урок 57 из 90.
Задание
АЛУ (Арифметико-логическое устройство) — это цифровая схема, которая принимает два входа, выполняет над ними операцию и выдает один выход. Оно выполняет арифметические и логические операции над двумя входами на основе сигнала выбора. Сигнал select выбирает одну операцию для выполнения.
Как это работает
| select | Операция | Выход |
|---|---|---|
2'b00 | Сложение | a + b |
2'b01 | Вычитание | a - b |
2'b10 | Побитовое И (AND) | a & b |
2'b11 | Побитовое ИЛИ (OR) | a | b |
Создайте простое АЛУ, используя оператор case.
Что нужно сделать:
- Создайте модуль с именем
alu - Добавьте входы:
a(4 бита),b(4 бита),select(2 бита) - Добавьте выход:
result(4 бита, тип reg) - Добавьте блок
always @(*) - Внутри добавьте оператор
case (select) - Добавьте четыре варианта для
2'b00,2'b01,2'b10,2'b11 - Добавьте вариант
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Введение
Что такое 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 против initial