Integer و Real
جزء من قسم الأساسيات في رحلة Verilog على Coddy — الدرس 8 من 90.
بالإضافة إلى wire و reg، تمتلك Verilog أنواع بيانات أخرى للأرقام لأغراض مختلفة.
Integer
integer هو متغير للأغراض العامة للعد والحسابات.
- الحجم الافتراضي هو 32 بت
- موقّع (يمكنه تخزين الأرقام السالبة)
- يُستخدم بشكل أساسي في منصات الاختبار (testbenches) وحلقات for
التصريح عن عدد صحيح:
integer i; // متغير ذو إشارة بطول 32 بت
integer count; // يمكنه تخزين أرقام سالبةاستخدام integer:
integer i;
initial begin
i = 0; // البدء من 0
i = i + 1; // العد التصاعدي
i = -5; // يمكنه تخزين قيم سالبة
$display("i = %d", i); // يطبع: i = -5
endReal
real تُستخدم لأرقام الفاصلة العائمة (الأرقام ذات الكسور العشرية).
- يخزن القيم الكسرية
- يُستخدم في منصات الاختبار (testbenches) لإجراء الحسابات
- لا يمكن تحويله برمجياً (synthesized) إلى عتاد
التصريح عن متغير real:
real pi; // متغير بنقطة عائمة
real voltage;استخدام real:
real pi;
initial begin
pi = 3.14159; // قيمة عشرية
pi = 22.0 / 7.0; // نتيجة القسمة
$display("pi = %f", pi); // يطبع: pi = 3.142857
endأين يتم استخدامها
في منصات الاختبار (testbenches): تُستخدم الأعداد الصحيحة (integers) والأعداد الحقيقية (reals) بشكل شائع لعدادات الحلقات، والحسابات، والتحقق من القيم المتوقعة. فهي تجعل كود الاختبار أسهل في الكتابة والفهم.
في العتاد (Hardware): هذه الأنواع عادةً ما تكون غير قابلة للتصنيع (non-synthesizable)—مما يعني أنه لا يمكن تحويلها إلى دوائر فعلية. بالنسبة للعتاد الذي سيوضع على FPGA أو شريحة، استخدم reg و wire بدلاً من ذلك.
التحدي
أكمل الكود لجعل منصة الاختبار (testbench) تعمل.
ما يجب القيام به:
- قم بالتصريح عن integer يسمى i (لعداد الحلقة)
- قم بالتصريح عن real يسمى value (للحساب)
ورقة مرجعية
integer – متغير موقع بـ 32 بت للعد/الحسابات (منصات الاختبار "testbenches"، الحلقات "loops"):
integer i;
integer count;
initial begin
i = 0;
i = i + 1;
i = -5; // can store negatives
endreal – متغير بنقطة عائمة (floating-point) للقيم الكسرية (منصات الاختبار فقط، غير قابل للتصنيع "not synthesizable"):
real pi;
initial begin
pi = 3.14159;
pi = 22.0 / 7.0;
$display("pi = %f", pi);
endكلا النوعين integer و real يُستخدمان في منصات الاختبار (testbenches) فقط. بالنسبة للأجهزة القابلة للتصنيع (synthesizable hardware)، استخدم reg و wire.
جرّب بنفسك
module test;
// التصريح عن عدد صحيح يسمى i
// التصريح عن عدد حقيقي يسمى value
initial begin
i = 7;
value = i * 0.5;
$display("i = %0d, value = %f", i, value);
$finish;
end
endmoduleيتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس الأساسيات
4المعاملات - الجزء الأول
المعاملات الحسابيةمعامل باقي القسمة (Modulo)معاملات المقارنةملخص - رياضيات بسيطةمعاملات Bitwise7التعيين والبوابات المنطقية
التعيين المستمرالتعيين باستخدام العملياتالبوابات الأساسية المدمجةبوابات AND و OR و NOTبوابات XOR و XNORمراجعة - دارة البوابات المنطقية5المعاملات - الجزء الثاني
المعاملات المنطقيةمعاملات الاختزالمعاملات الإزاحةمعامل الدمجالمعامل الشرطيمراجعة - تحدي المعاملات3أنظمة العد
التمثيل الثنائيالأعداد محددة الحجمالأعداد غير محددة الحجمالأعداد السالبةالقيم الخاصة X و Zمراجعة - تنسيقات الأعداد6الوحدات
هيكل الوحدةمنافذ الإدخال والإخراجمنافذ Inoutاستدعاء الوحداتربط المنافذ بالاسمربط المنافذ بالترتيبمراجعة - بناء وحدة