Bitsel Operatörler
Coddy'nin Verilog Journey'sinin Temeller bölümünün bir parçası — ders 23 / 90.
Bit düzeyinde operatörler (bitwise operators), bir sayının her bir biti üzerinde işlem yapar. Sayıları tam değerler olarak ele alan aritmetik operatörlerin (+, -, *, /) aksine, bit düzeyinde operatörler bit bit çalışır.
Mevcut Bit Düzeyinde Operatörler
| Operatör | İşlem | Ne Yapar |
|---|---|---|
& | AND | Çıkış biti, yalnızca her iki giriş biti de 1 ise 1 olur |
| | OR | Çıkış biti, en az bir giriş biti 1 ise 1 olur |
^ | XOR | Çıkış biti, giriş bitleri farklı ise 1 olur |
~ | NOT | Tüm bitleri tersine çevirir (0, 1 olur; 1, 0 olur) |
Bit düzeyinde operatörler kullandığınızda, Verilog arka planda sayıları ikili (binary) olarak ele alır.
reg [3:0] a, b;
a = 4'd10; // Ondalık 10 = ikili 1010
b = 4'd12; // Ondalık 12 = ikili 1100
c = a & b; // Doğrudan ikili kullanmakla aynı şekilde çalışırSayıları ondalık, hex veya ikilik tabanda yazabilirsiniz—Verilog, bit düzeyinde işlemler için bunları ikilik tabana dönüştürür.
Bitwise Nasıl Çalışır?
Her operatör bit çiftleri üzerinde çalışır (veya NOT için tek bitler):
4 bitlik sayılarla örnek:
a = 1010 (binary)
b = 1100 (binary)
AND: a & b = 1000
(1&1=1, 0&1=0, 1&0=0, 0&0=0)
OR: a | b = 1110
(1|1=1, 0|1=1, 1|0=1, 0|0=0)
XOR: a ^ b = 0110
(1^1=0, 0^1=1, 1^0=1, 0^0=0)
NOT: ~a = 0101
(~1=0, ~0=1, ~1=0, ~0=1)Kod Örneği
module bitwise_demo;
reg [3:0] a, b;
reg [3:0] and_res, or_res, xor_res, not_res;
initial begin
a = 4'b1010;
b = 4'b1100;
and_res = a & b; // 1010 & 1100 = 1000
or_res = a | b; // 1010 | 1100 = 1110
xor_res = a ^ b; // 1010 ^ 1100 = 0110
not_res = ~a; // ~1010 = 0101
$display("a = %b", a);
$display("b = %b", b);
$display("a & b = %b", and_res);
$display("a | b = %b", or_res);
$display("a ^ b = %b", xor_res);
$display("~a = %b", not_res);
$finish;
end
endmoduleÇıktı:
a = 1010
b = 1100
a & b = 1000
a | b = 1110
a ^ b = 0110
~a = 0101Görev
Verilen değerler için bit düzeyinde sonuçları hesaplayın.
Yapılması gerekenler:
a & bhesaplayın veand_resiçinde saklayına | bhesaplayın veor_resiçinde saklayına ^ bhesaplayın vexor_resiçinde saklayın~ahesaplayın venot_resiçinde saklayın
Kopya kağıdı
Bitsel operatörler bir sayının her bir biti üzerinde çalışır:
| Operatör | İşlem | Çıkış biti şu durumda 1 olur... |
|---|---|---|
& | VE (AND) | Her iki giriş biti de 1 olduğunda |
| | VEYA (OR) | En az bir giriş biti 1 olduğunda |
^ | ÖZEL VEYA (XOR) | Giriş bitleri farklı olduğunda |
~ | DEĞİL (NOT) | Tüm bitleri tersine çevirir (tekli) |
// a = 1010, b = 1100
a & b = 1000 // VE
a | b = 1110 // VEYA
a ^ b = 0110 // ÖZEL VEYA
~a = 0101 // DEĞİL
Kendin dene
module bitwise_challenge;
reg [3:0] a, b;
reg [3:0] and_res, or_res, xor_res, not_res;
initial begin
a = 4'b1101;
b = 4'b1011;
and_res = ______; // a & b
or_res = ______; // a | b
xor_res = ______; // a ^ b
not_res = ______; // ~a
$display("a = %b", a);
$display("b = %b", b);
$display("a & b = %b", and_res);
$display("a | b = %b", or_res);
$display("a ^ b = %b", xor_res);
$display("~a = %b", not_res);
$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ığı