Menu
Coddy logo textTech

Циклы generate

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

Цикл generate-for создаёт повторяющуюся аппаратную структуру на этапе элаборации. Его индекс genvar не является изменяющимся регистром времени выполнения. Именованные блоки generate обеспечивают предсказуемые иерархические имена для создаваемых экземпляров или присваиваний. Границы цикла должны быть константами, определяемыми во время элаборации.

Соответствующий фрагмент; окружающие объявления и соединения предоставлены в задании.

genvar i;
generate
    for(i=0;i<WIDTH;i=i+1) begin: bitcell
        assign y[i] = a[i] ^ b[i];
    end
endgenerate

Каждая итерация разворачивается в отдельную операцию на уровне бита, а не занимает такт.

Используйте genvar с постоянными границами, чтобы описать повторяющуюся структуру на этапе развёртывания.

challenge icon

Задание

Средне

Используйте именованный цикл generate-for с genvar i, чтобы создать одно непрерывное присваивание для каждого бита, формируя y[i] = a[i] XOR b[i]. WIDTH является положительным. Заблокированный тестбенч создаёт экземпляры со значениями WIDTH 1, 4 и 8, используя младшие биты a и b для экземпляров меньшей разрядности. Столбцы вывода — y1, y4 и y8 в десятичном формате.

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

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

module dut #(parameter WIDTH=4) (input [WIDTH-1:0] a,b, output [WIDTH-1:0] y);
    // Реализуйте параметризованную схему.
    assign y = 0;
endmodule
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

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

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