به نام خدا نیم سال دوم 3141-49 مدرس :حسینی دستیار آموزشی :جهاندار مهلت تحویل 3149/3/31 : طراحی سیستمهای دیجیتال تمرین سری سوم توصیف در سطح رفتاری دانشگاه صنعتی شریف دانشکده مهندسی کامپیوتر سؤال 1 الف) تراشه 47HC467یک شیفت رجیستر 8بیتی با ورودی سریال و خروجی موازی است .در این تمرین شما میبایست تراشه فوق را به زبان توصیف سختافزار Verilogمدل نمایید .برای آشنایی با نحوه عملکرد این تراشه میتوانید از کاتالوگ آن کمک بگیرید،این کاتالوگ در وبسایت درس آپلود شده است .برای توصیف این تراشه ،طبق شکل صفحه 1کاتالوگ، ابتدا ماجول های فیلیپ فالپ با مشخصات مندرج در شکل را نوشته ،سپس با اتصال آنها به یکدیگر تراشه فوق را مدل نمایید .برای نام گزاری پایههای ورودی و خروجی ماجول ،دقیقاً از عبارات مندرج در کاتالوگ استفاده نمایید. برای ماجول طراحیشده یک Testbenchبه زبان Verilogنوشته و ماجول ساختهشده را دقیقاً آزمایش نمایید .برای آزمایش مدار 3 ،رقم آخر شماره دانشجویی خود را بهصورت یک عدد عالمتدار 8بیتی وارد شیفت رجیستر نمایید. ب) توسط ماجول ساختهشده در بخش الف ،یک شیفت رجیستر 13بیتی بسازید و توسط یک Testbenchآن را آزمایش نمایید .برای آزمایش مدار شماره دانشجویی خود را بهصورت یک عدد 13بیتی عالمتدار وارد رجیستر نمایید. فایلهایی که میبایست تحویل داده شوند :فایل توصیف شیفت رجیستر به زبان Verilogو فایل های Testbench مواردی که میبایست در گزارش قید شود :جدول عملکرد شیفت رجیستر ،تصاویر پنجره Waveنرم افزار Modelsimبرای هر دو ( Testbenchدر پنجره Waveبرای خروجی ها از Radixهای Unsignedو Signed استفاده نمایید ) ( برای تنظیم Radixبر روی پورت ها کلیک راست نموده و از منوی Radixپایه مناسب را انتخاب نمایید) سؤال 2 ( دارای تحویل حضوری ) الف) یک شمارنده باال/پایین 13بیتی باقابلیت بارگذاری موازی و تنظیم مقدار افزایش و کاهش طراحی نمایید .این شمارنده میبایست دارای پایه CLK ، RESETو COUNT_ENABLEباشد .طرح شما باید دارای ورودی و خروجیهایی به شرح زیر باشد : (module updown_46bit_counter input I_CLK, input I_COUNT_ENABLE, input I_RST, input I_INC_DEC, input [46:0] I_PAR_LOAD, input I_PAR_LOAD_ENABLE, input [51:0] I_STEP, output [46:0] O_COUNT, output O_OVF_UVF, ;) پالس ساعت ورودی ورودی فعالسازی شمارش /فعال باال ()Active High ورودی بازنشانی غیر همزمان ()Asynchronous Reset ورودی جهت شمارش – 3 ،باال - 0 /پایین ورودی بارگذاری موازی ورودی فعالسازی بارگذاری موازی -3 ،بارگذاری موازی -0 /عملکرد عادی مقدار افزایش و کاهش در هر پالس ساعت /عدد 31بیتی بدون عالمت مقدار خروجی شمارنده نشانگر وجود Overflowو یا Underflow I_CLK I_COUNT_ENABLE I_RST I_INC_DEC I_PAR_LOAD I_PAR_LOAD_ENABLE I_STEP O_COUNT O_OVF_UVF این شمارنده در هر پالس ساعت ،بسته به جهت شمارش انتخابشده عدد دادهشده به ورودی I_STEPرا به /از مقدار داخلی شمارنده اضافه/کم میکند .همچنین افزایش و یا کاهش مقدار شمارنده با پایین آمدن سیگنال I_COUNT_ENABLE متوقف میشود .ورودی I_RSTبهصورت آسنکرون عمل میکند ،بدین معنی که بدون در نظر گرفتن پالس ساعت عملیات بازنشانی تا هر زمانی که ورودی I_RSTباال باشد ادامه مییابد .برای ورودی یک عدد بهصورت موازی به رجیستر داخلی شمارنده ،ابتدا مقدار درخواستی بر روی ورودی I_PAR_LOADقرارگرفته و ورودی I_PAR_LOAD_ENABLEیک میشود .ورود یک مقدار جدید توسط I_PAR_LOADباید بهصورت سنکرون با پالس ساعت ورودی انجام پذیرد، بدینصورت که در لبه باالرونده پالس ساعت ،ابتدا 3بودن ورودی I_PAR_LOAD_ENABLEبرسی شده و در صورت 3 بودن عملیات بارگذاری موازی انجام میشود و در صورت 0بودن آن شمارنده عملکرد عادی خود را خواهد داشت. بارگذاری آسنکرون موازی در این شمارنده امکانپذیر نیست. همچنین درصورتیکه مقدار شمارنده داخلی در حالت افزایش از بیشترین مقدار قابلنمایش یک عدد 19بیتی بیشتر شد (سرریز – )Overflowو یا در هنگام کاهش از کمترین مقدار یعنی 0کمتر شد (زیر ریز )Underflow -پورت خروجی O_OVF_UVFیک شده و تا زمان بازنشانی بعدی یک میماند. ب) در گزارش خود توضیح دهید چرا امکان بارگذاری موازی آسنکرون در این شمارنده وجود ندارد. ج) برای ماجول طراحیشده یک Testbenchبه زبان Verilogنوشته و ماجول ساختهشده را دقیقاً آزمایش نمایید .برای آزمایش مدار ،مراحل زیر را طی نمایید. ابتدا توسط سیگنال I_RSTشمارنده خود را بازنشانی نمایید. توسط سیگنال I_INC_DECشمارنده را در حالت صعودی تنظیم نموده و مقدار I_STEPرا برابر 1قرار دهید. توسط سیگنال I_COUNT_ENABLEشروع شمارش را به شمارنده اعالم کنید. پس از رسیدن مقدار شمارنده به یک عدد 9رقمی ،شمارنده را در حالت نزولی قرار داده و مقدار کاهش در هر پالس ساعت را برابر 30قرار دهید. حال صبر کنید تا شمارنده دچار زیر ریز شود .بدینصورت عملکرد سیگنال O_OVF_UVFرا برسی کنید. شمارنده را دوباره بازنشانی کرده ،در این حالت سیگنال O_OVF_UVFکه در مرحله قبل 3شده باید دوباره 0 شود. شماره دانشجویی خود را بهصورت یک بدون عالمت 19بیتی وارد شمارنده نمایید. مقدار I_STEPرا برابر 30قرار داده و شمارنده را به حالت نزولی ببرید. حال در فواصل زمانی کوتاه توسط سیگنال I_COUNT_ENABLEشمارنده را متوقف و دوباره فعال کنید. با ورود یک عدد بزرگ دلخواه ،عملکرد شمارنده پس از Overflowرا برسی کنید برای هریک از زیر بندهای این قسمت یک یا چند عکس از پنجره Waveتهیه نمایید .در تهیه عکس از پنجره Waveبه میزان Zoomتوجه نمایید ،اعداد باید قابل خواندن باشند .در صورت نیاز برای یک بند می توانید چندین عکس با Zoom های مختلف در مکان های مختلف زمانی تهیه نمایید .برای نمایش صحیح اعداد در پنجره Waveنرمافزار Modelsimاز Radixاعداد بدون عالمت ( )Unsignedاستفاده نمایید .برای تنظیم Radixبر روی پورتها کلیک راست نموده و از منوی Radixپایه مناسب را انتخاب نمایید. فایلهایی که میبایست تحویل داده شوند :فایل توصیف شمارنده به زبان Verilogو فایل Testbench مواردی که میبایست در گزارش قید شود :جدول عملکرد شمارنده ،تصاویر پنجره Waveنرم افزار Modelsimبرای کلیه زیر بند های بند ج سؤال 3 ( دارای تحویل حضوری ) الف) یک بلوک Variable Frequency Dividerبه همراه Phase Shifterداخلی طراحی کنید . .طرح شما باید دارای ورودی و خروجیهایی به شرح زیر باشد : (module variable_freq_divider input I_RST, input I_CLK_50M, input [6:0] I_CLK_DIVIDER, input I_SET_NEW_DIV, output O_CLK_DIVIDED_SHIFT0, output O_CLK_DIVIDED_SHIFT61, output O_CLK_DIVIDED_SHIFT00, output O_CLK_DIVIDED_SHIFT561, output O_CLK_DIVIDED_SHIFT500 ;) این بلوک با دریافت یک پالس ساعت با فرکانس 30مگاهرتز و همچنین دریافت میزان تقسیم فرکانس ،یک پالس ساعت با فرکانس پایینتر و شیفت فازهای 0درجه (بهعنوان مرجع خروجی) 94 ،درجه 40 ،درجه 314 ،درجه و 380درجه تولید میکند .میزان تقسیم فرکانس توسط ورودی I_CLK_DIVIDERمشخص میشود .ورودی I_SET_NEW_DIVبهعنوان ENABLEبرای دریافت مقدار جدید تقسیمکننده از ورودی I_CLK_DIVIDERمورداستفاده قرار میگیرد .مقدار داخلی مقسم در لبه باالرونده پالس ساعت ورودی و در صورت یک بودن ورودی I_SET_NEW_DIVاز ورودی I_CLK_DIVIDERخواندهشده و بر روی رجیستر داخلی مقسم قرار میگیرد. مقدار فرکانس خروجی در این بلوک میبایست متناسب با فرمول زیر باشد : 4 4 46 Nمقدار عدد قرار دادهشده بر روی ورودی I_CLK_DIVIDERاست .برای مثال درصورتیکه نیاز به فرکانس خروجی 31 برابر کوچکتر از فرکانس ورودی باشد از N=0استفاده میشود .درواقع بزرگترین فرکانس قابل تولید توسط این بلوک 31 برابر کوچکتر از فرکانس ورودی می باشد. یک Phase shifterدر ادامه و پس از مقسم فرکانس قرارگرفته و سیگنالهای ساعت با شیفت فازهای 314 ،40 ،94 ،0و 380درجهای تولید مینماید .برای مدلسازی این شیفت دهنده فاز نمیتوانید از المانهای درونی FPGAمانند DCMو PLL و یا از تأخیرها استفاده نمایید( .راهنمایی :برای شیفت دهنده فاز باید از یک شمارنده استفاده نمایید و از یک سیگنال ساعت با فرکانس باالتر یک یا چند سیگنال شیفت دادهشده با فرکانس پایینتر تولید نمایید ،درواقع می توانید بخشی از تقسیم فرکانس را با استفاده از مدار شیفت دهنده فاز انجام دهید ). شکل - 3خروجی مدار شیف دهنده فاز ب) بلوک ساختهشده در بخش الف را توسط یک Testbenchآزمایش نمایید .آزمایش شما باید شامل حالتهای مختلف تقسیم فرکانس باشد .برای تهیه عکس از پنجره Waveبه میزان Zoomو مشخص بودن سیگنالها توجه نمایید و در صورت نیاز چندین عکس از پنجره Waveقرار دهید .همچنین ،کلیه خروجیهای میبایست در پنجره مشخص باشند. فایلهایی که میبایست تحویل داده شوند :فایل توصیف بلوک مقسم فرکانس و Testbenchمربوط به آن مواردی که میبایست در گزارش قید شود :تصویر پنجره Waveنرم افزار Modelsimدر حالت تقسیم فرکانس با مقادیر Nمختلف و مشخص بودن شیفت فاز خروجی ها نکات .3کلیه گزارشها باید در قالب تعیینشده تحویل داده شوند .فایل Wordنمونه قالب تحویل تمرینها در وبسایت درس موجود است .عدم رعایت این نکته موجب کسر نمره خواهد شد. .3مهلت ارسال پاسخها تا قبل از برگزاری کالس حل تمرین است و پسازآن با توجه به حل تمرینها در کالس حل تمرین، تمرین تحویل گرفته نمیشود. .1پاسخهای خواستهشده را بهصورت یک فایل فشرده با فرمت zipو یا rarدرآورده و به آدرس ایمیل اعالمشده ارسال نمایید. .9پس از تهیه فایل فشرده حاوی گزارش و برنامههای خواستهشده ،فایل فشردهشده را با درج شماره دانشجویی در عنوان ایمیل به آدرس [email protected]ارسال نمایید. .4در صورت مشاهده کپیبرداری ،نمره فرد کپی گیرنده و کپی دهنده -300در نظر گرفته خواهد شد. .1در تحویل تمرینها دقت نمایید دقیقاً موارد خواستهشده را تحویل دهید و از تحویل فایلهای خواسته نشده بپرهیزید. .7کالس حل تمرین ،روزهای یکشنبه ساعت 33تا 31در ساختمان ابنسینا کالس 4برگزار خواهد شد .کالسها بهصورت یک هفته در میان به رفع اشکاالت و حل تمرینها اختصاص خواهند یافت .بدینصورت که هفته اول پس از آپلود تمرین مختص رفع اشکال ،و هفته دوم مختص حل تمرینها است. .8تمرینها هر دو هفته یکبار بر روی وبسایت درس قرار خواهند گرفت ،و مهلت انجام هرکدام 3هفته است. .4در صورت وجود هرگونه ابهام در صورت تمرین ،موضوع را از طریق آدرس [email protected]به اطالع استاد حل تمرین برسانید. .30جهت روشن شدن روند تصحیح پاسخها ،گزارشها و فایل های تحویلی کلیه دانشجویان ،پس از برگزاری کالس رفع اشکال و حل تمرین بر روی وبسایت درس آپلود و توسط دیگران قابلدسترس خواهد بود. .11پل ارتباطی میان شما و استاد حل تمرین؛ وبسایت درس و آدرس ایمیل واردشده در سامانه eduاست .لطفاً از صحت آدرس ایمیل خود در سامانه eduمطمئن شوید .اطالعیههای مهم در رابطه باکالس حل تمرین از طریق ایمیل به اطالع شما خواهد رسید.
© Copyright 2026 Paperzz