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

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

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

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

آدرس اینستاگرام:
insatagram.com/hexalinx_go
Download Telegram
#FPGA_FLOW
🔖 بخش اول

❗️ گام اول، طراحی دیجیتال عملکرد مورد انتظار سیستم توسط مهندس طراح است، برای طراحی مناسب دو دسته اطلاعات نیاز داریم، 1- دانش های آکادمیک طراحی دیجیتال و 2- شناخت کافی از معماری و قابلیت های تراشه هدف. علاوه بر این الزامات پروژه و محدودیت های آن نیز باید در نظر گرفته شود، در عمل این گام مهمترین گام طراحی است در حالی کمتر به آن توجه می شود.


❗️ گام دوم کد نویسی به زبان VHDL و یا Verilog است، در این گام طراح علاوه بر تسلط به زبان توصیف سخت افزاری باید با اصول استفاده از IP Core ها، نحوه به اشتراک گذاری منابع، نحوه فراخوانی عناصر پایه موجود در تراشه نظیر بلوک های ضرب کننده و بافرهای کلاک و غیره آشنا باشد، وجه تمایز یک برنامه نویس خوب با برنامه نویس معمولی دقیقا در این گام نمایان می شود. این گام عملا دومین گام مهم در طراحی است.


❗️ گام سوم به کدنویسی و طراحی testbench اختصاص دارد. در طراحی های دیجیتال پیچیده، طراحی testbench به اندازه طراحی خود سیستم پرچالش و حائز اهمیت است، به صورت پیش فرض به محض اینکه حرف از تست مدار به میان می آید، فکر می کنیم وظیفه ما اثبات عملکرد صحیح مدار است، در حالی که این باور کاملا اشتباه است، در حقیقت ما با نوشتن testbench و انجام شبیه سازی های سخت گیرانه به دنبال پیدا کردن خطاهای احتمالی سیستم هستیم و تنها زمانی می توانیم از صحت کارکرد سیستم اطمینان حاصل کنیم که هیچ خطایی پیدا نکنیم. فراموش نکنیم توانمندی در نوشتن testbench خوب یک هنر است. این قضیه به حدی مهم است که زبان هایی همچون System Verilog و System C به طور اختصاصی برای این منظور توسعه داده شده اند.

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

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

در بخش دوم مقاله که فردا منتشر می شود گام های بعدی توضیح داده می شود، از همراهی شما سپاسگزاریم

@Hexalinx
#FPGA_FLOW
🔖 بخش دوم

❗️گام ششم، پیاده سازی طرح توسط ابزارهای پیاده سازی است، ابزارهای پیاده سازی منحصرا توسط شرکت های سازنده تراشه های FPGA تولید می شوند. این ابزارها با توجه به تکنولوژی ساخت تراشه و یکسری الگوریتم هوشمند اقدام به پیاده سازی مدارات دیجتال روی تراشه هدف می کنند. فرایند پیاده سازی در سه فاز انجام می شود، در فاز اول نت لیست های تولید شده در گام چهارم در غالب یک نت لیست واحد با هم ترکیب می شوند، سپس در فاز دوم عمل نگاشت این نت لیست به منابع داخل تراشه انجام می شود و در فاز سوم جانمایی مناسب منابع روی تراشه و مسیریابی بین آن ها انجام می شود. تعیین موقعیت پورت های سیستم روی پین های تراشه نیز در همین گام انجام می شود. همچون مرحله سنتز هر سه فاز پیاده سازی به صورت اتوماتیک توسط ابزار پیاده سازی اجرا می شود، اما یک تفاوت بسیار مهم وجود دارد. پیاده سازی مدارات روی تراشه با توجه به یکسری استراتژی صورت می پذیرد، که جزئیات این استراتژی ها توسط طراح قابل کنترل است. در اکثر موارد پیاده سازی با تنظیمات پیش فرض با موفقیت همراه است، اما در صورتی که نتایج مطلوب حاصل نشود، کار کمی سخت می شود. طراحان حرفه ای در گام پیاده سازی با تعریف یکسری قیود ابزار پیاده سازی را به صورت سفارشی راهنمایی می کنند، تا در نهایت بهترین جانمایی و مسیریابی ممکن حاصل شود. دو پارامتر مهم برای سنجش موفقیت یا عدم موفقیت در گام پیاده سازی وجود دارد، که اولی دستیابی به فرکانس کاری مطلوب و دومی به حداقل رساندن منابع مصرفی روی تراشه است. به طور کلی گستره وسیعی از تنطیمات باید در این گام انجام شود، و طراح باید با دقت عملکرد و کارایی مورد نظرش را برای ابزار توصیف کند تا خروجی کار مطلوب باشد، این گام سومین گام مهم در طراحی است.

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

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

❗️اگر خوش شانس باشیم و همه فرضیات طراحی را درست اجرا کرده باشیم، نیازی به اجرای گام نهم نداریم، در پروژه های کوچک که تعداد فانکشن های سیستم محدود است و یک عملکرد نه چندان پیچیده مورد نیاز است، می توانیم به خوش شانسی خودمان امیدورام باشیم، اما اگر فقط کمی تعداد ورودی خروجی ها و سیگنال های کنترلی سیستم افزایش پیدا کند، بروز خطا کاملا اجتناب ناپذیر می شود، به این ترتیب برای پیدا کردن منشا خطا چاره ای به جز اجرای گام نهم نداریم، در گام نهم طراح با توجه به شناخت خودش از سیستم اقدام به خطایابی سخت افزاری می کند، یعنی با بررسی و مانیتور کردن مدارات پیاده سازی شده روی FPGA به دنبال دلیل بروز خطا می گردد، موفقیت در این مرحله به معنای اتمام کامل کار طراحی و پیاده سازی یک پروژه است. دو IP Core معروف ILA و VIO به عنوان مهمترین ابزارهای خطایابی Xilinx به شکل گسترده ای در این گام مورد استفاده قرار می گیرند.

@Hexalinx
#FPGA, #MICROBLAZE, @SISOOG

✳️ ما طی یکسال گذشته در هگزالینکس به شکل تخصصی در رابطه با تراشه‌های قابل پیکره بندی شرکت Xilinx مطلب زیادی منتشر کردیم. وقتی صحبت از تراشه‌های قابل پیکره بندی می‌کنیم، یعنی هم تراشه‌های FPGA‌ و هم تراشه ZYNQ و هم به امید خدا در آینده نزدیک تراشه‌های Versal که آخرین محصول سیلیکونی شرکت Xilinx هستند.

✳️ مطمئناً می‌دونید دانش‌ها و چالش‌هایی که در این حوزه باهاشون روبرو می‌شیم بسیار پر تعداد هستند و پوشش همگی اونها امکان پذیر نیست. قطعاً هیچ کسی در این دنیا وجود نداره که به تمامی جنبه‌ّهای سخت افزاری و نرم افزاری این تراشه‌ها مسلط باشه و معمولاً تیمی از مهندسان برای به سرانجام رساندن پروژه‌ها و ساخت محصولات با هم همکاری می‌کنند.

با این مقدمه قصد داریم تعدادی منبع آموزشی بسیار مفید را که به صورت رایگان و صد البته با صرف زمان بسیار زیادی به زبان فارسی تهیه شده، خدمتتون معرفی کنیم.

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

1️⃣ اولین آموزش که خیلی هم پایه‌ایی و با کیفیت تهیه شده مربوط به آموزش جامع FPGA هست که در بیست قسمت تهیه شده. این آموزش برای کسانی مناسب هست که هیچ آشنایی با FPGA ندارند و به دنبال تکمیل مهارت‌های خودشون به صورت پایه‌ایی هستند. البته از آنجایی که آموزش جامع هست هر چه به انتهای کار نزدیکتر بشید، پیچیدگی و عمق مطالب هم افزایش پیدا می‌کنه پس می‌تونید مطمئن باشید برای شما با هر سطح دانشی حتماً مطالب جدیدی وجود داره. می‌تونید با کلیک روی این لینک به صورت رایگان از مطالبش بهره مند بشید.
2️⃣ دومین آموزش هم مربوط به مایکروبلیز هست. این آموزش برای کسانی مفیده که واقعاً در ابتدای راه هستندو دوست دارند قبل از مطالعه متون سطح بالا کمی با الفبای پردازشگرهای نرم درون FPGA آشنا بشن. اگر اشتباه نکنم این آموزش متشکل از شش مقاله هست و با تمرکز بر روی بخش نرم افزاری و نحوه برنامه نویسی برای این Soft IP Core منتشر شده و شما می‌تونید از طریق این لینک به قسمت اول اون دسترسی پیدا کنید.

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

❤️ و پیشنهاد آخر، حتماً تو کانال تلگرامشون عضو بشید و با بازنشر مطالبشون به معرفی و حمایت از این رسانه خوب بپردازید.

@Hexalinx
#FPGA, #ARM, #DSP

✳️ چرا باید تا این حد زمان و هزینه صرف کنیم تا کار با FPGA ها را فرا بگیریم؟
✳️ واقعاً چرا باید به جای ARM و یا DSP کار با FPGA را یاد بگیریم؟

جواب بسیار کوتاه به این سوأل در علاقه و برنامه ریزی کاری شما نهفته است.

📌 اما بد نیست این را بدانید که ما در میانه راه یک انقلاب بزرگ به نام هوش مصنوعی در سال‌های آینده هستیم، راهی که در نهایت تمامی سرگرمی‌های امروز را به کارهای مهم همه روزه ما تبدیل خواهد کرد. گام نهادن در این راه بدون فراگیری دانش های FPGA ابتر خواهد بود.

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

@Hexalinx
#HLS, #FPGA

✳️ به شکل سنتی معمولا ً از زبان‌های HDL برای پیاده سازی طرح در سطح RTL استفاده می‌شود. با گذشت زمان‌، طراحی در سطوح انتزاعی بالاتر از سطح RTL و توصیف رفتار مدار به جای پیاده سازی جز به جز عملکرد آن و همینطور استفاده از بلوک‌های IP Core‌ که به صورت مدوام و بدون محدودیت قابل بکارگیری در طراحی‌های جدید را دارند، باعث سرعت بخشیدن و تسهیل روند طراحی شده‌اند.

با پیچیده تر شدن سیستم‌ها و افزایش‌ فشارهای ناشی از محدود شدن زمان‌های مجاز برای توسعه و ارائه محصول به بازار، توسعه دهندگان و تولیدکنندگان اصلی تراشه‌های FPGA را بر آن داشت تا به منظور کاهش زمان توسعه هر چه بیشتر به سمت استاندارد سازی و معرفی یک زنجیره ابزار نرم افزاری تر گام بردارند.

یکی از این تکنیک‌ها سنتز سطح بالا یا HLS نام دارد. سنتز سطح بالا را می‌توان به عنوان یک ابزار کارآمد با بهره وری قابل قبول برای طراحی سخت افزار در نظر گرفت. در حالت کلی در سنتز سطح بالا از سورس فایل‌های نوشته شده به زبان C و ++C برای تولید کدهای RTL استفاده می‌شود.

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

@Hexalinx