Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

الأعداد السالبة

جزء من قسم الأساسيات في رحلة Verilog على Coddy — الدرس 16 من 90.

في Verilog، يتم تمثيل الأرقام السلبية باستخدام صيغة two's complement (المتمم إلى اثنين). المتمم إلى اثنين هو طريقة لتمثيل كل من الأرقام الموجبة والسالبة بالنظام الثنائي. تشير الخانة الأكثر أهمية (MSB) إلى الإشارة:

  • 0 = عدد موجب
  • 1 = عدد سالب

كيفية حساب المتمم للزوج (Two's Complement)

لإيجاد المتمم للزوج لرقم ما:

  1. اكتب الرقم الموجب بالظام الثنائي (binary)
  2. اعكس جميع البتات (0 يصبح 1، و 1 يصبح 0)
  3. أضف 1

مثال: تمثيل -5 في 4 bit

الخطوةالعمليةالنتيجة
15 positive بالثنائي0101
2قلب جميع الـ bit1010
3إضافة 11011

-5 في 4-bit two's complement هو <strong>4'b1011</strong>

كتابة الأرقام السالبة في Verilog

يمكنك كتابة الأرقام السالبة مباشرة باستخدام التنسيق العشري (decimal):

reg signed [3:0] a;
a = -5;        // Verilog يستخدم تلقائيًا المتمم الثنائي

بالنسبة للأرقام الثنائية المحددة الحجم (sized binary numbers)، يجب عليك كتابة قيمة المتمم إلى اثنين (two's complement):

a = 4'b1011;   // This is -5 in 4-bit two's complement

Unsigned مقابل Signed

بشكل افتراضي، يتعامل Verilog مع الأرقام على أنها unsigned. للعمل مع الأعداد السالبة، قم بالإعلان عن الإشارات كـ signed:

reg signed [3:0] negative;   // يمكنه تخزين من -8 إلى 7
reg [3:0] positive;          // يمكنه تخزين من 0 إلى 15

نطاق الأعداد الموقّعة (Signed)

بالنسبة لـ N من الـ bits، يمكن للعدد الـ signed أن يمثل:

  • الحد الأدنى: -2^(N-1)
  • الحد الأقصى: 2^(N-1) - 1
Bitsالنطاق
4 bits-8 إلى 7
8 bits-128 إلى 127
16 bits-32768 إلى 32767

ملاحظات هامة

  • استخدم الكلمة المفتاحية signed للتمكين من التعامل مع الأعداد السالبة (negative)
  • من دون signed، يتعامل Verilog مع جميع القيم على أنها موجبة (positive)
  • يعمل حساب المتمم للثنائين تلقائيًا عند استخدام signed
  • يحدد البت الأكثر أهمية (MSB) الإشارة: 1 = سالب (negative)، 0 = موجب (positive)
challenge icon

التحدي

أكمل الكود بكتابة قيم M2's complement (المتمم إلى اثنين) الصحيحة.

ما يجب عليك فعله:

  1. عين a إلى -3 باستخدام النظام الثنائي 4-bit two's complement
  2. عين b إلى -8 باستخدام النظام الثنائي 4-bit two's complement
  3. عين c إلى -1 باستخدام النظام الثنائي 4-bit two's complement

جرّب بنفسك

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
endmodule
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس الأساسيات