فهرست مطالب:
تصویری: طراحی یک کنترل کننده حافظه پنهان ساده در VHDL: 4 مرحله
2024 نویسنده: John Day | [email protected]. آخرین اصلاح شده: 2024-01-30 08:54
من این را به صورت آموزشی می نویسم ، زیرا برای یادگیری و شروع به طراحی یک کنترل کننده حافظه پنهان ، دریافت کد مرجع VHDL کمی مشکل بود. بنابراین من خودم یک کنترل کننده حافظه پنهان را از ابتدا طراحی کردم و آن را با موفقیت روی FPGA آزمایش کردم. من یک کنترل کننده کش ساده نقشه برداری مستقیم را در اینجا ارائه کرده ام ، و همچنین یک سیستم کامل پردازنده-حافظه را برای آزمایش Cache Controller مدل سازی کرده ام. امیدوارم به نظر شما این دستورالعمل به عنوان مرجعی برای طراحی کنترلرهای کش خود مفید باشد.
مرحله 1: مشخصات
اینها مشخصات اصلی Cache Controller است که قصد داریم طراحی کنیم:
- نقشه مستقیم (اگر به دنبال کنترل کننده کش Associated Mapped هستید به این پیوند بروید)
- تک بانکی ، مسدود کردن حافظه پنهان.
- سیاست نوشتن از طریق نوشتن بازدیدها.
- No-Write تخصیص داده یا Policy Around در نوشتن خطاهای نوشتاری بنویسید.
- بدون نوشتن بافر یا بهینه سازی های دیگر.
- آرایه برچسب گنجانده شده است.
علاوه بر این ، ما یک حافظه پنهان و یک سیستم حافظه اصلی نیز طراحی می کنیم.
مشخصات پیش فرض (قابل تنظیم) حافظه پنهان:
- حافظه پنهان تک بانکی 256 بایت.
- 16 خط کش ، هر خط کش (بلوک) = 16 بایت.
مشخصات حافظه اصلی:
- حافظه خواندن/نوشتن همزمان.
- حافظه چند بانکی Interleaved - چهار بانک حافظه.
- حجم هر بانک = هر کدام 1 کیلوبایت بنابراین ، حجم کل = 4 کیلوبایت.
- حافظه آدرس پذیر Word (4 بایت) با گذرگاه آدرس 10 بیتی.
- پهنای باند بیشتر برای خواندن عرض داده = 16 بایت را در یک چرخه ساعت بخوانید.
- نوشتن عرض داده = 4 بایت
توجه: اگر به دنبال طراحی کنترل کننده کش 4 طرفه هستید ، بررسی کنید
مرحله 2: نمای RTL کل سیستم
نمایش کامل RTL ماژول بالا در شکل (به استثنای پردازنده) نشان داده شده است. مشخصات پیش فرض اتوبوس ها عبارتند از:
- همه گذرگاه های داده باس های 32 بیتی هستند.
- Bus Bus = گذرگاه 32 بیتی (اما فقط 10 بیت در اینجا با حافظه قابل آدرس دهی است).
- بلوک داده = 128 بیت (گذرگاه پهنای باند گسترده برای خواندن).
- همه اجزا توسط یک ساعت حرکت می کنند.
مرحله 3: آزمایش محیط
ماژول بالا با استفاده از یک Bench Test آزمایش شد که به سادگی یک پردازنده بدون لوله را مدل می کند (زیرا طراحی کل پردازنده به هیچ وجه آسان نیست !!). میز تست درخواست های خواندن/نوشتن داده را به طور مکرر در حافظه ایجاد می کند. این دستورالعمل های معمولی "بار" و "ذخیره" را که در همه برنامه های اجرا شده توسط پردازنده رایج است به سخره می گیرد. نتایج آزمایش عملکرد Cache Controller را با موفقیت تأیید کرد. در زیر آمار آزمون مشاهده شده است:
- همه خواندن/نوشتن سیگنال های Miss و Hit به درستی ایجاد شد.
- همه عملیات خواندن/نوشتن داده ها با موفقیت انجام شد.
- هیچ مشکل ناسازگاری/ناسازگاری داده ها تشخیص داده نشد.
- زمان طراحی با موفقیت برای Maxm تأیید شد. فرکانس ساعت = 110 مگاهرتز در برد Xilinx Virtex-4 ML-403 (کل سیستم) ، 195 مگاهرتز تنها برای Cache Controller.
- RAM های بلوک برای حافظه اصلی استنباط شد. همه آرایه های دیگر بر روی LUT اجرا شد.
مرحله 4: فایل های پیوست شده
فایلهای زیر در اینجا با این وبلاگ ضمیمه شده است:
- . VHD فایل های Cache Controller ، Cache Data Array ، Main Memory System.
- نیمکت آزمون.
- مستندات مربوط به Cache Controller
یادداشت:
- برای درک کامل مشخصات Cache Controller که در اینجا ارائه شده است ، اسناد را مرور کنید.
- هرگونه تغییر در کد به سایر ماژول ها وابسته است. بنابراین ، تغییرات باید با دقت انجام شود. به همه نظرات و سرفصل هایی که من گفتم توجه کنید.
- اگر به هر دلیلی ، Block RAM ها برای حافظه اصلی استنباط نمی شوند ، اندازه حافظه را کاهش دهید و به دنبال آن در عرض گذرگاه آدرس در فایلها و غیره تغییر دهید. به طوری که همان حافظه را می توان در LUT یا RAM توزیع شده پیاده سازی کرد. این باعث صرفه جویی در زمان و منابع می شود. یا ، به اسناد خاص FPGA بروید و کد سازگار برای Block RAM را بیابید و کد را متناسب با آن ویرایش کنید و از مشخصات عرض عرض گذرگاه آدرس استفاده کنید. تکنیک مشابه برای Altera FPGA.
توصیه شده:
Orange Pi Plus 2 - Armbian (در کارت حافظه SD یا کارت حافظه 16 گیگابایتی!) - به روز رسانی: 6 مرحله
Orange Pi Plus 2 - Armbian (در کارت حافظه SD یا کارت حافظه 16 گیگابایتی!) - به روز رسانی: سلام به همه! این اولین آموزش من است و انگلیسی زبان مادری من نیست ، بنابراین لطفاً با من سخت نگیرید. برای شروع ، نارنجی Pi Plus 2 یک دستگاه کوچک فوق العاده است درست مانند Raspberry Pi اما سریعتر! برای Raspberry Pi یک ارتباط بزرگ وجود دارد
کنترل کننده بازی مبتنی بر آردوینو - کنترل کننده بازی Arduino PS2 - بازی Tekken With DIY Arduino Gamepad: 7 مرحله
کنترل کننده بازی مبتنی بر آردوینو | کنترل کننده بازی Arduino PS2 | بازی Tekken With DIY Arduino Gamepad: سلام بچه ها ، بازی کردن همیشه سرگرم کننده است اما بازی با کنترلر بازی سفارشی DIY خود سرگرم کننده تر است. بنابراین ما در این دستورالعمل یک کنترلر بازی با استفاده از arduino pro micro ایجاد می کنیم
طراحی یک کنترل کننده حافظه پنهان ساده چهار طرفه ساده در VHDL: 4 مرحله
طراحی یک کنترل کننده ساده راهپیمایی چهار طرفه ساده در VHDL: در دستورالعمل قبلی من ، نحوه طراحی یک کنترل کننده کش ساده نقشه برداری مستقیم را دیدیم. این بار ، ما یک قدم جلوتر حرکت می کنیم. ما در حال طراحی یک کنترل کننده حافظه پنهان مجموعه ای چهار طرفه ساده هستیم. مزیت - فایده - سود - منفعت ؟ نرخ از دست دادن کمتر ، اما به قیمت انجام
طراحی یک کنترل کننده وقفه قابل برنامه ریزی در VHDL: 4 مرحله
طراحی یک کنترل کننده وقفه قابل برنامه ریزی در VHDL: من از نوع پاسخ هایی که در این وبلاگ دریافت می کنم غرق شده ام. بچه ها از اینکه به وبلاگ من سر زدید و انگیزه ای برای به اشتراک گذاشتن دانش خود با شما داشتم ، متشکرم. این بار ، من قصد دارم طراحی یک ماژول جالب دیگر را که در همه SOC ها مشاهده می کنیم - Interrupt C
فضای پنهان - یک کنترل کننده بازی صوتی: 5 مرحله (همراه با تصاویر)
Hidden Space - an Audio Game Controller: در این آموزش ، ما یک کنترلر بازی برای یک بازی صوتی می سازیم. این بازی با Unity توسعه یافته است. در حال تلاش برای ایجاد یک رابط بازی خارج از صفحه نمایش ، با اطلاعات بصری و عمدتا صوتی محدود است. بازیکن لباس می پوشد