📋ابتدایی ترین و اصلی ترین منابع برای طراحی روی تراشه های FPGA شرکت Xilinx بلوک های منطقی قابل برنامه ریزی (CLBs) هستند. هر CLB متشکل از دو اسلایس (Slice) است. این اسلایس ها همانطور که در شکل نشان داده شده است، به ماتریسی از سوییچ ها متصل هستند و از آن برای برقراری ارتباط با سایر اسلایس ها و یا سایر منایع موجود در تراشه استفاده می کنند.
📋 اسلایس ها از رجیستر ها و LUT ها ساخته شده اند. جداول درستی یا LUT ها دقیقا همان عناصری هستند که برای ساخت مدارات ترکیبی مورد استفاده قرار می گیرند. هر کدام دارای رجیستر اختصاصی هستند و از ترکیب این LUT ها و رجیسترهای متناطرشون به همراه یکسری عناصر دیگر اسلایس ها شکل می گیرند.
📋 در کنار LUT ها و رجیستر ها، زنجیره بیت نقلی (Carry Chain) که در محاسبات ریاضی بسیار پرکاربرد هست و باعث افزایش چشمگیر سرعت انجام محاسبات می شود نیز در درون اسلایس ها وجود دارد. (در شکل با عبارت CIN و COUT نشان داده شده است.
@Hexalinx
📋 اسلایس ها از رجیستر ها و LUT ها ساخته شده اند. جداول درستی یا LUT ها دقیقا همان عناصری هستند که برای ساخت مدارات ترکیبی مورد استفاده قرار می گیرند. هر کدام دارای رجیستر اختصاصی هستند و از ترکیب این LUT ها و رجیسترهای متناطرشون به همراه یکسری عناصر دیگر اسلایس ها شکل می گیرند.
📋 در کنار LUT ها و رجیستر ها، زنجیره بیت نقلی (Carry Chain) که در محاسبات ریاضی بسیار پرکاربرد هست و باعث افزایش چشمگیر سرعت انجام محاسبات می شود نیز در درون اسلایس ها وجود دارد. (در شکل با عبارت CIN و COUT نشان داده شده است.
@Hexalinx
#Basic
#CLB, #SLICE, #PAR
✅ معرفی Slice و CLB بخش دوم
📋 در شکل بالا نحوه اتصال دو CLB به یک سوییچ ماتریس نشان داده شده است. اسلایس ها از طریق این سوییچ ماتریس ها به شبکه سرتاسری مسیرها در FPGA دسترسی پیدا می کنند. در این مسیرهای سرتاسری، مسیرهای مجزا برای داده و کلاک در نظر گرفته شده که در شکل نیز با نام Clk و Data نشان داده شده اند. در حالت کلی کاربر روی نحوه استفاده از سوییچ ها و مسیریابی بین عناصر موجود در تراشه دخالت نمی کند و این کار به صورت اتوماتیک توسط ابزار و در مرحله post place & route انجام می شود.
.
@Hexalinx
#CLB, #SLICE, #PAR
✅ معرفی Slice و CLB بخش دوم
📋 در شکل بالا نحوه اتصال دو CLB به یک سوییچ ماتریس نشان داده شده است. اسلایس ها از طریق این سوییچ ماتریس ها به شبکه سرتاسری مسیرها در FPGA دسترسی پیدا می کنند. در این مسیرهای سرتاسری، مسیرهای مجزا برای داده و کلاک در نظر گرفته شده که در شکل نیز با نام Clk و Data نشان داده شده اند. در حالت کلی کاربر روی نحوه استفاده از سوییچ ها و مسیریابی بین عناصر موجود در تراشه دخالت نمی کند و این کار به صورت اتوماتیک توسط ابزار و در مرحله post place & route انجام می شود.
.
@Hexalinx
#PYNQ
#ZYNQ
#Advanced
✅ معرفی بورد PYNQ-Z1 برای پروژه PYNQ
بورد PYNQ-Z1 برای اجرای پروژه منبع باز PYNQ یک روی تراشه های ZYNQ توسط شرکت Digilent طراحی و ارائه شده است. مهمترین امکانات این بورد به شرح زیر است.
❗️تراشه XC7Z020-1CLG400C
❗️حافظه 16 بیتی DDR3 با ظرفیت 512MB
❗️فلش QSPI با ظرفیت 16MB
❗️تغذیه مستقل از USB یا آداپتور کمکی
❗️پشتیبانی از Micro SD
❗️پشتیبانی از USB Host
❗️پشتیابنی از USB-UART
❗️پشتیبانی از USB-JTAG
❗️پشتیبانی از Ethernet PHY
❗️میکروفن
❗️پورت HDMI
❗️کلید فشاری، سوییچ و LED
❗️کانکتور Arduino
🔖 با وجود اینکه بورد PYNQ-Z1 به طور اختصاصی برای پروژه PYNQ به کار گرفته می شود، اما این بورد یک نمونه کاملا ارزان قیمت و آکادمیک است و به تراشه Zynq مجهز شده است و به راحتی می تواند برای کلیه آموزش های پایه ای و البته حرفه ای مورد استفاده قرار بگیرد.
@Hexalinx
#ZYNQ
#Advanced
✅ معرفی بورد PYNQ-Z1 برای پروژه PYNQ
بورد PYNQ-Z1 برای اجرای پروژه منبع باز PYNQ یک روی تراشه های ZYNQ توسط شرکت Digilent طراحی و ارائه شده است. مهمترین امکانات این بورد به شرح زیر است.
❗️تراشه XC7Z020-1CLG400C
❗️حافظه 16 بیتی DDR3 با ظرفیت 512MB
❗️فلش QSPI با ظرفیت 16MB
❗️تغذیه مستقل از USB یا آداپتور کمکی
❗️پشتیبانی از Micro SD
❗️پشتیبانی از USB Host
❗️پشتیابنی از USB-UART
❗️پشتیبانی از USB-JTAG
❗️پشتیبانی از Ethernet PHY
❗️میکروفن
❗️پورت HDMI
❗️کلید فشاری، سوییچ و LED
❗️کانکتور Arduino
🔖 با وجود اینکه بورد PYNQ-Z1 به طور اختصاصی برای پروژه PYNQ به کار گرفته می شود، اما این بورد یک نمونه کاملا ارزان قیمت و آکادمیک است و به تراشه Zynq مجهز شده است و به راحتی می تواند برای کلیه آموزش های پایه ای و البته حرفه ای مورد استفاده قرار بگیرد.
@Hexalinx
🔖 با توجه به نتایج نظر سنجی و علاقه شما عزیزان به مطالب پایه ای VHDL و FPGA از این هفته به بعد، به صورت مداوم آموزش های کوتاهی در قالب ویدیو و متن های کوتاه با کمله کلیدی #Basic ارائه می شود که امیدوارم به بهترین شکل پاسخگوی نیاز شما باشد.
🔖 علاوه بر این به پاس اعتماد شما، یک سرفصل کاملا جدید با عنوان پردازش سیگنال روی FPGA برای شما تدارک خواهیم دید و در قالب ویدیو و مقالات کاربردی خدمتتان ارائه خواهیم کرد. نکات آموزشی در رابطه با محاسبات ممیز ثابت، فیلترهای دیجیتال، IP Core های پرکاربرد، تکنیک های به اشتراک گذاری منابع و ... از جمله مواردی هستند که در این سلسله آموزش ها پوشش داده می شوند و در غالب کمله کلیدی #DSP بیان می گردند.
🔖 همچون گذشته در کنار دو این دو بخش جدید، نکات آموزشی پیشرفته، اخبار روز دنیا، موضوعات مربوط به سیستم های توکار و مفاهیم عمیق پیاده سازی همچنان به عنوان بخشی از علاقه مندی های شما به صورت روزانه منتشر خواهد.
این آغاز ماجراجویی شماست، با ما همراه باشید ...
@Hexalinx
🔖 علاوه بر این به پاس اعتماد شما، یک سرفصل کاملا جدید با عنوان پردازش سیگنال روی FPGA برای شما تدارک خواهیم دید و در قالب ویدیو و مقالات کاربردی خدمتتان ارائه خواهیم کرد. نکات آموزشی در رابطه با محاسبات ممیز ثابت، فیلترهای دیجیتال، IP Core های پرکاربرد، تکنیک های به اشتراک گذاری منابع و ... از جمله مواردی هستند که در این سلسله آموزش ها پوشش داده می شوند و در غالب کمله کلیدی #DSP بیان می گردند.
🔖 همچون گذشته در کنار دو این دو بخش جدید، نکات آموزشی پیشرفته، اخبار روز دنیا، موضوعات مربوط به سیستم های توکار و مفاهیم عمیق پیاده سازی همچنان به عنوان بخشی از علاقه مندی های شما به صورت روزانه منتشر خواهد.
این آغاز ماجراجویی شماست، با ما همراه باشید ...
@Hexalinx
#Basic
#SLICE, #SLICER, #SLICEM
✅ انواع اسلایس در FPGA های سری 7
🔖 کلیه منابع موجود درون اسلایس ها برای محاسبات منطقی، محاسبات ریاضی و ذخیره سازی به عنوان ROM قابل استفاده هستند. در معماری تراشه های سری 7 دو نوع Slice و دو نوع CLB وجود دارد.
1️⃣ اسلایس منطقی و محاسباتی (SLICER)
این اسلایس ها با بکارگیری منابع درونی خود به عنوان منابع منطقی، محاسباتی و ROM مورد استفاده قرار می گیرند.
2️⃣ اسلایس کامل (SLICEM)
این اسلایس ها علاوه بر انجام محاسبات منطقی، ریاضی و ROM از دو عملکرد اضافی نیز پشتیبانی می کنند و می توانند به عنوان حافظه (RAM) و یا شیفت رجیستر (Memory/SRL) مورد استفاده قرار بگیرند.
🔖 انتخاب بین این اسلایس ها توسط ابزار سنتز و به صورت اتوماتیک صورت می گیرد، اما با توجه به محدودیت تعداد اسلایس های کامل، طراحی درست می تواند منجربه به استفاده بهینه از آنها شود.
@Hexalinx
#SLICE, #SLICER, #SLICEM
✅ انواع اسلایس در FPGA های سری 7
🔖 کلیه منابع موجود درون اسلایس ها برای محاسبات منطقی، محاسبات ریاضی و ذخیره سازی به عنوان ROM قابل استفاده هستند. در معماری تراشه های سری 7 دو نوع Slice و دو نوع CLB وجود دارد.
1️⃣ اسلایس منطقی و محاسباتی (SLICER)
این اسلایس ها با بکارگیری منابع درونی خود به عنوان منابع منطقی، محاسباتی و ROM مورد استفاده قرار می گیرند.
2️⃣ اسلایس کامل (SLICEM)
این اسلایس ها علاوه بر انجام محاسبات منطقی، ریاضی و ROM از دو عملکرد اضافی نیز پشتیبانی می کنند و می توانند به عنوان حافظه (RAM) و یا شیفت رجیستر (Memory/SRL) مورد استفاده قرار بگیرند.
🔖 انتخاب بین این اسلایس ها توسط ابزار سنتز و به صورت اتوماتیک صورت می گیرد، اما با توجه به محدودیت تعداد اسلایس های کامل، طراحی درست می تواند منجربه به استفاده بهینه از آنها شود.
@Hexalinx
#FLY_BY
#DDR3
#Intermediate
✅ تفاوت توپولوژی Fly_by و T در اتصال حافظه های DDR3/4.
✳️ در اتصال حافظه های DDR3/4 به پردازنده و FPGAها، مسیرهای کلاک، آدرس و کنترل میتوانند به دو صورت Fly_by یا T متصل شوند.
افزایش فرکانس کاری، کاهش مقدار و طول stub های مسیر و درنتیجه بهبود SI و زمانبندی سیگنالهای حافظه، از مزایای توپولوژی Fly_by است. بعلاوه این توپولوژی به علت انحراف بسیار اندک زمانبندی بین سیگنالهای گروه آدرس و گروه داده باعث کاهش نویز سوئیچینگ همزمان (SSN) میشود.
توپولوژی T در هنگام مسیریابی و طراحی PCB بسیار پر چالش است اما با این حال این توپولوژی نیز کاربردهای خودش را دارد.
طراحی و مسیریابی Fly_by سادهتر از T است. اما این توپولوژی برای فعالیتهای با ظرفیت بالا و قطعاتی مانند LPDDR3 DDP(Double die package) یا QDP خوب کار نمیکند. هرچند در قطعات SDP توپولوژی Fly_by راه کم دردسرتری است.
#Hexalinx
#DDR3
#Intermediate
✅ تفاوت توپولوژی Fly_by و T در اتصال حافظه های DDR3/4.
✳️ در اتصال حافظه های DDR3/4 به پردازنده و FPGAها، مسیرهای کلاک، آدرس و کنترل میتوانند به دو صورت Fly_by یا T متصل شوند.
افزایش فرکانس کاری، کاهش مقدار و طول stub های مسیر و درنتیجه بهبود SI و زمانبندی سیگنالهای حافظه، از مزایای توپولوژی Fly_by است. بعلاوه این توپولوژی به علت انحراف بسیار اندک زمانبندی بین سیگنالهای گروه آدرس و گروه داده باعث کاهش نویز سوئیچینگ همزمان (SSN) میشود.
توپولوژی T در هنگام مسیریابی و طراحی PCB بسیار پر چالش است اما با این حال این توپولوژی نیز کاربردهای خودش را دارد.
طراحی و مسیریابی Fly_by سادهتر از T است. اما این توپولوژی برای فعالیتهای با ظرفیت بالا و قطعاتی مانند LPDDR3 DDP(Double die package) یا QDP خوب کار نمیکند. هرچند در قطعات SDP توپولوژی Fly_by راه کم دردسرتری است.
#Hexalinx
#Adaptive_Compute_Acceleration_Platform
#ACAP
#Advanced
✅ معرفی ACAP
شرکت Xilinx پلتفرم شتاب دهی محاسباتی تطبیقی خود یا همان ACAP را با هدف کمک به مراکز داده برای پاسخ به سونامی تقاضای محاسبات مورد نیاز هوش مصنوعی توسعه داده است. در واقع ACAP یک معماری محاسباتی چند هسته ای قابل برنامه ریزی و ناهمگن است که می تواند در طول عملیات به صورت پویا ظرف چند میلی ثانیه ویرایش شود تا پاسخگوی تغییرات بوجود آمده در حجم محاسبات باشد. شرکت Xilinx ادعا می کند که تراشه های 7 نانومتری جدیدش بسیار قدرتمندتر از ترکیب CPU و GPU هستند و راندمان کاری بالاتری به ازای هر وات توان مصرفی ارائه می دهند.
@Hexalinx
#ACAP
#Advanced
✅ معرفی ACAP
شرکت Xilinx پلتفرم شتاب دهی محاسباتی تطبیقی خود یا همان ACAP را با هدف کمک به مراکز داده برای پاسخ به سونامی تقاضای محاسبات مورد نیاز هوش مصنوعی توسعه داده است. در واقع ACAP یک معماری محاسباتی چند هسته ای قابل برنامه ریزی و ناهمگن است که می تواند در طول عملیات به صورت پویا ظرف چند میلی ثانیه ویرایش شود تا پاسخگوی تغییرات بوجود آمده در حجم محاسبات باشد. شرکت Xilinx ادعا می کند که تراشه های 7 نانومتری جدیدش بسیار قدرتمندتر از ترکیب CPU و GPU هستند و راندمان کاری بالاتری به ازای هر وات توان مصرفی ارائه می دهند.
@Hexalinx
#ZYNQ
✅ استفاده از تراشه های Zynq 7000 و Zynq ultrascale plus به عنوان کنترلر اصلی در ماشین های استخراج بیت کوین شرکت Bitman.
بر اساس ادعای شرکت سازنده با استفاده از تراشه zynq با توان مصرفی کمتری می توان به حداکثر راندمان دست یافت. علاوه بر این BOM و فضای مصرفی روی بورد نیز کاهش پیدا می کند.
البته توجه داشت باشید که خود تراشه zynq برای استخراج مورد استفاده قرار نمی گیره و این کار غالبا با تراشه های ASIC انجام می شه.
https://www.aparat.com/v/QMKG1
@Hexalinx
✅ استفاده از تراشه های Zynq 7000 و Zynq ultrascale plus به عنوان کنترلر اصلی در ماشین های استخراج بیت کوین شرکت Bitman.
بر اساس ادعای شرکت سازنده با استفاده از تراشه zynq با توان مصرفی کمتری می توان به حداکثر راندمان دست یافت. علاوه بر این BOM و فضای مصرفی روی بورد نیز کاهش پیدا می کند.
البته توجه داشت باشید که خود تراشه zynq برای استخراج مورد استفاده قرار نمی گیره و این کار غالبا با تراشه های ASIC انجام می شه.
https://www.aparat.com/v/QMKG1
@Hexalinx
آپارات - سرویس اشتراک ویدیو
بکارگیری تراشه های zynq در ماینر ها برای تولید بیت کوین
در این ویدیو استفاده از تراشه های Zynq 7000 و Zynq ultrascale plus به عنوان کنترلر اصلی در ماشین های استخراج بیت کوین شرکت Bitman، نشان داده شده است.
بر اساس ادعای شرکت سازنده با استفاده از تراشه Zynq بالاترین راندمان ممکن در ازای مصرف توان به مراتب کمتری…
بر اساس ادعای شرکت سازنده با استفاده از تراشه Zynq بالاترین راندمان ممکن در ازای مصرف توان به مراتب کمتری…
#Essentials
✅ آیا تا به حال به اهمیت رعایت مساله زمانبندی در طراحی های FPGA فکر کردید؟ آیا با مفاهیم ساده و اولیه سنجش کارایی یک پیاده سازی آشنایی دارید؟ تا به حال به این فکر کردید که چرا برخی از پیاده سازی ها با وجود اینکه نتایج شبیه سازی آن ها کاملا درست است، اما نتایج سخت افزاری کاملا اشتباه و نامعتبر دارند؟
به طور کلی انجام مجاسبات ریاضی و پردازش سیگنال در FPGA نیازمند رعایت اصول پیاده سازی خاص در این مدارهاست، سوال اینجاست که اگر این اصول رعایت نشود، چه مشکلی پیش می آید؟
✅ قبل از پاسخ به این سوال اجازه بدهید در پست زیر یکسری مفاهیم مقدماتی را به زبان ساده توصیف کنیم. هر طراح FPGA باید با مفاهیمی همچون #Race_Condition و #Glitch آشنایی داشته باشد تا بتواند دلیل رعایت یکسری از اصول را در برنامه نویسی متوجه شود، و برای آن ها راه حل مناسب پیدا کند. این آغاز ماجراجویی شماست، با ما همراه باشید ...
@Hexalinx
✅ آیا تا به حال به اهمیت رعایت مساله زمانبندی در طراحی های FPGA فکر کردید؟ آیا با مفاهیم ساده و اولیه سنجش کارایی یک پیاده سازی آشنایی دارید؟ تا به حال به این فکر کردید که چرا برخی از پیاده سازی ها با وجود اینکه نتایج شبیه سازی آن ها کاملا درست است، اما نتایج سخت افزاری کاملا اشتباه و نامعتبر دارند؟
به طور کلی انجام مجاسبات ریاضی و پردازش سیگنال در FPGA نیازمند رعایت اصول پیاده سازی خاص در این مدارهاست، سوال اینجاست که اگر این اصول رعایت نشود، چه مشکلی پیش می آید؟
✅ قبل از پاسخ به این سوال اجازه بدهید در پست زیر یکسری مفاهیم مقدماتی را به زبان ساده توصیف کنیم. هر طراح FPGA باید با مفاهیمی همچون #Race_Condition و #Glitch آشنایی داشته باشد تا بتواند دلیل رعایت یکسری از اصول را در برنامه نویسی متوجه شود، و برای آن ها راه حل مناسب پیدا کند. این آغاز ماجراجویی شماست، با ما همراه باشید ...
@Hexalinx
#Race_Condition
#Metastabilty
#Glitch
✳️ رخداد #Race_Condition نتیجه و حاصل یک طراحی نامناسب برای یک لچ یا فلیپ فلاپ در FPGA است. در واقع نشان دهنده وضعیتی است که در آن داده و کلاک ورودی به یک فلیپ فلاپ در یک زمان تغییر می کنند و نتیجه خروجی بستگی به این دارد که کدام یک از این دو در اصطلاح برنده شود.
✳️ در موارد نادر، ممکن است در زمان تغییر وضعیت کلاک، داده دقیقا برابر 0 و یا 1 باشد ، ولی در اکثر موارد داده مقداری بین 0 و یا 1 دارد، یعنی در بازه زمانی گذر از حالت low به حالت high قرار دارد. در این چنین شرایطی خروجی برای یک لحظه بین 0 و 1 باقی می ماند، (برای مثال در یک سیستم با ولتاژ 5V ، خروجی ممکن است برای مدت زمان خیلی کوتاهی مثلا چند نانو ثانیه حدود 2.5V باشد. هنگامی که این اتفاق می افتد در اطلاح گفته می شود خروجی ناپایدار یا #Metastable است. ناپایدار بودن باعث ایجاد اثرات جدی و منفی بر روی عملکرد سیستم می شود از همه بدتر اینکه، تقریبا تکرار پذیری این حالت ناپایدار تقریبا غیرممکن است و بنابراین پیدا کردن منشا خطا و برطرف کردن آن بسیار سخت است.
✳️ مسئله ناپداری در خروجی فقط مختص به فلیپ فلاپ ها نیست و ممکنه به دلیل تاخیر وضعیت نامتناسب در ورودی های گیت های منطقی نیز وجود داشته باشد و باعث ایجاد مشکلات ناخواسته بشود، این رخداد نیز در اصطلاح #Glitch نامیده می شود.
✳️ برای جلوگیری از بروز چنین مشکلاتی در طراحی، طراح باید با در نظر گرفتن بدترین شرایط ممکن، آنالیز زمانی کاملا دقیقی روی مداری که طرحی کرده است، انجام دهد. این نوع آنالیزها عموما با بکارگیری تاخیرهای انتشار، تاخیرهای مسیر بین عناصر موجود در FPGA، محاسبه زمان بندی high و low شدن سیگنال و یکسری پارامترهای دیگر انجام می شود. این کار عموما زمان بر است، اما شرکت های سازنده تراشه های قابل برنامه ریزی ابزارهای مناسبی را برای انجام این تحلیل ها ارائه داده اند.
@Hexalinx
#Metastabilty
#Glitch
✳️ رخداد #Race_Condition نتیجه و حاصل یک طراحی نامناسب برای یک لچ یا فلیپ فلاپ در FPGA است. در واقع نشان دهنده وضعیتی است که در آن داده و کلاک ورودی به یک فلیپ فلاپ در یک زمان تغییر می کنند و نتیجه خروجی بستگی به این دارد که کدام یک از این دو در اصطلاح برنده شود.
✳️ در موارد نادر، ممکن است در زمان تغییر وضعیت کلاک، داده دقیقا برابر 0 و یا 1 باشد ، ولی در اکثر موارد داده مقداری بین 0 و یا 1 دارد، یعنی در بازه زمانی گذر از حالت low به حالت high قرار دارد. در این چنین شرایطی خروجی برای یک لحظه بین 0 و 1 باقی می ماند، (برای مثال در یک سیستم با ولتاژ 5V ، خروجی ممکن است برای مدت زمان خیلی کوتاهی مثلا چند نانو ثانیه حدود 2.5V باشد. هنگامی که این اتفاق می افتد در اطلاح گفته می شود خروجی ناپایدار یا #Metastable است. ناپایدار بودن باعث ایجاد اثرات جدی و منفی بر روی عملکرد سیستم می شود از همه بدتر اینکه، تقریبا تکرار پذیری این حالت ناپایدار تقریبا غیرممکن است و بنابراین پیدا کردن منشا خطا و برطرف کردن آن بسیار سخت است.
✳️ مسئله ناپداری در خروجی فقط مختص به فلیپ فلاپ ها نیست و ممکنه به دلیل تاخیر وضعیت نامتناسب در ورودی های گیت های منطقی نیز وجود داشته باشد و باعث ایجاد مشکلات ناخواسته بشود، این رخداد نیز در اصطلاح #Glitch نامیده می شود.
✳️ برای جلوگیری از بروز چنین مشکلاتی در طراحی، طراح باید با در نظر گرفتن بدترین شرایط ممکن، آنالیز زمانی کاملا دقیقی روی مداری که طرحی کرده است، انجام دهد. این نوع آنالیزها عموما با بکارگیری تاخیرهای انتشار، تاخیرهای مسیر بین عناصر موجود در FPGA، محاسبه زمان بندی high و low شدن سیگنال و یکسری پارامترهای دیگر انجام می شود. این کار عموما زمان بر است، اما شرکت های سازنده تراشه های قابل برنامه ریزی ابزارهای مناسبی را برای انجام این تحلیل ها ارائه داده اند.
@Hexalinx
#ACAP
#Versal
#Advanced
✅ پلت فرم Versal چیست؟
عنوان Versal ACAP نامی است که Xilinx برای اولین پلت فرم شتاب دهنده محاسبه تطبیقی خود انتخاب کرده است. واژه Versal ترکیبی از واژه Universal و Versatility است. این تراشه یا به تبعیت از Xilinx پلت فرم محاسباتی شامل موتورهای پردازش اسکالر، موتورهای سخت افزاری تطبیقی و موتورهای هوشمند با فناوری های پیشرفته حافظه و ارتباطات برای ارائه شتاب ناهمگن قدرتمند برای هر نوع کاربردی می باشند. اما مهمتر از همه، سخت افزار و نرم افزار Versal ACAP می تواند توسط برنامه نویسان نرم افزار، دانشمندان داده پرداز و توسعه دهندگان سخت افزار به طور یکپارچه برنامه ریزی شود. این بهینه سازی عملکردی توسط مجموعه ابزارها، نرم افزارها، کتابخانه ها، میان افزارها، IP ها و چارچوب های استانداری که امکان طراحی صنعتی را فراهم می کنند صورت می پذیرد.
@Hexalinx
#Versal
#Advanced
✅ پلت فرم Versal چیست؟
عنوان Versal ACAP نامی است که Xilinx برای اولین پلت فرم شتاب دهنده محاسبه تطبیقی خود انتخاب کرده است. واژه Versal ترکیبی از واژه Universal و Versatility است. این تراشه یا به تبعیت از Xilinx پلت فرم محاسباتی شامل موتورهای پردازش اسکالر، موتورهای سخت افزاری تطبیقی و موتورهای هوشمند با فناوری های پیشرفته حافظه و ارتباطات برای ارائه شتاب ناهمگن قدرتمند برای هر نوع کاربردی می باشند. اما مهمتر از همه، سخت افزار و نرم افزار Versal ACAP می تواند توسط برنامه نویسان نرم افزار، دانشمندان داده پرداز و توسعه دهندگان سخت افزار به طور یکپارچه برنامه ریزی شود. این بهینه سازی عملکردی توسط مجموعه ابزارها، نرم افزارها، کتابخانه ها، میان افزارها، IP ها و چارچوب های استانداری که امکان طراحی صنعتی را فراهم می کنند صورت می پذیرد.
@Hexalinx
#MICROBLAZE
#SOFT_PROCESSOR
#Essentials
✅ میکرو بلیز، یک میکرو پروسسور نرم افزاری یا در اصطلاح soft micro processor است که توسط Xilinx در سال 2002 معرفی شد. این کنترلر یا پروسسور داخلی داری معماری 32 بیتی ریسک است و تقریبا در تمام FPGA های شرکت Xilinx قابل فراخوانی است. این پروسسور یک واحد سخت افزاری مجزا روی تراشه نیست و با استفاده از منابع داخلی تراشه های Xilinx یعنی LUT ها و حافظه ها ساخته می شود و فراخوانی آن باعث می شود بخشی از فضای منطقی روی تراشه مصرف شود، این دقیقا مفهوم #soft_processor است.
✅ در واقع هدف Xilinx از معرفی میکروبلیز قرار دادن یک کنترلر در کنار تراشه های FPGA با صرف کمترین هزینه بوده است و با این کار انعطاف پذیری بالایی را برای طراحان فراهم آورده است.
✅ میکروبلیز کاملا قابل سفارشی سازی است و می توان آن را متناسب با هر نیازی پیکره بندی کرد، محدودیتی در رابطه با تعداد میکروبلیزهای قابل فراخوانی در تراشه وجود ندارد و کاربر می تواند به راحتی چندین پروسسور را با ویژگی های مختلف در کد خود استفاده کند و در کنار سایر مدارات درون FPGA از آنها به بهترین شکل استفاده کند.
@Hexalinx
#SOFT_PROCESSOR
#Essentials
✅ میکرو بلیز، یک میکرو پروسسور نرم افزاری یا در اصطلاح soft micro processor است که توسط Xilinx در سال 2002 معرفی شد. این کنترلر یا پروسسور داخلی داری معماری 32 بیتی ریسک است و تقریبا در تمام FPGA های شرکت Xilinx قابل فراخوانی است. این پروسسور یک واحد سخت افزاری مجزا روی تراشه نیست و با استفاده از منابع داخلی تراشه های Xilinx یعنی LUT ها و حافظه ها ساخته می شود و فراخوانی آن باعث می شود بخشی از فضای منطقی روی تراشه مصرف شود، این دقیقا مفهوم #soft_processor است.
✅ در واقع هدف Xilinx از معرفی میکروبلیز قرار دادن یک کنترلر در کنار تراشه های FPGA با صرف کمترین هزینه بوده است و با این کار انعطاف پذیری بالایی را برای طراحان فراهم آورده است.
✅ میکروبلیز کاملا قابل سفارشی سازی است و می توان آن را متناسب با هر نیازی پیکره بندی کرد، محدودیتی در رابطه با تعداد میکروبلیزهای قابل فراخوانی در تراشه وجود ندارد و کاربر می تواند به راحتی چندین پروسسور را با ویژگی های مختلف در کد خود استفاده کند و در کنار سایر مدارات درون FPGA از آنها به بهترین شکل استفاده کند.
@Hexalinx
#PYNQ
#Python
#Essentials
✅ چگونه یک طراح نرم افزار کارش را با FPGA ها شروع کند؟
در نگاه اول به نظر می رسد، شما باید در یک زمان، تمام مفاهیم جدید، سخت افزار جدید و محیط توسعه جدید را مدیریت کنید. در حالت کلی تمامی مدارک، مستندات و مثال های آموزشی در این حوزه توسط مهندسین الکترونیک برای مهندسان الکترونیک ایجاد شده اند و این به مهندسان نرم افزار کمک نمی کند. این دقیقا نکته ایست که توجه شرکت Digilent را به خودش جلب کرد. بورد آموزشیPYNQ-Z1 برای حل این مشکل به افراد برنامه نویس اجازه می دهد به آرامی در انتهای کم عمق استخر شنا کنند، و کم کم به سمت مسائل پیچیده تر بروند.
اجرای کدها و کار با بورد در هر محیطی امکان پذیر است اما پیشنهاد خود سازندگان استفاده از Ubuntu است. به این ترتیب کار شروع می شود و شما به عنوان یک مهندس نرم افزار با اجرای کدهای پایتون یکسری فیدبک مثبت دریافت می کننید. کم کم همان طور که شما کد پایتون را اجرا می کنید، متوجه خواهید شد که تراشه Xilinx ZYNQ یک تراشه کاملا سازمان یافته است و به مرور نحوه اجرای کد روی آن را درک می کنید. البته اشتباه نکنید، شما در نهایت باید دست به کار شوید و به سطوح پایین تر طراحی بروید و مهارت کافی در بکاگیری مجموعه ابزارهای ارائه شده برای توسعه FPGA را بدست بیاورید. اما شما تنها پس از رسیدن به برخی از موفقیت ها و درک مفاهیم، شروع خواهید کرد. پس وقت را تلف نکنید و شروع کنید.
@Hexalinx
#Python
#Essentials
✅ چگونه یک طراح نرم افزار کارش را با FPGA ها شروع کند؟
در نگاه اول به نظر می رسد، شما باید در یک زمان، تمام مفاهیم جدید، سخت افزار جدید و محیط توسعه جدید را مدیریت کنید. در حالت کلی تمامی مدارک، مستندات و مثال های آموزشی در این حوزه توسط مهندسین الکترونیک برای مهندسان الکترونیک ایجاد شده اند و این به مهندسان نرم افزار کمک نمی کند. این دقیقا نکته ایست که توجه شرکت Digilent را به خودش جلب کرد. بورد آموزشیPYNQ-Z1 برای حل این مشکل به افراد برنامه نویس اجازه می دهد به آرامی در انتهای کم عمق استخر شنا کنند، و کم کم به سمت مسائل پیچیده تر بروند.
اجرای کدها و کار با بورد در هر محیطی امکان پذیر است اما پیشنهاد خود سازندگان استفاده از Ubuntu است. به این ترتیب کار شروع می شود و شما به عنوان یک مهندس نرم افزار با اجرای کدهای پایتون یکسری فیدبک مثبت دریافت می کننید. کم کم همان طور که شما کد پایتون را اجرا می کنید، متوجه خواهید شد که تراشه Xilinx ZYNQ یک تراشه کاملا سازمان یافته است و به مرور نحوه اجرای کد روی آن را درک می کنید. البته اشتباه نکنید، شما در نهایت باید دست به کار شوید و به سطوح پایین تر طراحی بروید و مهارت کافی در بکاگیری مجموعه ابزارهای ارائه شده برای توسعه FPGA را بدست بیاورید. اما شما تنها پس از رسیدن به برخی از موفقیت ها و درک مفاهیم، شروع خواهید کرد. پس وقت را تلف نکنید و شروع کنید.
@Hexalinx
#BLOCK_RAM
#DISTRIBUTED_RAM
✅ مفهوم حافظه در تراشه های FPGA و کاربردهای آن
✳️ مقاله کوتاهی که در ادامه خدمتتان ارائه می شود، حاصل مطالعات و تجربیات شخصی خودم است و بر اساس اطلاعاتی که شرکت Xilinx برای تراشه هایش ارائه کرده، تدوین شده است. این مقاله به هیچ وجه کپی برداری نیست و برای اولین بار در این کانال منتشر می شود. البته واضح است که این مطلب کوتاه تنها بخشی از اطلاعات موجود درباره حافظه ها و نحوه بکارگیری آن ها را بیان می کند. ما به صورت مدوام این مقاله را بروز رسانی می کنیم و محتویات پیشرفته و کاربردی تری به آن اضافه می کنیم. در ادامه می توانید اولین بخش از این مقاله را مطالعه بفرمایید.
اما پیش از شروع مقاله لازم می دانم این مطلب را یادآوری کنم که لازمه یک طراحی خوب، داشتن شناخت کافی از منابع سخت افزاری درون تراشه FPGA است، که البته کافی نیست، اما اصل اول است. 👇👇👇
@Hexalinx
#DISTRIBUTED_RAM
✅ مفهوم حافظه در تراشه های FPGA و کاربردهای آن
✳️ مقاله کوتاهی که در ادامه خدمتتان ارائه می شود، حاصل مطالعات و تجربیات شخصی خودم است و بر اساس اطلاعاتی که شرکت Xilinx برای تراشه هایش ارائه کرده، تدوین شده است. این مقاله به هیچ وجه کپی برداری نیست و برای اولین بار در این کانال منتشر می شود. البته واضح است که این مطلب کوتاه تنها بخشی از اطلاعات موجود درباره حافظه ها و نحوه بکارگیری آن ها را بیان می کند. ما به صورت مدوام این مقاله را بروز رسانی می کنیم و محتویات پیشرفته و کاربردی تری به آن اضافه می کنیم. در ادامه می توانید اولین بخش از این مقاله را مطالعه بفرمایید.
اما پیش از شروع مقاله لازم می دانم این مطلب را یادآوری کنم که لازمه یک طراحی خوب، داشتن شناخت کافی از منابع سخت افزاری درون تراشه FPGA است، که البته کافی نیست، اما اصل اول است. 👇👇👇
@Hexalinx
#Essentials
🔖 حافظه ها درون FPGA به دو دسته تقسیم می شوند
✳️ حافظه های بلوکی یا #BLOCK_RAM
✳️ حافظه های توزیع شده یا #DISTRIBUTED_RAM
حافظه های بلوکی یکسری منابع اختصاصی سخت افزاری هستند و به صورت بلوک هایی با ظرفیت ذخیره سازی چند ده کیلوبیت روی تراشه های FPGA قابل فراخوانی هستد. ظرفیت هر هر کدام از بلوک های حافظه در تراشه های سری 7 ، 36 کیلوبیت است که البته به صورت بلوک های حافظه 18 کیلو بیتی نیز قابل استفاده هستند. با توجه به سری ساخت FPGA و نوع آن بلوک های حافظه ممکن است ظرفیت پایین تری داشته باشند، به عنوان مثال برای تراشه های Spartan 6 ظرفیت ذخیره سازی یک بلوک حافظه 18 کیلوبیت است و در صورت نیاز می تواند به صورت بلوک 9 کیلوبیتی نیز استفاده شود.
این که چه تعداد از این بلوک های حافظه در هر FPGA وجود دارد، بستگی به نوع FPGA دارد به عنوان مثال کوچکترین تراشه FPGA سری 7 یعنی تراشه XC7S6 از خانواده Spartan 7 تنها 5 بلوک حافظه 36 کیلوبیتی دارد در حالی تراشه های قدرتمند Virtex 7 می توانند تا 1880 بلوک حافظه داشته باشند، یعنی ظرفیت ذخیره سازی حدود 68 مگابیت !!! تعداد بلوک های حافظه برای تراشه های خانواده Spartan 6 بین 12 تا 268 بلوک 16 کیلوبیتی متغیر است.
زمانی که هر کدام از این بلوک های حافظه توسط طراح فراخوانی شوند، فارغ از اینکه چه مقدار اطلاعات قرار است در آنها ذخیره شود، کل فضای ذخیره سازی آن بلوک مورد استفاده قرار می گیرد، به عنوان مثال فرض کنید قرار است 128 کلمه 16 بیتی را درون یک حافظه بلوکی روی یکی از تراشه های Spartan 6 پیاده سازی کنیم. یعنی 2048 بیت یا 2 کیلو بیت، در صورت استفاده از یک حافظه 9 کیلوبیتی درون تراشه واضح است که 7 کیلوبیت آن بدون استفاده باقی می ماند و این یک اشکال در طراحی است. اجازه بدهید بحث در رابطه با حافظه های بلوکی را در همینجا متوقف کنیم و کمی به حافظه های توزیع شده بپردازیم.
برخلاف حافظه های بلوکی حافظه های توزیع شده، منابع اختصاصی سخت افزاری نیستند، و با استفاده از LUT ها ساخته می شوند و همانطور که از نامشان می توان تشخیص داد، می توانند در هر جایی از تراشه پیاده سازی شوند. این حافظه ها قابلیت ذخیره سازی تعداد محدودی بیت دارند و در مواردی که نیاز به ذخیره سازی حجم کمی از داده ها وجود داشته باشد، مورد استفاده قرار می گیرند، ظرفیت ذخیره سازی این حافظه ها ثابت نیست و می تواند کاملا سفارشی شده باشند، برای تراشه XC7S6 که پیشتر به عنوان کوچکترین تراشه خانواده Spartan 7 معرفی شد، کل ظرفیت حافظه های توزیع شده برابر با 70 کیلو بیت است. این عدد برای بزرگترین تراشه خانواده Virtex 7 حدود 21 مگابیت است.
در حالت کلی LUT ها برای انجام روابط منطقی بکار گرفته می شوند اما LUT های درون اسلایس های کامل #SLICEM که از قبل آنها را می شناسیم، می توانند به صورت حافظه پیکره بندی شوند، هر LUT در تراشه های سری 7 قابلیت ذخیره سازی حداکثر 64 بیت داده را دارد و با اتصال آبشاری LUT های درون یک اسلایس امکان افزایش این ظرفیت تا 256 بیت نیز وجود دارد.
البته با استفاده از چندین اسلایس و بخشی از منایع دیگر FPGA امکان افزایش ظرفیت حافظه های توزیع شده وجود دارد و به عنوان مثال با استفاده از 16 اسلایس می توان یک حافظه 16 بیتی با عمق ذخیره سازی 64 کلمه تولید کرد یعنی یک حافظه 1 کیلوبیتی.
❗️ حالا سوال اینجاست؟ برای طراحی از کدام حافظه استفاده کنیم، یا سوال مهمتر اینکه چگونه این حافظه ها را در کدهای خودمون فراخوانی کنیم و چگونه پیکره بندی آن ها را تنظیم کنیم.
پاسخ به این سوال بسیار ساده است، فقط باید درست کد نویسی انجام دهیم، ابزار سنتز به صورت اتوماتیک حافظه ها را به منابع درون تراشه نگاشت می کند. یعنی ابزار سنتز با توجه به ظرفیت حافظه بهترین جایگاه برای پیاده سازی را انتخاب می کند. می توان این مساله را با چند مثال توضیح داد اما قبل از ارائه مثال بهتر است با پیکره بندی های مختلف حافظه ها نیز آشنا بشویم.
✳️ حافظه های بلوکی و حافظه های توزیع شده می توانند به اشکال مختلفی پیکره بندی شوند. اگر علاقه مندید با آن ها آشنا بشوید، به شما توصیه می کنم مقاله بعدی ما در رابطه با حافظه ها که چند روز دیگر منتشر می شود را مطالعه کنید.
@Hexalinx
🔖 حافظه ها درون FPGA به دو دسته تقسیم می شوند
✳️ حافظه های بلوکی یا #BLOCK_RAM
✳️ حافظه های توزیع شده یا #DISTRIBUTED_RAM
حافظه های بلوکی یکسری منابع اختصاصی سخت افزاری هستند و به صورت بلوک هایی با ظرفیت ذخیره سازی چند ده کیلوبیت روی تراشه های FPGA قابل فراخوانی هستد. ظرفیت هر هر کدام از بلوک های حافظه در تراشه های سری 7 ، 36 کیلوبیت است که البته به صورت بلوک های حافظه 18 کیلو بیتی نیز قابل استفاده هستند. با توجه به سری ساخت FPGA و نوع آن بلوک های حافظه ممکن است ظرفیت پایین تری داشته باشند، به عنوان مثال برای تراشه های Spartan 6 ظرفیت ذخیره سازی یک بلوک حافظه 18 کیلوبیت است و در صورت نیاز می تواند به صورت بلوک 9 کیلوبیتی نیز استفاده شود.
این که چه تعداد از این بلوک های حافظه در هر FPGA وجود دارد، بستگی به نوع FPGA دارد به عنوان مثال کوچکترین تراشه FPGA سری 7 یعنی تراشه XC7S6 از خانواده Spartan 7 تنها 5 بلوک حافظه 36 کیلوبیتی دارد در حالی تراشه های قدرتمند Virtex 7 می توانند تا 1880 بلوک حافظه داشته باشند، یعنی ظرفیت ذخیره سازی حدود 68 مگابیت !!! تعداد بلوک های حافظه برای تراشه های خانواده Spartan 6 بین 12 تا 268 بلوک 16 کیلوبیتی متغیر است.
زمانی که هر کدام از این بلوک های حافظه توسط طراح فراخوانی شوند، فارغ از اینکه چه مقدار اطلاعات قرار است در آنها ذخیره شود، کل فضای ذخیره سازی آن بلوک مورد استفاده قرار می گیرد، به عنوان مثال فرض کنید قرار است 128 کلمه 16 بیتی را درون یک حافظه بلوکی روی یکی از تراشه های Spartan 6 پیاده سازی کنیم. یعنی 2048 بیت یا 2 کیلو بیت، در صورت استفاده از یک حافظه 9 کیلوبیتی درون تراشه واضح است که 7 کیلوبیت آن بدون استفاده باقی می ماند و این یک اشکال در طراحی است. اجازه بدهید بحث در رابطه با حافظه های بلوکی را در همینجا متوقف کنیم و کمی به حافظه های توزیع شده بپردازیم.
برخلاف حافظه های بلوکی حافظه های توزیع شده، منابع اختصاصی سخت افزاری نیستند، و با استفاده از LUT ها ساخته می شوند و همانطور که از نامشان می توان تشخیص داد، می توانند در هر جایی از تراشه پیاده سازی شوند. این حافظه ها قابلیت ذخیره سازی تعداد محدودی بیت دارند و در مواردی که نیاز به ذخیره سازی حجم کمی از داده ها وجود داشته باشد، مورد استفاده قرار می گیرند، ظرفیت ذخیره سازی این حافظه ها ثابت نیست و می تواند کاملا سفارشی شده باشند، برای تراشه XC7S6 که پیشتر به عنوان کوچکترین تراشه خانواده Spartan 7 معرفی شد، کل ظرفیت حافظه های توزیع شده برابر با 70 کیلو بیت است. این عدد برای بزرگترین تراشه خانواده Virtex 7 حدود 21 مگابیت است.
در حالت کلی LUT ها برای انجام روابط منطقی بکار گرفته می شوند اما LUT های درون اسلایس های کامل #SLICEM که از قبل آنها را می شناسیم، می توانند به صورت حافظه پیکره بندی شوند، هر LUT در تراشه های سری 7 قابلیت ذخیره سازی حداکثر 64 بیت داده را دارد و با اتصال آبشاری LUT های درون یک اسلایس امکان افزایش این ظرفیت تا 256 بیت نیز وجود دارد.
البته با استفاده از چندین اسلایس و بخشی از منایع دیگر FPGA امکان افزایش ظرفیت حافظه های توزیع شده وجود دارد و به عنوان مثال با استفاده از 16 اسلایس می توان یک حافظه 16 بیتی با عمق ذخیره سازی 64 کلمه تولید کرد یعنی یک حافظه 1 کیلوبیتی.
❗️ حالا سوال اینجاست؟ برای طراحی از کدام حافظه استفاده کنیم، یا سوال مهمتر اینکه چگونه این حافظه ها را در کدهای خودمون فراخوانی کنیم و چگونه پیکره بندی آن ها را تنظیم کنیم.
پاسخ به این سوال بسیار ساده است، فقط باید درست کد نویسی انجام دهیم، ابزار سنتز به صورت اتوماتیک حافظه ها را به منابع درون تراشه نگاشت می کند. یعنی ابزار سنتز با توجه به ظرفیت حافظه بهترین جایگاه برای پیاده سازی را انتخاب می کند. می توان این مساله را با چند مثال توضیح داد اما قبل از ارائه مثال بهتر است با پیکره بندی های مختلف حافظه ها نیز آشنا بشویم.
✳️ حافظه های بلوکی و حافظه های توزیع شده می توانند به اشکال مختلفی پیکره بندی شوند. اگر علاقه مندید با آن ها آشنا بشوید، به شما توصیه می کنم مقاله بعدی ما در رابطه با حافظه ها که چند روز دیگر منتشر می شود را مطالعه کنید.
@Hexalinx
#ZYNQ_MPSoC
#MACHINE_LEARNING
#Advanced
✅ معرفی کتاب
✳️ این کتاب با استفاده از تراشه های قدرتمند Zynq Ultrascal plus به آموزش نحوه پیادی سازی الگوریتم های پردازشی می پردازد و پیاده سازی پروژه ها را روی بورد #PYNQ انجام می دهد. هدف اصلی کتاب نشان دادن توانایی این تراشه ها در پیاده سازی الگوریتم های بینایی ماشین و هوش مصنوعی است، که امروزه بسیار مورد توجه محققان و دانشجویان تحصیلات تکمیلی قرار دارد، لینک دانلود مستقیم این کتاب در پست بعدی قرار داده شده است. 👇👇
@Hexalinx
#MACHINE_LEARNING
#Advanced
✅ معرفی کتاب
✳️ این کتاب با استفاده از تراشه های قدرتمند Zynq Ultrascal plus به آموزش نحوه پیادی سازی الگوریتم های پردازشی می پردازد و پیاده سازی پروژه ها را روی بورد #PYNQ انجام می دهد. هدف اصلی کتاب نشان دادن توانایی این تراشه ها در پیاده سازی الگوریتم های بینایی ماشین و هوش مصنوعی است، که امروزه بسیار مورد توجه محققان و دانشجویان تحصیلات تکمیلی قرار دارد، لینک دانلود مستقیم این کتاب در پست بعدی قرار داده شده است. 👇👇
@Hexalinx