آموزش اِف‌پی‌جی‌اِی از صفر
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
برای پیاده‌سازی ضرب در FPGA بهتر است از کدام منبع سخت‌افزاری استفاده کنیم؟
Anonymous Quiz
68%
DSP48
32%
LUT
♨️ برای اطلاعات بیشتر درباره نحوه پیاده‌سازی عملیات ضرب در FPGA به پست زیر مراجعه کنید👇👇👇

https://t.me/fpga0/842

🆔 @FPGA0
آیا در زبان VHDL می‌توان دو سیگنال با عرض بیت متفاوت را با یکدیگر جمع کرد؟
Anonymous Quiz
60%
بله
40%
خیر
♨️ برای اطلاعات بیشتر درباره قانون ارجاع جمع در زبان VHDL، به پست زیر مراجعه کنید👇👇👇

https://t.me/fpga0/903

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

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

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

🔷 شما می‌توانید میکروبلیز را به‌صورت soft core در تمام FPGA‌های شرکت Xilinx استفاده کنید.

اما پیاده‌سازی به‌صورت soft core به چه معناست؟

❇️ مفاهیم soft core و hard core

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

🔷 اما اگر این ماجول توسط کاربر به‌کمک منابع سخت‌افزاری موجود در FPGA (مانند LUT‌ها، فلیپ‌فلاپ‌ها و ...) ساخته شود، به آن soft core گفته می‌شود.

میکروکنترلر میکروبلیز، در FPGA‌های شرکت Xilinx به‌صورت soft core ایجاد می‌شود.

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

❇️ مزیت soft core بودن میکروبلیز

🔷 اولین مزیت soft core بودن میکروبلیز این است که برای استفاده از آن نیازی به صرف هزینه نیست.

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

🔷 مزیت دیگر soft core بودن میکروبلیز این است که در صورت عدم نیاز به این میکروکنترلر در طرح شما، فضایی از FPGA توسط آن اشغال نخواهد شد.

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

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

🔷 اگر میکروبلیز به‌صورت hard core بود، نمی‌توانستید بلوک‌هایی را که نیاز نداشتید حذف کنید و منابع FPGA را برای مصارف دیگر آزاد کنید. این موضوع، مزیت دیگری برای soft core بودن میکروبلیز است.

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

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

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

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

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

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

🔷 می‌توانید وجود یا عدم وجود حافظه کَش برای میکروبلیز را نیز تعیین کنید.

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

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

اما چرا در کنار FPGA از یک میکروکنترلر استفاده می‌کنیم؟

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

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

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

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

🔷 به‌طور کلی، فرایند پیاده‌سازی در FPGA، نسبت به کارهای نرم‌افزاری مانند کار با پردازنده‌هایی چون AVR، ARM و DSP، پیچیده‌تر است و به زمان بیشتری نیاز دارد.

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

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

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

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

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

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

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

اما چرا به‌جای میکروبلیز از میکروکنترلرهای دیگر استفاده نمی‌کنیم؟

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

🔷 اگر ما آن را در اختیار نداشتیم، مجبور بودیم از یک میکروکنترلر جانبی مانند ARM، AVR یا ... روی بُرد و در کنار تراشه FPGA استفاده کنیم.

⚡️ این کار معایبی به‌دنبال دارد...

❇️ معایب استفاده از میکروکنترلر جانبی

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

📌 صرف هزینه برای خرید میکروکنترلر جانبی

📌 اشغال مقداری از فضای بُرد

📌 اشغال پایه‌هایی از FPGA برای ارتباط با میکروکنترلر جانبی

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

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

🔹 مثلاً، برای ارتباطات RS232، LAN و بسیاری از پروتکل‌های دیگر، ماجول‌های آماده وجود دارد.

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

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

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

🆔 @FPGA0
♨️ برای اطلاعات بیشتر درباره انواع مدارات قابل پیاده‌سازی در FPGA به پست زیر مراجعه کنید👇👇👇

https://t.me/fpga0/881

🆔 @FPGA0
🌟 نحوه پروگرام کردن FPGA در نرم‌افزار ISE و ویوادو...

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

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

🆔 @FPGA0
🆔 @FPGA0
#برنامه_ویدئویی۴۲
🎓 نحوه پروگرام کردن FPGA

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

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

🌎 http://bit.ly/ProgrammingFPGA
⚡️ میکروبلیز چگونه می‌تواند به پیاده‌سازی مدار شما کمک کند؟ (قسمت چهارم)

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

🔷 پیش از ورود به مبحث پیاده‌سازی، ابتدا ببینیم که مفهوم پلتفرم میکروبلیز چیست؟

❇️ پلتفرم میکروبلیز

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

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

🔹 برای مثال، در کنار هسته پردازشی میکروبلیز، حافظه RAM، پریفرال‌هایی برای RS232 یا LAN، بخش کلاک و ریست و ... را داریم.

🔷 برای استفاده از میکروبلیز باید برنامه‌ای بنویسیم. این برنامه باید در یک حافظه RAM ذخیره شود.

🔷 برای پیاده‌سازی این حافظه RAM، از یک یا چند Block RAM درون FPGA استفاده می‌کنیم؛ زیرا قرار است میکروبلیز را درون FPGA پیاده‌سازی کنیم.

🔷 البته، این امکان وجود دارد که برنامه‌ای که برای میکروبلیز نوشته‌ایم را درون یک حافظه RAM خارجی ذخیره کنیم.

🔹 مثلاً، می‌توانیم از حافظه DDR2 یا DDR3 استفاده کنیم و آن را با میکروبلیز اینترفیس کنیم.

🔹 در صورتی که برنامه نوشته شده برای میکروبلیز، به فضای زیادی نیاز داشته باشد، از حافظه RAM خارجی استفاده می‌کنیم.

❇️ بخش‌های اصلی میکروبلیز

🔷 میکروبلیز از دو بخش اصلی تشکیل شده است:

📌 پلتفرم سخت‌افزاری
📌 نرم‌افزار

🔷 پلتفرم سخت‌افزاری شامل پردازنده، حافظه‌ها، IP‌ها و ... می‌شود.

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

🔷 ما برای میکروبلیز، برنامه‌ای به‌زبان C یا ++C می‌نویسیم. این برنامه را در حافظه دستورات (instructions memory) و حافظه داده (data memory) ذخیره می‌کنیم.

🔷 اما ابزار پیاده‌سازی میکروبلیز چیست؟ و چه نرم‌افزارهایی در این کار به ما کمک می‌کنند؟

❇️ ابزار پیاده‌سازی میکروبلیز

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

🔷 عبارت EDK، مخفف Embedded Development Kit است.

اگر اکنون نرم‌افزار ISE روی کامپیوتر شما نصب شده باشد، این ابزار را در اختیار دارید.

🔷 ابزار EDK از دو بخش اصلی تشکیل می‌شود:

📌 نرم‌افزار XPS که مخفف Xilinx Platform Studio است.

📌 نرم‌افزار SDK که مخفف Software Development Kit است.

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

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

🔷 در این نرم‌افزار می‌توانید به زبان C یا ++C برنامه‌نویسی کنید. سپس، آن برنامه را در حافظه‌های مخصوص میکروبلیز پراگرام می‌کنید.

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

🌎 https://bit.ly/MicroBlaze

🆔 @FPGA0
📣 تخفیف ویژه به مناسبت روز مهندس

❇️ این تخفیف‌ها به طور خودکار در سایت اعمال شده‌اند و نیازی به وارد کردن کد نیست 👇

🌎 https://faradandish.com/courses/

🔺 فرصت استفاده از تخفیف روز مهندس فقط تا فردا شب است.

🆔 @FPGA0
⚡️ مراحل ساخت یک سخت‌افزار دیجیتال (قسمت اول)

🔷 در ساخت و ارائه یک سخت‌افزار دیجیتال سه مرحله اساسی وجود دارد:

1️⃣ طراحی
2️⃣ عیب‌زدایی
3️⃣ درستی‌آزمایی

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

❇️ طراحی سخت‌افزار دیجیتال

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

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

✳️ مدل سطح سیستم

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

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

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

🔷 اما یک مدل سطح سیستم که مثلاً توسط نرم‌افزار MATLAB طراحی شده است، دارای دقت نمایش اعداد به‌صورت ممیز شناور (floating point) است.

بنابراین، اولین مرحله در استفاده از مدل MATLAB، تبدیل آن به مدلی با دقت محدود (مدل ممیز ثابت یا fixed point) است.

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

✳️ مدل سخت‌افزاری سیستم

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

🔷 قبل از آن باید سیستم را به بخش‌های کوچک‌تری تقسیم کنید. این کار باعث پیاده‌سازی و عیب‌زدایی آسان‌تر سیستم می‌شود.

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

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

🔷 بعد از توصیف یک بخش سخت‌افزاری، باید درستی آن بخش را با انجام شبیه‌سازی عملکرد (functional simulation) بررسی کنید.

🔷 برای مثال می‌توانید از نرم‌افزار ISim از مجموعه ISE یا نرم‌افزار ModelSim محصول شرکت Mentor Graphics استفاده کنید.

🔷 در این مرحله، صرفاً عملکرد طرح از لحاظ الگوریتمی مورد بررسی قرار می‌گیرد.

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

✳️ سنتز توصیف سخت‌افزاری

🔷 منظور از سنتز، تعیین نحوه پیاده‌سازی سیستم بر روی یک تکنولوژی خاص، مثلاً یک مدل از FPGA است.

🔷 این مرحله توسط نرم‌افزارهای ویژه‌ای که معمولاً توسط خود شرکت سازنده تکنولوژی هدف ارائه می‌شود انجام می‌گیرد. مثلاً، شرکت Xilinx، نرم‌افزارهای ISE و Vivado را ارائه داده است.

🔷 این نرم‌افزارها قادر به مدیریت تمامی مراحل پیاده‌سازی از ورود توصیف سخت‌افزاری و شبیه‌سازی تا مرحله سنتز و پیاده‌سازی است.

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

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

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

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

🆔 @FPGA0
⚡️ مراحل ساخت یک سخت‌افزار دیجیتال (قسمت دوم)

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

🔷 در این قسمت، مرحله دوم که عیب‌زدایی است را مورد بررسی قرار خواهم داد.

❇️ عیب‌زدایی سخت‌افزار دیجیتال

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

🔷 عیب‌زدایی در چند سطح مختلف می‌تواند انجام شود:

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

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

🔷 توسط مدل ممیز شناور می‌توانید بردارهای تستی برای ورودی به سیستم ایجاد کنید. این بردارهای ورودی را یک‌بار به مدل ممیز شناور اعمال کنید و خروجی سیستم را ذخیره کنید.

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

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

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

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

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

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

🔷 به این منظور، روش‌های مختلفی برای تست و عیب‌زدایی از سیستم به‌صورت run-time وجود دارد.

🔷 یک روش، ذخیره‌سازی مقادیر رجیسترها و خروجی‌های مورد نظر در یک حافظه درون یا بیرون FPGA و انتقال آن‌ها از طریق یکی از پروتکل‌های انتقال دیتا مثل پروتکل RS232 یا USB به کامپیوتر و بررسی آن‌ها در یک نرم‌افزار مناسب مثل MATLAB است.

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

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

نرم‌افزار ChipScope که به همراه نرم‌افزار ISE ارائه می‌شود، امکان ذخیره‌سازی داده‌های هر بخشی از سیستم را به هنگام وقوع شرایط خاصی که شما تعیین می‌کنید دارد.

🔷 این داده‌های ذخیره شده، از طریق رابط JTAG روی بُرد به کامپیوتر منتقل می‌شود و سپس بر روی صفحه مخصوص نرم‌افزار ChipScope نمایش داده می‌شود.

🔷 در صورتی که نیاز به تحلیل بیشتری داشته باشید، می‌توانید داده‌های به‌دست آمده را در یک فایل ذخیره نموده و آن را در یک نرم‌افزار قدرتمندتر مثل MATLAB تحلیل کنید.

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

🆔
@FPGA0
⚡️ مراحل ساخت یک سخت‌افزار دیجیتال (قسمت سوم)

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

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

❇️ درستی‌آزمایی سخت‌افزار دیجیتال

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

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

🔷 درستی‌آزمایی سیستم را می‌توانید در سطوح مختلف طراحی انجام دهید.

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

✳️ به‌عنوان مثال، طراحی یک فیلتر را در نظر بگیرید.

🔷 طراحی این فیلتر، از یک مدل ممیز شناور که در نرم‌افزاری مانند MATLAB طراحی شده آغاز می‌شود.

🔷 سپس، مدل ممیز ثابت آن توسط پیاده‌ساز تهیه می‌شود.

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

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

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

🔷 برای ذخیره‌سازی خروجی‌ها و انتقال آن‌ها به کامپیوتر، می‌توان از ابزار ChipScope استفاده کنید.

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

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

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

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

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

✳️ شبیه‌سازی زمان-واقعی

🔷 یک روش برای انجام درستی‌آزمایی زمان-واقعی، تست سیستم در شرایط و محیط عملی است.

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

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

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

🆔 @FPGA0
⚡️ انواع محصولات شرکت Xilinx و کاربرد هر یک از آن‌ها

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

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

1️⃣ Hardware Development
2️⃣ Software Development

❇️ نرم‌افزارهای گروه hardware development، در فرایند طراحی و پیاده‌سازی یک سخت‌افزار کمک می‌کنند.

🔷 نرم‌افزارهای ISE و Vivado متعلق به این گروه هستند که نرم‌افزار Vivado جدیدترین نرم‌افزار این حوزه محسوب می‌شود.

❇️ اما گروه دوم نرم‌افزارهای شرکت Xilinx، گروه software developmentها است.

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

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

🔷 ضمن اینکه شرکت Xilinx، تراشه‌ای به‌نام Zynq تولید می‌کند که شامل یک FPGA و یک پردازنده ARM است.

🔷 برای استفاده از میکروبلیز یا پردازنده ARM موجود در Zynq، باید برنامه‌نویسی کنید. این کار، به‌کمک نرم‌افزارهای حوزه software development انجام می‌شود.

🔷 در حوزه software development، جدیدترین نرم‌افزاری که شرکت Xilinx ارائه داده است، نرم‌افزار Vitis است.

🔷 در گذشته، نرم‌افزارهای زیادی در این حوزه وجود داشتند؛ از جمله، نرم‌افزار SDK، SDSoC و SDAccel.

🔷 به‌تازگی، شرکت Xilinx نرم‌افزار جدید Vitis را ارائه داده است که تمام نرم‌افزارهای قبلی در حوزه software development، در این نرم‌افزار تجمیع شده‌اند. البته امکانات جدیدی نیز به این مجموعه افزوده شده است.

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

در حوزه hardware development، جدیدترین نرم‌افزار، نرم‌افزار Vivado است که ورژن‌های جدیدتر آن در حال تولید و ارائه است.

در حوزه software development نیز جدیدترین نرم‌افزار، نرم‌افزار Vitis است.

برای آشنایی با نرم‌افزار Vivado روی لینک زیر کلیک کنید:👇👇👇

🌎https://bit.ly/Vivado1

برای آشنایی با نرم‌افزار ISE روی لینک زیر کلیک کنید:👇👇👇

🌎https://bit.ly/ISE-Design-Suite

🆔 @FPGA0
⚡️ نرم‌افزار Vivado یا ISE؟

🔷 بسیاری از افراد گمان می‌کنند که چون نرم‌افزار Vivado، نرم‌افزار جدید شرکت Xilinx است، حتماً باید برای پیاده‌سازی‌ها از آن استفاده کنیم.

🔷 اما واقعیت این است که استفاده از این نرم‌افزار یک انتخاب نیست؛ بلکه یک اجبار است.

🔷 همان‌طور که اطلاع دارید، شرکت Xilinx، تراشه‌های FPGA را در خانواده‌های مختلف تولید می‌کند.

🔹 برای مثال، تراشه‌های Spartan 3 ،Spartan 6 Vertix 4 ،Vertix 5 و Vertix 6 جز خانواده‌های قدیمی‌تر هستند.

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

🔹 خانواده‌های جدیدتر، شامل FPGA‌های سری ۷، FPGA‌های سری UltraScale و +UltraScale هستند. همچنین، تراشه‌های Zynq جز خانواده‌های جدید است.

نکته‌ای که وجود دارد این است که نرم‌افزار ISE تراشه‌های FPGA‌ را تا سری ۷ پشتیبانی می‌کند.

🔹 در واقع، FPGA‌های سری ۷ به بعد و سایر تراشه‌های جدید، در نرم‌افزار ISE پشتیبانی نمی‌شوند.

نکته مهم‌تر این است که نرم‌افزار Vivado نیز FPGA‌های قدیمی‌تر را پشتیبانی نمی‌کند. این نرم‌افزار، صرفاً خانواده‌های جدید و از سری 7 به بعد را پشتیبانی می‌کند.

❇️ بنابراین، انتخاب بین ISE و Vivado، یک مسئله سلیقه‌ای نیست؛ بلکه عامل تعیین‌کننده، FPGA‌ای است که قصد استفاده از آن را داریم.

اگر FPGA شما قبل از سری 7 است، مجبور هستید از نرم‌افزار ISE استفاده کنید.

و اگر FPGA شما سری 7 و جدیدتر از آن است، باید به‌سراغ نرم‌افزار Vivado بروید.

برای آشنایی با نرم‌افزار Vivado روی لینک زیر کلیک کنید:👇👇👇

🌎https://bit.ly/Vivado1

برای آشنایی با نرم‌افزار ISE روی لینک زیر کلیک کنید:👇👇👇

🌎https://bit.ly/ISE-Design-Suite

🆔 @FPGA0
⚡️ ویدئوی جدید: اینترفیس چیست؟

🔹 پیاده‌سازی مدارات اینترفیسی یک از دو حوزه کاری اصلی در زمینه پیاده‌سازی با FPGA است

🔶 من یک آموزش ویدئویی چهار قسمتی در مورد مهمترین مراحل پیاده‌سازی مدارات اینترفیسی تهیه کرده‌ام که قسمت اول آن در حال حاضر قابل مشاهده است

📽 عنوان قسمت اول: اینترفیس چیست؟ 👇

🌎 https://faradandish.com/what-is-interface

🆔 @FPGA0
🌟 قسمت دوم از آموزش چهار قسمتی پیاده‌سازی مدارات اینترفیسی با FPGA امروز منتشر می‌شود

❇️ اما قبل از آن، اگر هنوز قسمت اول را مشاهده نکردید، پیشنهاد می‌کنم وارد صفحه زیر شوید و این ویدئو را همین حالا مشاهده کنید 👇

🌎 https://faradandish.com/what-is-interface

🔷 در پایین ویدئو و در بخش نظرات می‌توانید هر سوالی که در این زمینه دارید را مطرح کنید.

🆔 @FPGA0