Kaydırma Operatörleri
Coddy'nin Verilog Journey'sinin Temeller bölümünün bir parçası — ders 26 / 90.
Kaydırma operatörleri, bir vektör içindeki bitleri sola veya sağa hareket ettirir.
Mevcut Kaydırma Operatörleri
| Operatör | İşlem | Açıklama |
|---|---|---|
<< | Mantıksal sola kaydırma | Bitleri sola kaydırır, sıfırlarla doldurur |
>> | Mantıksal sağa kaydırma | Bitleri sağa kaydırır, sıfırlarla doldurur |
<<< | Aritmetik sola kaydırma | Mantıksal sola kaydırma ile aynıdır |
>>> | Aritmetik sağa kaydırma | Sağa kaydırır, işaret bitini korur |
Nasıl Çalışırlar
Sola Kaydırma (<strong><<</strong>):
8'b00001010 << 2 = 8'b00101000Bitler sola hareket eder. Sağ taraf sıfırlarla doldurulur.
Sağa Kaydırma (<strong>>></strong>):
8'b00001010 >> 2 = 8'b00000010Bitler sağa hareket eder. Sol taraf sıfırlarla doldurulur.
Kod Örneği
module shift_demo;
reg [7:0] original, left_shift, right_shift;
initial begin
original = 8'b00001010;
left_shift = original << 2; // 00001010 → 00101000
right_shift = original >> 2; // 00001010 → 00000010
$display("original = %b", original);
$display("<< 2 = %b", left_shift);
$display(">> 2 = %b", right_shift);
$finish;
end
endmoduleÇıktı:
original = 00001010
<< 2 = 00101000
>> 2 = 00000010Aritmetik Sağa Kaydırma (>>>)
İşaretli sayılar için, aritmetik sağa kaydırma işaret bitini korur:
reg signed [7:0] a;
a = -5; // 11111011
a >>> 2 = 11111110 // Hala negatifMantıksal kaydırma (>>) sıfırlarla doldurur ve işareti kaybeder.
Yaygın Kullanımlar
2'nin kuvveti ile çarpma (sola kaydırma):
x << 1 // 2 ile çarp
x << 2 // 4 ile çarp
x << 3 // 8 ile çarp2'nin kuvvetine bölme (sağa kaydırma):
x >> 1 // 2'ye böl
x >> 2 // 4'e böl
x >> 3 // 8'e bölBir alanı ayıklayın:
// 8 bitlik bir değerden 5-2 bitlerini alın
field = (data >> 2) & 4'b1111;Görev
Her görev için doğru kaydırma ifadelerini yazın.
Yapılması gerekenler:
adeğişkenini 3 bit sola kaydırın veleft_resultiçine saklayınadeğişkenini 1 bit sağa kaydırın veright_resultiçine saklayınbdeğişkenini 2 bit sağa (aritmetik) kaydırın vearith_resultiçine saklayın
Kopya kağıdı
Kaydırma operatörleri, bir vektör içindeki bitleri sola veya sağa hareket ettirir:
| Operatör | Açıklama |
|---|---|
<< | Mantıksal sola kaydırma (sıfırlarla doldurur) |
>> | Mantıksal sağa kaydırma (sıfırlarla doldurur) |
<<< | Aritmetik sola kaydırma (mantıksal ile aynı) |
>>> | Aritmetik sağa kaydırma (işaret bitini korur) |
8'b00001010 << 2 // = 8'b00101000
8'b00001010 >> 2 // = 8'b00000010
reg signed [7:0] a;
a = -5; // 11111011
a >>> 2 // = 11111110 (işaret korundu)Yaygın kullanımlar:
x << n // 2^n ile çarp
x >> n // 2^n'e böl
// 8 bitlik bir değerden 5-2 arası bitleri çıkar
field = (data >> 2) & 4'b1111;Kendin dene
module shift_challenge;
reg [7:0] a;
reg signed [7:0] b;
reg [7:0] left_result, right_result;
reg signed [7:0] arith_result;
initial begin
a = 8'b00010001;
b = -8'sd16; // ikili sistemde 11110000
left_result = ______; // a'yı 3 bit sola kaydır
right_result = ______; // a'yı 1 bit sağa kaydır
arith_result = ______; // b'yi 2 bit sağa kaydır (aritmetik)
$display("a = %b", a);
$display("a << 3 = %b", left_result);
$display("a >> 1 = %b", right_result);
$display("b = %b", b);
$display("b >>> 2 = %b", arith_result);
$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ığı