Menu
Coddy logo textTech

Испытание — конвейер чётности

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

challenge icon

Задание

Средне

Постройте двухэтапный конвейер вычисления четности. Сначала сохраните байтовые данные и in_valid. На следующем фронте без сброса выходная четность должна быть результатом операции сокращения XOR для ранее сохраненного байта, если его предыдущее состояние valid имеет значение high, и нулем в противном случае. out_valid — это отложенное значение valid. Синхронный rst очищает оба этапа и выходы. Столбцы вывода: parity, out_valid. Все управляющие сигналы и данные стабильны перед каждым передним фронтом тактового сигнала; результаты наблюдаются после него.

Завершите design.v, сохранив имена его модулей и портов. Заблокированный testbench.v подает изменения входных данных и выводит результаты после их стабилизации. Он выбирает сценарий с помощью аргумента симулятора, например +CASE=1; стандартный ввод не требуется. Не добавляйте в design вывод, задержки или завершение симуляции. Ожидаемый вывод — одна строка десятичных значений для каждого наблюдения, разделенных одним пробелом и завершающихся символом новой строки.

Попробуйте сами

module dut (input clk, input rst, input in_valid, input [7:0] data, output reg parity, output reg out_valid);
    // Замените этот заполнитель на ваш дизайн.
    initial parity = 0;
    initial out_valid = 0;
endmodule

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

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