Menu
Coddy logo textTech

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İşlemAçıklama
<<Mantıksal sola kaydırmaBitleri sola kaydırır, sıfırlarla doldurur
>>Mantıksal sağa kaydırmaBitleri sağa kaydırır, sıfırlarla doldurur
<<<Aritmetik sola kaydırmaMantıksal sola kaydırma ile aynıdır
>>>Aritmetik sağa kaydırmaSağa kaydırır, işaret bitini korur

Nasıl Çalışırlar

Sola Kaydırma (<strong><<</strong>):

8'b00001010 << 2 = 8'b00101000

Bitler sola hareket eder. Sağ taraf sıfırlarla doldurulur.

Sağa Kaydırma (<strong>>></strong>):

8'b00001010 >> 2 = 8'b00000010

Bitler 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       = 00000010

Aritmetik 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 negatif

Mantı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 çarp

2'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öl

Bir alanı ayıklayın:

// 8 bitlik bir değerden 5-2 bitlerini alın
field = (data >> 2) & 4'b1111;
challenge icon

Görev

Her görev için doğru kaydırma ifadelerini yazın.

Yapılması gerekenler:

  1. a değişkenini 3 bit sola kaydırın ve left_result içine saklayın
  2. a değişkenini 1 bit sağa kaydırın ve right_result içine saklayın
  3. b değişkenini 2 bit sağa (aritmetik) kaydırın ve arith_result içine saklayın

Kopya kağıdı

Kaydırma operatörleri, bir vektör içindeki bitleri sola veya sağa hareket ettirir:

OperatörAçı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
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