DSD_93a_HW1.pdf

‫به نام خدا‬
‫طراحی سیستمهای دیجیتال (‪)۳۲۰۰۴‬‬
‫استاد‪ :‬دکتر اجاللی‬
‫نیمسال اول ‪۳۳-۳۴‬‬
‫مهلت تحویل ‪۳۹/۸/۱۱‬‬
‫تمرین اول‬
‫نکات‪:‬‬
‫‪ .1‬تمرینات باید به صورت انفرادی انجام شوند‪.‬‬
‫‪ .۰‬پاسخ تمرینات باید کامل باشد‪ .‬یعنی عالوه بر جواب آخر روال رسیدن به جواب نیز مهم است‪.‬‬
‫‪ .۴‬اگر از منبعی استفاده میکنید؛ ذکر آن منبع الزامی است‪.‬‬
‫‪ .4‬پاسخ تمرینات را در یک فایل فشرده با نام ]‪ [DSD][HW_#][Student ID‬ذخیره کرده و آن را با همین عنوان به‬
‫آدرس ‪ [email protected]‬بفرستید‪.‬‬
‫‪ .5‬به ازای هر روز دیرکرد ‪ 1۲۱‬جریمه منظور خواهد شد‪.‬‬
‫‪ .6‬پیشنهاد میشود برای رسم نمودارها از نرمافزار ‪ Visio‬استفاده شود‪.‬‬
‫تمرینات‪:‬‬
‫‪ .1‬یک ‪ ASM Chart‬طراحی کنید که با ‪ 1‬شدن ورودی ‪ ،Start‬مقدار دو ورودی ‪ 1۱‬بیتی ‪ Data1‬و ‪ Data2‬را‬
‫خوانده و فاصله همینگ‪ 1‬آنها را محاسبه کرده و در ثبات ‪ out‬بنویسد و خروجی ‪ Done‬را یک کند‪ .‬همچنین‬
‫طراحی مسیر داده را با کمترین سختافزار ممکن انجام دهید‪( .‬نیازی به رسم واحد کنترل نیست)‬
‫‪ .۰‬با استفاده از نمودار ‪ ASM‬مداری طراحی کنید که ‪ ۰‬ورودی ‪ 11‬بیتی را از کاربر دریافت کرده و حاصل تقسیم‬
‫آنها و باقیمانده حاصل از تقسیم را در قالب دو خروجی ‪ ۸‬بیتی به کاربر تحویل دهد‪ .‬این مدار وقتی شروع به کار‬
‫میکند که دکمه ‪ Start‬فعال شود‪ .‬خاتمه عملیات نیز با دکمه ‪ End‬مشخص میشود بدین ترتیب که وقتی عملیات‬
‫تمام شود ‪ 1 ،End‬میشود‪ .‬توجه کنید که مدار شما باید بتواند خروجیهای تقسیم بر ‪ ۲‬و سرریز را تشخیص داده و‬
‫به کاربر گزارش دهد‪ .‬پس از رسم نمودار ‪ ،ASM‬سنتز واحدهای کنترل و مسیر داده را به صورت شماتیک رسم‬
‫کنید‪.‬‬
‫‪ .۴‬میخواهیم مداری را طراحی کنیم که یک عدد ورودی ‪ ۸‬بیتی ‪ A‬و یک سیگنال ورودی ‪ Start‬را دریافت کرده و با‬
‫فعال شدن ورودی ‪ ،Start‬مقدار ورودی ‪ A‬را خوانده و محاسبه کند که آیا عددی اول است یا خیر‪ .‬در صورتی که‬
‫عددی اول بود‪ ،‬خروجی ‪ 1‬بیتی ‪ Isprime‬را برابر ‪ 1‬و در غیر اینصورت برابر ‪ ۲‬میکند‪ .‬همچنین‪ ،‬اتمام محاسبات‬
‫را با فعالشدن سیگنال ‪ End‬نمایش میدهد‪.‬‬
‫‪http://en.wikipedia.org/wiki/Hamming_distance‬‬
‫‪1‬‬
‫الف) با استفاده از ‪ ،ASM Chart‬توصیف رفتاری مدار فوق را طراحی کرده و روش عملکرد آن را توضیح‬
‫دهید‪.‬‬
‫ب) طراحی خود را به ازای ورودی ‪ A=7‬شبیهسازی کنید‪ .‬در هر سیکل‪ ،‬شمارهی ‪ ASM Block‬و مقادیر‬
‫همهی ثباتها را نشان دهید‪.‬‬
‫‪ .۳‬با استفاده از نمودار ‪ ASM‬مدارهای زیر را طراحی کرده و سپس سنتز واحدهای کنترل و مسیر داده را به‬
‫صورت شماتیک رسم کنید‪:‬‬
‫دو دنباله شامل ‪ ۲‬و ‪ 1‬را از ورودی دریافت کرده به طوری که دنباله اول ‪ ۴۰‬بیت و طول دنباله دوم از ورودی‬
‫گرفته شود‪ .‬فرض کنید اعداد ورودی به صورت ‪ BCD‬هستند؛ بنابراین آنها را ‪ ۳‬رقم ‪ ۳‬رقم به صورت یک عدد‬
‫دهدهی درنظر بگیرید‪.‬‬
‫الف) مداری که تعداد تکرار زیررشته‪ ۰‬اول را در رشته دوم خروجی دهد‪.‬‬
‫مثال‪ :‬اگر رشته اول را ‪ )۸۳۲۱۱(1۲۲۲1۲۲1۲۲۲۲۲11۲۲11۲‬و رشته دوم را ‪ )۱(۲11۲‬در نظر بگیرید؛ تعداد‬
‫تکرار رشته دوم در دنباله اول‪ ،‬دو مرتبه است‪.‬‬
‫ب)(اختیاری) مداری که تعداد تکرار دنباله دوم را در زیردنباله ‪۴‬های دنباله اول پیدا کند‪.‬‬
‫مثال‪ :‬اگر دنباله اول را ‪ )۸۳۲۱۱(1۲۲۲1۲۲1۲۲۲۲۲11۲۲11۲‬و دنباله دوم را ‪ )۳۱(1۲۲1۲11۲‬در نظر‬
‫بگیرید؛ تعداد تکرار دنباله دوم در زیردنبالههای دنباله اول‪ ،‬دو مرتبه است‪.‬‬
‫‪( .۵‬اختیاری) برای بازی زیر یک ‪ ASM‬طراحی کنید‪( :‬نیازی به طراحی مسیر داده و واحد کنترل نیست)‬
‫این بازی یک بازی تاس دونفره است‪ .‬هر کس دو تاس دارد که به صورت همزمان آنها را میاندازد‪ .‬بازیکنها به‬
‫ترتیب بازی کرده و تاس میاندازند و بازی تا جایی ادامه دارد که کسی برنده شود‪ .‬قوانین بازی به صورت زیر‬
‫است‪:‬‬
‫‪‬‬
‫هر بازیکن ‪ ۳۵‬امتیاز در ابتدای بازی دارد‪.‬‬
‫‪‬‬
‫هر بازیکن میتواند یک شرط بین اعداد ‪ ۰ ،1 ،۲‬و ‪ ۴‬ببندد که میتواند قبل از انداختن تاس جدید عوض‬
‫شود‪.‬‬
‫‪‬‬
‫وقتی یک بازیکن تاس میاندازد اگر جمع ‪ ۸ ،۴‬یا ‪ 1۲‬شود‪ ،‬بازیکن امتیازی برابر با جمع اعداد تاسها‬
‫ضربدر شرطش دریافت کند‪ .‬برای مثال اگر جمع باربر با ‪ ۸‬شده و شرط ‪ ۴‬را بسته باشد‪ ،‬امتیازی برابر با‬
‫‪ ۰۳‬دریافت میکند‪ .‬این امتیاز به امتیازهای قبلی اضافه میشود‪.‬‬
‫‪Substring, http://en.wikipedia.org/wiki/Substring‬‬
‫‪Subsequence, http://en.wikipedia.org/wiki/Subsequence‬‬
‫‪2‬‬
‫‪3‬‬
‫‪‬‬
‫اگر جمع ارقام تاسها ‪ ۱ ،۳‬یا ‪ 11‬باشد‪ ،‬بازیکن امتیازی برابر با جمع ارقام تاسها ضربدر مقدار شرطش‬
‫از دست میدهد‪.‬‬
‫‪‬‬
‫اگر جمع ارقام تاسها‪ ،‬اعدادی جز اعداد گفته شده (یعنی ‪ 1۲ ، ۸ ،۱ ،۳ ،۴‬یا ‪ )11‬باشد‪ ،‬هیچ اتفاقی رخ‬
‫نداده و بازیکن بعدی میتواند تاس بیندازد‪.‬‬
‫‪‬‬
‫یک بازیکن وقتی برنده میشود که به امتیاز ‪ ۳۲‬یا بیشتر برسد یا وقتی که بازیکن دیگر به امتیاز ‪ ۲‬یا کمتر‬
‫برسد‪.‬‬
‫‪‬‬
‫وقتی بازی تمام میشود و یک بازیکن میبرد‪ ،‬هر کدام از بازیکنها میتواند بازی را پس از زدن دکمه‬
‫‪ reset‬دوباره شروع کند‪.‬‬
‫وقتی دو تاس استفاده میشود‪ ،‬جمع اعداد تاسها میتواند بین ‪ ۰‬تا ‪ 1۰‬باشد‪ .‬مقدار تاسها میتواند توسط دو تا‬
‫شمارنده مستقل که بین ‪ 1‬تا ‪ ۱‬میشمارند‪ ،‬یا توسط یک شمارنده که بین ‪ 1‬تا ‪ 1۰‬میشمارد‪ ،‬مشخص شود‪ .‬هر‬
‫بازیکن دکمههای خود (‪ D1‬و ‪ )D2‬را برای انداختن تاس دارد‪ .‬شمارنده وقتی دکمهها فشرده شود‪ ،‬آغاز میشود و‬
‫تا وقتی که دکمه رها شود ادامه پیدا میکند‪ .‬شمارهای که شمارنده بعد از رها شدن دکمه‪ ،‬نشان میدهد‪ ،‬شماره‬
‫تاس خواهد بود‪.‬‬
‫شما باید هر بار مقادیر تاسها و مجموع امتیازات بازیکنها را نشان دهید‪ .‬همچنین باید نشان دهید که اکنون‬
‫نوبت بازی کدام بازیکن بوده و کدام بازیکن در حال بازی است‪ .‬باید همچنین نشان دهید که کدام بازیکن برنده‬
‫شده است‬
‫‪( .۱‬اختیاری) به سه تایی (‪ )c b a‬از اعداد طبیعی‪ ،‬فیثاغورسی میگوییم‪ ،‬هرگاه داشته باشیم‬
‫‪𝑎 < 𝑏 < 𝑐, 𝑎2 + 𝑏2 = 𝑐 2‬‬
‫با کمک ‪ ،ASM Chart‬مداری طراحی کنید که عدد ورودی ‪ ۸‬بیتی ‪ N‬را بگیرد و سه خروجی ‪ A B A‬را تولید کند‬
‫(هرکدام ‪ ۸‬بیت)‪ ،‬به شرط این که 𝑁 = 𝐶 ‪ 𝐴 + 𝐵 +‬و (‪ )A B A‬یک سهتایی فیثاغورسی باشد‪ .‬در صورتی که به‬
‫ازای ‪ N‬ورودی‪ ،‬هیچ سهتایی فیثاغورسی وجود نداشته باشد‪ ،‬مقادیر هرسه خروجی باید برابر صفر شود‪.‬‬
‫همچنین‪ ،‬میتوانید برای راحتی کار با مدار خود‪ ،‬یک سیگنال ورودی ‪ Start‬و یک سیگنال خروجی ‪ End‬را نیز در‬
‫نظر بگیرید‪ .‬زمانی که میخواهیم مدار شروع به کار کند‪ ،‬دکمهی ‪ Start‬را میزنیم (سیگنال ‪ Start‬فعال میشود) و‬
‫پس از پایان محاسبهی خروجیها‪ ،‬سیگنال ‪ End‬به منظور اعالم پایان عملیات باید توسط مدار فعال شود‪.‬‬