Условный generate
Часть раздела Проектирование и верификация RTL путешествия по Verilog на Coddy. Урок 14 из 38.
Конструкция generate-if выбирает аппаратную структуру с использованием постоянного parameter. Для данного экземпляра разворачивается только одна ветвь. Процедурная конструкция if или условное выражение с сигналом выбирает поведение во время выполнения; она не заменяет конфигурацию generate.
Соответствующий фрагмент; окружающие объявления и соединения предоставлены в задании.
generate
if(INVERT) begin: inverted
assign y = ~a;
end else begin: direct
assign y = a;
end
endgenerateparameter выбирает, какой драйвер создаётся для этого экземпляра.
Используйте generate-if для постоянной конфигурации и обычный выбор RTL для элементов управления во время выполнения.
Задание
СреднеИспользуйте условный generate: MODE=0 передаёт a без изменений; MODE=1 инвертирует все восемь битов a. Вход b не используется. MODE может иметь значение 0 или 1. Тестбенч создаёт экземпляры обеих конфигураций и выводит сначала y0, затем y1.
Завершите design.v и сохраните имена его модулей и портов. Заблокированный testbench.v задаёт изменения входных данных и выводит результаты после их стабилизации. Он выбирает сценарий с помощью аргумента симулятора, например +CASE=1; стандартный ввод не требуется. Не добавляйте в design вывод, задержки или завершение симуляции. Ожидаемый вывод — одна строка десятичных значений для каждого наблюдения, разделённых одним пробелом и заканчивающихся символом новой строки.
Попробуйте сами
module dut #(parameter MODE=0) (input [7:0] a,b, output [7:0] y);
assign y=0;
endmoduleВ этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Проектирование и верификация RTL
1Надёжная комбинационная RTL-логика
Значения по умолчанию предотвращают защёлкиПриоритетные кодировщикиПроверка One-HotБезопасное декодирование caseПовторение — маршрутизатор запросов4Управляемая последовательная RTL-логика
Приоритет сброса и разрешенияСчётчики с насыщениемКонвейеризация данных и validОбнаружение дискретизированных фронтовПовторение — счётчик событий2Разрядности и знаковая арифметика
Сохранение битов переносаСравнения знаковых чиселАрифметические сдвиги вправоПереполнение и насыщениеПовторение — знаковая разность3Переиспользуемый RTL
Комбинационные функцииПараметры с безопасной разрядностьюЦиклы generateУсловный generateПовторение — переиспользуемая битовая маскаПотренируйтесь самостоятельно: Онлайн-компилятор Verilog