project.doc

‫به نام خدا‬
‫پروژه درس هم‪-‬طراحي سختافزار‪/‬نرمافزار‬
‫تحويل‪ 15 :‬تير ‪87‬‬
‫يک پردازنده به زبان ‪SystemC‬‬
‫‪.1‬‬
‫با مشخصات زير طراحي کنيد‪:‬‬
‫شامل مجموعه دستورالعمل هاي زير باشد‪:‬‬
‫دستورات ‪ ALU‬طبق جدول زير‪.‬‬
‫‪.a‬‬
‫دستورات پرش غير شرطي و شرطي بر اساس صفر بودن يک ثبات‪.‬‬
‫‪.b‬‬
‫دستورات ‪ load‬و ‪.store‬‬
‫‪.c‬‬
‫يک دستورالعمل براي فراخواني ماژولهاي سخت افزاري اضافه شده به پردازنده‪ .‬در اين‬
‫‪.d‬‬
‫پردازنده‪ ،‬عالوه بر دستورات معمول‪ ،‬مي توان يک الگوريتم را به صورت سخت افزاري پياده سازي‬
‫کرده و در قالب يک پردازنده کمکی يا )‪ FU (Functional Uint‬مطابق شکل زير به پردازنده متصل نمود‪.‬‬
‫هر ‪ FU‬داراي يک شناسه )‪ (id‬است‪ .‬دستورالعملي به فرم ‪ CallFU fu_id‬پياده سازي کنيد که کار جاري‬
‫پردازنده را متوقف و ‪ FU‬مربوطه را فعال کرده و پس از اتمام کار ‪ ،FU‬پردازنده را جهت ادامه‬
‫کار فعال نمايد‪ .‬چون ‪ FU‬ها بر روي باس پردازنده‪-‬حافظه قرار دارند‪ ،‬بايد مکانيزمي براي‬
‫تمايز بين فراخواني ‪ FU‬و عمليات خواندن و نوشتن در حافظه در نظر گرفت‪ .‬در ساده ترين روش‪،‬‬
‫براي اين کار مي توان از يک سيگنال به نام ‪ call‬در کنار سيگنال هاي ‪ read , write‬استفاده کرد‪.‬‬
‫براي عمليات خواندن ونوشتن حافظه‪ ،‬آدرس مورد نظر بر روي گذرگاه آدرس قرار گرفته و سيگنال‬
‫هاي ‪ read‬يا ‪ write‬يک ميشوند‪ .‬اما براي فراخواني ‪ ،FU‬شناسه آن بر روي گذرگاه ادرس قرار‬
‫گرفته و سيگنال ‪ call‬يک مي شود‪ .‬براي ارسال پارامتر ها به ‪ FU‬و دريافت مقادير بازگشتي از‬
‫آن‪ ،‬به هر ‪ FU‬يک محدوده از آدرسهاي حافظه را اختصاص دهيد‪(.‬روش ‪.)Memory-mapped‬در اين‬
‫معماري‪ ،‬نوشتن پارامتر هاي مورد نياز ‪ FU‬قبل از فراخواني آن و خواندن نتيجه بعد از اتمام‬
‫کار از آدرس اختصاص داده شده بر عهده برنامه نويس است‪.‬‬
‫‪ .2‬پردازنده بايد به صورت يک خط لوله )‪ 3 (pipeline‬مرحله اي شامل ‪،decode ،fetch‬و ‪ execute‬باشد‪.‬‬
‫‪ .3‬يک حافظه ‪ 8‬کيلوبايتي را پياده سازي کرده و به پروسسور متصل کنيد‪ .‬يک نمونه از پياده‬
‫سازي حافظه در ‪ SystemC‬در بخش ‪ 7.2‬کتاب آمده است‪.‬‬
‫‪ .4‬مد آدرس دهي پردازنده مد مستقيم است‪ .‬به عنوان گزينه اختياري (يا در صورت نياز) مدهاي‬
‫آدرس دهي غيرمستقيم‪ ،‬نسبي‪ ،‬و آني را پياده کنيد‪.‬‬
‫‪ .5‬با نوشتن يک ‪ test bench‬عملکرد پردازنده را چک کنيد‪ Test bench .‬ترجيحا يک الگوريتم واقعي را‬
‫پياده سازي کند‪.‬‬
‫توضيحات‪:‬‬
‫يک پروتکل ساده براي فراخواني ‪ FU‬ها و نحوه طراحي به صورت خط لوله در کالس مورد‬
‫‪.a‬‬
‫بحث قرار گرفت و در مجموعه فايل هاي ‪ SystemC‬در سايت درس موجود است‪.‬‬
‫‪.b‬‬
‫الزم نيست کد نوشته شده قابل سنتز باشد‪.‬‬
‫انتخاب پارامتر هايي که در توصيف پروژه ذکر نشده است (مانند تعداد و پهناي بيتي‬
‫‪.c‬‬
‫ثبات ها) بر عهده خودتان است‪.‬‬
‫معماری کلی‬
‫سيستم‬
‫‪ALU‬‬
‫مجموعه عمليات و يک ‪ bit-slice‬از‬
‫موفق باشيد‬
‫مدرسی‬