به نام خداوند بخشنده و مهربان!

سلام عرض میکنم خدمت دوستان عزیزم و سروران گرامی!

امروز تصمیم گرفتم چیزی بزارم که خودم تازه یاد گرفتم! راستش یه چند وقتی هست که دنبال مطالب جدید برای یاد گیری هستم ولی موفق نشدم! احساس میکنم چون دِینم رو ادا نکردم اینطور شده! بنابراین اومدم یه مطلب براتون قرار بدم! (ببینید چقدر دوستتون دارم s02)

خوب راستش من میخواستم برای برد FPGA ام یه آیسی SRAM بخرم! چون کار کردن با رم خیلی برام لذت بخشه! ولی به دلیل محدودیت دسترسی به فروشگاه و... جور نشد که یه آیسی بخرم تصمیم گرفتم ببینم رم داخلی خود FPGA چطوریه! بنابراین آسین هام رو بالا زدم و چند تا سرچ زدم تا در نهایت موفق شدم به نتیجه برسم (خداروشکر) الانم در خدمتتونم تا بهتون بگم چطور میتونید از بلاک رم ها یا Block Ram که بهش BRAM هم میگن استفاده کنید!

برای استفاده از این ویژگی های FPGA طبق معمول به سراغ IP ها میریم! پس مطابق شکل زیر در سمت چپ صفحه راست کلیک کنید و New Source و انتخاب کنید!

و مطابق تصاویر زیر پیش برید!

 

 

و در صفحه ی بعد فقط نوع حافظه رو روی Single port RAM بزارید 

و در صفحه ی بعدتنظیمات مربوط به اندازه حافظه رو تنظیم کنید (مطابق نیازتون)

و در صفحه ی بعد ...

و دیگه چیزی نداره دو بار Next رو بزنید و در نهایت Generate کنید!

کار تموم شد! کافیه کد مورد نیاز برای ارتباط رو به کد اصلیتون اضافه کنید! برای اینکار کافیه یک بار روی IP کلیک کنید و در منوی زیر مانند تصویر زیر روی گزینه ی Veiw HDL  INSTANTIATION Template کلیک کنید. و بسته به کد HDL که توی تنظیمات انتخاب کرده بودید کد HDL یا به صورت وریلوگ یا VHDL نشون داده میشه!

مثلا کد زیر برای وریلوگ هست:

ram your_instance_name (
  .clka(clka), // input clka
  .wea(wea), // input [0 : 0] wea
  .addra(addra), // input [0 : 0] addra
  .dina(dina), // input [3 : 0] dina
  .douta(douta) // output [3 : 0] douta
);

میتونید کد زیر رو هم دانلود کنید! تا اگه نتونستید پروژه رو بسازید از این استفاده کنید!

دانلود کنید

 البته توجه کنید چون خودم هم زیاد باهاش کار نکردم زیاد جزئیاتش رو نمیدونیم من فقط نحوه ساختش رو گفتم و وارد جزئیات نشدم..! اگه باهاش بیشتر کار کنم انشالله آموزشش هم میزارم!

امیدوارم مطلب مفیدی بوده باشه و در یادگیری شما کمکی کرده باشم!

موفق باشید!

یا علی مدد...!