المشروع 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 على محاكي العتاد:
