Комбинационные функции
Часть раздела Проектирование и верификация RTL путешествия по Verilog на Coddy. Урок 11 из 38.
Функция Verilog function упаковывает вычисление, выполняющееся за нулевое время, для повторного использования внутри модуля. Объявите разрядность возвращаемого значения, входные аргументы и локальные переменные, затем с помощью assign присвойте результат имени function. Комбинационные функции не содержат задержек или элементов управления событиями; цикл с фиксированными границами может описывать повторяющуюся логику.
Соответствующий фрагмент; окружающие объявления и соединения предоставлены в задании.
function [7:0] gray;
input [7:0] value;
begin gray = value ^ (value >> 1); end
endfunctionВызов function вычисляет выражение, не добавляя времени моделирования.
Присваивайте результат function на каждом пути и не используйте элементы управления временем в комбинационных функциях.
Задание
СреднеРеализуйте функцию Verilog function gray, которая преобразует беззнаковое 8-битное двоичное значение в код Грея, используя XOR значения со значением, сдвинутым вправо на один разряд. Управляйте y, вызывая function с a. Столбцы вывода: y. Все значения стимулов являются известными двоичными значениями.
Завершите design.v и сохраните имена его модулей и порты. Заблокированный testbench.v задаёт изменения входных данных и выводит результаты после их стабилизации. Он выбирает сценарий с помощью аргумента симулятора, например +CASE=1; стандартный ввод не требуется. Не добавляйте в design вывод, задержки или завершение симуляции. Ожидаемый вывод — одна строка десятичных значений для каждого наблюдения, разделённых одним пробелом и заканчивающихся переводом строки.
Попробуйте сами
module dut (input [7:0] a, output [7:0] y);
// Замените этот заполнитель своим дизайном.
assign y = 0;
endmoduleВ этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Проектирование и верификация RTL
1Надёжная комбинационная RTL-логика
Значения по умолчанию предотвращают защёлкиПриоритетные кодировщикиПроверка One-HotБезопасное декодирование caseПовторение — маршрутизатор запросов4Управляемая последовательная RTL-логика
Приоритет сброса и разрешенияСчётчики с насыщениемКонвейеризация данных и validОбнаружение дискретизированных фронтовПовторение — счётчик событий2Разрядности и знаковая арифметика
Сохранение битов переносаСравнения знаковых чиселАрифметические сдвиги вправоПереполнение и насыщениеПовторение — знаковая разность3Переиспользуемый RTL
Комбинационные функцииПараметры с безопасной разрядностьюЦиклы generateУсловный generateПовторение — переиспользуемая битовая маскаПотренируйтесь самостоятельно: Онлайн-компилятор Verilog