Переполнение и насыщение
Часть раздела Проектирование и верификация RTL путешествия по Verilog на Coddy. Урок 9 из 38.
Переполнение знакового типа означает, что математический результат не помещается в выбранную разрядность signed. Оно отличается от переноса беззнакового типа. При сложении signed переполнение происходит, когда входные значения имеют одинаковый знак, а знак результата изменяется. Насыщение ограничивает значение представимым предельным значением вместо циклического перехода.
Соответствующий фрагмент; окружающие объявления и соединения предоставлены в задании.
assign overflow = (a[7] == b[7]) && (sum[7] != a[7]);Входные значения с разными знаками не могут вызвать переполнение при сложении signed; для входных значений с одинаковыми знаками требуется проверить знак результата.
Проверяйте переполнение signed независимо от переноса; расширяйте разрядность перед реализацией насыщения.
Задание
СреднеСложите знаковые 8-битные a и b. Верните знаковый результат y с циклическим переполнением и overflow=1 только тогда, когда точная математическая сумма выходит за пределы от -128 до 127. Столбцы вывода: y, overflow. Все входные значения являются известными двоичными значениями.
Завершите design.v, сохранив имена его модулей и порты. Заблокированный testbench.v подаёт изменения входных данных и выводит результаты после их установления. Он выбирает сценарий с помощью аргумента симулятора, например +CASE=1; стандартный ввод не требуется. Не добавляйте в проект вывод, задержки или завершение симуляции. Ожидаемый вывод — одна строка десятичных значений для каждого наблюдения, разделённых одним пробелом и заканчивающихся символом новой строки.
Попробуйте сами
module dut (input signed [7:0] a, input signed [7:0] b, output signed [7:0] y, output overflow);
// Замените этот заполнитель на ваш дизайн.
assign y = 0;
assign overflow = 0;
endmoduleВ этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Проектирование и верификация RTL
1Надёжная комбинационная RTL-логика
Значения по умолчанию предотвращают защёлкиПриоритетные кодировщикиПроверка One-HotБезопасное декодирование caseПовторение — маршрутизатор запросов4Управляемая последовательная RTL-логика
Приоритет сброса и разрешенияСчётчики с насыщениемКонвейеризация данных и validОбнаружение дискретизированных фронтовПовторение — счётчик событий2Разрядности и знаковая арифметика
Сохранение битов переносаСравнения знаковых чиселАрифметические сдвиги вправоПереполнение и насыщениеПовторение — знаковая разностьПотренируйтесь самостоятельно: Онлайн-компилятор Verilog