Menu
Coddy logo textTech

Приоритетные кодировщики

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

Кодировщик сопоставляет бит запроса с индексом. Для нескольких активных запросов требуется явное правило приоритета. Цепочка if/else-if отдаёт приоритет более ранним ветвям; отдельный сигнал valid отличает отсутствие запроса от нулевого индекса.

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

if (req[3]) code = 3;
else if (req[2]) code = 2;
else if (req[1]) code = 1;
else code = 0;

Побеждает первая истинная ветвь, поэтому наивысший разряд запроса имеет приоритет.

Укажите порядок приоритетов и явно определите результат при отсутствии запроса.

challenge icon

Задание

Средне

Закодируйте старший установленный бит 4-битного req в code. Установите valid, если существует какой-либо запрос; когда req равен нулю, code и valid должны быть равны нулю. Столбцы вывода: code, valid. Все значения стимулов являются известными двоичными значениями.

Дополните design.v и сохраните имена его модулей и порты. Заблокированный testbench.v подаёт изменения входных данных и выводит результаты после их стабилизации. Он выбирает сценарий с помощью аргумента симулятора, например +CASE=1; стандартный ввод не требуется. Не добавляйте в design вывод, задержки или завершение симуляции. Ожидаемый вывод — одна строка десятичных значений для каждого наблюдения, разделённых одним пробелом и заканчивающаяся символом новой строки.

Попробуйте сами

module dut (input [3:0] req, output reg [1:0] code, output reg valid);
    // Замените этот плейсхолдер своим дизайном.
    initial code = 0;
    initial valid = 0;
endmodule
quiz iconПроверьте себя

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

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

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