آموزش اِف‌پی‌جی‌اِی از صفر
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
♨️ برای اطلاعات بیشتر درباره بلوک DCM و مزایای آن برای پیاده‌سازی کلاک در FPGA، به مجموعه پست زیر مراجعه کنید👇👇👇

https://t.me/fpga0/888
https://t.me/fpga0/890
https://t.me/fpga0/892

🆔 @FPGA0
⚡️ چرا در کدهایمان از متغیر استفاده نمی‌کنیم؟ (قسمت دوم)

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

🔷 در زبان VHDL، شما می‌توانید constant را در محیط معرفی (قبل از begin در بخش architecture) تعریف کنید.

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

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

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

اما تحقق فیزیکی و دیجیتالی constant در FPGA به چه صورت است؟

🔷 با توجه به اینکه constant یک مقدار ثابت است، در پیاده‌سازی، به کمک Vcc و GND‌هایی که درون FPGA وجود دارد استفاده می‌شود.

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

🆔 @FPGA0
⚡️ چرا در کدهایمان از متغیر استفاده نمی‌کنیم؟ (قسمت سوم)

🔷 در قسمت‌های قبل،‌ دو object سیگنال و constant را معرفی و بررسی کردیم. در این بخش، به‌سراغ variable می‌رویم تا ببینیم که متغیر در زبان VHDL دقیقاً چیست و نحوه پیاده‌سازی آن به چه صورت است؟

❇️ variable

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

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

🔷 برای ارجاع signal از علامت (=>) استفاده می‌کردیم اما برای ارجاع variable باید از علامت (=:) استفاده کنیم.

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

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

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

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

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

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

🔷 اما وقتی در یک پراسس متغیر داشته باشید، ارجاعاتی که در سمت راست آن‌ها متغیر حضور دارد، با شروع پراسس نمی‌توانند انجام شوند؛ زیرا ابتدا باید به متغیرها ارجاع انجام شود و مقدار آن‌ها تغییر کند.

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

پس، استفاده از متغیر ممکن است سرعت مدار را کاهش می‌دهد.

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

به این ترتیب،‌ با مشاهده شماتیک دو مدار و مقایسه آن‌ها، دیدگاه واضح‌تری نسبت به تاثیر استفاده از متغیر در پیاده‌سازی‌ها خواهید داشت:

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

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

🎓 چرا هرگز از متغیر در زبان VHDL استفاده نمی‌کنم؟

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

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

🌎 http://bit.ly/VHDL-Variable
کدام تراشه زیر دارای هسته پردازشی (CPU) است؟
Anonymous Quiz
15%
ARM
18%
FPGA
4%
AVR
63%
گزینه ۱ و ۳
♨️ برای اطلاعات بیشتر درباره تفاوت ماهیت FPGA و پردازنده‌ها، به مجموعه پست زیر مراجعه کنید👇👇👇

https://t.me/fpga0/869
https://t.me/fpga0/870

🆔 @FPGA0
🆔 @FPGA0
#مقاله۱۴
🎓 مراحل پروگرام کردن FPGA

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

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

🌎 http://bit.ly/ProgrammingFPGA
♨️ برای اطلاعات بیشتر درباره پیاده‌سازی کلاک در FPGA، به مجموعه پست زیر مراجعه کنید👇👇👇
https://t.me/fpga0/882
https://t.me/fpga0/883
https://t.me/fpga0/884

🆔 @FPGA0
برای پیاده‌سازی ضرب در 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