Значения по умолчанию предотвращают защёлки
Часть раздела Проектирование и верификация RTL путешествия по Verilog на Coddy. Урок 1 из 38.
Комбинационному выходу должно быть присвоено значение для каждого пути входных данных. Если блок always пропускает присваивание выходу, этот выход сохраняет своё старое значение, что может привести к выводу защёлки. Присваивание default, за которым следуют переопределения, делает покрытие очевидным.
Соответствующий фрагмент; окружающие объявления и соединения предоставлены в задании.
always @* begin
y = 0;
if (en) y = data;
enddefault охватывает отключённый путь, поэтому выход зависит только от текущих входов.
Присваивайте каждому комбинационному выходу значение на каждом пути; используйте значения по умолчанию перед условными переопределениями.
Задание
СреднеРеализуйте 8-битный выход с разрешением: когда en равен единице, y равен a; в противном случае y равен нулю. Присваивайте y на каждом пути комбинационной логики. Столбцы вывода: y. Все значения стимулов являются известными двоичными значениями.
Завершите design.v и сохраните имена его модуля и портов. Заблокированный testbench.v подаёт изменения входных сигналов и выводит результаты после их установления. Он выбирает сценарий с помощью аргумента симулятора, например +CASE=1; стандартный ввод не требуется. Не добавляйте в проект вывод, задержки или завершение симуляции. Ожидаемый вывод — одна строка десятичных значений для каждого наблюдения, разделённых одним пробелом и заканчивающихся символом новой строки.
Попробуйте сами
module dut (input en, input [7:0] a, output reg [7:0] y);
// Замените этот заполнитель на ваш дизайн.
initial y = 0;
endmoduleВ этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Проектирование и верификация RTL
1Надёжная комбинационная RTL-логика
Значения по умолчанию предотвращают защёлкиПриоритетные кодировщикиПроверка One-HotБезопасное декодирование caseПовторение — маршрутизатор запросов4Управляемая последовательная RTL-логика
Приоритет сброса и разрешенияСчётчики с насыщениемКонвейеризация данных и validОбнаружение дискретизированных фронтовПовторение — счётчик событий2Разрядности и знаковая арифметика
Сохранение битов переносаСравнения знаковых чиселАрифметические сдвиги вправоПереполнение и насыщениеПовторение — знаковая разностьПотренируйтесь самостоятельно: Онлайн-компилятор Verilog