IP core ها نقش بسیار مهمی در طراحی مدارات دیجیتال دارند. استفاده ازIP core های آماده موجب کاهش زمان طراحی میشود. یکی از مهمترین IP هایی که در اغلب مدارات FPGA استفاده میشود Clock wizard است. از این IP برای ساختن کلاک مطمئن و بدون جیتر و با فرکانس دلخواه استفاده میشود.
فهرست مطالب
افزودن IP به پروژه
برای اضافه کردن IP موردنظر، از منوی Project گزینه New Source را انتخاب کنید. در پنجره باز شده (شکل 9) گزینه (IP CORE Generator & Architecture Wizard) را انتخاب کرده و نام و مسیر ذخیره آن را تعیین کنید. سپس بر روی دکمه Next کلیک کنید.
در پنجره باز شده (شکل 10) IP موردنظر را انتخاب کنید. برای راحتی میتوانید نام IP را جستجو کنید. پس از انتخاب IP موردنظر بر روی دکمه Next و سپس Finish کلیک کنید.
سپس متناسب با IP موردنظر پنجرهای (شکل 11) برای تنظیم پارامترهای IP باز میشود. برای تنظیم مناسب هر IP باید دیتاشیت آن به دقت مطالعه شود. بعد از تنظیم مشخصات IP بر روی دکمه Generate کلیک کنید تا IP مورد نظر ساخته شود.
جهت استفاده از IP میتوان با کلیک کردن بر روی IP مورد نظر در پنجره Design و انتخاب گزینه View HDL Instantiation Template (شکل 12) Template نحوه Instance گرفتن (شکل 13) از IP را مشاهده کرد.
افزودن منبع به پروژه
برای این کار از منوی Project گزینه Add Source را انتخاب میکنید و سپس از پنجره باز شده فایل مورد نظر را انتخاب کرده و روی دکمه Open کلیک کنید.
شبیه سازی برنامه
برای شبیه سازی هر ماژول ابتدا باید Test Bench مناسبی برای آن طراحی شود. در Test Bench کلیه ورودیهای ممکن به ماژول زیر تست داده میشود و سپس خروجی آن با خروجی مطلوب مقایسه میشود. برای شبیه سازی باید گامهای زیر طی شود:
برای شبیه سازی در محیط ISE ابتدا باید View شبیه سازی انتخاب شود (شکل 14).
برای ایجاد فایل Test Bench از منوی Project گزینه New Source را انتخاب میکنید و سپس در پنجره باز شده گزینه Verilog Test Fixture و یا VHDL Test Bench را انتخاب میکنید (شکل 15). سپس بر روی دکمه Next کلیک کنید.
سپس در پنجره باز شده ماژول زیر تست را انتخاب کنید و بر دکمه Next و سپس Finish کلیک کنید. در نهایت در فایل ایجاد شده، Test Bench مورد نظر به آن اضافه کنید. در این پروژه برای تست مالتی پلکسر کد زیر نوشته شده است.
فایل Test bench که در این گزارش استفاده داده شده ضمیمه گزارش شده است.
پس از نوشتن Test Bench در پنجره Design بر روی فایل Test Bench موردنظر کلیک کنید و سپس گزینه Simulate Behavioral Model را انتخاب کنید. در صورتی که هیچگونه خطایی روی نداده باشد، نرمافزار ISim اجرا میشود. با استفاده از نوار ابزارISim که در شکل 16 نشان داده شده است میتوان روند شبیهسازی را کنترل کرد. در قسمت Objects نیز میتوان سیگنال دلخواه را انتخاب کرد و به Wave Window اضافه کرد (شکل 16).
افزودن Constraint به پروژه
Constraint ها الزاماتی را هستند که ISE باید در Implement رعایت کند. Constraint ها انواع متعددی دارند. در این گزارش به دو مورد که بیشترین کاربرد را دارند بسنده میکنیم. در محیط ISE، کلیه Constraint ها در فایلهایی با پسوند ucf ذخیره میشوند. برای ایجاد فایل Constraint در محیط ISE از منوی Project گزینه New Source را انتخاب کرده و در پنجره باز شده نوع فایل را Implementation Constraints File تنظیم کنید (شکل 18).
Pin assignment
هدف از این کار تعیین پایههای فیزیکی مدار است. با این کار مشخص میشود که پایههای ماژول دقیقاً متناظر با کدام یک از پایههای FPGA است. برای تعیین پایه فیزیکی از Constraint زیر استفاده میکنیم.
Constraint فوق پایه clk_inرا بر روی پایه P50 نگاشت میکند.
Timing Constraint
این نوع Constraint مشخصههای زمانی سیستم را تعیین میکنند. در محیط ISE انواع مختلفیConstraint وجود دارد که بیان آنها خارج از حوصله بحث است و تنها به بیان Constraint کلاک ورودی سیستم که در اغلب موارد کافی است، بسنده میکنیم. برای تعریف کلاک از Constraint زیر استفاده میکنیم.
با استفاده از دستورات فوق پایه clk_in بعنوان سیگنال کلاک با دوره تناوب 20 نانو ثانیه با سیکل کاری 50 درصد معرفی میشود.
لازم به ذکر است که ISE دارای ابزارهایی نظیر Constraints Editor و Planahead و … است که افزودن و تحلیل Constraint ها بسیار آسان میکند.
مرحله Synthesis
پس از اینکه طراحی سیستم به اتمام رسید و Constraint های لازم اضافه شد نوبت به سنتز مدار میرسد. در فرآیند سنتز کد HDL یا Schematic به Netlist تبدیل میشود. Netlist شامل net هایی است که با استفاده از گیتهای منطقی و فلیپ فلاپ بهم وصل شدهاند.
با انتخاب فایل Top Module و کلیک بر روی گزینه Synthesis فرآیند سنتز آغاز میشود. صورتی که فرآیند موفقیت آمیز باشد و خطایی روی نداده باشد، با کلیک بر روی گزینه View RTL Schematic میتوان Netlist خروجی را مشاهده کرد (شکل 17).
مرحله Implement
پس از سنتز مدار نوبت به Implement Design مدار میرسد. در این مرحله Netlist بدست آمده از مرحله سنتز به منابع موجود FPGA نگاشت میشود. در صورتی که فرآیند موفقیت آمیز باشد میتوان تحلیلهای زمانی و منابع مصرف شده و … را انجام داد.
مرحله Generate Bit Stream
بعد از اتمام مرحله Implementation نوبت ایجادBit Stream است. با کلیک کردن بر روی گزینه Generate Programming File این فرایند آغاز میشود.