HW1_CA.pdf

‫ب‬
‫تمرین سری اوّل درس معماری کامپیوتر‬
‫دکتر سربازی آزاد‬
‫هدف تمرین‬
‫یادآوری مدارهای منطقی و آشنایی با نرمافزار شبیهسازی کوارتوس‬
‫مهلت تحویل‬
‫‪ 71‬اسفند‬
‫کل طراحی به همراه شکل موجها و گزارشهای آن در قالب یک فایل فشرده با نام‬
‫نحوه تحویل‬
‫]‪ HW1_[SN‬به آدرس ‪ [email protected]‬با موضوع ]‪ HW1_[SN‬ایمیل فرمایید‪.‬‬
‫سواالت‬
‫سواالت خود را به آدرس ‪ [email protected]‬ایمیل فرمایید‪.‬‬
‫در این تمرین قصد داریم یک شیفترجیستر همگانی‪ 1‬چهار بیتی بسازیم‪ .‬این شیفترجیستر یک ورودی ‪-3‬بیتی‬
‫به عنوان انتخابگر میگیرد و بر اساس آن باید قادر به انجام اعمال زیر باشد‪:‬‬
‫‪000‬‬
‫‪007‬‬
‫‪070‬‬
‫‪077‬‬
‫‪700‬‬
‫‪707‬‬
‫‪770‬‬
‫‪777‬‬
‫حفظ مقدار‬
‫‪2‬‬
‫بارگذاری موازی‬
‫شیفت به چپ‬
‫چرخش‪ 3‬به چپ‬
‫شمارش رو به باال‬
‫معکوس‬
‫صفر کردن تمامی بیتها‬
‫یک کردن تمامی بیتها‬
‫تمام عملیات این شیفترجیستر همگام با لبه مثبت کالک است‪ .‬مدار واسطی که طراحی خواهید کرد باید شبیه‬
‫مدار زیر باشد‪:‬‬
‫‪1‬‬
‫‪Universal Shift Register‬‬
‫‪Parallel Load‬‬
‫‪3‬‬
‫‪Rotation‬‬
‫‪2‬‬
‫بعد از طراحی مدار‪ ،‬باید آن را تست کرده و از صحت آن اطمینان حاصل کنید‪ .‬برای این کار ابتدا یک‬
‫شکل موج متناسب با ورودیها بسازید و آن را به صورت ‪ Functional‬شبیهسازی کنید‪.‬‬
‫بعد از شبیهسازی مدار به صورت ‪ ،Functional‬با استفاده از همان شکل موجی که ساختهاید مدار را به‬
‫صورت ‪ Timing‬شبیهسازی کرده و تأخیر قسمتهای مختلف آن را به دست آورید‪ .‬از روی نتایج‬
‫بهدستآمده مسیر بحرانی‪ 4‬مدار را مشخص کنید‪.‬‬
‫پس از اطمینان از صحت عملکرد مدار‪ ،‬با استفاده از چهار عدد از ماژولی که طراحی کردهاید یک‬
‫شیفترجیستر همگانی ‪-76‬بیتی با همین قابلیتها طراحی و شبیهسازی (فقط به صورت ‪)Functional‬‬
‫کنید‪.‬‬
‫در ابزار کوارتوس واحدهای آمادهای برای طراحی سریع وجود دارد‪ .‬در این تمرین تنها حق استفاده از‬
‫گیتهای پایه‪ ،‬جمعکننده‪ ،‬انتخابگر و فلیپ فالپ را دارید‪.‬‬
‫‪Critical Path‬‬
‫‪4‬‬
‫توضیحات بیشتر و راهنمایی‬
‫شیفترجیستر یک مدار متشکل از تعدادی فلیپفالپ نوع ‪ D‬است که همگی فلیپفالپها به یک سیگنال کالک‬
‫مشترک متصل شدهاند‪ .‬شیفترجیستر همگانی نوعی از شیفترجیستر هست که بنابر ورودی انتخابگر خود‪،‬‬
‫عملکرد خاصی را روی دادههای ذخیرهشده در فلیپفالپها انجام میدهد‪.‬‬
‫در مداری که باید طراحی کنید‪ ،‬شیفترجیستر شما قادر به انجام ‪ 8‬عمل مختلف به ترتیب زیر هست‪:‬‬
‫حفظ مقدار‪ :‬در این حالت نباید تغییری در مقدار ذخیرهشده در فلیپفالپهای مدار شما داده شود‪ .‬در‬
‫واقع در این صورت میخواهیم با آمدن پالس ساعت تغییری در مدار ایجاد نشود‪ .‬به عنوان مثال اگر مقدار‬
‫موجود در فلیپفالپها ‪ 7070‬باشد و مقدار سیگنالهای انتخابکننده ‪ 000‬باشد‪ ،‬با آمدن پالس ساعت‬
‫باید مقدار موجود در شیفترجیستر تغییری نکرده و ‪ 7070‬باقی بماند‪.‬‬
‫بارگذاری موازی‪ :‬همانطور که در شکل باال نیز مشخص هست‪ ،‬مدار شما یک ورودی ‪-4‬بیتی تحت عنوان‬
‫ورودی موازی میگیرد‪ .‬در صورتی که لبه مثبت سیگنال کالک مقدار سیگنالهای انتخاب کننده ‪007‬‬
‫باشد‪ ،‬این ورودی ‪-4‬بیتی در فلیپفالپها (بدون توجه به مقدار قبلی رجیستر) ذخیره شود‪ .‬مثال اگر در‬
‫لبه مثبت سیگنال کالک مقدار قبلی فلیپفالپها ‪ 7070‬بوده و مقدار ورودی موازی ‪ 7007‬باشد‪ ،‬بعد‬
‫از لبه مثبت کالک باید مقدار فلیپفالپها به ‪ 7007‬تغییر پیدا کند‪.‬‬
‫شیفت به چپ‪ :‬در این حالت باید مقدار موجود در فلیپفالپها یک واحد به سمت چپ شیفت خورده و‬
‫کمارزشترین بیت رجیستر با مقدار موجود در ورودی سریال مقداردهی شود‪ .‬به عنوان مثال فرض کنید‪،‬‬
‫چهار عدد فلیپفالپی که دارید (فلیپفالپ ‪( 0‬حاوی کمارزشترین بیت)‪ ،‬فلیپفالپ ‪ ،7‬فلیپفالپ ‪ 2‬و‬
‫فلیپفالپ ‪( 3‬حاوی پرارزشترین بیت)) دارای مقدار ‪ 7077‬بوده و ورودی انتخابگر ‪ 070‬و ورودی‬
‫سریال ‪ 0‬باشد‪ ،‬در این صورت با آمدن لبه مثبت کالک مقدار رجیستر به ‪ 0770‬تغییر پیدا میکند‪.‬‬
‫چرخش به چپ‪ :‬این عمل به مانند عمل قبلی بوده‪ ،‬با این تفاوت که پرارزشترین بیت رجیستر حذف‬
‫نمیشود و بعد از عمل چرخش به فلیپفالپ حاوی کمارزشترین بیت منتقل میشود (ورودی سریال‬
‫نقشی در این عملیات ندارد)‪ .‬به عنوان مثال اگر مقدار رجیستر ‪ 7077‬بوده و ورودی انتخابگر ‪077‬‬
‫باشد‪ ،‬در این صورت با آمدن لبه مثبت کالک مقدار رجیستر به ‪ 0777‬تغییر پیدا میکند‪.‬‬
‫شمارش رو به باال‪ :‬مقدار موجود در رجیستر باید یک واحد افزایش پیدا کند‪ .‬به عنوان مثال اگر مقدار‬
‫رجیستر ‪ 7077‬بوده و ورودی انتخابگر ‪ 700‬باشد‪ ،‬در این صورت با آمدن لبه مثبت کالک مقدار‬
‫رجیستر به ‪ 7700‬تغییر پیدا میکند‪ .‬توجه داشته باشید در صورتی که مقدار موجود در رجیستر عدد‬
‫دهدهی ‪( 71‬دودویی ‪ )7777‬باشد‪ ،‬باید مقدار رجیستر به دهدهی ‪( 0‬دودویی ‪ )0000‬تغییر پیدا کند‪.‬‬
‫معکوس‪ :‬تکتک بیتها معکوس میشوند‪ .‬به عنوان مثال اگر مقدار رجیستر ‪ 7077‬بوده و ورودی‬
‫انتخابگر ‪ 707‬باشد‪ ،‬در این صورت با آمدن لبه مثبت کالک مقدار رجیستر به ‪ 0700‬تغییر پیدا میکند‪.‬‬
‫صفر کردن تمامی بیتها‪ :‬مقدار تمام صفر در لبه مثبت کالک در شیفت رجیستر ذخیره میشود‪.‬‬
‫یک کردن تمامی بیتها‪ :‬مقدار تمام یک در لبه مثبت کالک در شیفت رجیستر ذخیره میشود‪.‬‬
‫موفق باشید‬