Menu
Coddy logo textTech

Modül Örneklendirme

Coddy'nin Verilog Journey'sinin Temeller bölümünün bir parçası — ders 33 / 90.

Modül örnekleme, bir modülün başka bir modül içinde bir kopyasını oluşturma sürecidir. Daha küçük bileşenleri birbirine bağlayarak daha büyük tasarımları bu şekilde inşa edersiniz.

Bir modül tanımladıktan sonra, onu başka bir modülün içinde kullanabilirsiniz. Buna örnekleme (instantiation) denir. Her örnekleme, o modülün ayrı bir örneğini oluşturur. Bunu, aynı bileşenin birden fazla kopyasını oluşturmak için bir taslak kullanmak gibi düşünün.

Temel Sözdizimi

module_name instance_name (connections);
BölümAnlamı
module_nameÖrneklenecek modülün adı
instance_nameBu kopya için benzersiz ad
connectionsModülün portlarına bağlanan sinyaller

Basit Örnek

Adım 1: Bir modül tanımlayın

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

Adım 2: Başka bir modülde örneklendirin

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

Bu kodda şunlar gerçekleşir:

  • and_gate — kullanmak istediğimiz modülün adı (bir yerde mevcut olmalıdır)
  • gate1 — bu belirli örneğe verdiğimiz benzersiz bir ad
  • (x, y, z) — modülün portlarına bağladığımız sinyaller (modül tanımında göründükleri sırayla)

İlk sinyal x, ilk port a'ya bağlanır. İkinci sinyal y, ikinci port b'ye bağlanır. Üçüncü sinyal z, üçüncü port c'ye bağlanır.

Modüle sinyaller iletmelisiniz. Parantezler boş olamaz. Sinyal sayısı, port sayısı ile eşleşmelidir.

Birden Fazla Örnek

Aynı modülün birden fazla kopyasını oluşturabilirsiniz:

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

Her örneğin kendi adı (gate1, gate2) ve kendi bağlantıları vardır. Bağımsız olarak çalışırlar.

Örnekleme (Instantiation) Sırasında Neler Olur?

  • Donanımın bir kopyası oluşturulur
  • Her örneğin kendi sinyal kümesi vardır
  • Örnekler paralel olarak (eşzamanlı) çalışır
  • Geçirdiğiniz sinyaller, örneklerin tasarımınızın geri kalanına nasıl bağlanacağını belirler

Örnekleme Kuralları

KuralNeden
Örnek adı benzersiz olmalıdırKopyalar arasında ayrım yapmak için
Modül adı mevcut olmalıdırBaşka bir yerde tanımlanmış olmalıdır
Bağlantı sayısı port sayısı ile eşleşmelidirAksi takdirde Verilog neyin nereye bağlandığını bilemez
Bağlantı sırası port sırası ile eşleşmelidirİlk sinyal ilk porta bağlanır, vb.
challenge icon

Görev

or_gate modülünü örnekleyerek kodu tamamlayın.

Yapılacaklar:

  1. or_gate modülünü or1 örnek adıyla örnekleyin
  2. Sinyalleri doğru sırayla geçirin: input_a, input_b, output_y

Kopya kağıdı

Modül örneklendirme (instantiation), bir modülün kopyasını başka bir modülün içinde oluşturur:

module_name instance_name (connections);

Örnek:

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

module top (input x, input y, output z);
  and_gate gate1 (x, y, z); // x→a, y→b, z→c
endmodule

Kurallar:

  • Örnek adı (instance name) benzersiz olmalıdır
  • Bağlantı sayısı, port sayısı ile eşleşmelidir
  • Bağlantı sırası, port tanımlama sırası ile eşleşmelidir
  • Birden fazla örnek, her biri kendi sinyallerine sahip olacak şekilde paralel olarak çalışır

Kendin dene

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: or_gate'i or1 adıyla örneklendirin
  // Sinyalleri şu sırayla geçirin: input_a, input_b, output_y
  // .port(signal) sözdizimini kullanmayın
  

endmodule
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Temeller bölümündeki tüm dersler