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

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

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

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

آدرس اینستاگرام:
insatagram.com/hexalinx_go
Download Telegram
#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
#Intermediate
#AXI, #ZYNQ

این روزها، تقریباً تمام IP های Xilinx از اینترفیس AXI استفاده می‌کنند. تراشه‌های ZYNQ و ZYNQ MP و حتی پردازنده‌های نرم افزاری میکروبلیز و پردازنده‌های قدرتمند و جدید Versal همگی از اینترفیس های AXI استفاده می‌کنند. پر واضح است که اینترفیس‌های AXI بخشی جدایی ناپذیر از هر طراحی جدید در تراشه‌های شرکت Xilinx هستند. درک صحیح مبانی AXI کمک فراوانی به افزایش بهره وری طراح در زمان طراحی و حتی خطایابی سیستم می‌کند.

در این آموزش از پایگاه دانش هگزالینکس که اولین آموزش از سری‌ آموزش‌های AXI است، مبانی و مفاهیم اینترفیس‌های AXI3/AXI4 را در تراشه‌های Xilinx خدمتتان ارائه می‌کنیم. در اولین گام محبوریم از بخش‌های کمی خسته کننده، نه چندان جذاب و البته بسیار مهم شروع کنیم. بسیاری از بخش‌های مهمتر، در قسمت‌های بعدی این سری آموزشی پوشش داده می‌شود، ولی در صورتی که به این توضیحات اولیه تسلط پیدا نکنید، در درک آن‌ها با مشکل روبرو می‌شوید.


ادامه مطلب >>

@Hexalinx
#Essentials
#FIXED_POINT

یک کلمه دودویی به طور ذاتی هیچ معنی و مفهومی ندارد. اما بیشتر افراد تمایل دارند که آن را (حداقل در نگاه اول) به عنوان اعداد صحیح مثبت یا اعداد طبیعی در نظر بگیرند. اما در واقع معنی و مفهوم یک عدد دودویی N بیتی کاملاً به تفسیری که می‌شود، بستگی دارد. حال با این نگاه و اینکه هر مجموعه‌ای را می‌توان با عدد N بیتی نمایش داد، ما قصد داریم یک زیر مجموعه از اعداد گویا را نمایش دهیم. اعداد گویا مجموعه‌ای از اعداد هستند که بصورت کسری (a/b) نشان داده می‌شوند. زیر مجموعه‌ای که ما به دنبال آن هستیم، زیر مجموعه‌ای است که در آن عدد b توانی از ۲ است.
علاوه بر این، محدودیت‌های دیگری نیز در نمایش این زیر مجموعه مورد نظرمان در نظر می‌گیریم. اول اینکه هر کدام از اعضای این زیر مجموعه باید تعداد بیت‌های دودویی یکسانی داشته باشند. دوم اینکه نقطه اعشار آن‌ها در موقعیت ثابتی قرار داشته باشد، یعنی نقطه ممیز در یک مکان ثابت باشد. دقیقاً به همین دلیل، به این نمایش از اعداد، اصطلاحاً ممیز ثابت گفته می‌شود.

ادامه مطلب >>

@Hexalinx
#Essentials
#FIXED_POINT

محاسبات ممیز ثابت در برخی از کتب آموزشی تحت عنوان محاسبات با دقت محدود مخاطب قرار داده می‌شود. یعنی تحت هیچ شرایطی دقت محاسبات از مقدار مشخصی که از ابتدا نیز قابل محاسبه است، بیشتر نخواهد بود.
فرایند ممیز ثابت کردن یک الگوریتم، فرایند پیجیده‌ای نیست اما قطعاً فرایند زمانبری است. زیرا باید به اندازه کافی وقت برای تنظیم پارامترها اختصاص داده شود. اما کدام پارامترها؟
مهمترین پارامترهایی که در محاسبات با دقت محدود وجود دارند، عبارتند از:
❗️دقت
❗️صحت
❗️دامنه
❗️تفکیک پذیری
❗️رنج دینامیکی
این پارامترها با توجه به فرمت ممیز ثابت انتخابی، تعیین می‌شوند. اگر علاقمند به آشنایی با این پارامترها هستید با ما همراه شوید.

ادامه مطلب >>

@Hexalinx
#Advanced
#HLS, #DDR

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

ادامه مطلب >>

@Hexalinx
#Essentials
#FIXED_POINT

ما در زندگی خودمان همواره با اعداد حقیقی سر و کار داریم. اعدادی که بخش اعشاری دارند. اغلب سیستم‌های مدرن دیجیتال امروزی قادر به پیروی از اصول ما هستند. اصولی که ما آن را به عنوان نمایش ممیز شناور می‌شناسیم. اما نمایش ممیز شناور در کنار دقت بالا، دارای معایبی است که باعث می‌شود کمتر در طراحی‌ها مورد استفاده قرار بگیرد.
1️⃣ پیاده‌‌سازی این روش، مشکل است.
2️⃣ منابع سخت‌‌افزاری زیادی را مصرف می‌‌کند.
3️⃣ و سرعت مدار را کاهش دهد.
در نقطه مقابل نمایش ممیز ثابت قرار دارد که منابع سخت‌‌افزاری کمتری را نسبت به روش ممیز شناور اشغال می‌‌کند و سرعت بسیار بیشتری دارد.

❗️اعداد ممیز ثابت همان اعداد اعشاری ممیز شناور هستند که با استفاده از یک فاکتور معین مقیاس بندی می‌شوند. از این رو محاسبات ممیز ثابت از قوانین معمول پیروی نمی کنند و قوانین خاصی بر آن ها حاکم است. در سری آموزشی اعداد اعشاری ممیز ثابت سعی کردیم کلیه اصول و قوانین مورد نیاز یک طراح برای استفاده از اعداد ممیژ ثابت را در اختیار شما قرار دهیم. برای دسترسی به بخش‌های اول تا سوم این سری آموزشی از لینک‌های زیر استفاده کنید.

@Hexalinx
#Essentials
#TCL
معرفی زبان TCL

❗️زبان برنامه نویسی TCL یک زبان سطح بالا و دینامیک است که با هدف ساده سازی توصیف فرایند ساخته شده و به صورت گسترده در ISE‌ و به ویژه Vivado مورد استفاده قرار می‌گیرد. واژه TCL محفف Tool Command Language است.
❗️زبان TCL یک زبان استاندارد در صنعت نیمه هادی است و برای ساختن API ها و قیود پیاده سازی SDC مورد استفاده قرار می گیرد. استاندارد SDC توسط شرکت Synopsys معرفی و پشتیبانی می‌شود و برای توصیف قیود پیاده سازی در طراحی‌های FPGA استفاده می‌شود. ابزار Vivado نسخه سفارشی شده SDC را تحت عنوان XDC برای توصیف قیود مورد استفاده قرار می دهد. در واقع XDC جایگزین UCF در ISE شده است

@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
مراحل بوت سیستم عامل لینوکس روی ZYNQ 7000

0️⃣ مرحله صفر: در مرحله صفر بلافاصله بعد از روشن شدن تراشه ZYNQ یک ریست سرتاسری تولید می‌شود. این ریست باعث می‌شود یک کد از پیش نوشته شده و آماده به نام boot ROM روی پردازنده ARM درون ZYNQ اجرا می‌شود (در تراشه‌هایی که دو هسته پردازشی ARM دارند این کد روی پردازنده اول اجرا می‌شود). قطعه کد boot ROM توسط کاربران قابل ویرایش نیست و فرایند راه اندازی اولیه سیستم را مدیریت می‌کند. نوع بوت و حافظه‌ جانبی که قرار است در فرایند بوت مورد استفاده قرار بگیرد نیز در این مرحله مشخص می‌شود. در آخرین گام، FSBL از حافظه انتخاب شده لود می‌شود و به درون حافظه داخلی تراشه یعنی OCM کپی می‌شود.

1️⃣ مرحله یک: در مرحله یک FSBL اجرا می‌شود و ادامه فرایند بوت را بر عهده می‌گیرد. وظیفه اولیه FSBL راه اندازی سخت افزار است. کلاک سیستم، ورودی ‌خروجی های مالتی پلکس شده (MIO) و حافظه DDR متصل به تراشه در این مرحله توسط FSBL راه اندازی می‌شوند. در حالت کلی FSBL می‌تواند توسط کاربر سفارشی سازی شود و اینکه دقیقاً چه بخشی از سخت افزار راه اندازی می‌شود، قابل کنترل است. این بخش‌های سخت افزاری حتماً باید پیش از شروع مرحله دو راه اندازی شوند. وظیفه ثانویه FSBL لود SSBL است در انتهای این مرحله انجام می‌شود.

2️⃣ مرحله دو: در این مرحله یک قطعه کد کوچک به نام U-Boot لود و اجرا می‌شود. در واقع U-Boot محبوبترین SSBL مورد استفاده در جوامع لینوکسی است. معمولاً U-Boot به همراه کرنل لینوکس و سایر فایل‌های مورد نیاز برای بوت سیستم عامل در یکی از حافظه‌های خارجی مثلاً SD Card یا NAND FLASH ذخیره می‌شوند. وظیفه U-Boot کپی کردن Kernel ، Root File System و Device Tree روی حافظه DDR و سپس اجرای آن است.

@Hexalinx
#Intermediate
#ChipScope

ابزار ChipScope Pro یک پکیج کامل از قابلیت‌های دیباگ و خطایابی را در قالب چند ابزار کمکی همچون Core Inserter و ChipScope Pro Analyzer و همینطور چند هسته نرم افزاری نظیر ILA ، ICON‌ و VIO در محیط‌های گرافیکی کاربرپسند در اختیار طراح قرار می‌دهد. در حالت کلی استفاده از آن به دو گام نیاز دارد.

❗️در گام اول نوع عملیات دیباگ و سیگنال‌هایی که باید مانیتور شوند مشخص می‌شوند.
❗️در گام دوم با استفاده از ChipScope Pro Analyzer نمایش و آنالیز سیگنال‌ها انجام می‌شود.


در بخش اول این آموزش در مورد ویژگی‌های این ابزار و اهمیت استفاده از آن در دیباگ FPGA توضیحاتی ارائه کردیم.

@Hexalinx
#Intermediate
#CDC, #Clock_Domain_Crossing

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

ادامه مطلب >>

@Hexalinx
#Advanced
#VIVADO_HLS

✳️ قسمت اول از ویدئوهای آموزشی Vivado HLS با موضوع شروع کار با ابزار Vivado HLS

👈 در این ویدئوی کوتاه ابتدا با هم فایل‌های یکی از مثال‌های آماده Xilinx‌ را مرور می‌کنیم و از همین مثال برای نمایش قابلیت‌های ابزار Vivado HLS استفاده می‌کنیم. بعد از اون با نحوه ساخت، سنتز و پیاده سازی پروژه در Vivado HLS آشنا می‌شویم و در نهایت نحوه ارزیابی صحت عملکرد کدهای C و همینطور سنتز طرح C به طرح RTL را یاد می‌گیرم. در آخرین بخش ویدئو هم اینترفیس Tcl ابزار Vivado HLS و نحوه استفاده از آن را معرفی می‌کنیم.

🎥 مشاهده ویدئو >>

@Hexalinx
#Advanced
#VIVADO_HLS


✳️ قسمت دوم از ویدئوهای آموزشی Vivado HLS با موضوع ارزیابی فانکشنالیتی طرح در Vivado HLS

👈 در این ویدئوی کوتاه شیوه ارزیابی طرح در Vivado HLS را با هم مرور می‌کنیم و برای ارزیابی عملکرد طرح C و طرح RTL از تست بنچ C استفاده می‌کنیم. یکی از مهمترین ویژگی‌های‌ تست بنچ‌های C امکان استفاده از آن‌ها برای ارزیابی کدهای RTL تولیدی بعد از سنتز C و مشاهده نتایج آن در سیمولاتورهای مرسوم RTL همچون Vivado Simulator است. در این ویدئو شیوه استفاده از دیباگر Vivado HLS را فرا می‌گیریم.

🎥 مشاهده ویدئو >>


@Hexalinx
#Advanced
#VIVADO_HLS


✳️ قسمت سوم از ویدئوهای آموزشی Vivado HLS با موضوع پکیج کردن HLS IP برای Vivado IP Catalog

👈 برای اینکه بتوانیم از طرح Vivado HLS در کنار کدهای HDL و یا سایر IP های از پیش طراحی شده استفاده کنیم، نیاز داریم تا این IP ها را پکیج کنیم و در محیط‌های طراحی دیگر فراخوانی کنیم. از نسخه 2015.4 به بعد در Vivado HLS تنها امکان انتقال IP به محیط‌های Vivado Design Suite و System Generator for DSP وجود دارد و امکان استفاده از HLS IP در محیط ISE یاXPS وجود ندارد. در این ویدئو شیوه پکیج کردن HLS IP برای Vivado IP Catalog را باهم مرور خواهیم کرد. این HLS IP می‌تواند در محیط Vivado IP Integrator فراخوانی و استفاده شود.

🎥 مشاهده ویدئو >>

@Hexalinx
#Advanced
#VIVADO_HLS

✳️ قسمت چهارم از ویدئوهای آموزشی Vivado HLS با موضوع ساخت HLS IP برای System Generator

👈 برای اینکه بتوانیم از طرح Vivado HLS در کنار بلوک‌های آماده و یا سایر IP های از پیش طراحی شده استفاده کنیم، نیاز داریم تا این IP ها را پکیج کنیم و در محیط‌های طراحی دیگر فراخوانی کنیم. از نسخه 2015.4 به بعد در Vivado HLS تنها امکان انتقال IP به محیط‌های Vivado Design Suite و System Generator for DSP وجود دارد و امکان استفاده از HLS IP در محیط ISE یا XPS وجود ندارد.
در این ویدئو شیوه ساخت HLS IP برای System Generator for DSP را باهم مرور خواهیم کرد. این HLS IP می‌تواند به صورت یک بلوک فراخوانی و استفاده شود.

🎥 مشاهده ویدئو »

@Hexalinx
#Advanced
#VIVADO_HLS

✳️ قسمت پنجم از ویدئوهای آموزشی Vivado HLS با موضوع استفاده از اینترفیس Tcl در Vivado HLS

👈 زبان برنامه نویسی Tcl یک زبان سطح بالا و دینامیک است که با هدف ساده سازی توصیف فرایند ساخته شده و به صورت گسترده در ISE و به ویژه Vivado مورد استفاده قرار می‌گیرد. واژه TCL محفف Tool Command Language است.
👈 در Vivado HLS هم برای بالا بردن سطح اتوماسیون طراحی و همینطور مدیریت بهتر سورس فایل‌های پروژه از Tcl استفاده می‌شود. تمامی مثال‌های آماده Xilinx و همینطور آموزش‌هایی که برای Vivado HLS طراحی و منتشر شده است با استفاده از اسکریپتی‌هایی که به زبان Tcl نوشته شده‌اند، مدیریت می‌شوند. یادگیری شیوه استفاده از این فایل‌ها و نحوه ویرایش آن‌ها می‌تواند دروازه ورود شما به دنیای هزاران پروژه آماده در github باشد.
👈 ما در این ویدئو ابتدا روش ساخت و سفارشی سازی یک فایل Tcl را به شما آموزش می‌دهیم و در ادامه نحوه استفاده از اینترفیس Tcl برای اجرای Vivado HLS را با هم مرور خواهیم کرد.

🎥 مشاهده ویدئو »
📁 دانلود فایل‌ها »

@Hexalinx
#Advanced
#AXI, #AXIVIP,


✳️ معرفی AXI VIP و کاربردهای آن

راه حل پیشنهادی Xilinx برای تسهیل فرایند شبیه سازی اینترفیس‌های AXI4 و AXI4-Lite استفاده از یک IP Core رایگان به نام AXI Verification IP به اختصار AXI VIP است که به سادگی از طریق مخزن IP های Xilinx در مجموعه نرم افزاری Vivado قابل فراخوانی است.

در این ویدئوی آموزشی کوتاه ، مروری اجمالی بر مهمترین ویژگی‌های این IP و مزایای آن خواهیم داشت. برای دسترسی به مقاله و ویدئوی آموزشی از لینک زیر استفاده کنید.

🎥 مشاهده ویدئو »


@Hexalinx