Menu
Coddy logo textTech

Pętle generate

Część sekcji Projektowanie RTL i weryfikacja ścieżki Verilog w Coddy. Lekcja 13 z 38.

Pętla generate-for tworzy powtarzający się sprzęt podczas elaboracji. Jej indeks genvar nie jest zmieniającym się rejestrem czasu wykonania. Nazwane bloki generate zapewniają przewidywalne nazwy hierarchiczne dla utworzonych instancji lub przypisań. Granice pętli muszą być stałymi znanymi w czasie elaboracji.

Odpowiedni fragment; pozostałe deklaracje i połączenia są dostępne w wyzwaniu.

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

Każda iteracja rozwija osobną operację na poziomie bitów, zamiast zużywać cykl zegara.

Użyj genvar ze stałymi granicami, aby opisać powtarzającą się strukturę podczas elaboracji.

challenge icon

Wyzwanie

Średni

Użyj nazwanej pętli generate-for z genvar i, aby utworzyć jedno przypisanie ciągłe dla każdego bitu, uzyskując y[i] = a[i] XOR b[i]. WIDTH jest dodatnie. Zablokowany testbench tworzy instancje dla wartości WIDTH 1, 4 i 8, używając najmłodszych bitów a i b w węższych instancjach. Kolumnami wyjściowymi są y1, y4 i y8, w zapisie dziesiętnym.

Uzupełnij design.v i zachowaj nazwy modułów oraz porty. Zablokowany testbench.v wprowadza zmiany na wejściach i wyświetla wyjścia po ich ustaleniu. Wybiera scenariusz za pomocą argumentu symulatora, takiego jak +CASE=1; standardowe wejście nie jest wymagane. Nie dodawaj do projektu wyświetlania, opóźnień ani zakończenia symulacji. Oczekiwane wyjście to jeden wiersz wartości dziesiętnych dla każdej obserwacji, oddzielonych pojedynczą spacją i zakończony znakiem nowej linii.

Spróbuj swoich sił

module dut #(parameter WIDTH=4) (input [WIDTH-1:0] a,b, output [WIDTH-1:0] y);
    // Zaimplementuj układ parametryzowany.
    assign y = 0;
endmodule
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Projektowanie RTL i weryfikacja

Poćwicz samodzielnie: Kompilator Verilog online