Menu
Coddy logo textTech

Operatörlerle Atama

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

Sürekli atamayı (continuous assignment) anladıktan sonra, yararlı mantıklar oluşturmak için bunu operatörlerle birleştirebilirsiniz. assign ifadesi, bir teli sürmek için herhangi bir operatörü kullanabilir.

Temel Sözdizimi

assign wire_name = expression;

İfade şunları içerebilir:

  • Aritmetik operatörler (+, -, *, /)
  • Bit düzeyinde operatörler (&, |, ^, ~)
  • Mantıksal operatörler (&&, ||, !)
  • Karşılaştırma operatörleri (>, <, ==, !=)
  • Kaydırma operatörleri (<<, >>)
  • Koşul operatörü (? :)

Farklı Operatörlerle Örnekler

Bit Düzeyinde (Bitwise) AND:

assign out = a & b;

Toplama:

assign sum = a + b;

Karşılaştırma (Comparison):

assign is_greater = (a > b);

Koşullu (Çoklayıcı / multiplexer):

assign out = sel ? a : b;

Shift:

assign shifted = data << 2;

Concatenation:

assign bus = {high_byte, low_byte};

Kod Örneği

module assign_operators (
  input [3:0] a, b,
  input sel,
  output [3:0] and_out,
  output [4:0] sum_out,
  output is_equal,
  output mux_out
);
  
  assign and_out = a & b;           // Bitsel AND
  assign sum_out = a + b;           // Toplama
  assign is_equal = (a == b);       // Karşılaştırma
  assign mux_out = sel ? a : b;     // Koşullu (çoklayıcı)
  
endmodule

Tek ATAMA İçinde Birden Fazla Operatör

Operatörleri tek bir ifadede birleştirebilirsiniz:

assign result = (a & b) | (c ^ d);
assign final = (a + b) > (c - d);
assign parity = ^data;   // Reduction XOR (tek sayıda 1'ler)

Operatör Önceliği

Verilog standart operatör önceliğini takip eder. Amacınızı Clear bir şekilde belirtmek için parantez ( ) kullanın:

// Belirsiz
assign out = a & b | c;

// Açık
assign out = (a & b) | c;
challenge icon

Görev

Görevlere göre eksik assign ifadelerini ekleyin.

Yapılacaklar:

  1. and_result ifadesini input_a AND input_b (bitsel) olarak ayarlayın
  2. or_result ifadesini input_a OR input_b (bitsel) olarak ayarlayın
  3. xor_result ifadesini input_a XOR input_b (bitsel) olarak ayarlayın
  4. not_result ifadesini NOT input_a (bitsel) olarak ayarlayın

Kendin dene

module assign_challenge (
  input input_a,
  input input_b,
  output and_result,
  output or_result,
  output xor_result,
  output not_result
);
  
  // TODO: Şunlar için assign ifadeleri ekle:
  // and_result = input_a & input_b
  // or_result  = input_a | input_b
  // xor_result = input_a ^ input_b
  // not_result = ~input_a

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