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

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

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

نحوه‌ی عملکرد FPGA:

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

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

🔹 در واقع، شما با توصیف الگوریتم خود، به کمک یک زبان توصیف سخت‌افزار (مثلاً زبان VHDL)، مدار پیاده کننده‌ی آن الگوریتم را به صورت سخت‌افزاری، در FPGA می‌سازید.

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

درباره‌ی منابع دیجیتالی داخل FPGA، در مقاله‌ی "ماهیت و ساختار FPGA" بخوانید:

🌎http://bit.ly/FPGA-Structure

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

ادامه دارد...
🆔 @FPGA0
⚡️ تفاوت ماهیت FPGA و پردازنده‌ها (قسمت دوم)

در پست قبلی، در مورد نحوه‌ی عملکرد FPGA‌ها صحبت کردم؛ در این پست، درباره‌ی عملکرد پردازنده‌ها توضیح می‌دهم:

نحوه‌ی عملکرد پردازنده‌ها:

🔹 پردازنده‌ها، دارای تعدادی سخت‌افزار آماده و یک هسته‌ی پردازشی (CPU) هستند.

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

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

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

روند اجرای دستورات توسط CPU را به کمک یک مثال در لینک زیر توضیح داده‌ام:

🌎http://bit.ly/FPGAvsCPU


🆔 @FPGA0
🔹 کتابی که امروز معرفی می‌کنم، می‌تواند به عنوان یک کتاب مکمل برای افرادی که تسلط نسبی به زبان VHDL دارند مورد استفاده قرار گیرد.

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

🔹 در این کتاب انواع پروژه‌های مهم مطرح شده‌اند و برای هر کدام هم مداری به کمک زبان VHDL طراحی شده است.

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

🆔@FPGA0
🆔 @FPGA0

📚 عنوان: Design Recipes for FPGAs

👤 نویسنده: Peter L. Wilson
📅 سال انتشار: 2007
🖨 ناشر: Newnes

📥 لینک دانلود: https://goo.gl/BQQSCo
سوال:

من رشته تحصیلیم فیزیک بوده و یک مقدار کم هم AVR و یک مقداری هم آردوینو کار کردم. اطلاع دقیقی از این بخش الکترونیک ندارم. می خواستم بدونم که اگر بخوام توی این بخش وارد بشم راحت هست یانه؟ منظورم اینه که پیش نیازی هم لازم داره که من باید بلد باشم یا نه؟ در کل برای من که رشته الکترونیک نبودم و به صورت تجربی کار کردم راحت هست یا نه؟ آیا واردش بشم؟؟

📝 جواب:

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

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

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

برای آشنایی با ساختار و ماهیت FPGAها، دو مقاله‌ی زیر را ببینید:

🌎http://bit.ly/What-is-FPGA-1

🌎http://bit.ly/What-is-FPGA-2

برای آشنایی با کاربردهای FPGAها و بازار کار آن در ایران، ویدئوی زیر را ببینید:

🌎http://bit.ly/The-Future-of-FPGA

اگر بیشتر اهل مطالعه هستید، می‌توانید گزارش FPGAشناسی در 30 دقیقه را هم از لینک زیر دانلود کنید 👇 👇

🌎 http://goo.gl/RzRoIK

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

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

1⃣ مدارات ترکیبی

2⃣ مدارات ترتیبی آسنکرون

3⃣ مدارات ترتیبی سنکرون

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

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

اما در عمل، کدام نوع مدار را در FPGA پیاده‌سازی می‌کنیم؟

فقط مدارات ترتیبی سنکرون!
چون مداری که به صورت کاملاً سنکرون پیاده‌سازی شود، دارای مزایای زیر است:

🔷 منابع سخت‌افزاری کمتری از FPGA اشغال می‌کند.

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

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

🔷 دارای قابلیت اطمینان بیشتری در بلند مدت است.

اما مهمترین نیازمندی یک مدار سنکرون چیست؟

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

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

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

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

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

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

✳️ استفاده از بلوک DCM

اولین نکته‌ی مهم برای پیاده‌سازی کلاک در FPGA این است که همواره از بلوک DCM استفاده کنید.

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

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

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

ادامه دارد...
🆔@FPGA0
چگونه یک سیگنال کلاک با کیفیت داشته باشیم؟ (قسمت دوم)

✳️ استفاده از قید پریود

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

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

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

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

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

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

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

🔷 به همین دلیل، توصیه اکید شرکت Xilinx این است که حتماً از قید period استفاده کنید.

در واقع، استفاده از قید period در مدارات یک "الزام" است.

برای مثال، در صورتی که فرکانس اعمال شده به مدار 50MHz باشد، باید کد زیر را در فایل UCF وارد کنیم:

NET "Clock" TNM_NET = Clock;
TIMESPEC TS_Clock = PERIOD "Clock" 50 MHz HIGH 50% ;

در کد بالا، فرض شده است که نام پورت کلاک، Clock است.

ادامه دارد...
🆔 @FPGA0
چگونه یک سیگنال کلاک با کیفیت داشته باشیم؟ (قسمت سوم)

✳️ ورود سیگنال کلاک به FPGA فقط از طریق پایه‌های مخصوص به کلاک

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

🔷 در ‌FPGAها، تعداد زیادی IO وجود دارد؛ اما از میان این IO‌ها، تنها تعداد کمی از آن‌ها مخصوص ورود کلاک هستند.

در ‌FPGAهای شرکت Xilinx، نام پایه‌های کلاک شامل کلمه‌ی GCLK یا CC است.

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

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

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

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

🆔@FPGA0
❇️ اگر چه ما به عنوان "پیاده‌ساز" الگوریتم‌های پردازش سیگنال با FPGA نیاز به آشنایی با الگوریتم‌های پردازشی و نحوه طراحی آن‌ها نداریم، اما مطمئناً آشنایی با مفاهیم مرتبط با پردازش سیگنال می‌تواند به ما برای پیاده‌سازی بهینه و همچنین تعامل آسان‌تر با طراح الگوریتم‌ها کمک کند.

🔺 اما مشکلی که در این بین وجود دارد این است که یادگیری این مفاهیم اغلب مستلزم مطالعه‌ی کتاب‌های پیچیده و پر از فرمول پردازش سیگنال است که البته خوشایند اکثر ما نیست.

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

🔷 این را کتاب را دانلود کنید و در اولین فرصت مطالعه آن را شروع کنید 👇
🆔 @FPGA0

📚 عنوان: Practical Digital Signal Processing

👤 نویسنده: Edmund Lai
📅 سال انتشار: 2003
🖨 ناشر: Elsevier

📥 لینک دانلود: https://goo.gl/bjaNQQ
⚡️ مزایای استفاده از بلوک DCM برای پیاده‌سازی کلاک در FPGA (قسمت اول)

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

کاربرد اصلی بلوک DCM تغییر فرکانس کلاک مدار است.

🔷 به کمک این بلوک می‌توانید سیگنال کلاکی که توسط اسیلاتور روی بُرد ساخته شده و به FPGA وارد می‌شود را به سیگنال کلاک جدیدی با فرکانس مورد نظرتان برای استفاده در مدار تبدیل کنید.

استفاده از بلوک DCM، به جز تغییر فرکانس اسیلاتور، دارای مزایای مهم دیگری نیز است که به همین دلیل، توصیه می‌شود در تمام پیاده‌سازی‌ها، از بلوک DCM استفاده شود. (حتی اگر نیاز به تغییر فرکانس کلاک روی برد نباشد!)

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

ادامه دارد...
🆔 @FPGA0
🌟 پیشنهادات جدید فراد اندیش برای ایام کرونا...

🔹 در لینک زیر به سوالات و ابهامات شما در مورد دوره‌های آنلاین پاسخ داده‌ام و...

🔅 پیشنهادات ویژه‌ای را به دلیل شرایط ویژه کشور برای اولین بار ارائه کرده‌ام 👇

🌎 https://faradandish.com/course-faq

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

همان‌طور که در پست قبلی اشاره شد، کاربرد اصلی بلوک DCM تغییر فرکانس کلاک مدار است.

اما این بلوک مزایای مهم دیگری نیز دارد:

1⃣ کاهش جیتر کلاک ورودی

🔷 بلوک DCM می‌تواند جیتر کلاک ورودی را کاهش دهد.

اما منظور از جیتر چیست؟

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

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

🔷 اما در عمل، فرکانسی که این اسیلاتور تولید می‌کند ۱۰۰ مگاهرتز نیست، بلکه مقداری نزدیک به ۱۰۰ مگاهرتز است، و این مقدار مدام در حال تغییر است.

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

🔷 یکی از مهمترین مزایای بلوک DCM این است که می‌تواند تا حد زیادی جیتر کلاک حاصل از اسیلاتور را کاهش دهد.

ادامه دارد...
🆔 @FPGA0
🌟 کرونافِر: پیشنهادات ویژه ایام کرونا...

🔹 پزرگترین فروش ویژه فراد اندیش به دلیل شرایط ویژه کشور

🔅 برای اطلاع از این پیشنهادات روی لینک زیر کلیک کنید: 👇

🌎 https://faradandish.com/corona-offer

🔺 مهلت استفاده از کرونافِر: جمعه ۵ اردیبهشت

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

در پست‌های قبلی گفتیم که کاربرد اصلی بلوک DCM، تغییر فرکانس کلاک مدار است.

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

اما مزیت دوم بلوک DCM:

2⃣ تصحیح Duty Cycle کلاک ورودی

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

🔷 مثلاً، فرض کنید که شما انتظار دارید duty cycle اسیلاتور روی بُرد، 50 درصد باشد.

🔷 با این حال، ممکن است مقداری خطا در duty cycle وجود داشته باشد.

🔷 بلوک DCM می‌تواند خطای duty cycle سیگنال کلاک را تصحیح کند.

ادامه دارد...
🆔 @FPGA0