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

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

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

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

  • 0 = رقم موجب
  • 1 = رقم سالب

كيفية حساب المتمم لاثنين

لإيجاد المتمم لاثنين لعدد ما:

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

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

الخطوةالعمليةالنتيجة
1العدد 5 الموجب بالثنائي0101
2قلب جميع البتات1010
3إضافة 11011

-5 في متمم الاثنين بـ 4 بتات هو <strong>4'b1011</strong>

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

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

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

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

a = 4'b1011;   // هذا هو -5 في المتمم الثنائي المكون من 4 بتات

الموقعة مقابل غير الموقعة (Signed vs Unsigned)

بشكل افتراضي، يعامل Verilog الأرقام على أنها غير موقعة (unsigned). للعمل مع الأرقام السالبة، قم بالتصريح عن الإشارات كـ signed:

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

نطاق الأعداد ذات الإشارة

بالنسبة لـ N بت، يمكن لعدد ذو إشارة تمثيل:

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

ملاحظات هامة

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

التحدي

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

ما يجب فعله:

  1. قم بتعيين a إلى -3 باستخدام نظام المتمم الثنائي المكون من 4 بت
  2. قم بتعيين b إلى -8 باستخدام نظام المتمم الثنائي المكون من 4 بت
  3. قم بتعيين c إلى -1 باستخدام نظام المتمم الثنائي المكون من 4 بت

ورقة مرجعية

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

حساب المتمم الثنائي:

  1. اكتب الرقم الموجب بالنظام الثنائي
  2. اقلب جميع الخانات (bits)
  3. أضف 1

مثال: -5 في 4 خانات ← 010110101011 = 4'b1011

قم بتعريف الإشارات كـ signed للتعامل مع الأرقام السالبة:

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

قم بتعيين القيم السالبة مباشرة أو عبر المتمم الثنائي:

reg signed [3:0] a;
a = -5;        // تقوم Verilog تلقائياً باستخدام المتمم الثنائي
a = 4'b1011;   // مكافئ: -5 بنظام المتمم الثنائي المكون من 4 خانات

النطاق لـ N-بت الموقعة (signed): -2^(N-1) إلى 2^(N-1) - 1 (على سبيل المثال، 4 خانات: -8 إلى 7).

جرّب بنفسك

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

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

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