التمثيل الثنائي
جزء من قسم الأساسيات في رحلة Verilog على Coddy — الدرس 13 من 90.
في Verilog، نحن نعمل مع الدوائر الرقمية التي تفهم فقط 0 و 1. يتم تمثيل هذه في النظام الثنائي.
يستخدم النظام الثنائي رقمين فقط: 0 و 1. يُسمى كل رقم ثنائي بت (bit).
| عشري | ثنائي | بتات |
|---|---|---|
| 0 | 0 | 1 بت |
| 1 | 1 | 1 بت |
| 2 | 10 | 2 بت |
| 3 | 11 | 2 بت |
| 4 | 100 | 3 بت |
| 5 | 101 | 3 بت |
كتابة الأرقام الثنائية في Verilog
لكتابة الأرقام الثنائية في Verilog، استخدم البادئة 'b:
4'b1010 // 1010 ثنائي بـ 4 بت (عشري 10)
8'b11110000 // 11110000 ثنائي بـ 8 بت (عشري 240)
2'b01 // 01 ثنائي بـ 2 بت (عشري 1)الرقم الذي يسبق 'b يخبر Verilog بعدد البتات التي تحتوي عليها القيمة.
كيفية تحويل العشري إلى ثنائي
اقسم الرقم العشري على 2 بشكل متكرر واقرأ البواقي من الأسفل إلى الأعلى.
مثال: تحويل 9 إلى ثنائي
| الخطوة | القسمة | ناتج القسمة | الباقي |
|---|---|---|---|
| 1 | 9 ÷ 2 | 4 | 1 |
| 2 | 4 ÷ 2 | 2 | 0 |
| 3 | 2 ÷ 2 | 1 | 0 |
| 4 | 1 ÷ 2 | 0 | 1 |
اقرأ البواقي من الأخير إلى الأول: 1001
9 = 4'b1001
مثال في الكود
module binary_example;
reg [3:0] a;
initial begin
a = 4'b1010; // ثنائي 1010 = عشري 10
$display("a = %b (binary)", a);
$display("a = %d (decimal)", a);
$display("a = %h (hex)", a);
$finish;
end
endmoduleالمخرجات:
a = 1010 (binary)
a = 10 (decimal)
a = a (hex)التحدي
أكمل الكود عن طريق كتابة القيم الثنائية المفقودة.
ما يجب القيام به:
- اكتب القيمة الثنائية للرقم العشري 5 (4 بت)
- اكتب القيمة الثنائية للرقم العشري 14 (4 بت)
ورقة مرجعية
يستخدم النظام الثنائي الرقمين 0 و 1 فقط. كل رقم يسمى بت (bit).
اكتب الأرقام الثنائية في Verilog باستخدام البادئة 'b — الرقم الذي يسبقها يحدد عرض البتات (bit width):
4'b1010 // ثنائي 4-بت = عشري 10
8'b11110000 // ثنائي 8-بت = عشري 240تنسيقات العرض: %b (ثنائي)، %d (عشري)، %h (ستة عشري).
من عشري إلى ثنائي: اقسم على 2 بشكل متكرر، واقرأ البواقي من الأسفل إلى الأعلى.
// 9 ÷ 2 → 4 باقي 1 → 2 باقي 0 → 1 باقي 0 → 0 باقي 1 ⟹ 1001
// 9 = 4'b1001جرّب بنفسك
module binary_challenge;
reg [3:0] a, b;
initial begin
// اكتب القيمة الثنائية للرقم العشري 5 (4 بت)
a = 4'b______;
// Write binary for decimal 14 (4 bits)
b = 4'b______;
$display("5 = %b", a);
$display("14 = %b", b);
$finish;
end
endmoduleيتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس الأساسيات
4المعاملات - الجزء الأول
المعاملات الحسابيةمعامل باقي القسمة (Modulo)معاملات المقارنةملخص - رياضيات بسيطةمعاملات Bitwise7التعيين والبوابات المنطقية
التعيين المستمرالتعيين باستخدام العملياتالبوابات الأساسية المدمجةبوابات AND و OR و NOTبوابات XOR و XNORمراجعة - دارة البوابات المنطقية5المعاملات - الجزء الثاني
المعاملات المنطقيةمعاملات الاختزالمعاملات الإزاحةمعامل الدمجالمعامل الشرطيمراجعة - تحدي المعاملات3أنظمة العد
التمثيل الثنائيالأعداد محددة الحجمالأعداد غير محددة الحجمالأعداد السالبةالقيم الخاصة X و Zمراجعة - تنسيقات الأعداد6الوحدات
هيكل الوحدةمنافذ الإدخال والإخراجمنافذ Inoutاستدعاء الوحداتربط المنافذ بالاسمربط المنافذ بالترتيبمراجعة - بناء وحدة