Birleştirme Operatörü
Coddy'nin Verilog Journey'sinin Temeller bölümünün bir parçası — ders 27 / 90.
Birleştirme operatörü { } birden fazla sinyali, sabiti veya ifadeyi tek bir daha büyük vektörde birleştirir. Daha geniş değerler oluşturmak için bitleri birbirine eklemeniz gerektiğinde kullanılır.
Birleştirme ile Hangi Değerler Çalışır
Şunları birleştirebilirsiniz:
- Wire ve reg'ler — herhangi bir sinyal
- Sabitler —
4'b1010veya8'hFFgibi sayılar
- İfadeler —
a + bgibi işlemlerin sonuçları - Çoğaltmalar — bir değerin birden çok kez tekrarlanması
Tüm birleştirilmiş değerler sabit, bilinen genişliklere sahip olmalıdır.
Temel Sözdizimi: {value1, value2, value3, ...} Sonuç genişliği, tüm bireysel genişliklerin toplamıdır.
Örnekler
İki adet 4 bitlik değeri 8 bitlik bir değerde birleştirin:
reg [3:0] high, low;
reg [7:0] word;
word = {high, low}; // high üst 4 bit, low ise alt 4 bit olurSabitlerle birleştirin:
data = {4'b1010, 4'b0000}; // 8'b10100000İkiden fazlasını birleştirin:
full = {a, b, c, d}; // Tüm genişlikler toplanırReplikasyon
Bir değeri {n{value}} kullanarak birden çok kez tekrarlayabilirsiniz:
repeat = {4{4'b1010}}; // 16'b1010101010101010 (4 kez tekrarla)Bu, işaret genişletme 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 olamaz)
- Birleştirme, atamaların hem sol hem de sağ tarafında kullanılabilir
Görev
Her görev için doğru birleştirme (concatenation) ifadelerini yazın.
Ne yapmalı:
avebdeğişkenlerini 8 bitlik bir sonuç oluşturacak şekilde birleştirin vecombine1içinde saklayınc,dveedeğişkenlerini 12 bitlik bir sonuç oluşturacak şekilde birleştirin vecombine2içinde saklayınfvegdeğişkeninin iki kopyasını 12 bitlik bir sonuç oluşturacak şekilde birleştirin vecombine3içinde saklayın
Kopya kağıdı
Birleştirme operatörü { } bitleri bir araya getirerek daha geniş bir vektör oluşturur. Sonuç genişliği = tüm bireysel genişliklerin toplamı.
// Temel: {value1, value2, ...}
reg [3:0] high, low;
reg [7:0] word;
word = {high, low}; // high = üst bitler, low = alt bitler
// Sabitlerle
data = {4'b1010, 4'b0000}; // 8'b10100000
Yineleme {n{value}} bir değeri n kez tekrarlar:
repeated = {3{4'b1010}}; // 12'b101010101010
signed_8bit = {4{sign_bit}, val_4b}; // işaret genişletme (sign extension)
Temel kurallar:
- Sıralama önemlidir:
{a, b}≠{b, a} - Tüm parçaların sabit ve bilinen genişlikleri olmalıdır
- Atamaların her iki tarafında da kullanılabilir
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
endmoduleBu 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
4Operatörler Bölüm 1
Aritmetik OperatörlerModül OperatörüKarşılaştırma OperatörleriÖzet - Basit MatematikBitsel Operatörler7Atama ve Kapılar
Sürekli AtamaOperatörlerle AtamaYerleşik Kapı PrimitifleriAND OR NOT KapılarıXOR XNOR KapılarıÖzet - Mantık Kapısı Devresi10Karar Yapıları
If İfadesiIf - ElseÖzet - Basit KarşılaştırıcıCase İfadesiCasex ve CasezÖzet - ALU Tasarımı5Operatörler Bölüm 2
Mantıksal Operatörlerİndirgeme OperatörleriKaydırma OperatörleriBirleştirme OperatörüKoşullu OperatörÖzet - Operatör Meydan Okuması11Döngüler
For DöngüsüWhile DöngüsüRepeat DöngüsüSonsuz DöngüDevre Dışı Bırakma İfadesiÖzet - Döngü Kalıpları3Sayı Sistemleri
İkilik GösterimBoyutlandırılmış SayılarBoyutlandırılmamış SayılarNegatif SayılarÖzel Değerler X ve ZÖzet - Sayı Formatları6Modüller
Modül YapısıGiriş ve Çıkış PortlarıInout PortlarıModül Örneklendirmeİsme Göre Port EşlemeSıraya Göre Port EşlemeÖzet - Bir Modül Oluşturun9Prosedürel Bloklar
Always BloğuInitial BloğuDuyarlılık ListesiEngelleyici AtamaEngelleyici Olmayan AtamaÖzet - Always vs Initial15Trafik Işığı Kontrolcüsü
Durumları TanımlamaDurum Makinesi Mantığı