آموزش اِف‌پی‌جی‌اِی از صفر
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://t.me/fpga0/798
https://t.me/fpga0/799
https://t.me/fpga0/803
https://t.me/fpga0/805

🆔 @FPGA0
❇️ هر مدار دیجیتالی از مجموعه‌ای از مدارات کوچک و پایه تشکیل شده است

🔷 در میان این مدارات پایه، احتمالا پرکاربردترین آنها، شمارنده‌ها هستند

🔷 شمارنده‌ها آنقدر پرکاربرد هستند که بعید می‌دانم طرح دیجیتالی را بتوان بدون آنها ساخت

🔷 اما کاربردهای اصلی شمارنده‌ها در مدارات دیجیتال چیست و چطور می‌توان از آنها برای پیاده‌سازی در FPGA استفاده کرد؟

🔶 در جدیدترین مقاله سایت فراد اندیش که همکارم منتشر کرده‌اند، به طور مفصل در مورد این موضوع توضیح داده شده است 👇

🆔 @FPGA0
🆔 @FPGA0
#مقاله۱۰
🎓 شمارنده چگونه می‌تواند مشکلات شما در پیاده‌سازی را حل کند؟

📚 نوشته فاطمه مشاک

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

🌎 https://bit.ly/DigitalCounter
❇️ ۱۵ سال پیش در محل کار، با چالشی جدی برای پیاده‌سازی یک الگوریتم پردازش سیگنال ساده در FPGA رو به رو شدم

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

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

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

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

🔷 در ۱۵ سال گذشته، ده‌ها پروژه مهم صنعتی را به کمک همین روش با موفقیت مدیریت و پیاده‌سازی کردم و...

🔷 مطمئن هستم شما هم می‌توانید از همین سیستم برای انجام پروژه‌های خودتان به راحتی استفاده کنید

🔷 به همین دلیل تصمیم گرفتم سمینار آنلاینی برگزار کنم و در آن تمام مراحل ۷ گانه پیاده‌سازی الگوریتم‌های پردازش سیگنال در FPGA را به کمک یک مثال ساده برای شما تشریح کنم

🔶 اگر علاقمندید با این مهارت بسیار جذاب و پرکاربرد آشنا شوید، پیشنهاد می‌کنم همین حالا روی لینک زیر کلیک کنید و در این سمینار به صورت رایگان ثبت‌نام کنید:

🌏 https://faradandish.com/lp/signal-processing-webinar

♦️ این سمینار آنلاین، روز چهارشنبه ۸ مرداد ساعت ۷ بعد از ظهر برگزار می‌شود.

🆔 @FPGA0
پاسخ به سه سوال در مورد سمینار آنلاین چهارشنبه ۸ مرداد...

1️⃣ آیا فیلم این سمینار را بعدا می‌توانیم تهیه کنیم؟

☑️ خیر. این سمینار ضبط نمی‌شود و برای مشاهده آن باید در زمان گفته شده از طریق لینکی که بعد از ثبت‌نام به شما ارسال می‌شود به صورت آنلاین در آن شرکت کنید.

2️⃣ روش شرکت در این سمینار آنلاین چگونه است؟

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

3️⃣ آیا شرکت در این سمینار نیاز به پیش‌نیاز خاصی دارد؟

☑️ خیر. البته برای به کار گیری تکنیک‌های پیاده‌سازی لازم است که آشنایی نسبی با FPGA داشته باشید ولی برای یادگیری مطالب سمینار نیاز به پیش‌نیازی نیست.

♦️ برای ثبت‌نام در سمینار آنلاین، روی لینک زیر کلیک کنید 👇

🌏 https://faradandish.com/lp/signal-processing-webinar

🆔 @FPGA0
⚡️ نحوه‌ی پیدایش زبان VHDL و ساختار آن

🔷 نام VHDL، مخفف عبارت VHSIC Hardware Description Language است‌‌.

🔷 حرف V خود مخفف Very High Speed Integrated Circuit است‌‌.

بنا‌‌بر‌‌این‌‌، VHDL مخفف زبان توصیف سخت‌‌‌افزار‌‌ی مدار‌‌ات مجتمع با سرعت بسیار زیاد است‌‌.

🔷 زبان VHDL ابتدا توسط وزارت دفاع آمریکا ابداع شد‌‌.

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

🔷 هدف دیگر، انجام مدل‌‌‌ساز‌‌ی‌‌‌ها‌‌ی مدار‌‌ات دیجیتال بود‌‌.

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

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

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

🔷 به‌طور کلی، می‌توان یک مدار دیجیتال را به دو بخش تقسیم کرد‌‌:

1⃣ بخش پایه‌‌‌ها‌‌، پین‌‌‌ها‌‌ یا پورت‌‌‌ها‌‌ی ورود‌‌ی-خروجی

2⃣ بخش مدار داخلی

هر کد VHDL نیز از دو بخش تشکیل شد‌‌ه است‌‌؛ بخش Entity و بخش Architecture

🔷 در اصطلاحِ VHDL، به پایه‌ها یا پورت‌‌‌ها‌‌ی ورود‌‌ی-خروجی مدار، Entity و به مدار داخلی Architecture گفته می‌شود‌‌.

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

🔷 در واقع، ابتدا برای هر پورت نامی تعیین می‌کنیم.

🔷 سپس، مشخص می‌‌‌کنیم که آن پورت، ورود‌‌ی‌‌، خروجی یا دو طرفه است.

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

اما بخش اصلی یک کد VHDL، بخش Architecture است که یک مدار دیجیتال را در آن توصیف می‌کنیم‌‌.

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

🌎 http://bit.ly/VHDL-1

🌎 https://bit.ly/VHDL-2

🌎 https://bit.ly/VHDL-3

🌎 https://bit.ly/VHDL-4

🆔 @FPGA0
❇️ برگزاری مجدد سمینار آنلاین...

⚡️ ۷ گام پیاده‌سازی الگوریتم‌های پردازش سیگنال در FPGA

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

♦️ ثبت‌نام رایگان 👇

🌏 https://faradandish.com/lp/signal-processing-webinar

🆔 @FPGA0
روش بهینه برای پیاده‌سازی اعداد علامت‌دار در FPGA کدام است؟
Anonymous Quiz
24%
روش sign & magnitude
12%
روش one's complement
65%
روش tow's complement
♨️ در مجموعه پست زیر با روش‌های مختلف پیاده‌سازی اعداد علامت‌دار و ویژگی‌های هر کدام آشنا می‌شوید: 👇👇👇

https://t.me/fpga0/811
https://t.me/fpga0/812
https://t.me/fpga0/817

🆔 @FPGA0
⚡️ تبدیل انواع داده به یکدیگر در زبان VHDL (قسمت اول)

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

🔷 از طرف دیگر، با توجه به قوانین ارجاع در زبان VHDL، نوع (type) تمام سیگنال‌های حاضر در یک ارجاع باید یکسان باشد.

🔷 بنابراین، در کدنویسی VHDL نیاز دارید از قابلیت «تبدیل نوع»‌ یا «Type Conversion» استفاده کنید.

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

1⃣ نوع std_logic_vector
2⃣ نوع بدون‌ علامت (unsigned)
3⃣ نوع علامت‌دار (signed)
4⃣ نوع integer


در پست‌های آینده، درباره‌ی نحوه‌ی تبدیل این داده‌های برداری به یکدیگر صحبت خواهم کرد.

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

🔹 در یک شرکت دانش بنیان به چند کارشناس برق به صورت تمام وقت یا نیمه وقت در حوزه‌های زیر نیاز است:

1️⃣ شبیه‌سازی الگوریتم‌ها و پردازش سیگنال و سنسورها (کارشناسی یا ارشد برق)
2️⃣ کدنویسی ARM و FPGA و طراحی PCB (حوزه الکترونیک یا الکترونیک قدرت) (کارشناسی یا ارشد برق)
3️⃣ مونتاژ، تست و راه اندازی برد (دیپلم یا کارشناسی برق)

🔺 با بیمه
🏢 محل کار: دانشکده فنی دانشگاه تهران

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

📭 edu@faradandish.com

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

🆔 @FPGA0
⚡️ تبدیل انواع داده به یکدیگر در زبان VHDL (قسمت دوم)

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

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

❇️ دسته‌ی اول: این دسته شامل تبدیل نوع std_logic_vector ،unsigned و signed به یکدیگر است.

◀️ مثال. ارجاع زیر را در نظر بگیرید:

B <= A;

🔹 فرض کنید:

سیگنال A: از نوع std_logic_vector
سیگنال B: از نوع علامت‌دار

🔹 با توجه به قانون ارجاع ساده، چنین ارجاعی قابل انجام نیست و حتما باید تبدیل نوع انجام دهیم.

طبق قواعد زبان VHDL، همیشه باید نوع سیگنالی که قرار است به سیگنال دیگر منتقل شود را تغییر دهیم.

🔹 بنابراین، در این مثال باید نوع سیگنال A را به signed تغییر دهیم؛ برای این کار به صورت زیر عمل می‌کنیم:

B <= signed (A);

ادامه دارد...
🆔 @FPGA0
⚡️ تبدیل انواع داده به یکدیگر در زبان VHDL (قسمت سوم)

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

در این پست، دسته‌ی دوم را بررسی می‌کنیم.

❇️ دسته‌ی دوم: این دسته شامل تبدیل سیگنال‌های unsigned و signed به integer است.

🔷 فرض کنید سیگنال هشت بیتی X در کد ما وجود دارد و با توجه به مقدار سیگنال سه بیتی i که ورودی مدار و از نوع unsigned است می‌خواهیم بیت iام سیگنال X را به سیگنال تک بیتی Y ارجاع دهیم.

🔷 این کار را می‌توانیم به کمک تابع ()to_integer به صورت زیر انجام دهیم:

Y <= X(to_integer(i));

🔷 در این کد، نوع سیگنال i را به کمک تابع ()to_integer از unsigned به integer تغییر داده‌ایم چون نوع اندیس یا آرگومان یک سیگنال حتما باید integer باشد.

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

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

در این پست، دسته‌ی سوم را بررسی خواهیم کرد.

❇️ دسته‌ی سوم: این گروه از تبدیل‌ها، تبدیل نوع integer به نوع unsigned و signed است که بسیار پرکاربرد است.

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

◀️ فرض کنید می‌خواهیم مقدار ۴۴ را به سیگنال بدون علامت و ۱۳ بیتی X ارجاع دهیم.

روش اصولی برای مقداردهی سیگنال، استفاده از تبدیل نوع integer به unsigned است:

X <= to_unsigned(44,13);

در واقع، تبدیل to_unsigned، یک عدد integer را به یک عدد بدون‌ علامت تبدیل می‌کند. در این مثال، عدد ۱۳ بیانگر عرض بیت سیگنال است.

برای آشنایی بیشتر با جزئیات تبدیل نوع در زبان VHDL و بررسی چند مثال مفصل‌تر، پیشنهاد می‌کنم مقاله "کاربردهای تبدیل انواع داده در کدنویسی به زبان VHDL" را در سایت فراد اندیش مطالعه کنید 👇

🆔 @FPGA0
🆔 @FPGA0
#مقاله۱۱
🎓 کاربردهای انواع داده در کدنویسی به زبان VHDL

📚 نوشته فاطمه مشاک

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

🌎 https://bit.ly/VHDLTypeConversion
معیارهای انتخاب تکنولوژی مناسب برای پیاده‌سازی یک پروژه چه مواردی هستند؟
Anonymous Quiz
5%
هزینه تکنولوژی
2%
سرعت تکنولوژی
2%
سهولت پیاده‌سازی
91%
همه موارد
♨️ برای آشنایی با نحوه‌ی انتخاب تکنولوژی مناسب یک پروژه به مجموعه پست زیر مراجعه کنید:👇👇👇

https://t.me/fpga0/808
https://t.me/fpga0/809
https://t.me/fpga0/810

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

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

❇️ در بخش Entity، پورت‌های ورودی/خروجی مدار دیجیتال توصیف می‌شوند.

❇️ در بخش Architecture نیز مدار دیجیتال موردنظر توصیف می‌شود.

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

❇️ مراحل پیاده‌سازی مدار در FPGA

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

1⃣ ورود طرح و کامپایل

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

۱. توصیف مدار به‌کمک شماتیک
۲. استفاده از یک زبان توصیف سخت‌افزاری مانند VHDL یا Verilog

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

🔷 پس از وارد کردن طرح و بررسی خطاهای احتمالی در نوشتن آن (syntax error)، باید آن را کامپایل کرد.

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

2⃣ شبیه‌سازی منطقی

🔷 برای ارزیابی صحت طرح، معمولاً آن را شبیه‌سازی می‌کنند. شبیه‌سازی در این مرحله را شبیه‌سازی منطقی (Functional) یا رفتاری (Behavioral) می‌نامند؛ زیرا آنچه را در این مرحله می‌توان شبیه‌سازی کرد فقط منطق طرح است و مواردی مثل تأخیر گیت‌ها و مسیرها هنوز برای ابزار طراحی شناخته شده نیست.

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

🌎 https://bit.ly/Simulation-ISim

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

🆔 @FPGA0