Negatif Sayılar
Coddy'nin Verilog Journey'sinin Temeller bölümünün bir parçası — ders 16 / 90.
Verilog dilinde negatif sayılar two's complement (ikiye tümleme) biçimi kullanılarak temsil edilir. Two's complement, ikili sistemde hem pozitif hem de negatif sayıları temsil etmenin bir yoludur. En önemli bit (MSB) işareti gösterir:
- 0 = pozitif sayı
- 1 = negatif sayı
Two's Complement Nasıl Hesaplanır
Bir sayının two's complement değerini bulmak için:
- Pozitif sayıyı ikili (binary) tabanda yazın
- Tüm bitleri tersine çevirin (0 olanlar 1, 1 olanlar 0 olur)
- 1 ekleyin
Örnek: 4 bit ile -5'i temsil etme
| Adım | İşlem | Sonuç |
|---|---|---|
| 1 | İkili sistemde pozitif 5 | 0101 |
| 2 | Tüm bitleri tersine çevir | 1010 |
| 3 | 1 ekle | 1011 |
4 bitlik ikiye tümleyende -5 şudur: <strong>4'b1011</strong>
Verilog'da Negatif Sayıları Yazma
Ondalık biçimi kullanarak negatif sayıları doğrudan yazabilirsiniz:
reg signed [3:0] a;
a = -5; // Verilog otomatik olarak iki'nin tümleyenini kullanırBoyutlandırılmış ikili sayılar için two's complement değerini yazmalısınız:
a = 4'b1011; // This is -5 in 4-bit two's complementSigned vs Unsigned
Varsayılan olarak Verilog, sayıları unsigned olarak ele alır. Negatif sayılarla çalışmak için sinyalleri signed olarak bildirin:
reg signed [3:0] negative; // -8'den 7'ye kadar saklayabilir
reg [3:0] positive; // 0'dan 15'e kadar saklayabilirSigned Sayıların Aralığı
N bit için, bir signed sayı şunları temsil edebilir:
- Minimum: -2^(N-1)
- Maksimum: 2^(N-1) - 1
| Bit | Aralık |
|---|---|
| 4 bit | -8 ila 7 |
| 8 bit | -128 ila 127 |
| 16 bit | -32768 ila 32767 |
Önemli Notlar
- Negatif sayı kullanımını etkinleştirmek için
signedanahtar sözcüğünü kullanın signedolmadan, Verilog tüm değerleri pozitif olarak ele alır
signedkullanıldığında ikiye tümleme (two's complement) aritmetiği otomatik olarak çalışır- MSB işareti belirler: 1 = negatif, 0 = pozitif
Görev
Doğru ikiye tümleyen (two's complement) değerlerini yazarak kodu tamamlayın.
Ne yapılmalı:
- 4-bit ikiye tümleyen ikili sistem kullanarak
adeğerini -3 olarak ayarlayın - 4-bit ikiye tümleyen ikili sistem kullanarak
bdeğerini -8 olarak ayarlayın - 4-bit ikiye tümleyen ikili sistem kullanarak
cdeğerini -1 olarak ayarlayın
Kendin dene
module negative_challenge;
reg signed [3:0] a, b, c;
initial begin
a = 4'b______; // -3 in 4-bit two's complement
b = 4'b______; // -8 in 4-bit two's complement
c = 4'b______; // -1 in 4-bit two's complement
$display("a = %d", a);
$display("b = %d", b);
$display("c = %d", c);
$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ığı