Счётчики с насыщением
Часть раздела Проектирование и верификация RTL путешествия по Verilog на Coddy. Урок 17 из 38.
В разделе «Основы» использовался счётчик с циклическим переходом. Насыщающийся счётчик вместо этого останавливается на границе, что полезно для ограниченных счётчиков. Добавьте явную проверку для арифметического обновления и сохраняйте поведение сигналов разрешения и сброса независимым от предела.
Соответствующий фрагмент; окружающие объявления и соединения предоставлены в задании.
always @(posedge clk) begin
if(rst) count <= 0;
else if(en && count != 15) count <= count + 1;
endМаксимальное значение сохраняется, а не сбрасывается до нуля.
Явно обновляйте границу защиты, когда счётчик должен достигать предельного значения, а не переходить по кругу.
Задание
СреднеСоздайте 4-битный счётчик с насыщением q. Синхронный rst очищает его. При включении фронты увеличивают значение до 15, после чего оно остаётся равным 15; при отключении значение также сохраняется. Сброс имеет приоритет. Столбцы вывода: q. Все управляющие сигналы и данные стабильны перед каждым возрастающим фронтом тактового сигнала; результаты наблюдаются после него.
Завершите design.v, сохранив имена его модулей и порты. Заблокированный testbench.v подаёт изменения входных сигналов и выводит результаты после их стабилизации. Он выбирает сценарий с помощью аргумента симулятора, например +CASE=1; стандартный ввод не требуется. Не добавляйте в design вывод, задержки или завершение симуляции. Ожидаемый вывод — одна строка десятичных значений для каждого наблюдения, разделённых одним пробелом и завершающихся символом новой строки.
Попробуйте сами
module dut (input clk, input rst, input en, output reg [3:0] q);
// Замените этот заполнитель на ваш дизайн.
initial q = 0;
endmoduleВ этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Проектирование и верификация RTL
1Надёжная комбинационная RTL-логика
Значения по умолчанию предотвращают защёлкиПриоритетные кодировщикиПроверка One-HotБезопасное декодирование caseПовторение — маршрутизатор запросов4Управляемая последовательная RTL-логика
Приоритет сброса и разрешенияСчётчики с насыщениемКонвейеризация данных и validОбнаружение дискретизированных фронтовПовторение — счётчик событий2Разрядности и знаковая арифметика
Сохранение битов переносаСравнения знаковых чиселАрифметические сдвиги вправоПереполнение и насыщениеПовторение — знаковая разностьПотренируйтесь самостоятельно: Онлайн-компилятор Verilog