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

https://t.me/fpga0/830
https://t.me/fpga0/832
https://t.me/fpga0/834

🆔 @FPGA0
⚡️ انواع حافظه‌ها در FPGA و کاربرد هر کدام از آن‌ها (قسمت اول)

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

🔷 پس از اینکه این نوع حافظه‌‌ها را به شما معرفی کرد‌‌م‌‌، در مورد این موضوع صحبت می‌‌کنم که هر کدام از این حافظه‌ها را تحت چه شرایطی باید استفاده کرد.

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

❇️ انواع حافظه‌‌ها‌‌ی موقت

🔷 به‌طور کلی‌‌، در FPGA‌‌ها‌‌، دو نوع حافظه وجود دار‌‌د:

1⃣ حافظه‌‌ها‌‌ی بلوکی یا Block RAM‌‌ها

2⃣ حافظه‌‌ها‌‌ی توزیع‌شد‌‌ه یا Distributed RAM‌‌‌ها

❇️ حافظه‌‌ها‌‌ی بلوکی

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

این حافظه‌‌ها‌‌،‌‌ در اندازه‌‌ها‌‌ی مشخصی وجود دار‌‌ند‌‌؛ مثلاً در FPGA‌‌ها‌‌ی شرکت XILINX مقدار این حافظه‌‌ها معمولا ۱۸ یا ۳۶ کیلو‌بیت است که به تعداد قابل توجهی در یک FPGA وجود دار‌‌ند‌‌.

🔷 هر حافظه ۱۸ کیلو‌بیتی می‌تواند به‌صورت دو حافظه‌‌ی نُه کیلو‌بیتی و هر حافظه ۳۶ کیلو‌بیتی، می‌‌تواند به‌صورت دو حافظه‌‌ی ۱۸ کیلو‌بیتی استفاده شود‌‌.

🔷 حافظه‌‌ها‌‌ی بلوکی در FPGA، به‌صورت Dual Port وجود دار‌‌ند‌‌؛ حافظه‌‌ای که Dual Port است، برای ورود‌‌ی دیتا (یعنی‌‌ برای نوشتن دیتا در RAM) و برای خروجی دیتا‌‌ (یعنی برای خواندن اطلاعات از RAM)، دو پورت مستقل از هم دار‌‌د. به‌ازا‌‌ی هر کدام از این پورت‌‌ها نیز یک خط آدرس مستقل وجود دار‌‌د‌‌.

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

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

🆔 @FPGA0
⚡️ انواع حافظه‌ها در FPGA و کاربرد هر کدام از آن‌ها (قسمت دوم)

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

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

❇️ ویژگی مهم حافظه‌‌ها‌‌ی بلوکی

🔷 اگر شما بخشی از حافظه‌ی نُه کیلو‌بیتی، مثلاً یک کیلو‌بیت از آن را اِشغال کنید و در هر کلاک، به محتوا‌‌ی این حافظه‌‌ی یک کیلو‌بیتی نیاز داشته باشید، دیگر نمی‌‌توانید از بقیه‌‌ی این حافظه‌‌، یعنی از هشت کیلو‌بیت باقی‌مانده، استفاده کنید‌‌.

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

❇️ حافظه‌‌ها‌‌ی توزیع‌شد‌‌ه

🔷 هر FPGA از هزار‌‌ان LUT یا حافظه‌‌ی کوچک تشکیل شد‌‌ه است که هر کدام از این حافظه‌‌ها‌‌ی کوچک می‌‌تواند بخش کوچکی از مدار شما را پیاده‌‌ساز‌‌ی کنند.

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

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

به حافظه‌ای که از به هم متصل شد‌‌ن LUT‌‌ها ایجاد می‌شود، حافظه‌‌ی توزیع‌شد‌‌ه می‌گویند.

❇️ ویژگی مهم حافظه‌‌ توزیع‌شد‌‌ه

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

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

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

اکنون سوالی که مطرح می‌شود این است که هر کدام از این انواع حافظه را چه موقع باید به کار ببرید؟

در پست بعدی، به‌طور مفصل به این موضوع می‌پردازم.

ادامه دارد...
🆔 @FPGA0
⚡️ انواع حافظه‌ها در FPGA و کاربرد هر کدام از آن‌ها (قسمت سوم)

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

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

کاربرد هر کدام از این حافظه‌ها کجاست؟

چه موقع باید از حافظه‌‌ها‌‌ی بلوکی و چه موقع باید از حافظه‌‌ها‌‌ی توزیع‌شد‌‌ه استفاده کنیم؟

☑️ جواب این سوالات در توضیحات پست‌های قبل نهفته ا‌‌ست.

اکنون نکات اصلی را دوباره مرور می‌‌کنم‌‌.

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

🌀 مثلاً‌‌، اگر از ۱۰۰ بیت یک حافظه‌‌ی نُه کیلوبیتی استفاده کنید‌‌، دیگر نمی‌‌توانید از بقیه‌ این حافظه استفاده کنید‌‌.

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

🌀 نکته‌‌ی بعد‌‌ی این است‌‌ که اگر شما از حافظه‌‌ها‌‌ی توزیع‌شد‌‌ه برای تولید و پیاده‌‌ساز‌‌ی حافظه استفاده کنید، منابع عمومی پیاده‌‌ساز‌‌ی را (که همان LUT‌‌ها هستند)، به مقدار زیاد‌‌ی مصرف می‌‌کنید‌‌.

🌀 همچنین، برای اینکه این LUT‌‌ها به هم متصل شوند، تعداد زیاد‌‌ی سیم‌‌بند‌‌ی، مالتی‌‌پلکسر و منابع دیگر نیاز است.

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

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

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

و هرگاه بخواهید از حافظه‌‌ها‌‌ی بزرگ (مثلاً‌‌، یک کیلو‌بیت‌‌، دو کیلو‌بیت یا بیش‌تر) استفاده کنید‌‌، بهتر‌‌ین انتخاب، استفاده از حافظه‌‌ها‌‌ی بلوکی است.

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

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

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

🆔 @FPGA0
🆔 @FPGA0
#برنامه_ویدئویی۱۷
🎓 انواع حافظه‌های موقت در FPGA

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

📥 در سایت فراد اندیش ببینید 👇👇👇👇
🌎 http://bit.ly/FPGA-RAM
اگر در کد توصیف سخت‌افزاری، عملگر ضرب استفاده شود، نرم‌‌افزار سنتز به‌صورت پیش‌‌فرض چگونه آن را پیاده‌سازی می‌کند؟
Anonymous Quiz
56%
با استفاده از بلوک DSP48
44%
با استفاده از LUTها
♨️ برای اطلاعات بیشتر درباره نحوه پیاده‌سازی عملیات ضرب در FPGA به مجموعه پست زیر مراجعه کنید.👇👇👇

https://t.me/fpga0/838
https://t.me/fpga0/839
https://t.me/fpga0/840
https://t.me/fpga0/842

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

🔹 در یک شرکت دانش بنیان در بخش تحقیق و توسعه به چند کارشناس برق به صورت پاره وقت، تمام وقت و پروژه‌ای برای انجام پروژه‌های مرتبط با پیاده‌سازی در حوزه ارتباطات و مخابرات نیاز است.

🔹 مهارت‌های زیر در اولویت هستند:

1️⃣ مسلط به کار با FPGA
2️⃣ مسلط به طراحی PCB با نرم افزار Altium Designer
3️⃣ مسلط به کار با میکروهای AVR و ARM
4️⃣ آشنایی با مباحث مخابراتی

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

📭 edu@faradandish.com

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

🆔 @FPGA0
🆔 @FPGA0

📚 عنوان: FPGA-based Implementation of Signal Processing Systems

👤 نویسنده: Roger Woods
📅 سال انتشار: 2008
🖨 ناشر: John Wiley & Sons

📥 لینک دانلود: https://goo.gl/DlK1lP
⚡️ نحوه اختصاص پورت‌های مدار به پین‌های FPGA (قسمت اول)

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

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

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

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

🔷 عبارت UCF، مخفف عبارت User Constraints File است.

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

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

🌀 در مقالات "۲ روش برای تعیین استراتژی طراحی در نرم‌افزار ISE" و "افزایش سرعت مدار با تنظیم قیدها در ISE" در سایت فراداندیش به این موضوع پرداخته شده است:

🌎 http://bit.ly/DesignStrategyGoals

🌎 http://bit.ly/Implementation_Constraints

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

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

🆔 @FPGA0
🆔 @FPGA0
#مقاله۱۲
🎓 ۲ روش برای تعیین استراتژی طراحی در نرم‌افزار ISE

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

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

🌎 http://bit.ly/DesignStrategyGoals
⚡️ نحوه اختصاص پورت‌های مدار به پین‌های FPGA (قسمت دوم)

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

🔷 چون در غیر این صورت، نرم‌افزار ISE از اینکه شما روی بُرد از کدام‌یک از پین‌‌ها برای اتصال به قطعات مختلف استفاده کرده‌اید، اطلاعی ندارد.

این قید ضروری، قید مکان یا Location نام دارد که به‌طور مخفف به‌صورت LOC نوشته می‌شود.

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

🌀 برای مثال، اگر اسیلاتور روی بُرد به پین شماره p14 از FPGA وصل شده باشد، پورت تک‌بیتی Clock مدار را به‌صورت زیر به این پین متصل می‌کنیم:

Net "Clock" LOC = p14;

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

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

🌎 http://bit.ly/Pin_Assignment

🆔 @FPGA0
🌟 آشنایی با نرم‌افزار ویوادو...

🔹 قابلیت‌های مهم نرم‌افزار ویوادو چیست و چرا باید از آن استفاده کنیم؟

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

⚡️ آموزش نرم‌افزار ویوادو تا چند روز دیگر به عنوان جلسه نهم دوره آنلاین طراحی دیجیتال با FPGA اضافه خواهد شد 👇

🆔 @FPGA0
🆔 @FPGA0
#برنامه_ویدئویی۳۸
🎓 آشنایی با نرم‌افزار ویوادو – قسمت اول

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

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

🌎 http://bit.ly/Vivado1
⚡️ خبر فوری...

🔹آموزش فشرده نرم‌افزار ویوادو در همین هفته به دوره آنلاین طراحی دیجیتال با FPGA اضافه می‌شود

❇️ اگر در دوره آنلاین طراحی دیجیتال با FPGA شرکت کرده‌اید، با ورود به بخش "دوره‌های من" به این آموزش دسترسی خواهید داشت

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

🆔 @FPGA0
🆔 @FPGA0
#برنامه_ویدئویی۳۹
🎓 آشنایی با نرم‌افزار ویوادو – قسمت دوم

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

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

🌎 http://bit.ly/Vivado2
⚡️ آموزش ویوادو منتشر شد...

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

🔶 این جلسه، در مقایسه با هشت جلسه قبلی این دوره، بسیار بزرگتر و طولانی‌تر است و شامل ۱۵ درس در مورد کاربری روزمره ویوادو است.

🔹 اگر قبلا در این دوره ثبت‌نام کرده‌اید، همین حلا می‌توانید در سایت لاگین کنید و از بخش "دوره‌های من" به این آموزش دسترسی داشته باشید

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

🌎 http://bit.ly/Vivado1
🌎 http://bit.ly/Vivado2

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

🆔 @FPGA0
Media is too big
VIEW IN TELEGRAM
⚡️ صدور مدرک آنلاین برای دوره‌های آنلاین فراد اندیش...

🔹تا به امروز، ما امکان صدور مدرک برای شرکت کنندگان در دوره‌های آنلاین را نداشتیم

🌟 ما مشکلات موجود برای انجام این کار را برطرف کرده‌ایم و به زودی این امکان به دوره‌های آنلاین اضافه خواهد شد

🔶 اما مشکلی که برای این کار وجود داشت چه بود؟ و چگونه برطرف شد؟

🔹 برای پاسخ به این سوالات، این ویدئوی کوتاه را مشاهده کنید 👆

🆔 @FPGA0
🌟 فایل قیود کاربر در ویوادو...

🔹 برای پیاده‌سازی عملی یک پروژه به کمک نرم‌افزار ویوادو، حداقل به دو فایل نیاز دارید: فایل VHDL یا Verilog و فایل قیود کاربر یا XDC

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

🔹 اگر تصمیم دارید پروژه‌ای را به صورت عملی روی FPGA پیاده‌سازی کنید، پیشنهاد می‌کنم حتما این برنامه را ببینید 👇

🆔 @FPGA0