آموزش اِف‌پی‌جی‌اِی از صفر
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
📣 فقط تا ساعت ۲۳:۵۹ دقیقه امشب...

❇️ برای استفاده از پیشنهادات ویژه شب یلدا روی لینک زیر کلیک کنید:

🌎 https://faradandish.com/yalda-offer

🆔 @FPGA0
❇️ یک بلوک سخت‌افزاری بسیار پرکاربرد در FPGAهای شرکت Xilinx وجود دارد به اسم DSP48.

🔷 این همان بلوکی است که اکثر پیاده‌سازان دیجیتال با FPGA از جمله خود من و همکارانم به نام ضرب کننده می‌شناسیم.

🔷 مثلا می‌گوییم در FPGAی اسپارتان ۶ از نوع LX9 به تعداد ۱۶ عدد ضرب کننده وجود دارد.

🔷 اما نکته‌ای که وجود دارد این است که نام "ضرب کننده" برای این بلوک، کمی بی انصافی است❗️

⁉️ چرا؟

🔷 چون بلوک DSP48 قابلیت‌هایی بسیار فراتر از یک ضرب کننده عادی دارد.

🔶 اگر علاقمندید با ماهیت واقعی این بلوک و قابلیت‌های متنوع آن آشنا شوید، پیشنهاد می‌کنم ویدئوی امروز را همین حالا ببینید 👇

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

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

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

🌎 faradandish.com/پشت-پرده-عملیات-ضرب-در-fpga/
📣 تکرار ثبت‌نام ویژه شب یلدا

⚡️ برای اولین بار تا ۳۰% تخفیف!

❇️ روی لینک زیر کلیک کنید تا از سه پیشنهاد ویژه شب یلدا مطلع شوید:

🌎 https://faradandish.com/yalda-offer

🔺 فرصت استفاده از این پیشنهادها فقط تا روز جمعه ساعت ۲۳:۵۹ دقیقه است.

🆔 @FPGA0
❇️ وقتی در حال انجام یک پزوژه جدی هستید، زمان بسیار حیاتی است.

🔷 منظورم از پروژه جدی، پروژه‌ای است که دارای یک کارفرما است و زمان تحویل آن مشخص شده است.

🔷 در این حالت معمولا برای تاخیر در تحویل پروژه، جریمه‌هایی هم در نظر گرفته می‌شود.

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

🔷 بنابراین منطقی است که از هر روشی که باعث افزایش سرعت فرآینده پیاده‌سازی پروژه می‌شود استفاده کنیم.

🔷 یکی از این روش‌ها، پرهیز از انجام کارهای تکراری به کمک استفاده از مفهومی به نام IP Core است.

🔶 در ویدئوی امروز، در مورد این مفهوم و نحوه استفاده عملی از آن برای پیاده‌سازی در FPGA صحبت می‌کنم 👇

🆔 @FPGA0
🆔 @FPGA0
#برنامه_ویدئویی۱۶
🎓 معرفی IPها در نرم‌افزار ISE و نحوه بکارگیری آنها

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

📥 در سایت فراد اندیش ببینید 👇👇👇👇
http://goo.gl/6Ivw7p
⚡️چطور سرعت یک مدار دیجیتال را افزایش دهیم؟ (قسمت اول)

1⃣ روش اول: تغییر در الگوریتم

🔷 تغییر در الگوریتم پیاده‌سازی، بیشترین اثر را در افزایش سرعت مدار دارد.

2⃣ روش دوم: تغییر در معماری

پایپ لاین

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

موازی‌سازی

🔷 تکرار ماجول‌های مدار، برای انجام موازی و همزمان یک کار، توسط چند سخت‌افزار درون FPGA

ادامه دارد...
🆔 @FPGA0
⚡️چطور سرعت یک مدار دیجیتال را افزایش دهیم؟ (قسمت دوم)

3⃣ روش سوم: رعایت الگوی استاندارد کدنویسی

رعایت نکات مرتبط با IF و CASE

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

🔷 سعی کنید بیش از سه شرط تودرتو استفاده نکنید.

🔷 تا حد امکان، عبارت شرط را ساده کنید.

🔷 ارجاعاتی که نیاز نیست درون شرط باشند را در خارج از آن قرار دهید.

استفاده حداکثری از منابع اختصاصی FPGA به جای منابع عمومی (LUTها و فلیپ فلاپ‌ها)

پیاده‌سازی مدار به صورت کاملاً سنکرون

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

ادامه دارد...
🆔 @FPGA0
📚 اگر می‌خواهید به طور جدی‌تر در یادگیری و بکارگیری FPGA پیشرفت داشته باشید، خواندن این کتاب را به شما توصیه می‌کنم.

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

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

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

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

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

🆔 @FPGA0
🆔 @FPGA0

📚 عنوان: Advanced FPGA Design Architecture, Implementation, and Optimization

👤 نویسنده: Steve Kilts
📅 سال انتشار: 2007
🖨 ناشر: John Wiley & Sons

📥 لینک دانلود:
http://bit.ly/advancedFPGA
⚡️چطور سرعت یک مدار دیجیتال را افزایش دهیم؟(قسمت سوم)

4️⃣ روش چهارم: تنظیم قیود پیاده‌سازی

تنظیم قید Period

🔷 با تنظیم این قید به نرم افزار اطلاع می‌دهیم که قصد داریم چه فرکانسی به مدار اعمال کنیم.

🔷 برای مثال در صورتی که فرکانس اعمال شده به مدار 50MHz باشد، باید کد زیر را در فایل UCF وارد کنیم:

NET "Clock" TNM_NET = Clock;
TIMESPEC TS_Clock = PERIOD "Clock" 50 MHz HIGH 50% ;

در کد بالا فرض شده که نام پورت کلاک، Clock است.

🆔 @FPGA0
⚡️⚡️چطور سرعت یک مدار دیجیتال را افزایش دهیم؟⚡️⚡️

♨️ در فرآیند انجام یک پروژه حرفه‌ای گاهی از شما خواسته می‌شود که سرعت یک مدار دیجیتال را که خودتان یا شخص دیگری پیاده‌سازی کرده است، افرایش دهید؛

♨️ شما باید خودتان را برای چنین روزی آماده کنید.

♨️ در پست‌های قبلی کانال، به بررسی این موضوع پرداختیم و راه‌حل‌های زیر را ارائه دادیم:

1⃣ روش اول: تغییر در الگوریتم

2⃣ روش دوم: تغییر در معماری

روش پایپ لاین

روش موازی

3⃣ روش سوم: رعایت الگوی استاندارد کدنویسی

رعایت نکات فنی مرتبط با ساختارهای شرطی IF و CASE

استفاده حداکثری از منابع اختصاصی FPGA به جای منابع عمومی (LUTها)

پیاده‌سازی مدار به صورت کاملاً سنکرون

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

4⃣ روش چهارم: تنظیم قیود پیاده‌سازی

تنظیم قید Period

برای آشنایی بیشتر با تکنیک‌های افزایش سرعت مدارهای دیجیتال، می‌توانید به مقالات و ویدئوهای زیر از سایت فراداندیش مراجعه کنید:

چگونه سرعت مدار دیجیتال را افزایش دهیم؟:

http://bit.ly/SystemSpeed

الگوی استاندارد کدنویسی برای FPGA:

http://bit.ly/StandardCoding

افزایش سرعت مدار با تنظیم قیدها در ISE:

http://bit.ly/SetConstrains

🆔 @FPGA0
سوال:

من و دوستانم با این مشکل مواجه هستیم که هنوز به تسلط نسبی در میکروکنترلرها و زبان C نرسیدیم و از طرفی مشتاقیم برای یادگیری FPGA و VHDL. بعضی از افرادی که FPGA و VHDL کار کردن، هشدار میدادن که فراگیری همزمان VHDL و C در روند یادگیری و تسلط به VHDL مشکل ایجاد میکنه.

میخواستم با توجه به تجربه ای که در این زمینه دارید، در مورد این مشکل راهنمایی کنید. آیا همزمانی یادگیری زبان C و VHDL رو توصیه میکنید و مفید میدونید یا خیر؟️

📝 جواب:

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

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

دو موضوع توصیف سخت‌افزار دیجیتال به کمک زبان VHDL و نوشتن یک نرم‌افزار به کمک زبان C کاملا متفاوت هستند. برای آشنایی بیشتر با تفاوت‌های موجود بین FPGAها و پردازنده‌ها می‌توانید #برنامه_ویدئویی۳ را ببینید 👇

🌎 http://bit.ly/FPGAvsCPU

برای آشنایی اولیه با زبان توصیف سخت‌افزاری VHDL هم می‌توانید #برنامه_ویدئویی۱۰ و #برنامه_ویدئویی۱۲ و #برنامه_ویدئویی۱۳ و #برنامه_ویدئویی۱۵ را ببینید 👇

🌎 http://bit.ly/36rXYin

همچنین برای آشنایی با نحوه انتخاب تکنولوژی مناسب برای پیاده‌سازی یک پروژه، می‌توانید #برنامه_ویدئویی۸ را ببینید 👇

🌎 http://bit.ly/ChooseProperHW

در این برنامه می‌آموزید، چطور از بین تکنولوژی‌هایی مثل AVR ،ARM ،DSP و FPGA، یکی را برای استفاده در یک پروژه خاص انتخاب کنید.

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

🆔 @FPGA0
⚡️چگونه تکنولوژی مناسب برای پیاده‌سازی یک پروژه را انتخاب کنیم؟ (قسمت اول)

♨️ وقتی پروژه جدیدی به شما معرفی می‌شود، چطور از بین تکنولوژی‌هایی مثل AVR ،ARM ،DSP و FPGA یکی را انتخاب می‌کنید؟

معیارهای کلی انتخاب سخت‌افزار مناسب برای پیاده‌‌‌ساز‌‌ی:

🔹 هزینه‌‌‌ی کمتر‌‌

🔹 سرعت بیشتر

🔹 امکانات در دسترس

🔹 سهولت انجام پروژه

ادامه دارد...
🆔 @FPGA0
⚡️چگونه تکنولوژی مناسب برای پیاده‌سازی یک پروژه را انتخاب کنیم؟ (قسمت دوم)

برای پیاده‌سازی پروژه‌ی شما، پردازنده مناسب‌تر است یا FPGA؟

مزایای FPGA:

🔷 تراشه‌های FPGA، به دلیل قابلیت پیاده‌سازی موازی‌‌، سرعت بسیار زیاد‌‌ی دار‌‌ند.

🔷 تراشه‌های FPGA، به دلیل تعداد زیاد پایه‌‌‌ها، انعطاف‌پذیر‌‌ی زیاد‌‌ی در ارتباط با قطعات خارجی دار‌‌ند.

معایب FPGA:

🔷 قیمت FPGA‌ها بیش‌تر از پرداز‌‌ند‌‌‌‌ه‌ها است.

🔷 زمان طراحی‌‌، تست و عیب‌‌‌یابی FPGA‌ها، معمولاً بیش‌تر از پرداز‌‌ند‌‌ه‌‌‌ها است‌‌.

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

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

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

🆔 @FPGA0
⚡️چگونه تکنولوژی مناسب برای پیاده‌سازی یک پروژه را انتخاب کنیم؟ (قسمت سوم)

دو سوال اساسی که باید برای انتخاب سخت‌افزار از خود بپرسید:

الگوریتمی که می‌خواهید پیاده‌‌‌ساز‌‌ی کنید، چه مقدار حجم محاسباتی دارد‌‌؟

سخت‌افزار، باید در چه مدت زمانی حجم محاسباتی مطرح شده را انجام دهد؟

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

به عنوان مثال:

🔷 فرض کنید یک سیستم پردازشی داریم که پاسخ دو سوال اساسی درباره‌ی آن، به صورت زیر است:

۱) الگوریتم ما به انجام پنج میلیون عملیات جمع یا ضرب نیاز دارد.

۲) سخت‌افزار، باید حداکثر در پنج میلی‌ثانیه کل الگوریتم را اجرا کند.

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

🔷 فرض کنید سه انتخاب داریم:

1⃣ یک پرداز‌‌ند‌‌ه‌‌‌ی AVR با کلاک ۲۰ مگاهرتز
2⃣ یک پردازنده‌‌‌ی ARM با کلاک ۴۰۰ مگاهرتز
3⃣ و یک FPGA.

🔷 با توجه به اینکه پرداز‌‌ند‌‌ه‌‌ی AVR از همه ارزان‌‌تر است، ابتدا بررسی می‌‌کنیم که آیا می‌توانیم این پروژه را با AVR پیاده‌‌‌ساز‌‌ی کنیم‌‌؟

🔷 در صورتی که جواب منفی بود، سراغ پرداز‌‌ند‌‌ه‌‌ی ARM می‌رویم و در صورت منفی بود‌‌ن مجدد جواب، سراغ FPGA می‌رویم‌‌.

1⃣ با توجه به اینکه کلاک AVR بیست مگاهرتز است و با فرض اینکه اجرا‌‌ی هر دستور جمع یا ضرب فقط نیاز به یک کلاک داشته باشد، با معکوس کردن کلاک، نتیجه می‌‌‌گیریم که اجرای هر دستور ۵۰ نانو‌‌ثانیه طول خواهد کشید.

۵۰ نانوثانیه از یک نانوثانیه‌ی مورد انتظار ما، بسیار بیشتر است؛ پس، سرعت AVR برای پیاده‌سازی الگوریتم ما بسیار کم است.

2⃣ کلاک پرداز‌‌ند‌‌ه‌‌‌ی ARM را برابر با ۴۰۰ مگاهرتز فرض کردیم؛ با معکوس کرد‌‌ن کلاک، به عدد ۲/۵ نانوثانیه خواهیم رسید. با فرض اجرا‌‌ی هر دستور در یک کلاک، سرعت ARM نیز برای الگوریتم ما کم است.

3⃣ بنابراین می‌توانیم با خیال راحت به سراغ FPGA برویم و به کمک قابلیت پیاده‌‌‌ساز‌‌ی موازی و منابع دیجیتالی دیگری که در FPGA وجود دار‌‌ند، این الگوریتم را به راحتی پیاده‌‌‌ساز‌‌ی کنیم.

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

🔷 سه روش برای نمایش اعداد علامت‌‌دار وجود دارد:

1️⃣ روش علامت و مقدار (sign & magnitude)

🔷 در این روش، بیت سنگین ( یا بیت علامت) مشخص کننده‌ی علامت عدد و باقی بیت‌ها مشخص کننده‌ی مقدار عدد است.

معایب روش علامت و مقدار:

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

🔹 برای عدد صفر، دو نمایش وجود دارد.

🔹 مثلاً، برای یک عدد باینری سه بیتی، هر دو نمایش زیر، نشان‌دهنده‌ی عدد صفر، به روش علامت و مقدار هستند:

000 = صفر
100 = صفر

2️⃣ روش مکملِ یک (one's complement)

🔷 در این روش، اعداد مثبت را به صورت باینری معمولی نمایش می‌‌دهیم.

🔷 اما برای نمایش اعداد باینری منفی، باید مکملِ یک آن عدد را محاسبه کنیم.

🔷 برای محاسبه‌ی مکمل یک، باید تمام رقم‌‌ها را not کنیم.

🔹 مثال سه‌بیتی:
+1=001
-1=110

عیب روش مکملِ یک:

🔹 دو نمایش برای عدد صفر وجود دارد.

🔹 مثلاً، برای یک عدد باینری سه بیتی، هر دو نمایش زیر، نشان‌دهنده‌ی عدد صفر هستند:

000 = صفر
111 = صفر

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

🆔 @FPGA0