DSD_Assignment_4.pdf

‫به نام خدا‬
‫نیم سال دوم ‪3141-49‬‬
‫طراحی سیستمهای دیجیتال‬
‫مدرس ‪ :‬حسینی‬
‫دستیار آموزشی ‪ :‬جهاندار‬
‫مهلت تحویل ‪3149/2/31 :‬‬
‫تمرین سری چهارم‬
‫توصیف در سطح رفتاری‬
‫دانشگاه صنعتی شریف‬
‫دانشکده مهندسی کامپیوتر‬
‫عدم رعایت موارد خواستهشده در گزارش و همچنین عدم رعایت فرمت گزارش موجب کسر نمره خواهد شد‪ ،‬لطفاً بیشتر دقت نمایید‪.‬‬
‫سؤال ‪1‬‬
‫( دارای تحویل حضوری )‬
‫در شبکههای اترنت سریع‪ ،‬از یک تراشه الیه فیزیکی به نام ‪ Ethernet Phy‬برای ایجاد ارتباط نقطهبهنقطه بین دو گره شبکه‬
‫استفاده میشود‪ .‬این تراشه در پایینترین الیه انتقال داده قرار داشته و با الیه ‪ MAC‬در ارتباط است‪ .‬ارتباط این تراشه با الیه‬
‫‪ MAC‬از طریق رابطهای ‪ RMII ، SMI ، MII‬و ‪ GMII‬صورت میگیرد‪ .‬این تراشه در استاندارد ‪ ، 011BASE-TX‬دارای‬
‫سرعت ارسال و دریافت ‪ 311‬مگابیت بر ثانیه است‪ .‬دادههای ورودی و خروجی به این تراشه بهصورت قطعههای ‪ 9‬بیتی و با‬
‫سرعت نرخ ‪ 22‬میلیون قطعه بر ثانیه انتقال داده میشوند (‪.)011Mbps = 52M * 4Bit‬‬
‫در این تراشه جهت عملکرد صحیح مکانیسم ‪ Clock Recovery‬در مقصد از یک انکودر کننده ‪ 4B2B‬در فرستنده و یک‬
‫دیکودر ‪ 2B4B‬در مقصد استفاده مینماید‪ .‬کدینگ خط خروجی در حالت استفاده از زوج سیم شیلد نشده (‪ )3UTP‬ترکیبی‬
‫از کدینگ های ‪ NRZI‬و ‪ MLT-3‬است‪.‬‬
‫در این تمرین میخواهیم بلوکهای اساسی یک تراشه ‪ Phy‬را مدلسازی کنیم‪ .‬این بلوکها عبارتاند از واحد تبدیل‬
‫پروتکل ‪ MII‬به ‪ ، NRZ‬واحد تبدیل ‪ NRZ‬به ‪ ، NRZI‬واحد تبدیل ‪ NRZI‬به ‪ MLT-3‬و واحد مبدل ‪ 4B2B‬که در تمرین ‪2‬‬
‫مدلسازی کرده بودیم‪.‬‬
‫در ابتدا واحد مبدل ‪ MII‬به ‪ NRZ‬را پیادهسازی میکنیم‪ .‬این واحد قطعات داده ‪ 9‬بیتی (‪ )Nibble‬را با فرکانس ‪ 22‬میلیون‬
‫قطعه در ثانیه از واحد ‪ MAC‬دریافت میکند و پس از تبدیل آنها به کدهای ‪ 2‬بیتی ( توسط مبدل ‪ ،) 4B2B‬قطعات ‪ 2‬بیتی را‬
‫‪Unshielded Twisted Pair‬‬
‫‪1‬‬
‫با سرعت ‪ 322‬مگاهرتز بهصورت سریال ( کدینگ خط شبه ‪ ) NRZ‬به واحد بعدی میدهد‪ .‬این واحد بیتهای داده را از‬
‫سمت ‪ MSB‬به ‪ LSB‬یکبهیک بر روی خط خروجی خود قرار میدهد‪ .‬با توجه به فرکانس ‪ 22‬مگاهرتزی دادههای ورودی و‬
‫تبدیل آنها به دادههای ‪ 2‬بیتی سرعت ارسال سریال دادهها ‪ 322‬مگاهرتز خواهد بود‪.‬‬
‫الف) یک مبدل ‪ MII‬به ‪ NRZ‬را به شرحی که در ادامه آمده است مدل کنید‪ .‬مبدل در ورودی یک پالس ساعت با فرکانس‬
‫‪ 322‬مگاهرتز دریافت کرده و آن را تقسیمبر ‪ 2‬کرده و بهعنوان پالس ساعت همزمانی ارسال داده (‪ )TX_CLK‬به واحد ‪MAC‬‬
‫انتقال میدهد‪ .‬در لبه باالرونده‪ ،‬درصورتیکه ورودی ‪ TX_EN‬یک باشد (پایه ‪ TX_EN‬از طرف واحد ‪ MAC‬برای اعالم‬
‫شروع انتقال داده مورداستفاده قرار میگیرد) ‪ ،‬قطعات ‪ 9‬بیتی از ورودی ‪ TXD‬خواندهشده و بهصورت سریال در خروجی‬
‫‪ NRZ_O‬قرار میگیرند‪ .‬ترتیب قرارگیری دادهها در خروجی از ‪ ( MSB‬بهعنوان اولین بیت سریال ) به ‪ LSB‬است‪ .‬برای‬
‫مدلسازی این بلوک از یک شیفت رجیستر با ورودی موازی‪ ،‬خروجی سریال استفاده نمایید‪.‬‬
‫‪I_521M_CLK,‬‬
‫‪I_TX_EN,‬‬
‫‪I_TXD,‬‬
‫‪O_TX_CLK,‬‬
‫‪O_NRZ‬‬
‫(‪module MII_to_NRZ‬‬
‫‪input‬‬
‫‪input‬‬
‫‪input‬‬
‫]‪[3:0‬‬
‫‪output‬‬
‫‪output‬‬
‫;)‬
‫واحد بعدی در تراشه ‪ Phy‬مبدل ‪ NRZ‬به ‪ NRZI‬است‪ .‬فرکانس سیگنال خروجی کدینگ ‪ NRZ‬در بدترین حالت برابر با‬
‫نصف نرخ ارسال داده یعنی ‪ 5222‬مگاهرتز است ( دنباله ‪ .) ... 1313131313‬با توجه به اینکه انتقال صحیح این سیگنال و حفظ‬
‫شکل مربعی آن در طول مسیر الزامی است‪ ،‬کانال ( سیم مسی ) باید توانایی انتقال حداقل ‪ 1‬هارمونیک فرد سیگنال فوق را‬
‫بدون تضعیف چندان را داشته باشد‪ ،‬اما با توجه به جنس سیمهای مسی مورداستفاده دستیابی به چنین مشخصهای بسیار سخت‬
‫و پرهزینه است‪ .‬از طرفی دنباله ‪ .. 1313131‬به عنوان سمبل‪ IDLE‬در زمان بیکاری شبکه بر روی سیم فرستاده می شود‪ ،‬در‬
‫صورت استفاده از کدینگ ‪ NRZ‬و ارسال سمبل ‪ IDLE‬فرکانس سیگنال بر روی سیم در بدترین حالت خود یعنی ‪5222‬‬
‫مگاهرتز خواهد بود‪ .‬برای کاهش فرکانس سیگنال خروجی در حالت ارسال سمبل ‪ IDLE‬از یک کدینگ ‪ NRZI‬پس از‬
‫مبدل ‪ NRZ‬استفاده میشود‪ .‬در کدینگ ‪ NRZI‬به ازای ‪ 3‬منطقی یک انتقال از صفر به یک و یا از یک به صفر ( بسته به‬
‫وضعیت قبلی خروجی ) ‪ ،‬و به ازای ‪ 1‬منطقی انتقالی وجود نخواهد داشت‪ .‬با این روش فرکانس سیگنال خروجی در زمان‬
‫ارسال سمبل ‪ IDLE‬برابر با ‪ 13222‬مگاهرتز خواهد شد‪.‬‬
‫ب) یک مبدل ‪ NRZ‬به ‪ NRZI‬طراحی کنید‪ .‬این مبدل با دریافت بیتهای ‪ NRZ‬و پالس ساعت با فرکانس ‪ 322‬مگاهرتز کد‬
‫‪ NRZI‬در خروجی تولید میکند‪ .‬در کد ‪ NRZI‬به ازای ‪ 3‬منطقی‪ ،‬یک انتقال از صفر به یک و یا از یک به صفر خواهیم‬
‫داشت ( طبق شکل باال )‪.‬‬
‫(‪module NRZ_to_NRZI‬‬
‫‪input‬‬
‫‪I_521M_CLK,‬‬
‫‪input‬‬
‫‪I_NRZ,‬‬
‫‪output‬‬
‫‪O_NRZI‬‬
‫;)‬
‫برای کم کردن هرچه بیشتر فرکانس خروجی سیگنال در بدترین حالت ممکن ( دنباله ‪ ) ... 131313‬از یک کدینگ دیگر به‬
‫نام ‪ MLT-3‬پس از واحد ‪ NRZI‬استفاده میشود‪ .‬در کدینگ ‪ MLT-3‬بجای ‪ 2‬سطح ولتاژ ‪ 1‬سطح ولتاژ وجود دارد‪ .‬در این‬
‫کدینگ ‪ 3‬منطقی با انتقال از یک سطح به سطح ولتاژ بعدی و ‪ 1‬منطقی با نگهداشتن سطح قبلی مشخص میشود‪ ( .‬سطوح‬
‫ولتاژ ‪ -3‬و ‪ 1‬و ‪ .) +3‬با این تکنیک فرکانس خروجی مدار بازهم کمتر میشود‪.‬‬
‫ج) یک مبدل ‪ NRZI‬به ‪ MLT-3‬طراحی کنید‪ .‬خروجی مبدل یک عدد ‪ 2‬بیتی است که فقط ‪ 1‬حالت آن مورداستفاده قرار‬
‫میگیرد‪ .‬در نرمافزار ‪ Modelsim‬نحوه نمایش باس ‪ O_MLT3‬را بر روی ‪ Analog‬قرار دهید تا انتقال ولتاژ میان سطوح‬
‫مختلف دیده شود‪.‬‬
‫(‪module NRZI_to_MLT3‬‬
‫‪input‬‬
‫‪I_521M_CLK,‬‬
‫‪input‬‬
‫‪I_NRZI,‬‬
‫‪output [5:0] O_MLT3‬‬
‫;)‬
‫د) بلوک مبدل ‪ MII‬به ‪ ، NRZ‬مبدل ‪ NRZ‬به ‪ NRZI‬و مبدل ‪ NRZI‬به ‪ MLT-3‬را بهصورت سری به یکدیگر متصل نمایید‪.‬‬
‫دقت کنید‪ ،‬نمونهگیری و خواندن داده ورودی در بلوکهای سری همواره بهصورت یکی در میان در لبه باالرونده ‪ /‬لبه‬
‫پایینرونده صورت میگیرد‪ .‬برای مثال درصورتیکه بلوک مبدل ‪ NRZ‬به ‪ NRZI‬در لبه باال روند داده را از ورودی خوانده و‬
‫خروجی خود را تغییر دهد‪ ،‬بلوک بعدی باید در لبه پایینرونده همان پالس ساعت اعمالی به واحد قبل‪ ،‬ورودیها را خوانده و‬
‫خروجی مناسب تولید نماید‪.‬‬
‫به ازای یک ورودی تصادفی از قطعات ‪ 9‬بیتی بلوکهای طراحیشده تست نمایید و نتایج و خروجیهای آنها رو باهم بر‬
‫روی یک پنجره نمایش دهید‪ .‬آزمایش قبل را برای یک دنباله از ‪ ... 13131313‬انجام دهید‪ .‬و نتایج را در پنجره ‪Wave‬‬
‫نمایش دهید‪ .‬پایه نمایش اعداد اعمالی به مبدل ‪ MII‬را بر روی ‪ Hexdecimal‬تنظیم کنید‪.‬‬
‫ه) پس از اتصال بلوکهای فوق به یکدیگر‪ ،‬توسط نرمافزار ‪ ، Xilinx ISE‬بلوک ساختهشده در بند د را سنتز نمایید‪ ،‬تراشه‬
‫‪ FPGA‬را از خانواده ‪ ، Spartan-6‬قطعه ‪ LX9‬انتخاب نمایید‪.‬‬
‫و) پس از سنتز مدار‪ ،‬شبیهسازی ‪ Post-Synthesis‬را با استفاده از نرمافزار ‪ Modelsim‬انجام دهید‪ .‬شبیهسازی ‪Post-‬‬
‫‪ Synthesis‬در جلسه حل تمرین هفته بعدی آموزش داده خواهد شد‪.‬‬
‫‪ ‬فایلهایی که میبایست تحویل داده شوند ‪ :‬فایل توصیف کلیه بلوک ها و‪ Testbench‬ها‬
‫‪ ‬مواردی که میبایست در گزارش قید شود ‪ :‬نحوه مدل سازی بلوک ها‪ ،‬تصاویر پنجره ‪ Wave‬برای تست تک‬
‫تک بلوک ها ( مقادیر اعمالی برای تست را به دلخواه انتخاب نمایید ) ‪ ،‬تصویر گزارش سنتز نرم افزار ‪، ISE‬‬
‫شکل مدار در حالت های ‪ RTL View‬و ‪Technology View‬‬
‫‪ ‬تصویر تست مدار در شبیه سازی ‪Post-Synthesis‬‬
‫سؤال‪2‬‬
‫( دارای تحویل حضوری )‬
‫الف) یک ‪ 35 Register File‬سلولی با سلولهای ‪ 8‬بیتی طراحی نمایید‪ .‬این ‪ Reg. File‬باید با یک پالس ساعت همزمان بوده‬
‫و دارای پایه ‪ Reset‬آسنکرون باشد‪ .‬عملیات نوشتن و خواندن باید در لبه باالرونده پالس ساعت انجام گیرد‪ .‬خروجی داده‬
‫باید بهصورت رجیستر شده باشد بدین معنی که مقدار قرار شده بر روی خروجی باید تا لحظه اتمام عملیات خواندن بعدی‬
‫حفظ شود‪ .‬این ‪ Reg. File‬باید دارای قابلیت بار کردن موازی بهصورت بایت (‪ 8‬بیت)‪ ،‬نیم کلمه (‪ 35‬بیت) و کلمه (‪ 12‬بیت)‬
‫را داشته باشد‪ .‬همچنین برای آدرسدهی کلمه و نیم کلمه از ‪ 2‬و ‪ 1‬بیت پایین ورودی ‪ I_ADDR‬استفاده شود‪.‬‬
‫برای بایتها از یک سلول‪ ،‬برای نیم کلمه از دو سلول مجاور و برای کلمه از چهار سلول در یک سطر استفاده شود‪ .‬برای‬
‫بایت و نیم کلمه از ‪ 8‬و ‪ 35‬بیت پایین ورودی و خروجی استفاده شود‪ .‬اندازه ورودی اعمالشده و یا خروجی درخواست شده‬
‫باید توسط ورودی ‪ I_OP_REQ_SIZE‬به اطالع ‪ Reg. File‬برسد‪.‬‬
‫‪[3:0] I_ADDR‬‬
‫‪[31:0] O_DATA‬‬
‫‪[31:0] I_DATA‬‬
‫‪O_DONE‬‬
‫‪4x4 Register File‬‬
‫‪[1:0] I_OP_REQ_SIZE‬‬
‫‪I_CLK‬‬
‫‪I_RST‬‬
‫شکل ‪ - 3‬بلوک دیاگرام ‪Register File‬‬
‫قبل از شروع انجام هر عملیات ( خواندن و نوشتن ) ‪ ،‬خروجی ‪ O_DONE‬صفر شده و پس از اتمام عملیات این خروجی یک‬
‫شده و تا زمان شروع عملیات جدید مقدار خود را حفظ میکند‪ .‬در پیادهسازی این ‪ Reg. File‬باید از یک آرایه ‪35‬در‪ 8‬بیتی‬
‫استفاده نمایید‪.‬‬
‫در ادامه عملکرد هریک از پورتها و همچنین جداول نوع چینش سلولها آورده شده است‪.‬‬
‫آدرس سلول انتخابی‪ ،‬برای کلمه و نیم کلمه از بیتهای پایین استفاده شود‪.‬‬
‫‪I_ADDR‬‬
‫داده ورودی به ‪ ، Reg. File‬برای بایت و نیم کلمه از بیتهای پایین استفاده شود‪.‬‬
‫‪I_DATA‬‬
‫اندازه داده ورودی و یا درخواستی برای خروجی‬
‫‪I_OP_REQ_SIZE‬‬
‫پالس ساعت‬
‫‪I_CLK‬‬
‫پالس بازنشانی‬
‫‪I_RST‬‬
‫داده خروجی از ‪ ، Reg. File‬برای بایت و نیم کلمه از بیتهای پایین استفاده شود‪.‬‬
‫‪O_DATA‬‬
‫نشانگر اتمام عملیات خواندن و یا نوشتن‬
‫‪O_DONE‬‬
‫‪5-Half Word‬‬
‫‪0-Half Word‬‬
‫‪3-Byte‬‬
‫‪2-Byte‬‬
‫‪5-Byte‬‬
‫‪0-Byte‬‬
‫‪3-Half Word‬‬
‫‪2-Half Word‬‬
‫‪7-Byte‬‬
‫‪6-Byte‬‬
‫‪1-Byte‬‬
‫‪4-Byte‬‬
‫‪1-Half word‬‬
‫‪4-Half Word‬‬
‫‪55-Byte‬‬
‫‪50-Byte‬‬
‫‪9-Byte‬‬
‫‪8-Byte‬‬
‫‪7-Half word‬‬
‫‪6-Half Word‬‬
‫‪51-Byte‬‬
‫‪54-Byte‬‬
‫‪53-Byte‬‬
‫‪52-Byte‬‬
‫‪0-Word‬‬
‫‪5-Word‬‬
‫‪2-Word‬‬
‫‪3-Word‬‬
‫ب) ‪ Reg. File‬ساختهشده در بخش الف را توسط یک ‪ Testbench‬آزمایش نمایید‪ .‬آزمایش شما باید شامل نوشتن و‬
‫خواندن بهصورت های بایت‪ ،‬نیم کلمه و کلمه باشد‪ .‬از سه عدد ‪ 35 ،8‬و ‪ 12‬بیتی دلخواه تصادفی بهعنوان ورودی استفاده‬
‫کنید‪ .‬در آزمایش خواندن و نوشتن بهصورت کلمه‪ ،‬یکبار عملیات خواندن با اندازه کلمه و یکبار خواندن توسط ‪ 9‬عملیات‬
‫خواندن بایت صورت گیرد‪.‬‬
‫ج) مدار خود را توسط شبیهسازی ‪ Post-Synthesis‬شبیهسازی نمایید و نتایج را با شبیهسازی رفتاری مقایسه نمایید‪.‬‬
‫‪ ‬فایلهایی که میبایست تحویل داده شوند ‪ :‬فایل توصیف ‪ Register File‬و ‪ Testbench‬مربوط به آن‬
‫‪ ‬مواردی که میبایست در گزارش قید شود ‪ :‬تصویر پنجره ‪ Wave‬نرم افزار ‪ Modelsim‬در حالت های نوشتن و‬
‫خواندن بایت‪ ،‬نیم کلمه و کلمه و خواندن کلمه بصورت بایتی‬
‫نکات‬
‫‪ .3‬کلیه گزارشها باید در قالب تعیینشده تحویل داده شوند‪ .‬فایل ‪ Word‬نمونه قالب تحویل تمرینها در وبسایت درس موجود‬
‫است‪ .‬عدم رعایت این نکته موجب کسر نمره خواهد شد‪.‬‬
‫‪ .2‬مهلت ارسال پاسخها تا قبل از برگزاری کالس حل تمرین است و پسازآن با توجه به حل تمرینها در کالس حل تمرین‪،‬‬
‫تمرین تحویل گرفته نمیشود‪.‬‬
‫‪ .1‬پاسخهای خواستهشده را بهصورت یک فایل فشرده با فرمت ‪ zip‬و یا ‪ rar‬درآورده و به آدرس ایمیل اعالمشده ارسال نمایید‪.‬‬
‫‪ .9‬پس از تهیه فایل فشرده حاوی گزارش و برنامههای خواستهشده‪ ،‬فایل فشردهشده را با درج شماره دانشجویی در عنوان ایمیل‬
‫به آدرس ‪ [email protected]‬ارسال نمایید‪.‬‬
‫‪ .2‬در صورت مشاهده کپیبرداری‪ ،‬نمره فرد کپی گیرنده و کپی دهنده ‪ -311‬در نظر گرفته خواهد شد‪.‬‬
‫‪ .5‬در تحویل تمرینها دقت نمایید دقیقاً موارد خواستهشده را تحویل دهید و از تحویل فایلهای خواسته نشده بپرهیزید‪.‬‬
‫‪ .7‬کالس حل تمرین‪ ،‬روزهای یکشنبه ساعت ‪ 32‬تا ‪ 31‬در ساختمان ابنسینا کالس ‪ 4‬برگزار خواهد شد‪ .‬کالسها بهصورت‬
‫یک هفته در میان به رفع اشکاالت و حل تمرینها اختصاص خواهند یافت‪ .‬بدینصورت که هفته اول پس از آپلود تمرین‬
‫مختص رفع اشکال‪ ،‬و هفته دوم مختص حل تمرینها است‪.‬‬
‫‪ .8‬تمرینها هر دو هفته یکبار بر روی وبسایت درس قرار خواهند گرفت‪ ،‬و مهلت انجام هرکدام ‪ 2‬هفته است‪.‬‬
‫‪ .4‬در صورت وجود هرگونه ابهام در صورت تمرین‪ ،‬موضوع را از طریق آدرس ‪ [email protected]‬به اطالع استاد‬
‫حل تمرین برسانید‪.‬‬
‫‪ .31‬جهت روشن شدن روند تصحیح پاسخها ‪ ،‬گزارشها و فایل های تحویلی کلیه دانشجویان‪ ،‬پس از برگزاری کالس رفع اشکال‬
‫و حل تمرین بر روی وبسایت درس آپلود و توسط دیگران قابلدسترس خواهد بود‪.‬‬
‫‪ .11‬پل ارتباطی میان شما و استاد حل تمرین؛ وبسایت درس و آدرس ایمیل واردشده در سامانه ‪ edu‬است‪ .‬لطفاً از صحت‬
‫آدرس ایمیل خود در سامانه ‪ edu‬مطمئن شوید‪ .‬اطالعیههای مهم در رابطه باکالس حل تمرین از طریق ایمیل به اطالع شما‬
‫خواهد رسید‪.‬‬