Menu
Coddy logo textTech

Арифметические сдвиги вправо

Часть раздела Проектирование и верификация RTL путешествия по Verilog на Coddy. Урок 8 из 38.

Арифметический сдвиг вправо использует >>> и воспроизводит знаковый бит, когда его левый операнд имеет тип signed. Логический сдвиг вправо использует >> и заполняет освободившиеся позиции нулями. Для отрицательного нечётного значения арифметический сдвиг вправо не совпадает с integer делением, которое усекает результат к нулю.

Соответствующий фрагмент; окружающие объявления и соединения предоставлены в задании.

reg signed [7:0] value;
value = -3;
$display("%0d", value >>> 1);

Результат равен минус двум, потому что расширение знака сохраняет отрицательную интерпретацию в дополнительном коде.

Используйте знаковый левый операнд с >>>, когда требуется расширение знака.

challenge icon

Задание

Средне

Выполнить арифметический сдвиг вправо значения размером 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
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Проектирование и верификация RTL

Потренируйтесь самостоятельно: Онлайн-компилятор Verilog