Menu
Coddy logo textTech

Подсчёт принятых образцов

Часть раздела Проектирование и верификация RTL путешествия по Verilog на Coddy. Урок 34 из 38.

challenge icon

Задание

Сложно

Создайте один монитор образцов за пять шагов. Отслеживайте принятые образцы в count: увеличивайте его на каждом фронте en, который не сбрасывает и не очищает, с насыщением на 15. rst или clear сбрасывает как count, так и total. Принятые образцы со значением ноль также увеличивают count. Сохраните всё из предыдущих шагов, включая его 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)total<=0;else if(clear)total<=0;else if(en)total<=total+data;
        count<=0;
    end
    assign alarm=0;
endmodule

Все уроки раздела Проектирование и верификация RTL

Потренируйтесь самостоятельно: Онлайн-компилятор Verilog