Nand2Tetris — الجزء الأول: من المنطق إلى المعالج › المشروع 1: المنطق البولياني 1 / 6 التالي

المشروع 1: المنطق البولياني

المشروع 1: المنطق البولياني

خلفية

تستند معمارية الحاسوب النمطية إلى مجموعة من البوابات المنطقية الأولية مثل And وOr وMux وغيرها، إضافةً إلى إصداراتها على مستوى البتّ مثل And16 وOr16 وMux16 وغيرها (بافتراض آلة بـ 16 بت). يَعهد إليك هذا المشروع ببناء مجموعة نموذجية من بوابات المنطق الأساسية. تشكّل هذه البوابات لبنات البناء الأولية التي سنبني منها لاحقًا وحدة المعالجة المركزية CPU وذاكرة الوصول العشوائية RAM للحاسوب.

الهدف

ابنِ جميع بوابات المنطق الموصوفة في الفصل 1 (انظر القائمة أدناه)، للحصول على مجموعة شرائح أساسية. لبنات البناء الوحيدة التي يمكنك استخدامها في هذا المشروع هي بوابات Nand الأولية والبوابات المركّبة التي ستبنيها تدريجيًا فوقها.

الشرائح

اسم الشريحة الوصف
Nand بوابة Nand (أولية)
Not بوابة Not
And بوابة And
Or بوابة Or
Xor بوابة Xor
Mux بوابة Mux
DMux بوابة DMux
Not16 نفي بـ 16 بت
And16 عملية And بـ 16 بت
Or16 عملية Or بـ 16 بت
Mux16 مُزاوِد (multiplexor) بـ 16 بت
Or8Way Or(in0,in1,...,in7)
Mux4Way16 مُزاوِد بـ 16 بت و4 مسارات
Mux8Way16 مُزاوِد بـ 16 بت و8 مسارات
DMux4Way مُزاوِد عكسي (demultiplexor) بـ 4 مسارات
DMux8Way مُزاوِد عكسي (demultiplexor) بـ 8 مسارات
سكربتات الاختبار ملف المقارنة
Not.tst Not16.cmp
And.tst And.cmp
Or.tst Or.cmp
Xor.tst Xor.cmp
Mux.tst Mux.cmp
DMux.tst DMux.cmp
Not16.tst Not16.cmp
And16.tst And.cmp
Or16.tst Or.cmp
Mux16.tst Mux.cmp
Or8Way.tst Or.cmp
Mux4Way16.tst Mux.cmp
Mux8Way16.tst Mux.cmp
DMux4Way.tst DMux.cmp
DMux8Way.tst DMux.cmp

العقد

عند تحميل تصميم شريحتك (برنامج .hdl معدَّل) في محاكي العتاد (Hardware Simulator) المُرفق، واختباره باستخدام سكربت .tst المُرفق، يجب أن يُنتج المخرجات المدرَجة في ملف .cmp المُرفق. إذا لم يكن الأمر كذلك، فسأُبلغك المحاكي بذلك. يجب استيفاء هذا الشرط لكل شريحة مذكورة أعلاه، باستثناء شريحة Nand التي تُعتبر أولية، وبالتالي لا حاجة إلى تنفيذها.

الموارد

انظر الفصل 1 (من الإصدار الأول للكتاب)، ودليل HDL (باستثناء A2.4)، ومجموعة شرائح Hack.

نوفّر لكل شريحة ملف .hdl هيكلي فيه موضع مخصّص لجزء التنفيذ المفقود. وبالإضافة إلى ذلك، نوفّر لكل شريحة سكربت .tst يوجّه محاكي العتاد إلى كيفية اختبارها، وملف .cmp (ملف مقارنة) يحتوي على المخرجات الصحيحة التي يجب أن يُنتجها هذا الاختبار. مهمتك هي إكمال ملفات .hdl الهيكلية المُرفقة واختبارها.

إذا كنت قد نزّلت حزمة برامج Nand2Tetris Software Suite (من قسم البرامج في هذا الموقع)، فستجد محاكي العتاد المُرفق وجميع ملفات المشروع الضرورية في مجلد nand2tetris/tools وفي مجلد nand2tetris/projects/01 على الترتيب، على حاسوبك. للتعرف على محاكي العتاد، انظر درس محاكي العتاد (PPT، PDF).

نصائح

المتطلّب المسبق: إذا لم تكن قد فعلت ذلك بعد، فنزّل حزمة برامج Nand2Tetris Software Suite من قسم البرامج في هذا الموقع إلى حاسوبك. اقرأ الفصل 1 والملحق 2 (دون تضمين القسم A2.4)، واختبر الأجزاء I-II-III من درس محاكي العتاد، قبل البدء في العمل على هذا المشروع.

الرقائق المدمجة: تُعتبر بوابة Nand أولية، وبالتالي لا حاجة إلى تنفيذها: فكلما صادف المحاكي جزء شريحة Nand في شيفرة HDL لديك، فإنه يستدعي تلقائيًا التنفيذ المدمج tools/builtInChips/Nand.hdl. نوصي بتنفيذ جميع البوابات الأخرى في هذا المشروع بالترتيب الذي تظهر به في الفصل 1. لكن لاحظ أن محاكي العتاد المُرفق يتضمّن تنفيذات مدمجة لكل هذه الرقائق. لذلك يمكنك استخدام أيّ منها قبل تنفيذه: سيستدعي المحاكي تلقائيًا إصداراتها المدمجة.

على سبيل المثال، انظر في برنامج Mux.hdl الهيكلي المُرفق. لنفترض أنه لأي سبب لم تُكمل تنفيذ شريحة Mux، لكنك لا تزال ترغب في استخدامها كأجزاء داخلية في تصاميم رقائق أخرى. يمكنك فعل ذلك بسهولة، بفضل العرف التالي. إذا فشل المحاكي في العثور على ملف Mux.hdl في المجلد الحالي، فإنه يستدعي تلقائيًا التنفيذ المدمج لها، وهو جزء من بيئة المحاكي المُرفق. ويتمتّع هذا التنفيذ المدمج بالواجهة والوظيفة نفسها الخاصة برقاقة Mux الموصوفة في الكتاب. وبالتالي، إذا أردت أن يتجاهل المحاكي تنفيذًا أو أكثر من تنفيذات رقائقك، فأعِد تسمية ملف chiPname.hdl المقابل، أو أزِله من مجلد المشروع. وعندما تكون مستعدًا لتطويرها بلغة HDL، أعد ملف chipName.hdl إلى المجلد، وتابع تعديله بشيفرة HDL.

الأدوات

يمكن تنفيذ جميع الشرائح المذكورة في المشاريع 1-5 واختبارها باستخدام محاكي العتاد المُرفق. وفيما يلي لقطة شاشة لاختبار تنفيذ شريحة Xor.hdl على محاكي العتاد: