Арифметические сдвиги вправо
Часть раздела Проектирование и верификация RTL путешествия по Verilog на Coddy. Урок 8 из 38.
Арифметический сдвиг вправо использует >>> и воспроизводит знаковый бит, когда его левый операнд имеет тип signed. Логический сдвиг вправо использует >> и заполняет освободившиеся позиции нулями. Для отрицательного нечётного значения арифметический сдвиг вправо не совпадает с integer делением, которое усекает результат к нулю.
Соответствующий фрагмент; окружающие объявления и соединения предоставлены в задании.
reg signed [7:0] value;
value = -3;
$display("%0d", value >>> 1);Результат равен минус двум, потому что расширение знака сохраняет отрицательную интерпретацию в дополнительном коде.
Используйте знаковый левый операнд с >>>, когда требуется расширение знака.
Задание
СреднеВыполнить арифметический сдвиг вправо значения размером 8 бит с типом signed на величину от 0 до 7. Вернуть 8-битный результат y с типом signed. Отрицательные значения заполняются знаковым битом. Столбцы вывода: y. Все значения стимулов представлены известными двоичными значениями.
Завершите design.v и сохраните имена модулей и порты. Заблокированный testbench.v подаёт изменения входных данных и выводит результаты после их стабилизации. Он выбирает сценарий с помощью аргумента симулятора, например +CASE=1; стандартный ввод не требуется. Не добавляйте в проект вывод, задержки или завершение симуляции. Ожидаемый вывод — одна строка десятичных значений для каждого наблюдения, разделённых одним пробелом и заканчивающихся символом новой строки.
Попробуйте сами
module dut (input signed [7:0] value, input [2:0] amount, output signed [7:0] y);
// Замените этот заполнитель на ваш дизайн.
assign y = 0;
endmoduleВ этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Проектирование и верификация RTL
1Надёжная комбинационная RTL-логика
Значения по умолчанию предотвращают защёлкиПриоритетные кодировщикиПроверка One-HotБезопасное декодирование caseПовторение — маршрутизатор запросов4Управляемая последовательная RTL-логика
Приоритет сброса и разрешенияСчётчики с насыщениемКонвейеризация данных и validОбнаружение дискретизированных фронтовПовторение — счётчик событий2Разрядности и знаковая арифметика
Сохранение битов переносаСравнения знаковых чиселАрифметические сдвиги вправоПереполнение и насыщениеПовторение — знаковая разностьПотренируйтесь самостоятельно: Онлайн-компилятор Verilog