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

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

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

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

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

✳️ مطلبی که در ادامه مطالعه می‌کنید، قسمت سوم از سری آموزشی AXI است. در این قسمت قصد داریم با اضافه کردن AXI VIP به یک پروژه در Vivado فرایند شبیه سازی اینترفیس AXI4-Lite با AXI VIP را به طور کامل بررسی کنیم. در انتهای کار نیز نگاهی دقیق‌تر به سیگنال‌هایی که در تراکنش‌های AXI4-Lite شرکت دارند می‌اندازیم و شکل موج‌های قابل نمایش در پنجره Waveform را به دقت بررسی می‌کنیم.

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

👈 قسمت اول: مقدمه‌ای بر AXI »
👈 قسمت دوم: شبیه سازی با AXI Verification IP»
👈 قسمت سوم: شبیه سازی AXI4-Lite با AXI VIP»

@Hexalinx
#Advanced
#VIVADO_HLS

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

👈 در ویدئوهای آموزشی قبلی به شما مهمترین مراحلی که برای ساخت یک طرح در Vivado HLS و استفاده از آن به صورت یک IP نیاز بود آموزش دادیم. همینطور نحوه مدیریت فایل‌ها و شبیه سازی طرح آموزش داده شد. اکنون به مهمترین بخش این آموزش رسیدم و قصد داریم طرحمان را بهینه سازی کنیم.
❗️ بهترین راه برای یادگیری هر روش جدیدی ، ارائه مثال‌های کاربردی است. فیلتر FIR یکی از ماژول‌های بسیار پرکاربرد در الگوریتم‌های پردازشی است. پیاده سازی این فیلتر به صورت کاملاً استاندارد در زبان C کار نسبتاً ساده‌ای است. در این آموزش ابتدا کدهای C یک فیلتر FIR استاندارد را بررسی می‌کنیم و در نهایت جنبه‌های مختلف بهینه سازی و قابلیت‌های آنالیز در Vivado HLS را به کمک این مثال توضیح می‌دهیم.

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

@Hexalinx
#PETALINUX, #LINUX

✳️ وقتی اولین بار در مورد پتالینوکس (PetaLinux) شنیدم، اعتراف می‌کنم، نسبت به قابلیت‌های آن خوش بین نبودم. من یک پیش زمینه کامل از نحوه توسعه سیستم‌های لینوکس نهفته داشتم و پروژه‌های متعددی را با یاکتو (Yocto) انجام داده بودم. پروژه‌هایی که در راستای تجمیع لینوکس روی پلتفرم‌های SoC متفاوت بوده است.
❗️پاراگراف بالا بخشی از نظرات یک توسعه دهنده سیستم‌های نهفته در رابطه با اولین تجربه کاریش با پتالینوکس بعد از سال‌ها کارها با یاکتو است.

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

مطالعه متن کامل مقاله >>

@Hexalinx
#FILTER
#Essentials

✳️ به طور کلی فیلترها دارای چهار نوع اصلی هستند که در ادامه به شما معرفی می‌کنم:

1️⃣ فیلترهای پایین گذر یا low-pass filters
2️⃣ فیلترهای بالا گذر یا high-pass filters
3️⃣ فیلترهای میان گذر یا band-pass filters
4️⃣ فیلترهای میان نگذر باریک یا band-stop filter یا notch filters

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

مطالعه متن کامل مقاله >>

@Hexalinx
#Advanced
#VIVADO_HLS

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

👈 یک طراحی در Vivado HLS زمانی کامل می‌شود که ملاحظات لازم برای تبادل داده بین طرح و سایر ماژول‌ها در یک سیستم کامل شود. یک HLS IP باید بتواند به خوبی داده‌های ورودی را بدون از دست رفتن آن‌ها دریافت کند و با یک هندشیک مناسب خروجی‌ها را به ماژول‌های مصرف کننده تحویل دهد. از آن جایی که یکی از مهمترین کاربردهای Vivado HLS طراحی ماژول‌های شتاب دهنده در سیستم‌های مبتنی بر پردازنده است (سیستم‌های مبتنی بر Zynq و Microblaze) ، از این رو تعیین اینترفیس AXI برای تسهیل تبادل داده بین ماژول و پردازنده بسیار مهم است. در Vivado HLS تعیین اینترفیس‌ برای آرگومان‌های ورودی و خروجی با استفاده از دایرکتیوها و پراگماها انجام می‌شود و کاربر نیازی به طراحی اینترفیس‌ها به صورت دستی ندارد (برخلاف HDL)

👈 در این ویدئو قصد داریم فرایند تعیین اینترفیس‌ AXI4 برای طرح Vivado HLS را با جزئیات کامل بررسی کنیم و شما را با مفاهیم مهمی همچون سنتز اینترفیس و پروتکل‌های ورودی خروجی آشنا کنیم.

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

@Hexalinx
#VIVADO_HLS
#Advanced

✳️ اینبار برای آموزش Vivado HLS به سراغ یک پروژه عملی رفتیم.

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

مطالعه متن کامل مقاله >>

@Hexalinx
#FIR, #FILTER, #SYSGEN
#Basic

✳️ فرض کنیم به تازگی مشغول کار در شرکتی شده‌اید که کار اصلی آن پیاده سازی الگوریتم‌های پردازش سیگنال است. شرکت در حال کار روی فیلترهای دیجیتال است و تصمیم دارد در محصول جدیدش فیلترهای آنالوگ قدیمی را با فیلترهای دیجیتال جدید جایگزین کند. هدف از این جایگزینی هم بهبود عملکرد سیستم و کاهش هزینه تمام شده محصول است. این جایگزینی مزایای رقابتی قابل ملاحظه‌ای نیز به همراه دارد و احتمالاً باعث محبوبیت مضاعف این محصول جدید در بازار می‌شود.

✳️ شرکت برای عملیاتی کردن این فیلتر تصمیم گرفته است از تراشه FPGA برای پیاده سازی استفاده کند و مدیرتان از شما خواسته ‌است مسئولیت پیاده سازی این فیلتر را بر عهده بگیرید. مدیرتان با آگاهی از این موضوع که شما به اندازه کافی به نرم افزار Matlab مسلط هستید و تجربه کار با ابزار Simulink را دارید، یک مدل اولیه به صوت زیر در اختیار شما قرار داده است و انتظار دارد بر اساس این تعریف اولیه کارتان را شروع کنید و به نحو مطلوب به پایان برسانید.

❗️حالا سؤال اینجاست اگر شما واقعاً در چنین موقعیتی قرار بگیرید، از کجا شروع می‌کنید؟

مطالعه ادامه مطلب >>

@Hexalinx
bandpass_filter.rar
95.1 KB
فایل‌های مربوط به پروژه برای عزیزانی که از نسخه‌های قدیمی تر استفاده میکنن
#VIVADO_HLS
#Advanced

✳️ در قسمت اول سری دو قسمتی «نکات و تکنیک‌های طراحی با Vivado HLS » روش مدل سازی و پیاده سازی رابطه دما و مقاومت در سیستم‌های صنعتی را مرور کردیم. همانطور که وعده داده بودیم. در قسمت دوم قصد داریم برای اولین بار مفاهیم ممیز ثابت و کتابخانه‌های Arbiterary Precison را خدمت شما معرفی کنیم.

کتابخانه‌های Arbitrary Precision برای تمامی زبان‌های قابل پشتیبانی در Vivado HLS یعنی C و ++C و System C قابل استفاده هستند. با این کتابخانه‌ها تعریف متغیرهای ممیز ثابت علامت دار یا بدون علامت با طول بیت ۵۱۲ یا حتی ۱۰۲۴ بیت امکان پذیر است.
👈 نحوه استفاده از این کتابخانه‌ها در قالب یک فیلتر بسیار متدوال به نام فیلتر میانگین گیر متحرک ارئه شده است.

مطالعه ادامه مطلب >>

@Hexalinx