آموزش اِف‌پی‌جی‌اِی از صفر
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
⚡️ مراحل ساخت یک سخت‌افزار دیجیتال (قسمت دوم)

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

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

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

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

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

🔷 در مرحله اول، پس از توصیف سخت‌افزاری یک زیر بخش توسط یکی از زبان‌های توصیف سخت‌افزاری (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
⚡️ ویدئوی دوم: نحوه مطالعه دیتاشیت و استخراج پارامترهای پیاده‌سازی از آن

🔹 مهمترین مشکل پیاده‌سازاان سیستم‌های اینترفیسی با FPGA نه ضعف در کدنویسی و نه عدم آشنایی با تکنیک‌های پیاده‌سازی است!

📽 در قسمت دوم از مجموعه چهار قسمتی پیاده‌سازی مدارات اینترفیسی به کمک FPGA در مورد این مشکل و روش رفع آن توضیح داده‌ام 👇

🌎 https://faradandish.com/how-to-read-datasheet/

🆔 @FPGA0
🌟 در صفحه‌های زیر می‌توانید هر سوالی در مورد موضوع اینترفیس با FPGA دارید مطرح کنید 👇

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

🌎 https://faradandish.com/how-to-read-datasheet/

🔷 سومین ویدئو از مجموعه چهار قسمتی اینترفیس با FPGA روز شنبه منتشر می‌شود.

🆔 @FPGA0
⚡️ ویدئوی سوم: چطور ماجول اینترفیس را طراحی کنیم؟

🔹 این مرحله‌ای است که اکثر پیاده‌سازان دیجیتال با FPGA آن را نادیده می‌گیرند!

📽 در قسمت سوم از مجموعه چهار قسمتی پیاده‌سازی مدارات اینترفیسی به کمک FPGA در مورد یک تکنیک ساده اما کارآمد برای طراحی ماجول توضیح می‌دهم 👇

🌎 https://faradandish.com/module-design/

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

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

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

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

🆔 @FPGA0
⚡️ ویدئوی چهارم: چطور ماجول اینترفیس را پیاده‌سازی می‌کنم؟

📽 ویدئوی جدید را حتما تا انتها ببینید، چون یک خبر بسیار مهم را برای اولین بار در آن مطرح می‌کنم 👇

🌎 https://faradandish.com/fpga-interface/

🆔 @FPGA0
🚀 بالاخره منتشر شد...

🖥 دوره آنلاین "اینترفیس با FPGA" منتشر شد 👇

🌎 https://faradandish.com/fpga-interface/

🔺 %۴۰ تخفیف تکرار نشدنی رونمایی از دوره فقط تا لحظه تحویل سال نو

🆔 @FPGA0
🌟 فراد اندیش استخدام می‌کند...

🔹 ما به دنبال یک نیروی مسلط به FPGA برای پیوستن به گروه مهندسی فراد اندیش هستیم.

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

🔹 اگر شما عاشق FPGA، یادگیری و یاد دادن هستید...

🔹 اگر سبک آموزش‌های رایگان و دوره‌های تخصصی فراد اندیش را دوست دارید...

🔹 و اگر فرد دست به قلمی هستید و از نوشتن و تولید محتوای درجه یک و منحصر به فرد لذت می‌برید...

🔸 شما احتمالا فردی هستید که ما به دنبال آن هستیم.

🔷 برای اطلاع از جزئیات این موقعیت شغلی، روی لینک زیر کلیک کنید 👇

🌏 https://faradandish.com/we-are-hiring/

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

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

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

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

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

❇️ روش بسط تیلور

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

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

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

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

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

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

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

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

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

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

در پست‌های بعدی روش دوم و سوم را به شما معرفی خواهم کرد.

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

🆔 @FPGA0
آیا استفاده از قابلیت Generic در کد VHDL منجر به پیاده‌سازی سخت‌افزار جدید در FPGA می‌شود؟
Anonymous Quiz
32%
بله
68%
خیر
♨️ برای اطلاعات بیشتر درباره قابلیت Generic در زبان VHDL به پست زیر مراجعه کنید👇👇👇

https://t.me/fpga0/914

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

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

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

❇️ روش CORDIC

🔷 روش دوم، روش CORDIC است.

🔷 احتمالاً با نام الگوریتم CORDIC آشنا هستید.

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

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

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

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

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

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

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

🌎 در سایت فراداندیش، در مقاله "چطور یک مولد موج سینوسی در FPGA پیاده‌سازی کنیم؟"، به‌کمک این روش، یک موج سینوسی در FPGA پیاده‌سازی کرده‌ام:

🌎 https://bit.ly/FPGASineWave

🔷 و اما روش سوم پیاده‌سازی موج سینوسی درون FPGA، روش DDS است.

❇️ روش DDS

🔷 عبارت DDS، مخفف Direct Digital Sensitizer است.

🔷 مفهوم روش DDS، مفهوم نسبتاً ساده‌ای است؛ برای اینکه یک موج سینوسی را به‌صورت دیجیتالی درون FPGA پیاده‌سازی کنید، روش DDS ایده‌ای به‌صورت زیر ارائه می‌دهد:

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

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

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

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

🔷 اما اگر بخواهیم روش DDS را پیاده‌سازی کنیم، دو راه پیش رو داریم:

روش اول این است که از یک IP Core به همین نام استفاده کنیم.

روش دوم، کدنویسی به یکی از زبان‌های VHDL یا Verilog است.

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

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

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

🌎 در مقاله "چطور یک مولد موج سینوسی در FPGA پیاده‌سازی کنیم؟"، در مورد این موضوع به طور کامل توضیح داده‌ام؛ همچنین، یک مولد موج سینوسی به‌کمک آی‌پی DDS در FPGA پیاده‌سازی شده است:

🌎 https://bit.ly/FPGASineWave

🆔 @FPGA0
⚡️ موقعیت شغلی جدید در غرب تهران...

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

1️⃣ متخصص الکترونیک مسلط به سخت‌افزار به منظور تست و رفع عیب
2️⃣ متخصص کدنویسی VHDL و پیاده‌سازی بر روی تراشه‌های FPGA
3️⃣ متخصص کدنویسی ++C بر روی Windows و Linus
4️⃣ متخصص طراحی schematic و PCB بردهای دیجیتال شامل FPGA و پردازنده‌های DSP (بردهای چند لایه)
5️⃣ متخصص مونتاژ و تست بردهای دیجیتال و آنالوگ

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

📭 help@faradandish.com

☎️ رزومه شما به شرکت مورد نظر ارسال خواهد شد و آنها پس از بررسی، در صورت نیاز با شما تماس خواهند گرفت.

🆔 @FPGA0
⚡️ تعیین اهداف و استراتژی‌های طراحی در نرم‌افزار ISE (قسمت اول)

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

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

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

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

🔷 در بعضی مواقع رسیدن به حداکثر فرکانس کلاک قابل اعمال به مدار هدف اصلی شما است.

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

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

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

🆔 @FPGA0