İndirgeme Operatörleri
Coddy'nin Verilog Journey'sinin Temel Bilgiler bölümünün bir parçası. Ders 25 / 90.
İndirgeme operatörleri, tek bir vektörün tüm bitleri üzerinde çalışır ve bunları tek bitlik bir sonuca indirger. İki sayıyı bit bit karşılaştıran bitsel operatörlerin aksine, indirgeme operatörleri bir sayı alır ve tek bir sonuç üretmek için tüm bitleri üzerinde bir işlem gerçekleştirir.
| Operatör | İşlem | Sonuç |
|---|---|---|
& | İndirgeme AND | tüm bitler 1 ise 1 |
| | İndirgeme OR | en az bir bit 1 ise 1 |
^ | İndirgeme XOR | tek sayıda bit 1 ise 1 |
~& | İndirgeme NAND | tüm bitler 1 ise 0 |
~| | İndirgeme NOR | en az bir bit 1 ise 0 |
~^ | İndirgeme XNOR | çift sayıda bit 1 ise 1 |
Nasıl Çalışırlar
Azaltma AND (<strong>&</strong>):
&4'b1111 = 1 // all bits are 1
&4'b1011 = 0 // tüm bitler 1 değil
&4'b0000 = 0 // all bits are 0İndirgeme OR (<strong>|</strong>):
|4'b0000 = 0 // no bits are 1
|4'b0100 = 1 // en az bir bit 1
|4'b1111 = 1 // all bits are 1İndirgeme XOR'u (<strong>^</strong>):
^4'b1010 = 0 // two 1's (even) → 0
^4'b1000 = 1 // one 1 (odd) → 1
^4'b1111 = 0 // dört 1 (çift) → 0Kod Örneği
module reduction_demo;
reg [3:0] a, b, c;
reg and_red, or_red, xor_red;
initial begin
a = 4'b1111;
b = 4'b1010;
c = 4'b1000;
and_red = &a; // 1111 → 1
or_red = |b; // 1010 → 1
xor_red = ^c; // 1000 → 1
$display("&4'b1111 = %d", and_red);
$display("|4'b1010 = %d", or_red);
$display("^4'b1000 = %d", xor_red);
$finish;
end
endmoduleÇıktı:
&4'b1111 = 1
|4'b1010 = 1
^4'b1000 = 1Yaygın Kullanımlar
Tüm bitlerin 1 olup olmadığını kontrol et:
all_ones = &data; // data == 8'b11111111 ise 1Herhangi bir bitin 1 olup olmadığını kontrol edin:
any_one = |data; // data != 0 ise 1Pariteyi kontrol et (odd number of 1'ler):
odd_parity = ^data; // 1'lerin sayısı tek ise 1Tüm bitlerin 0 olup olmadığını kontrol edin:
all_zeros = ~|data; // data == 0 ise 1Görev
Her görev için doğru indirgeme ifadelerini yazın.
Yapılacaklar:
aiçindeki tüm bitlerin 1 olup olmadığını kontrol edin ve sonucuall_onesiçinde saklayın-
biçindeki herhangi bir bitin 1 olup olmadığını kontrol edin ve sonucuany_oneiçinde saklayın cdeğerinin tek sayıda 1 içerip içermediğini kontrol edin ve sonucuodd_parityiçinde saklayın
Kendin dene
module reduction_challenge;
reg [3:0] a, b, c;
reg all_ones, any_one, odd_parity;
initial begin
a = 4'b1111;
b = 4'b0100;
c = 4'b1011;
all_ones = ______; // all bits 1?
any_one = ______; // any bit 1?
odd_parity = ______; // odd number of 1's?
$display("&4'b1111 = %d", all_ones);
$display("|4'b0100 = %d", any_one);
$display("^4'b1011 = %d", odd_parity);
$finish;
end
endmoduleBu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Temel Bilgiler bölümündeki tüm dersler
4Operatörler Bölüm 1
Aritmetik OperatörlerMod Alma OperatörüKarşılaştırma OperatörleriTekrar - Basit MatematikBit Düzeyi Operatörleri7Atama ve Kapılar
Sürekli AtamaOperatörlerle AtamaYerleşik Kapı PrimitifleriAND, OR ve NOT KapılarıXOR ve XNOR KapılarıÖzet - Mantık Kapısı Devresi10Karar Verme
If İfadesiIf - ElseTekrar - Basit KarşılaştırıcıCase İfadesiCasex ve CasezTekrar - ALU Tasarımı2Veri Türleri
Wire TürüReg TürüTamsayı ve GerçelVektörlerDizilerParametrelerÖzet - Sinyalleri Tanımlama5Operatörler Bölüm 2
Mantıksal Operatörlerİndirgeme OperatörleriKaydırma OperatörleriBirleştirme OperatörüKoşullu OperatörTekrar - Operatör Meydan Okuması11Döngüler
For DöngüsüWhile DöngüsüTekrar DöngüsüSonsuz DöngüDevre Dışı Bırakma İfadesiTekrar - Döngü Kalıpları3Sayı Sistemi
İkili GösterimBoyutlu SayılarBoyutsuz SayılarNegatif SayılarÖzel X ve Z DeğerleriTekrar - Sayı Biçimleri6Modüller
Modül YapısıGiriş ve Çıkış PortlarıÇift Yönlü PortlarModül ÖrneklendirmeAda Göre Port EşlemeSıraya Göre Port EşlemeTekrar - Bir Modül Oluşturma9Prosedürel Bloklar
Always BloğuInitial BloğuDuyarlılık ListesiBloklayıcı AtamaBloklamayan AtamaTekrar - Always ve Initial Karşılaştırması15Trafik Işığı Denetleyicisi
Durumları TanımlamaDurum Makinesi MantığıKendi başına pratik yap: Online Verilog derleyicisi