Подача сигнала тревоги при превышении порога
Часть раздела Проектирование и верификация RTL путешествия по Verilog на Coddy. Урок 35 из 38.
Задание
СложноСоздайте один Sample Monitor за пять шагов. Поднимайте комбинационный сигнал alarm, когда total больше или равен беззнаковому limit, включая случай равенства. Сигнал alarm должен отражать обновлённое значение total после каждого фронта и следовать за изменениями limit. При limit=0 сигнал alarm должен быть высоким даже при total=0. Сохраните всё поведение накопления, разрешения, очистки и подсчёта. Сохраните всё из предыдущих шагов, включая его testbench и прежнее поведение вывода. Все входные значения известны. Сценарии содержат не более 40 фронтов, поэтому total помещается в 16 бит. Фиксированный testbench выводит total для сценариев 1–9, total и count для сценариев 10–12, а также total, count и alarm для сценариев 13–15. Оцениваются только сценарии, включённые для этого шага.
Завершите design.v и сохраните имена его модулей и портов. Заблокированный testbench.v подаёт изменения входных сигналов и выводит выходные значения после их установления. Он выбирает сценарий с помощью аргумента симулятора, например +CASE=1; стандартный ввод не требуется. Не добавляйте в design вывод, задержки или завершение симуляции. Ожидаемый вывод — одна строка десятичных значений для каждого наблюдения, разделённых одним пробелом и заканчивающихся символом новой строки.
Попробуйте сами
module dut(input clk,rst,en,clear, input [7:0] data, input [15:0] limit, output reg [15:0] total, output reg [3:0] count, output alarm);
always @(posedge clk)begin
if(rst || clear)begin total<=0;count<=0;end
else if(en)begin
total<=total+data;
if(count!=15)count<=count+4'd1;
end
end
assign alarm=0;
endmoduleВсе уроки раздела Проектирование и верификация RTL
1Надёжная комбинационная RTL-логика
Значения по умолчанию предотвращают защёлкиПриоритетные кодировщикиПроверка One-HotБезопасное декодирование caseПовторение — маршрутизатор запросов4Управляемая последовательная RTL-логика
Приоритет сброса и разрешенияСчётчики с насыщениемКонвейеризация данных и validОбнаружение дискретизированных фронтовПовторение — счётчик событий7Проект — пример монитора
Накопление образцовПриём разрешённых образцов2Разрядности и знаковая арифметика
Сохранение битов переносаСравнения знаковых чиселАрифметические сдвиги вправоПереполнение и насыщениеПовторение — знаковая разностьПотренируйтесь самостоятельно: Онлайн-компилятор Verilog