HEXALINX
527 subscribers
147 photos
4 files
74 links
این آغاز ماجراجویی شماست...
آموزش رایگان برنامه نویسی FPGA و ZYNQ و ابزارهای طراحی XILINX

پرسش و پاسخ:
@ask_linx

آدرس سایت:
hexalinx.com

آدرس کانال آپارات:
aparat.com/hexalinx

آدرس اینستاگرام:
insatagram.com/hexalinx_go
Download Telegram
#Advanced
#U_BOOT, #SSBL

مفهوم U-Boot

✳️ مکروپروسسورها و پردازنده‌ها تنها قادرند کدهایی را که درون حافظه داخلی آن‌ها قرار دارد، فراخوانی و اجرا کنند. در حالی که سیستم عامل ها غالبا داخل منابع ذخیره سازی پرظرفیت‌تر نظیر هارد دیسک، حافظه‌های فلش و یا سایر قطعات جانبی ذخیره ساز دائمی قرار می‌گیرند. وقتی که یک پردازنده روشن می‌شود، در درون حافظه داخلیش هیچ سیستم عاملی وجود ندارد، بنابر این نیاز به نوع خاصی از نرم افزار داریم تا سیستم عامل را از جایی مثل حافظه فلش به درون حافطه پردازنده منتقل کند، این نرم افزار معمولا یک قطعه کد کوچک است که بوت لودر (bootloader) نامیده می‌شود.
در واقع U-boot یک اسکریپت کوتاه open-source است که به عنوان bootloader در جوامع لینوکسی به شکلی فراگیر مورد استفاده قرار می‌گیرد. این بوت لودر توسط Xilinx برای پردازنده‌های Microblaze و Zynq-7000 APSoC مورد استفاده قرار می‌گیرد.
در حقیقت bootloader بخشی از سخت افزار را به صورت اولیه راه اندازی می‌کند، در حالی که کرنل لینوکس هنوز لزوما راه اندازی نشده است

@Hexalinx
#Advanced,#Vitis

پلتفرم نرم افزاری Vitis

از Verilog و VHDL متنفرید، شما تنها نیستید. بالاخره بعد از درخواست‌های فراوان توسعه دهندگان، شرکت Xilinx یک پلتفرم برنامه‌نویسی رایگان برای پیکره‌بندی تراشه‌های FPGA‌ معرفی کرد.
شرکت Xilinx در جریان کنفرانس سالیانه توسعه دهندگان XDF2019 از پلتفرم جدید نرم افزاری خودش تحت عنوان Vitis رو نمایی کرد. پلتفرمی که پنج سال برای توسعه‌ آن زمان صرف شده و به طراحان اجازه می‌دهد به صورت مستقیم با استفاده از ابزارها و زبان‌های توسعه مرسوم همچون پایتون و ++C روی معماری‌ سخت افزاری تراشه‌های FPGA طراحی کنند. هدف Vitis تسریع فرایند طراحی و بهینه سازی الگوریتم‌ها شتاب دهی در طیف وسیعی از کاربردها همچون هوش مصنوعی وپردازش تصویردر خودروهای بدون سرنشین است.
اگر تا کنون برای شتاب دهی الگوریتم‌ها از ASIC استفاده می‌کردید وقت آن رسیده که یک تغییر نگرش در نحوه توسعه سیستم‌هایتان ایجاد کنید، با هر بار اعمال تغییرات روی الگوریتم باید یک ASIC جدید سفارش داده شود. این در حالیست که به راحتی می‌توانید برای منظور خود یک FPGA را با استفاده از زبان‌های سطح بالا توسعه و پیکره‌بندی کنید.

@Hexalinx
#Advanced
#DCI
امپدانس قابل کنترل دیجیتال

✳️ خاتمه دادن یک خط انتقال با استفاده از یک مقاومت برای مدل کردن خصوصیات مصرف کننده در انتهای خط اصطلاحا تِرمینیشن (Termination) نامیده می‌شود. به بیان دقیق‌تر ترمینیشن روشی برای کاهش یا از بین بردن انعکاس‌های ناخواسته در یک خط انتقال است. این انعکاس‌ها باعث ایجاد اثرات ناخواسته و نویز در سیستم می‌شود. از نقطه نظر سخت‌افزاری استفاده از ترمینیشن مناسب یک ملاحظه مهم در طراحی محسوب می‌شود. با بزرگتر شدن تراشه‌های FPGA‌ و بالاتر رفتن سرعت کلاک سیستم، ساخت بوردهای مدارهای چاپی روز به روز سخت تر می‌شود. طراحان سخت افزار می‌دانند که کنترل تمامیت یک سیگنال در زمان انتشار یا همان Signal Integrity بخش مهمی است و حتما باید مورد توجه قرار بگیرد. مفهوم امپدانس قابل کنترل دیجیتال یا DCI دقیقا برای پاسخ گویی به چنین نیازی طراحی شده است. به بیان ساده‌تر DCI جایگزینی برای مقاومت‌های ترمینیشن خارجی است که معمولا در اتصال اینترفیس‌های تفاضلی به FPGA مورد نیاز است. مسئولیت بکارگیری این ویژگی برعهده مهندس طراح نرم افزار است.

@Hexalinx
#Advanced
#Vitis

وقتی که کار با Vitis را آغاز می‌کنیم، اولین چیزی که توجه‌ ما را جلب می‌کند، جایگزین شدن SDSoC ، SDAccel و حتی SDK با مجموعه نرم افزاری Vitis است. به عنوان یک ابزار یکپارچه، در واقع قرار است Vitis برای توسعه یک سیستم نهفته دقیقاً مشابه SDK و یا شتاب دهی یک اپلیکیشن کاملا مشابه SDSoC و SDAccel بکارگرفته شود.

ادامه مطلب ...

@Hexalinx
#Advanced
#clock_monitoring

حتی بعد از دستیابی به زمانبندی مطلوب و برآورده شدن الزامات طراحی و همینطور حصول اطمینان از انتقال مناسب کلاک بین نواحی مختلف کلاک، بازهم برای به آرامش رسیدن کمی زود است. در برخی از کاربردهای خاص که به لحاظ نوع ماموریت نیاز به قابلیت اطمینان و کنترل پذیری بسیار بالا دارند، لازم است از صحت عملکرد کلاک در زمان اجرا نیز اطمینان حاصل شود. یعنی برای جلوگیری از بروز هرگونه نقصان در عملکرد سیستم مجبوریم نوعی فرایند تست و بازبینی دائمی روی طرح در نظر بگیریم.

ادامه مطلب ...

@Hexalinx
#Advanced
#HLS

وقتی صحبت از بهینه سازی کدهای HLS به میان می‌آید، موارد و جنبه‌های زیادی برای بهینه سازی وجود دارد. یکی از این جنبه‌ها کنترل نحوه اجرای حلقه هاست. البته باید توجه داشته باشیم که تنها با باز کردن و یا ترکیب حلقه‌ها ممکن است به نتایج مطلوب نرسیم. پاپلاین کردن محاسبات، پایپلاین کردن نحوه خواندن و نوشتن داده‌ها درون حافظه و چندین و چند مفهوم دیگر برای رسیدن به بهینه ترین پاسخ باید مد نظر قرار داده شود. در این مقاله قصد داریم به نحوه کار با حلقه‌ها در HLS و روش‌های بهینه سازی آن‌ها بپردازیم.

ادامه مطلب ...

@Hexalinx
#Advanced
#HLS

در مقاله کار با حلقه‌ها در HLS با چگونگی بهینه سازی حلقه‌ها در کدهای HLS آشنا شدیم. روش یکپارچه کردن، ترکیب کردن و باز کردن حلقه‌ها را روی کدهای عملی بررسی کردیم. در این مطلب قصد داریم، چگونگی بهینه سازی به کمک analysis perspective در محیط Vivado-HLS را با هم مرور کنیم. بنابراین در انتهای این مقاله قادر خواهیم بود با تحلیل نتایج پیاده‌سازی بهترین الگو برای اعمال تغییرات روی ساختار کدها را شناسایی کنیم و در می‌یابیم که چه شکل از بهینه سازی در افزایش کارایی کدهای HLS تاثیرگذارتر است.

کار با حلقه‌ها در HLS >>
بهینه سازی به کمک Analysis Perspective >>

@Hexalinx
#Advanced
#Retiming, #Vivado, #STA

آنالیز زمانبندی ایستا پیش از هر چیزی نیازمند این است که ما با ابزارهای این کار و مفاهیم اولیه آن آشنا باشیم. در سایه‌ آشنایی با تعاریف می‌توانیم بهترین روش ممکن برای دستیابی به کارایی مطلوب را انتخاب و به موثرترین شکل به کار بگیریم.
اصلاح زمانبندی مسیرها در FPGA، یا retiming یک تکنیک بهینه سازی ترتیبی برای جابجایی رجیسترها در طول منابع منطقی است. این کار با هدف بهبود کارایی طرح بدون بروز تداخل روی رفتار ورودی و خروجی‌های مدارات منطقی انجام می‌شود.
در این آموزش از پایگاه دانش هزالینکس قصد داریم شما را با مفهوم retiming و شیوه استفاده از تکنیک retiming در ابزار سنتز Vivado آشنا کنیم.

تکنیک retiming در ابزار سنتز Vivado >>

@Hexalinx
#Advanced
#HLS, #DDR

فرض کنید قصد داریم یک پروژه در Vivado تولید کنیم که شامل بخش‌های زیر است.
✳️ یک Memory Interface Generator
✳️ یک JTAG to AXI IP Core
✳️ یک AXI Interconnect
✳️ یک VIO
✳️ یک ILA
❗️و یک بلوک سفارشی و بسیار جالب به نام ...... ؟
حدس می زنید با این پروژه و بلوک سفارشی که خدمتتان معرفی می‌ کنم قرار است چه کا ر بکنیم؟ اگر کمی تجربه داشته باشید بلافاصله واژه DDR تو ذهنتون جرقه می زنه و با خودتون فکر می کنید، احتمالاً با این پروژه قرار است در حافظه DDR بنویسم و برای ذخیره دیتا ازش استفاده کنیم. نمی خواهم نا امیدتون کنم ولی خب اگر جواب اینقدر سر راست و خلاصه بود لازم نبود این همه مقدمه براتون بنویسم. امیدوارم کمی حس کنجکاویتون رو تحریک کرده باشم.
بهتون پیشنهاد می‌کنم نگاهی به آخرین مقاله ما در سایت بیاندازید، و با ما همراه شوید.

ادامه مطلب >>

@Hexalinx
#Advanced
#Linux

مراحل بوت لینوکس

• بوت مرحله صفر (#Boot_ROM)
• بوت لودر مرحله اول یا #FSBL
• بوت لودر مرحله دوم یا #SSBL

فایل‌های مورد نیاز برای بوت لینوکس به این شرح هستند.

❗️FSBL (First Stage Boot Loader)
❗️BIT File (Optional FPGA Configuration File)
❗️SSBL (Second Stage Boot Loader)
❗️Devicetree.dtb (Device Tree)
❗️Ramdisk.image.gz (Root File System)
❗️zImage (Compressed Linux Kernel)

👇👇👇👇👇👇👇👇

@Hexalinx