Negative Numbers
Coddy'nin Verilog Journey'sinin Temeller bölümünün bir parçası. Ders 16 / 90.
Verilog'da negative sayılar two's complement biçimi kullanılarak gösterilir. Two's complement, ikili sistemde hem positive hem de negative sayıları göstermenin bir yoludur. En anlamlı bit (MSB) işareti belirtir:
- 0 = positive sayı
- 1 = negative sayı
Two's complement Nasıl Hesaplanır
Bir sayının two's complement değerini bulmak için:
- positive sayıyı ikili olarak yazın
- Tüm bit değerlerini tersine çevirin (0, 1 olur; 1, 0 olur)
- 1 ekleyin
Örnek: -5'i 4 bitte gösterme
| Adım | İşlem | Sonuç |
|---|---|---|
| 1 | İkilik sistemde pozitif 5 | 0101 |
| 2 | Tüm bitleri ters çevir | 1010 |
| 3 | 1 ekle | 1011 |
4 bitlik two'nun tümleyeninde -5 <strong>4'b1011</strong>'dir
Verilog'da Negatif Sayıları Yazma
Negatif sayıları ondalık biçimi kullanarak doğrudan yazabilirsiniz:
reg signed [3:0] a;
a = -5; // Verilog otomatik olarak ikiye tümleyeni kullanırBoyutlu ikili sayılar için two's complement değerini yazmalısın:
a = 4'b1011; // This is -5 in 4-bit two's complementSigned ve Unsigned
Varsayılan olarak Verilog, sayıları unsigned olarak ele alır. Negatif sayılarla çalışmak için sinyalleri signed olarak tanımlayın:
reg signed [3:0] negative; // -8 ile 7 arasında saklayabilir
reg [3:0] positive; // 0 ile 15 arasında saklayabilirsigned Sayıların Aralığı
N bit için, bir signed sayı şunları temsil edebilir:
- Minimum: -2^(N-1)
- Maksimum: 2^(N-1) - 1
| Bitler | Aralık |
|---|---|
| 4 bit | -8 - 7 |
| 8 bit | -128 - 127 |
| 16 bit | -32768 - 32767 |
Önemli Notlar
- Negatif sayıların işlenmesini etkinleştirmek için
signedanahtar sözcüğünü kullanın signedolmadan Verilog tüm değerleri pozitif olarak değerlendirir
signedkullanılırken Two's complement aritmetiği automatically çalışır- MSB işareti belirler: 1 = negative, 0 = positive
Görev
Doğru two's complement değerlerini yazarak kodu tamamla.
Yapılacaklar:
adeğerini 4-bit two's complement ikili gösterimini kullanarak -3 olarak ayarlabdeğerini 4-bit two's complement ikili gösterimini kullanarak -8 olarak ayarlacdeğerini 4-bit two's complement ikili gösterimini kullanarak -1 olarak ayarla
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
4Operators Part 1
Arithmetic OperatorsModulo OperatorComparison OperatorsRecap - Simple MathBitwise Operators7Assign And Gates
Continuous AssignmentAssign With OperatorsBuilt In Gate PrimitivesAND OR NOT GatesXOR XNOR GatesRecap - Logic Gate Circuit10Decision Making
If StatementIf - ElseRecap - Simple ComparatorCase StatementCasex And CasezRecap - ALU Design5Operators Part 2
Logical OperatorsReduction OperatorsShift OperatorsConcatenation OperatorConditional OperatorRecap - Operator Challenge3Number System
Binary RepresentationSized NumbersUnsized NumbersNegative NumbersSpecial Values X And ZRecap - Number Formats6Modules
Module StructureInput And Output PortsInout PortsModule InstantiationPort Mapping By NamePort Mapping By OrderRecap - Build A Module9Procedural Blocks
Always BlockInitial BlockSensitivity ListBlocking AssignmentNon Blocking AssignmentRecap - Always vs Initial15Traffic Light Controller
Defining The StatesState Machine LogicKendi başına pratik yap: Online Verilog derleyicisi