Menu
Coddy logo textTech

Instancjonowanie modułu

Część sekcji Podstawy ścieżki Verilog w Coddy. Lekcja 33 z 90.

Instancjonowanie modułu to proces tworzenia kopii modułu wewnątrz innego modułu. W ten sposób budujesz większe projekty, łącząc ze sobą mniejsze komponenty.

Po zdefiniowaniu modułu możesz użyć go wewnątrz innego modułu. Nazywa się to instancjonowaniem. Każde instancjonowanie tworzy osobną instancję tego modułu. Możesz o tym myśleć jak o użyciu projektu do zbudowania wielu kopii tego samego komponentu.

Podstawowa składnia

module_name instance_name (connections);
CzęśćZnaczenie
module_nameNazwa modułu do utworzenia instancji
instance_nameUnikalna nazwa tej kopii
connectionsSygnały podłączone do portów modułu

Prosty przykład

Krok 1: Zdefiniuj moduł

module and_gate (
  input a,
  input b,
  output c
);
  assign c = a & b;
endmodule

Krok 2: Utwórz jego instancję w innym module

module top (
  input x,
  input y,
  output z
);
  and_gate gate1 (x, y, z);
endmodule

Oto, co dzieje się w tym kodzie:

  • and_gate: nazwa modułu, którego chcemy użyć (musi gdzieś istnieć)
  • gate1: unikalna nazwa nadana tej konkretnej instancji
  • (x, y, z): sygnały, które łączymy z portami modułu (w tej samej kolejności, w jakiej pojawiają się w definicji modułu)

Pierwszy sygnał x łączy się z pierwszym portem a. Drugi sygnał y łączy się z drugim portem b. Trzeci sygnał z łączy się z trzecim portem c.

Musisz przekazać sygnały do modułu. Nawiasy nie mogą być puste. Liczba sygnałów musi odpowiadać liczbie portów.

Wiele instancji

Możesz utworzyć wiele kopii tego samego modułu:

module top;
  wire out1, out2;
  wire sig1, sig2, sig3, sig4;
  
  and_gate gate1 (sig1, sig2, out1);
  and_gate gate2 (sig3, sig4, out2);
endmodule

Każda instancja ma własną nazwę (gate1, gate2) i własne połączenia. Działają niezależnie.

Co dzieje się podczas tworzenia instancji

  • Tworzona jest kopia sprzętu
  • Każda instancja ma własny zestaw sygnałów
  • Instancje działają równolegle (jednocześnie)
  • Sygnały, które przekazujesz, określają, jak instancje łączą się z pozostałą częścią projektu

Zasady tworzenia instancji

ZasadaDlaczego
Nazwa instancji musi być unikalnaAby odróżnić kopie
Moduł o podanej nazwie musi istniećMusi być zdefiniowany w innym miejscu
Liczba połączeń musi odpowiadać liczbie portówW przeciwnym razie Verilog nie wie, co z czym połączyć
Kolejność połączeń musi odpowiadać kolejności portówPierwszy sygnał łączy się z pierwszym portem itd.
challenge icon

Wyzwanie

Uzupełnij kod, tworząc instancję modułu or_gate.

Co zrobić:

  1. Utwórz instancję or_gate o nazwie or1
  2. Przekaż sygnały we właściwej kolejności: input_a, input_b, output_y

Spróbuj swoich sił

module or_gate (
  input in1,
  input in2,
  output result
);
  assign result = in1 | in2;
endmodule

module top (
  input input_a,
  input input_b,
  output output_y
);
  
  // TODO: Utwórz instancję or_gate o nazwie or1
  // Przekaż sygnały w kolejności: input_a, input_b, output_y
  // Nie używaj składni .port(signal)
  

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 Podstawy

Poćwicz samodzielnie: Kompilator Verilog online