Menu
Coddy logo textTech

Birleştirme Operatörü

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

Bitiştime (concatenation) operatörü { } birden fazla sinyali, sabiti veya ifadeyi tek bir daha büyük vektör halinde birleştirir. Daha geniş değerler oluşturmak için bitleri birbirine bağlamanız gerektiğinde kullanılır.

Hangi Değerler Birleştirme (Concatenation) ile Çalışır

Şunları birleştirebilirsiniz:

  • Wire'lar ve reg'ler — herhangi bir sinyal
  • Sabitler4'b1010 veya 8'hFF gibi sayılar
  • İfadeler (Expressions)a + b gibi işlemlerin sonuçları
  • Yinelemeler (Replications) — bir değeri birden çok kez tekrarlama

Birleştirilen tüm değerlerin sabit, bilinen genişlikleri olmalıdır.

Temel Sözdizimi:  {value1, value2, value3, ...} Sonuç genişliği, tüm bireysel genişliklerin toplamıdır.

Örnekler

İki 4-bitlik değeri 8 bit olarak birleştirin (Combine):

reg [3:0] high, low;
reg [7:0] word;

word = {high, low};     // high üst 4 bit olur, low alt 4 bit olur

Sabitlerle birleştirme:

data = {4'b1010, 4'b0000};   // 8'b10100000

İkiden fazlasını birleştirin:

full = {a, b, c, d};   // Tüm genişlikler toplanır

Replication

Bir değeri {n{value}} kullanarak birden fazla kez tekrarlayabilirsiniz:

repeated = {4{4'b1010}};   // 16'b1010101010101010 (repeat 4 times)

Bu durum, işaret genişletme (sign extension) için kullanışlıdır:

signed_8bit = {{4{sign_bit}}, value_4bit};

Kod Örneği

module concatenation_demo;
  reg [3:0] upper, lower;
  reg [7:0] combined;
  reg [11:0] repeated;
  
  initial begin
    upper = 4'b1010;
    lower = 4'b1100;
    
    combined = {upper, lower};        // 10101100
    repeated = {3{4'b1010}};          // 101010101010
    
    $display("{upper, lower} = %b", combined);
    $display("{3{4'b1010}} = %b", repeated);
    $finish;
  end
endmodule

Çıktı:

{upper, lower} = 10101100
{3{4'b1010}} = 101010101010

Önemli Notlar

  • Sıralama önemlidir: {a, b}, {b, a} ifadesinden farklıdır
  • Tüm parçalar sabit genişliklere sahip olmalıdır (boyutlandırılmamış sayılar olmamalıdır)
  • Birleştirme işlemi atamaların hem sol hem de sağ tarafında kullanılabilir
challenge icon

Görev

Her bir görev için doğru birleştirme (concatenation) ifadelerini yazın.

Ne yapılmalı:

  1. a ve b değişkenlerini 8-bit'lik bir sonuçta birleştirip combine1 içinde saklayın
  2. c, d ve e değişkenlerini 12-bit'lik bir sonuçta birleştirip combine2 içinde saklayın
  3. f ile g değişkeninin two kopyasını 12-bit'lik bir sonuçta birleştirip combine3 içinde saklayın

Kendin dene

module concatenation_challenge;
  reg [3:0] a, b;
  reg [3:0] c, d, e;
  reg [3:0] f, g;
  reg [7:0] combine1;
  reg [11:0] combine2, combine3;
  
  initial begin
    a = 4'b1010;
    b = 4'b0101;
    c = 4'b1111;
    d = 4'b0000;
    e = 4'b1100;
    f = 4'b1001;
    g = 4'b0110;
    
    combine1 = ______;   // Combine a and b into an 8-bit result 
    combine2 = ______;   // Combine c, d, and e into a 12-bit result 
    combine3 = ______;   // Combine f and two copies of g into a 12-bit result 
    
    $display("{a, b} = %b", combine1);
    $display("{c, d, e} = %b", combine2);
    $display("{f, g, g} = %b", combine3);
    $finish;
  end
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