Испытание — конвейер чётности
Часть раздела Проектирование и верификация RTL путешествия по Verilog на Coddy. Урок 36 из 38.
Задание
СреднеПостройте двухэтапный конвейер вычисления четности. Сначала сохраните байтовые данные и 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
1Надёжная комбинационная RTL-логика
Значения по умолчанию предотвращают защёлкиПриоритетные кодировщикиПроверка One-HotБезопасное декодирование caseПовторение — маршрутизатор запросов4Управляемая последовательная RTL-логика
Приоритет сброса и разрешенияСчётчики с насыщениемКонвейеризация данных и validОбнаружение дискретизированных фронтовПовторение — счётчик событий2Разрядности и знаковая арифметика
Сохранение битов переносаСравнения знаковых чиселАрифметические сдвиги вправоПереполнение и насыщениеПовторение — знаковая разность5Память и таблицы поиска
Комбинационные ROM-таблицыХранилище на массиве регистровПорты чтения с регистрациейПересылка при чтении и записиПовторение — банк с двумя портами чтения8Финальные испытания
Испытание — конвейер чётностиИспытание — события шаблоновИспытание — ограниченная суммаПотренируйтесь самостоятельно: Онлайн-компилятор Verilog