آموزش اِف‌پی‌جی‌اِی از صفر
3.37K subscribers
520 photos
14 videos
10 files
517 links
آموزش قدم به قدم طراحی دیجیتال به کمک FPGA

🌎 آموزشگاه فراد اندیش
www.FaradAndish.com
☎️ ۴۲۴۳۹۹۰۰
ایمیل سایت:
help@faradandish.com

📌 لینک اولین پست کانال:
https://t.me/fpga0/22
Download Telegram
🆔 @FPGA0
#برنامه_ویدئویی۲۲
🎓 پیاده‌سازی محاسبات اعشاری در FPGA

🎥 برنامه ویدئویی احمد ثقفی
🕘 زمان: ۱۲ دقیقه

📥 در سایت فراد اندیش ببینید 👇👇👇👇

🌎 http://bit.ly/ImplementDecimals
سوال:

1- کتابی به من معرفی کنید که جامع و شامل باشد هرچند لاتین باشد که اعتماد به نفس کار کردن را به من بدهد.
2- برای کسب درامد خوب و عالی از FPGA چه چیزهای را در ارتباط با آن باید خوب بلد باشیم. اگر کتابی هست معرفی کنید.
3- در صنایع نظامی از یک متخصص FPGA چه چیزهایی را میخواهند.

📝 جواب:

۱- متاسفانه من چنین کتابی را نمی‌شناسم و احتمال می‌دهم که وجود هم نداشته باشد. برای یادگیری و تسلط به این حوزه، نیاز است که موارد مختلفی را از کتاب‌ها و مستندات شرکت سازنده FPGA (مثلا Xilinx) مطالعه کنید و همچنین از تجربه‌ی افراد باسابقه در این زمینه استفاده کنید.

قبلاً چند کتاب را در کانال معرفی کرده‌ام که می‌توانید از آن‌ها استفاده کنید:

🌎 http://goo.gl/Qv9s1E

🌎 http://goo.gl/YD75W8

۲- برای کسب درآمد عالی در این زمینه، باید اولاً، پیاده‌سازی مدارات دیجیتال با FPGA را به خوبی یاد بگیرید و به آن مسلط شوید. یعنی به زبان VHDL یا Verilog کاملاً مسلط شوید و آن را درک کنید و همچنین به FPGA و نحوه بکارگیری مناسب و صحیح منابع موجود در آن مسلط شوید.

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

۳- در صنایع نظامی همه مواردی را که در بند ۲ اشاره کردم از شما انتظار دارند.

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

🆔 @FPGA0
⚡️عملیات ضرب در FPGA چگونه پیاده‌سازی می‌شود؟ (قسمت اول)

🔷 عملیات ضرب در الگوریتم‌‌های پردازش سیگنال بسیار پرکاربرد است.

🔷 عملیات‌های جمع، تفریق و ضرب در زبان VHDL به صورت تعریف شده هستند.

🔹یعنی برای پیاده‌‌سازی یک مدار جمع، تفریق یا ضرب نیازی نیست که خودتان مداری طراحی کنید.

🔷 بلکه فقط کافی است که در زبان VHDL، از عملگرهای + ، - و * استفاده کنید.

🔹 در این صورت، نرم‌‌افزار پیاده‌‌ساز، به صورت خودکار، مدار مناسبی را درون FPGA پیاده‌‌سازی می‌‌کند.

اما اگر عملگر ضرب (*) را در کدتان به کار ببرید، پیاده‌‌سازی ضرب‌‌کننده در مدار شما چگونه اتفاق می‌افتد؟

ادامه دارد...
🆔 @FPGA0
⚡️عملیات ضرب در FPGA چگونه پیاده‌سازی می‌شود؟ (قسمت دوم)

🔷 به صورت کلی، برای پیاده‌‌سازی مدارات دیجیتال در FPGA، از یکی از مهم‌‌ترین منابع سخت‌افزاری داخل FPGA، یعنی Look-Up Tableها (LUT‌ها) استفاده می‌‌شود.

🔷 بلوک‌های LUT، حافظه‌‌های کوچکی هستند که می‌توان هر مدار دیجیتالی را به کمک آن‌ها پیاده‌‌سازی کرد.

🔷 در عمل، پیاده‌‌سازی یک مدار دیجیتالی بزرگ به این صورت انجام می‌شود:

🔹مدار به بخش‌‌ها و توابع کوچکی تقسیم می‌شود.

🔹هر کدام از توابع کوچک، به کمک یک LUT پیاده‌‌سازی می‌شود.

🔹با به هم متصل کردن این LUTها، مدار اصلی تشکیل می‌شود.

🔷 موضوع پیاده‌‌سازی عمل ضرب در FPGA‌ها، کمی متفاوت از عمل جمع و تفریق است.

🔷 از آنجا که عملیات ضرب در پیاده‌‌سازی‌های دیجیتال بسیار پرکاربرد است، بلوک‌‌های سخت‌‌افزاری مخصوصی در FPGA وجود دارد که به طور خاص، عمل ضرب را انجام می‌دهند.

🔷 در FPGAهای شرکت Xilinx، به بلوک‌‌های سخت‌‌افزاری از پیش آماده شده برای پیاده‌سازی عملیات ضرب، اصطلاحاً بلوک DSP48 گفته می‌‌شود.

ادامه دارد...
🆔 @FPGA0
⚡️عملیات ضرب در FPGA چگونه پیاده‌سازی می‌شود؟ (قسمت سوم)

🔷 اگر در کد شما، عملگر ضرب استفاده شود، نرم‌‌افزار سنتز به صورت پیش‌‌فرض، آن را با استفاده از یک بلوک DSP48 (و نه با استفاده از LUTها)، پیاده‌‌سازی می‌‌کند.

🔷 مثال:
اگر در کد شما، عبارتی مانند A=B*C وجود داشته باشد، نرم‌‌افزار سنتز، آن را با استفاده از یک بلوک DSP48 پیاده‌سازی می‌کند.

🔷 همان‌طور که می‌‌دانیم، هر سخت‌‌افزار دیجیتالی (از جمله ضرب‌‌کننده‌ها) را می‌توانیم به کمک LUTها نیز پیاده‌‌سازی کنیم.

پس چرا نرم‌افزار سنتز، به صورت پیش‌فرض، به جای LUT‌ها، از بلوک‌‌های سخت‌‌افزاری DSP48 برای پیاده‌‌سازی ضرب‌‌کننده استفاده می‌‌کند؟

ادامه دارد...
🆔 @FPGA0
⚡️عملیات ضرب در FPGA چگونه پیاده‌سازی می‌شود؟ (قسمت چهارم)

🔷 استفاده از بلوک DSP48، که مخصوص پیاده‌‌سازی ضرب است، مزایای مختلفی نسبت به استفاده از LUTها (از منابع عمومی FPGA) دارد:

1⃣ ضرب‌کننده‌ای که با بلوک DSP48 پیاده‌سازی می‌شود نسبت به ضرب‌کننده‌ای که با بلوک LUT پیاده‌سازی می‌شود سرعت بسیار بیش‌تری دارد.

🔹بنابراین، مدار شما می‌تواند با سرعت بیش‌تری کار کند.

2⃣ در صورت استفاده از بلوک DSP48 می‌توانید منابع عمومی کمتری از FPGA را مصرف کنید.

🔹فرض کنید در مدار شما، تعداد زیادی ضرب‌‌کننده وجود داشته باشد...

🔹اگر برای پیاده‌‌سازی همه‌‌ی این ضرب‌‌کننده‌‌ها از بلوک‌‌های LUT استفاده شود، تعداد زیادی از بلوک‌‌های LUT موجود در FPGA (که در واقع باید برای پیاده‌‌سازی بخش‌‌های دیگر مدار استفاده شوند) هدر می‌روند و فضای FPGA به سرعت اشغال می‌شود.

3⃣ بلوک‌‌های DSP48 نسبت به حالتی که شما بخواهید برای عملیات ضرب از تعدادی بلوک LUT استفاده کنید، توان مصرفی کمتری دارند.

به این دلایل، نرم‌افزار به صورت پیش‌فرض به جای LUT‌ها از بلوک‌‌های DSP48 استفاده می‌کند.

بلوک DSP48، علاوه بر ضرب ساده، عملگرهای دیگری را نیز می‌تواند پیاده‌سازی کند که آن‌ها را به همراه مثال، در ویدئوی "پشت پرده عملیات ضرب در FPGA" توضیح داده‌ام:

🌎http://bit.ly/MultiplicationDSP48

🆔 @FPGA0
🆔 @FPGA0
#برنامه_ویدئویی۲۸
🎓 پشت پرده عملیات ضرب در FPGA

🎥 برنامه ویدئویی احمد ثقفی
🕘 زمان: ۲۲ دقیقه

📥 در سایت فراد اندیش ببینید 👇👇👇👇

🌎 http://bit.ly/MultiplicationDSP48
سوال:

من مطالب داخل سایتتون رو دنبال می‌کنم. می‌خواستم بدونم نیازه دوره آنلاین مقدماتی رو شرکت کنم؟ یا بهتره فقط دوره‌ی آنلاین پردازش سیگنال با FPGA رو ثبت‌نام کنم؟

📝 جواب:

در حال حاضر، دو دوره‌ی آنلاین اصلی در آموزشگاه فراداندیش برگزار می‌شود. در مورد این دوره‌ها لطفاً به نکات زیر توجه کنید:

🔵 دوره‌ی آنلاین "طراحی دیجیتال با FPGA" یک دوره‌ی مقدماتی نیست؛ بلکه یک دوره‌ی آموزشی کامل است که از پایه، تمام موارد لازم برای پیاده‌سازی انواع مدارات دیجیتال را در آن می‌آموزید. پیش‌نیاز این دوره، فقط آشنایی عمومی با مدارات منطقی است.

🌎 https://faradandish.com/product/online-fpga-design/

✳️ دوره‌ی آنلاین "پردازش سیگنال با FPGA" یک دوره تکمیلی برای یادگیری مهارت پیاده‌سازی الگوریتم‌های پردازش سیگنال با FPGA است. پیش‌نیاز این دوره، آشنایی نسبی با زبان VHDL و FPGA است.

🌎 https://faradandish.com/onlinefpgaprocessing/

🔹 اگر شما آشنایی نسبی با زبان VHDL و خود FPGA دارید، شرکت در دوره‌ی آنلاین پردازش سیگنال با FPGA می‌تواند یک قدم بسیار بزرگ برای تحول در تحصیل و شغل شما باشد.

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

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

🆔 @FPGA0
📚 این کتاب می‌تواند به عنوان مرجع شما در بکارگیری زبان VHDL به کار برود.

🔹 بر خلاف بسیاری از کتاب‌های مشابه، مثال‌های این کتاب با هدف سنتز شدن و پیاده‌سازی روی FPGA تهیه شده‌اند.

🔹 مسایل مربوط به طراحی دیجیتال، تا حد زیادی در کنار آموزش زبان VHDL مطرح شده است.

🔹 این کتاب شامل تعداد زیادی مثال کامل است که می‌توانید آنها را برای درک بهتر مطالب تحلیل و سپس پیاده‌سازی کنید.

🔹 اگر در حال یادگیری زبان VHDL هستید، پیشنهاد می‌کنم حتما این کتاب را دانلود کنید و از آن به عنوان مرجع در زمان یادگیری و پس از آن استفاده کنید.

احمد ثقفی

🆔 @FPGA0
🆔 @FPGA0

📚 عنوان: Circuit Design with VHDL

👤 نویسنده: Volnei A. Pedroni
📅 سال انتشار: 2004
🖨 ناشر: Volnei A. Pedroni

📥 لینک دانلود: http://bit.ly/VHDLbook
📽 آیا این سوالات در مورد دوره‌های آنلاین فراد اندیش برای شما هم وجود دارد؟

🔹 من نمی‌توانم در ساعت خاصی آنلاین شوم. چطور می‌توانم از دوره‌های آنلاین استفاده کنم؟

🔹 اگر سوالی در مورد درس‌ها داشتم چطور آن را مطرح کنم؟

🔹 تا چه مدت به ویدئوها دسترسی دارم؟

🔹آیا ویدئوها قایل دانلود هم هستند؟

اگر تمام یا بعضی از این موارد، سوال شما هم هست، پیشنهاد می‌کنم ویدئوی جدیدی را که در همین زمینه ضبط کرده‌ام مشاهده کنید 👇

🆔 @FPGA0
سوال:

من در حال یادگیری میکروام و یکم سردرگمم که تمرکزمو بزارم رو کدوم. بعداز یادگیری اونا آیا fpga یاد بگیرم؟؟ اصلا بازارش چجوریه؟؟ کجا میشه برا کار تبلیغش کرد؟؟ چجوری میشه رفت تو بازارش؟؟ میکروها رو میشه با خیلی روشها درآمدزایی کرد ولی این یکی یکم گیج کنندس چون زبان پروگرام کردنشم فرق داره.

📝 جواب:

همان‌طور که در برنامه‌ی "FPGA چیست؟" توضیح دادم، داستان FPGA با میکرو کاملاً متفاوت است؛ در کار با میکروکنترلرها، شما برای یک CPU "برنامه‌نویسی" می‌کنید ولی در کار با FPGA، شما از ابتدا یک سخت‌افزار جدید طراحی می‌کنید.

🌎 http://bit.ly/What-is-FPGA-1

🌎 http://bit.ly/What-is-FPGA-2

با توجه به خصوصیات ویژه‌ای که FPGAها دارند، حوزه‌ی کاربردشان بسیار وسیع است؛ در ویدئوی "کاربرد FPGA و آینده‌ی آن در ایران"، به کاربردهای FPGA اشاره کرده‌ام:

🌎 http://bit.ly/The-Future-of-FPGA

شما اگر علاقمند باشید، می‌توانید حتی هر دو زمینه را با هم پیش ببرید؛ چون همان‌طور که گفتم، این دو موضوع ارتباطی با هم ندارند.

در مورد بازار کار FPGA در ایران، در ویدئوی "کاربرد FPGA و آینده‌ی آن در ایران"، توضیحات زیادی داده‌ام، اما باز هم در اینجا به شما می‌گویم که در صورتی که به این حوزه کمی مسلط شوید، به راحتی می‌توانید شغل مناسبی پیدا کنید و اگر در این حوزه کاملاً متبحر شوید می‌توانید انتظار شغلی با درآمد بسیار بالا داشته باشید.

در حال حاضر، شرکت‌های بسیار زیادی در زمینه‌های کاری مرتبط با FPGA وجود دارند؛ این شرکت‌ها‌، به نیروی طراح و پیاده‌ساز FPGA نیاز دارند و به شدت به دنبال نیروهای متبحر در این زمینه هستند؛ نکته‌ی مهم این است که معمولاً به سختی می‌توانند نیروی مناسبی پیدا کنند!!

🆔 @FPGA0
🧠 دشمن شما مغز شما است...

"اگر دو سال پیش شروع کرده بودم، الان به نقطه‌ای که می‌خواستم رسیده بودم..."

"دوست برادرم دو سال پیش که هیچکس فکر این کارا نبود شروع کرد و موفق شد، ولی الان دیگه دیر شده..."

آیا این جملات برای شما هم آشنا هستند؟

واقعیتش را بخواهید، برای خود من بارها اتفاق افتاده که چنین جملاتی را در ذهنم مرور کنم.

همیشه یه کارهایی هست که فکر می‌کنیم اگر چند سال پیش انجام داده بودیم، الان به موفقیت‌های عجیب و غریبی رسیده بودیم، یا...

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

"الان دلار گرون شده، الان تحریم هستیم، الان کرونا اومده،" و هزارتا مشکل دیگر که خیال ما و مغز ما را راحت می‌کند که نیازی به حرکت و تلاش نیست؛ چون "دیگه فرصت تموم شده."

غافل از اینکه...

همین الان که ما در حال مرور این جملات (توجیهات) هستیم، عده‌ای بدون بهانه و غر زدن، به طور جدی در حال تلاش و برنامه‌ریزی برای یک کار واقعی هستند.

اینها همان‌هایی هستند که دو سال دیگر، قراره ما بهشون نگاه کنیم و بگیم:

"اینها دو سال پیش (یعنی امروز) که اوضاع کشور خوب بود، فکرشون کار کرد و موفق شدن. الان با این شرایط دیگه نمیشه هیچ کاری رو شروع کرد."

و این چرخه زمانی تلخ و خنده‌دار، قرار است هر چند وقت یک بار برای ما تکرار شود، مگر اینکه...

همین امروز، جلوی این فریب ذهنی را با قدرت بگیریم.

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

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

تنها راه مقابله با این ویژگی منفی مغز، خودآگاهی است...

یعنی اینکه بدانیم چنین مساله‌ای در مغز ما وجود دارد و آگاهانه با آن برخورد کنیم.

نزدیک‌ترین مثال از توجیهات این چنینی که مغز ما برای تعطیل کردن تمام کارهای مفید و البته انرژی‌بر برای ما ساخته است، همین موضوع کرونا است.

واقعا ما در مقابل این ویروس چه کاری می‌توانیم انجام دهیم؟

طبق اعلام سازمان بهداشت جهانی، کاری که ما باید انجام دهیم این است:

دوری از اجتماعات، شستن دست‌ها، تقویت سیستم ایمنی بدن.

همین.

پس واقعا دلیل این زمان زیادی که ما در شبکه‌های اجتماعی و اخبار رسمی به دنبال آمارها و اتفاقات و روش‌های جدید مقابله با ویروس هستیم چیست؟

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

آن افرادی که قرار است ما دو سال دیگر به پیشرفت و موقعیت‌شان که حاصل شروع فعالیت‌شان در یک "شرایط ایده‌آل" بوده است غبطه بخوریم، الان مشغول چه کاری هستند؟

به نظر من، آنها همان سه چهار توصیه بهداشتی اصلی را به دقت رعایت می‌کنند و گول رادیو، تلویزیون، روزنامه، شبکه‌های اجتماعی و البته بخش توجیه‌ساز مغزشان را نمی‌خورند.

ما هم می‌توانیم امروز همین کار را انجام دهیم.

کاری کنیم که دو سال دیگر، دیگران به ما بگویند: "خوش به حالت؛ خوب موقعی این کار را شروع کردی. الان دیگه نمیشه کار تو رو انجام داد."

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

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

آن بخشی است که نمی‌خواهد شما دچار زحمت و چالش شوید. دوست ندارید تمرکز کنید و انرژی مصرف کند. از تغییر شرایط فعلی شما خوشش نمی‌آید.

شما همواره باید به این بخش مغزتان توجه ویژه داشته باشید و به محض اینکه شروع به فعالیت کرد، تشخیص دهید و جلوی فعالیتش را بگیرید؛ یعنی به توجیهاتش توجه نکنید.

ورودی مغزتان را کنترل کنید، تمرکز کنید، به سمت کارهای انرژی‌بر که معمولا خوشایند هم نیستند حرکت کنید، و بعد از مدتی از نتیجه کارتان لذت ببرید.

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

🆔 @FPGA0
⚡️ برتری FPGAها نسبت به پردازنده‌ها (قسمت اول)

تراشه‌های FPGA، نسبت به پردازنده‌ها، سرعت بسیار بیشتری در انجام روتین‌های مختلف پردازشی و کنترلی دارند.

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

🔷 دو دلیل اصلی برای قابلیت انجام عملیات منطقی و ریاضی با سرعت زیاد در ‌FPGAها وجود دارد:

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

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

🔹 در واقع، در پردازنده‌ها یک هسته پردازشی (CPU) با دستورات مشخص وجود دارد و در هر لحظه، تنها یک دستور قابل اجرا است؛ بنابراین نمی‌توان دستورات را به صورت موازی اجرا کرد.

ادامه دارد...

🆔 @FPGA0
⚡️ برتری FPGAها نسبت به پردازنده‌ها (قسمت دوم)

در پست قبل، درباره‌ی دلیل اول برتری FPGAها نسبت به پردازنده‌ها صحبت کردیم؛ و اما دلیل دوم:

2⃣ در FPGAها، امکان طراحی سخت‌افزار اختصاصی برای هر الگوریتم خاص وجود دارد.

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

🔹 بنابراین، در پردازنده‌ها انعطاف زیادی در بهینه کردن زمان اجرای الگوریتم وجود ندارد.

🔹 اما در FPGA، طراح دیجیتال می‌تواند برای هر الگوریتم، مداری را از ابتدا طراحی و روی FPGA پیاده‌سازی کند؛ مداری که برای آن الگوریتم خاص، بهینه باشد.

جزئیات بیشتر درباره‌ی تفاوت FPGA و پردازنده‌ها را در لینک زیر بخوانید:

🌎http://bit.ly/FPGAvsCPU

🆔 @FPGA0