Обнаружение дискретизированных фронтов
Часть раздела Проектирование и верификация RTL путешествия по Verilog на Coddy. Урок 19 из 38.
Уровень может оставаться высоким в течение многих тактов, тогда как импульс события должен длиться один такт. Сохраните предыдущий отсчёт уровня и сравните его с текущим. Этот детектор фронта предполагает, что вход уже синхронизирован с этим тактовым сигналом; это не синхронизатор перехода между тактовыми доменами.
Соответствующий фрагмент; окружающие объявления и соединения предоставлены в задании.
previous <= sig;
rising <= sig & ~previous;Старый сохранённый уровень создаёт одиночный импульс в момент отслеживаемого перехода.
Сравнивайте текущие и предыдущие отсэмплированные уровни; используйте этот детектор только с синхронным входом.
Задание
СреднеДля сигнала sig, уже синхронного с clk, сформируйте зарегистрированный импульс длительностью один такт при каждом зафиксированном переходе с 0 на 1. Синхронный rst очищает сохранённый предыдущий уровень и импульс. Поэтому высокий уровень sig на первом фронте после сброса формирует импульс. Столбцы вывода: pulse. Все управляющие сигналы и данные стабильны перед каждым нарастающим фронтом тактового сигнала; результаты считываются после этого.
Завершите design.v, сохранив имена его модулей и порты. Заблокированный testbench.v подаёт изменения входных сигналов и выводит результаты после их стабилизации. Он выбирает сценарий с помощью аргумента симулятора, например +CASE=1; стандартный ввод не требуется. Не добавляйте в design вывод, задержки или завершение симуляции. Ожидаемый вывод — одна строка десятичных значений для каждого наблюдения, разделённых одним пробелом и заканчивающихся символом новой строки.
Попробуйте сами
module dut (input clk, input rst, input sig, output reg pulse);
// Замените этот плейсхолдер своим дизайном.
initial pulse = 0;
endmoduleВ этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Проектирование и верификация RTL
1Надёжная комбинационная RTL-логика
Значения по умолчанию предотвращают защёлкиПриоритетные кодировщикиПроверка One-HotБезопасное декодирование caseПовторение — маршрутизатор запросов4Управляемая последовательная RTL-логика
Приоритет сброса и разрешенияСчётчики с насыщениемКонвейеризация данных и validОбнаружение дискретизированных фронтовПовторение — счётчик событий2Разрядности и знаковая арифметика
Сохранение битов переносаСравнения знаковых чиселАрифметические сдвиги вправоПереполнение и насыщениеПовторение — знаковая разностьПотренируйтесь самостоятельно: Онлайн-компилятор Verilog