آموزش اِف‌پی‌جی‌اِی از صفر
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
#برنامه_ویدئویی۴۰
🎓 فایل قیود کاربر در نرم‌افزار ویوادو

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

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

🌎 http://bit.ly/XDCfile
Media is too big
VIEW IN TELEGRAM
⚡️ معرفی برد استفاده شده در دوره ویوادو...

🔹 با توجه به اینکه نرم‌افزار ویوادو از FPGAهای سری ۶ پشتیبانی نمی‌کند، امکان استفاده از برد فراد ۱ برای کار با این نرم‌افزار وجود ندارد

🔶 به همین دلیل هم ما برد جدیدی را برای تولید این آموزش تهیه کرده‌ایم

🔹 در این ویدئوی کوتاه، من برد Arty S7 را که در دوره ویوادو استفاده شده است به شما معرفی می‌کنم 👆

👥 اگر برد مناسب دیگری برای کار با نرم‌افزار ویوادو می‌شناسید، خوشحال می‌شوم آن را در بخش نظرات صفحه زیر معرفی کنید 👇

🌎 https://faradandish.com/arty-s7/

🆔 @FPGA0
🌟 دانلود، نصب و کرک نرم‌افزار ویوادو...

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

🎥 در جدیدترین ویدئوی آموزشی سایت که امروز منتشر می‌شود، شما را با نحوه نصب و کرک نرم‌افزار ویوادو آشنا می‌کنم

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

🆔 @FPGA0
🆔 @FPGA0
#برنامه_ویدئویی۴۱
🎓 دانلود، نصب و کرک نرم‌افزار ویوادو

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

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

🌎 http://bit.ly/InstallVivado
⚡️ همین حالا در آزمون آنلاین شرکت کنید و مدرک دیجیتالی‌تان را دریافت کنید...

🔹 برای آشنایی با نحوه شرکت در آزمون آنلاین و دریافت مدرک دیجیتالی، ویدئوی زیر را ببینید: 👇

🌎 https://faradandish.com/course-faq/#cer

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

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

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

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

🔷 یکی از مهم‌ترین ارکان الگوی استاندارد کدنویسی برای FPGA، پیاده‌سازی مدار به‌صورت کاملاً سنکرون است.

🔷 توصیه مستقیم شرکت Xilinx نیز این است که مدارها را به‌صورت کاملاً سنکرون در FPGA پیاده‌سازی کنیم.

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

🔆 استفاده از منابع سخت‌افزاری کمتر
🔆 افزایش سرعت مدار
🔆 قابلیت اطمینان بیشتر

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

🌎 https://bit.ly/Synchronous-Implementation

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

اما نحوه کدنویسی یک مدار کاملاً سنکرون به چه صورت است؟

در پست بعدی، به این مسئله می‌پردازم.

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

🆔 @FPGA0
برای پیاده‌سازی حافظه‌های کوچک (در حد چند ده یا چند صد بیت)، بهتر است از کدام نوع حافظه استفاده کنیم؟
Anonymous Quiz
65%
حافظه‌ توزیع‌شد‌‌ه
35%
حافظه‌ بلوکی
♨️ برای اطلاعات بیشتر درباره انواع حافظه‌ها در FPGA و کاربرد هر کدام از آن‌ها، به مجموعه پست زیر مراجعه کنید👇👇👇

https://t.me/fpga0/985
https://t.me/fpga0/986
https://t.me/fpga0/987

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

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

❇️ نحوه کدنویسی برای توصیف یک مدار کاملاً سنکرون

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

🔷 اما در عمل و در کد VHDL، برای انجام همزمان ارجاعات با سیگنال کلاک، باید به چه ترتیب عمل کرد؟

در پیاده‌سازی HDL (به‌کمک زبان VHDL یا Verilog)، برای سنکرون کردن کامل مدار، باید تمام مدارتان را درون شرط بالارونده کلاک توصیف کنید.

🔷 اکنون به‌کمک یک مثال، منظور از این عبارت را بیان می‌کنم؛ کد زیر را در نظر بگیرید:

architecture Behavioral of synch is
Begin
process(Clock)
Begin
if rising_edge(Clock) then

A <= B;
E <= D;

end if;
end process;
end Behavioral;

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

❇️ مشخصه اول این است که تنها سیگنالی که درون لیست حساسیت پراسس این کد نوشته شده، سیگنال کلاک است.

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

❇️ مشخصه دومی که در این کد وجود دارد این است که پس از کلمه begin مربوط به این پراسس، شرط لبه بالارونده کلاک نوشته شده است؛ همان‌طور که مشاهده می‌کنید، تمامی ارجاعات، درون این شرط قرار گرفته‌اند.

🔷 مداری که در این کد نمونه توصیف شده است، یک مدار بسیار ساده است که تنها دارای دو ارجاع است؛ اما فرض کنید که مدار شما، مدار پیچیده‌تری باشد که در آن انواع و اقسام ارجاعات و شرط‌ها وجود داشته باشد.

شما باید تمامی ارجاعات و ساختارهای ارجاعی را بدون استثنا درون شرط لبه بالارونده کلاک قرار دهید.

بنابراین، در تمام کدهایی که می‌نویسید، برای داشتن یک مدار کاملاً سنکرون، این دو مشخصه را رعایت کنید.

🆔 @FPGA0
🆔 @FPGA0
برنامه_ویدئویی۳۵

🎓 پیاده‌سازی کاملا سنکرون در FPGA

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

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

🌎 https://bit.ly/Synchronous-Implementation
به‌کمک کدامیک از منابع سخت‌افزاری درون FPGA، می‌توانیم هر مدار منطقی را پیاده‌ساز‌‌ی کنیم؟
Anonymous Quiz
69%
Logic Cell
12%
ضرب‌‌‌کنند‌‌ه‌‌‌
19%
حافظه بلوکی
♨️ برای اطلاعات بیشتر درباره منابع سخت‌افزاری درون FPGA و کاربرد هر کدام، به مجموعه پست زیر مراجعه کنید👇👇👇

https://t.me/fpga0/977
https://t.me/fpga0/978
https://t.me/fpga0/980

🆔 @FPGA0
⚡️ چگونه استفاده از IP به پیاده‌سازی‌های ما کمک می‌کند؟

🔷 عبارت IP یا به طور کامل‌تر IP Core، مخفف کلمه Intellectual Property Core است و به ماجول‌هایی اشاره دارد که از قبل توسط افراد یا شرکت‌هایی آماده و تست شده‌اند و عملکرد صحیح آن‌ها تضمین شده است.

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

🔷 برخی از این IPها رایگان هستند و برای استفاده از تعدادی از آن‌ها باید هزینه‌ای را به شرکت Xilinx پرداخت کرد.

🔷 استفاده از IPها شما را از ساعت‌ها و روزها مطالعه در مورد نحوه پیاده‌سازی یک ماجول و تست و درستی‌آزمایی آن بی‌نیاز می‌کند.

پس، به‌طور کلی استفاده از IPها می‌تواند دو مزیت مهم به‌دنبال داشته باشد:

1️⃣ افزایش سرعت روند پیاده‌سازی سیستم‌ها

2️⃣ صرفه‌جویی در هزینه توسعه پروژه

بنابراین، در صورتی که در هر بخش از سیستم شما این قابلیت وجود دارد که آن را به‌کمک IP پیاده‌سازی کنید، حتماً این کار را انجام دهید؛ زیرا استفاده از IP، در زمان و هزینه شما صرفه‌جویی می‌کند.

🌀 به این موضوع نیز توجه داشته باشید که شما نمی‌توانید کل یک پروژه را به‌کمک IPها پیاده‌سازی کنید.

🌀 بنابراین، وجود IPها شما را از کدنویسی HDL بی‌نیاز نمی‌کند.

اما چگونه از این IPها در پروژه استفاده کنیم؟

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

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

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

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

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

در مقاله "معرفی IPها در نرم‌افزار ISE و نحوه به‌گارگیری آن‌ها" از سایت فراد اندیش، نحوه به‌کارگیری IP در پروژه به‌کمک یک مثال عملی شرح داده شده است.👇👇👇

🌎 http://bit.ly/FPGA-Implementation-IP

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

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

📥 در سایت فراد اندیش ببینید 👇👇👇👇
🌎 http://bit.ly/FPGA-Implementation-IP
⚡️ فرآیند درستی‌‌آزمایی به‌کمک نرم‌افزار متلب
⚡️ فرآیند درستی‌‌آزمایی به‌کمک نرم‌افزار متلب

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

🌀 برای ساختن چنین مدلی، ممکن است از نرم‌افزار متلب یا حتی یک زبان برنامه‌‌نویسی، مانند زبان C استفاده کنید.

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

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

🌀 فرض کنید شما در نرم افزار ISE به زبان VHDL یا Verilog، ماجول خودتان را پیاده‌‌سازی کرده‌اید.

🔷 پس از پیاده‌‌سازی ماجول، باید آن را شبیه‌‌سازی کنید.

🌀 برای شبیه‌‌سازی، نیاز به ایجاد یک تست‌‌بنچ دارید و باید ورودی‌‌های مورد نظرتان را درون تست‌‌بنچ به ماجول اعمال کنید.

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

دلیل این ذخیره‌‌سازی به‌صورت متن، این است که در آخرین مرحله‌ کار بتوانیم نتیجه‌ خروجی حاصل از اعمال یک ورودی یکسان به مدل سطح بالا و ماجول VHDL یا Verilog را با هم مقایسه کنیم.

🔷 پس از این مقایسه (که آن را به‌کمک نرم‌‌افزار متلب انجام می‌‌دهیم)، می‌‌توانیم مطمئن شویم که آیا عملکرد مداری که در نرم افزار ISE پیاده‌‌سازی کرده‌‌ایم، کاملاً مشابه عملکرد مدل ما در نرم‌‌افزار متلب یا C است یا خیر.

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

همچنین، در مقاله «درستی‌آزمایی مدار دیجیتال به‌کمک متلب» در سایت فراد اندیش، در قالب یک مثال، تمامی مراحل فرایند درستی‌آزمایی به‌صورت گام به گام بررسی شده‌اند:👇👇👇

🌎 http://bit.ly/Verification-MATLAB

🆔 @FPGA0
🆔 @FPGA0
#برنامه_ویدئویی۳۲
🎓 درستی‌آزمایی مدار دیجیتال به کمک متلب

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

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

🌎 http://bit.ly/Verification-MATLAB
⚡️ چرا در کدهایمان از متغیر استفاده نمی‌کنیم؟ (قسمت اول)

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

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

اما منظور از متغیر در زبان VHDL چیست و چرا استفاده از آن در پیاده‌سازی‌ها را توصیه نمی‌کنم؟

به‌طور کلی، در زبان VHDL سه نوع object داریم:

❇️ signal
❇️ constant
❇️ variable

در این مجموعه پست، به بیان تفاوت‌های متغیر با دو نوع object دیگر می‌پردازم تا مشخص شود که چرا استفاده از متغیر را توصیه نمی‌کنم.

❇️ signal

🔷 شاید بتوان گفت که مهم‌ترین objectای که در زبان VHDL استفاده می‌شود signal است. در واقع، بخش عمده‌ای از کد شما را سیگنال‌ها تشکیل می‌دهند.

🔷 محل تعریف سیگنال‌ها در کد VHDL، محیط decleration یا معرفی است. این محیط، قبل از begin در بخش architecture واقع شده است.

🔷 برای مقداردهی به یک سیگنال در کد VHDL، از علامت کوچکتر-مساوی (=>) یا signal assignment استفاده می‌کنیم.

🌀 برای مثال، در ارجاع زیر مقدار B را به سیگنال A ارجاع داده‌ایم:

A <= B;

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

اما تحقق فیزیکی سیگنال در FPGA در قالب چه سخت‌افزاری است؟

اگر شما به یک سیگنال در محیط کانکارنت ارجاع دهید، آن سیگنال تبدیل به یک سیم می‌شود.

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

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

🆔 @FPGA0