Приоритетные кодировщики
Часть раздела Проектирование и верификация 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;Побеждает первая истинная ветвь, поэтому наивысший разряд запроса имеет приоритет.
Укажите порядок приоритетов и явно определите результат при отсутствии запроса.
Задание
СреднеЗакодируйте старший установленный бит 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В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Проектирование и верификация RTL
1Надёжная комбинационная RTL-логика
Значения по умолчанию предотвращают защёлкиПриоритетные кодировщикиПроверка One-HotБезопасное декодирование caseПовторение — маршрутизатор запросов4Управляемая последовательная RTL-логика
Приоритет сброса и разрешенияСчётчики с насыщениемКонвейеризация данных и validОбнаружение дискретизированных фронтовПовторение — счётчик событий2Разрядности и знаковая арифметика
Сохранение битов переносаСравнения знаковых чиселАрифметические сдвиги вправоПереполнение и насыщениеПовторение — знаковая разностьПотренируйтесь самостоятельно: Онлайн-компилятор Verilog