فهرست مطالب:

طراحی یک کنترل کننده وقفه قابل برنامه ریزی در VHDL: 4 مرحله
طراحی یک کنترل کننده وقفه قابل برنامه ریزی در VHDL: 4 مرحله

تصویری: طراحی یک کنترل کننده وقفه قابل برنامه ریزی در VHDL: 4 مرحله

تصویری: طراحی یک کنترل کننده وقفه قابل برنامه ریزی در VHDL: 4 مرحله
تصویری: چگونه برنامه ریزی کنیم؟ تکنیک هایی برای برنامه ریزی روزانه، هفتگی و ماهانه 2024, نوامبر
Anonim
طراحی یک کنترل کننده وقفه قابل برنامه ریزی در VHDL
طراحی یک کنترل کننده وقفه قابل برنامه ریزی در VHDL

من از نوع پاسخ هایی که در این وبلاگ دریافت می کنم غرق شده ام. بچه ها از اینکه به وبلاگ من سر زدید و انگیزه ای برای به اشتراک گذاشتن دانش خود با شما داشتم ، متشکرم. این بار ، من قصد دارم طراحی یک ماژول جالب دیگر را که در همه SOC ها می بینیم - Interrupt Controller ، ارائه دهم.

ما در حال طراحی یک کنترل کننده وقفه برنامه نویسی ساده و در عین حال قدرتمند هستیم. این یک طراحی کاملاً قابل تنظیم و پارامتر بندی شده است که در سراسر سیستم عامل ها قابل حمل است. من این را پس از خواندن بسیاری از معماری های کنترل کننده وقفه معروف مانند NVIC ، 8259a ، RISC-V PLIC ، Microblaze's INTC و غیره طراحی کردم. امیدوارم این وبلاگ برای شما مفید باشد و به شما کمک می کند طعم نحوه مدیریت وقفه ها توسط پردازنده را بشناسید. با کمک کنترل کننده وقفه

مرحله 1: مشخصات

مشخصات IP به شرح زیر است:

  • رابط AHB3-Lite
  • پارامترهای قابل تنظیم از نظر آماری:

    • تعداد منابع وقفه خارجی ؛ تا 63 وقفه را پشتیبانی می کند.
    • تعداد سطوح اولویت دار ؛ پشتیبانی تا 63 سطح
    • تعداد سطوح لانه سازی ؛ تا 8 سطح لانه سازی را پشتیبانی می کند. 
    • عرض اتوبوس؛ 32 یا 64
  • وقفه های قابل پوشش جهانی و محلی.
  • سطح اولویت به طور پویا برای هر وقفه قابل تنظیم است.
  • دو حالت عملکرد - حالت کاملاً تو در تو و حالت اولویت برابر.
  • از وقفه های حساس فعال در سطح بالا پشتیبانی می کند.

مشخصات RISC-V PLIC با الهام از مکانیسم دست دادن در طراحی مورد استفاده قرار گرفته است.

قبل از انتخاب وقفه از 8259a الهام گرفته شده است

سایر مطالب: Microblaze INTC، NVIC

مرحله 2: مروری بر PIC

مروری بر PIC
مروری بر PIC

کنترل کننده وقفه قابل برنامه ریزی (PIC) وقفه های متعددی را از لوازم جانبی خارجی دریافت کرده و آنها را در یک خروجی وقفه واحد به هسته پردازنده مورد نظر ادغام می کند.

PIC از طریق کنترل های ثبت و وضعیت کنترل می شود. همه ثبت های PIC به صورت نقشه نگاشته شده و از طریق رابط گذرگاه AHB3-Lite قابل دسترسی است.

بانک ثبت شامل پیکربندی ثبت ، فعال کردن رجیسترها ، رجیسترهای در حال انتظار ، رجیسترهای در حال خدمت ، رجیسترهای اولویت دار و ثبت کننده شناسه است که در کنترل کننده های وقفه معمولی هستند.

ثبت تنظیمات برای تنظیم حالت عملکرد PIC استفاده می شود. این می تواند در حالت کاملاً تو در تو یا حالت اولویت برابر کار کند.

به هر وقفه می توان اولویت ها اختصاص داد و به صورت جداگانه پوشانده شد. پوشش جهانی همه وقفه ها نیز پشتیبانی می شود.

بانک ثبت با Priority Resolver و BTC (Binary-Tree-Comparator) تعامل دارد تا اولویت های وقفه های معلق را برطرف کرده و بر این اساس وقفه را به پردازنده اعلام کند. شناسه ثبت شامل شناسه وقفه ای است که دارای بالاترین اولویت است.

مرحله 3: طراحی و پیاده سازی RTL

طراحی و پیاده سازی RTL
طراحی و پیاده سازی RTL

طراحی PIC بر کاهش تأخیر در حل اولویت ها تأکید می کند ، که از نظر زمانی مهمترین بخش طراحی است. از آنجا که طراحی اولویت ها را در یک چرخه کلاک واحد حل می کند ، عملکرد با افزایش تعداد منابع با پیچیدگی Log2 کاهش می یابد.

این طرح با موفقیت اجرا شد و زمان تا فرکانسهای زیر در Artix-7 FPGAs تأیید شد.

  • حداکثر تا 15 منبع: 100 مگاهرتز
  • حداکثر 63 منبع: 50 مگاهرتز

تأخیر وقفه که فقط توسط PIC اضافه می شود 3 چرخه ساعت است (بدون در نظر گرفتن زمان تغییر زمینه پردازنده و اولین زمان واکشی دستورالعمل ISR).

مرحله 4: نکات مهم و فایلهای پیوست

یادداشت های مهم:

  • اگر رابط AHB3-Lite نامطلوب است ، می توانید ماژول بالا را تغییر دهید و از طرح اسکلت PIC استفاده کنید. با این حال ، میز آزمایش ارائه شده برای IP با رابط AHB3-Lite است.
  • PIC IP v1.0 یک طرح RTL کاملاً قابل حمل و برهنه است.
  • عملکردی تأیید شده است که روی هر دو حالت کار می کند.

فایل های پیوست شده:

  • طراحی کدها و میز آزمایش در VHDL.
  • مستندات IP کامل

این یک طراحی منبع باز است … در صورت تمایل از آن استفاده کنید …

برای هر گونه پرسش ، در هر زمان:

میتو راج

توصیه شده: