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

المشروع 2: الحساب البولياني

المشروع 2: الحساب البولياني

خلفية

محور معمارية الحاسوب هو CPU، أو وحدة المعالجة المركزية، ومحور CPU هو ALU، أو الوحدة الحسابية المنطقية. في هذا المشروع ستبني تدريجيًا مجموعة من الشرائح، تتوّج ببناء شريحة ALU لحاسوب Hack. جميع الشرائح المبنية في هذا المشروع قياسية، فيما عدا ALU ذاتها، التي تختلف من معمارية حاسوب إلى أخرى.

الهدف

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

الشرائح

اسم الشريحة الوصف
HalfAdder نصف جامع
FullAdder جامع كامل
Add16 جامع بـ 16 بت
Inc16 مُزايد بـ 16 بت
ALU وحدة حسابية منطقية (دون معالجة مخرجات الحالة)
ALU وحدة حسابية منطقية (كاملة)
سكربتات الاختبار ملف المقارنة
HalfAdder.tst HalfAdder.cmp
FullAdder.tst FullAdder.cmp
Add16.tst Add16.cmp
Inc16.tst Inc16.cmp
ALU-nostat.tst ALU-nostat.cmp
ALU.tst ALU-nostat.cmp

العقد

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

الموارد

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

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

الأدوات التي تحتاجها لهذا المشروع هي محاكي العتاد المُرفق والملفات المدرجة أعلاه. إذا كنت قد نزّلت حزمة برامج Nand2Tstris Software Suite، فإن هذه الملفات مخزّنة في مجلد nand2tetris/projects/02 لديك.

نصائح

استخدام الشرائح المدمجة: ستتضمّن برامج HDL لديك على الأرجح أجزاء شريحة بنيتها في المشروع 1. لكنّ القاعدة التي نوصي بها هي استخدام الإصدارات المدمجة من هذه الشرائح بدلًا من ذلك. يضمن استخدام الشرائح المدمجة محاكاة صحيحة وكفء ويمكن التنبؤ بها. وهناك طريقة بسيطة لتحقيق هذا العرف: تأكد من أن مجلد مشروعك يتضمّن ملفات .hdl الخاصة بالشرائح المطوَّرة في المشروع الحالي فقط.

ترتيب التنفيذ: نوصي ببناء الشرائح بالترتيب الذي تظهر به في الفصل 2. لكن، بما أن المحاكي يتضمّن إصدارات مدمجة من هذه الشرائح، فيمكنك استخدام أجزاء الشريحة دون بنائها أولًا: سيستخدم المحاكي تلقائيًا تنفيذاتها المدمجة.

تُنتج ALU الخاصة بحاسوب Hack نوعين من المخرجات: مخرج «رئيسي» بطول 16 بت ينتج عن إجراء العملية على مُدخليْن بطول 16 بت، ومخرجا «حالة» بطول 1 بت يُسمّيان «zr» و«ng». نوصي ببناء هذه الوظيفة في مرحلتين. في المرحلة الأولى، نفّذ ALU تحسب مُخرج 16 بت وتُخرجه فقط، متجاهلةً مخرجَي الحالة المسمّيين أعلاه. وحالما تصحّ هذه التنفيذ (أي حالما تجتاز شيفرة ALU.hdl اختبار ALU-nostat)، وسّع شيفرتك لتتعامل مع مخرجاتَي الحالة أيضًا. وبهذه الطريقة، يمكن عزو أي مشكلات يكتشفها ALU.tst إلى الشيفرة الإضافية التي أضفتها في المرحلة الثانية. ونشكر مارك أرمبروست على اقتراح خطة التنفيذ هذه على مرحلتين، وعلى تزويدنا بملفات الاختبار لدعمها.