آموزش اِف‌پی‌جی‌اِی از صفر
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 نیاز به آشنایی با الگوریتم‌های پردازشی و نحوه طراحی آن‌ها نداریم، اما مطمئناً آشنایی با مفاهیم مرتبط با پردازش سیگنال می‌تواند به ما برای پیاده‌سازی بهینه و همچنین تعامل آسان‌تر با طراح الگوریتم‌ها کمک کند.

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

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

🔷 این را کتاب را دانلود کنید و در اولین فرصت مطالعه آن را شروع کنید 👇
🆔 @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
🌟 کرونافِر چیست؟

🔹 کرونافِر از دو کلمه کرونا و آفر (به معنای پیشنهاد) تشکیل شده است و به معنای پیشنهاد کرونایی یا پیشنهادی به دلیل شرایط کرونا است.

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

🔹 این پیشنهادات فقط به دلیل شرایط استثنایی کشور و کمک به استفاده بهتر از این دوران ارائه شده‌اند.

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

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

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

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

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

همچنین، دو مزیت مهم استفاده از آن که "کاهش جیتر کلاک ورودی" و "تصحیح Duty Cycle کلاک ورودی" است بیان شد.

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

3⃣ استفاده‌ی خودکار از بافرهای مخصوص کلاک

🔷 در FPGA، بافرهای مخصوصی وجود دارند که باید در مسیر کلاک یا کلاک‌های ورودی مدار قرار داده شوند.

🔷 به عبارت دیگر، برای استفاده از تمام تمهیداتی که برای کلاک در FPGA وجود دارد، شما حتماً باید سیگنال کلاک مدار را به محض ورود به FPGA، از این بافرها عبور دهید.

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

🔷 اما اگر از بلوک DCM استفاده کنید، تمام بافرهای کلاک لازم، به صورت خودکار در مدار شما قرار خواهد گرفت و دیگر نیازی به instant کردن دستی آن‌ها نیست.

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

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

به این ترتیب می‌توانید از مزایای زیادی که استفاده از DCM برای مدار شما ایجاد می‌کند، بهره ببرید.

🆔 @FPGA0
سوال:

من میخوام یه مدار فرکانس بالا طراحی کنم و پیاده سازی سخت افزاری کنم اونم تا حد 10گیگاهرتز. آیا با FPGA این امکان هست و اگر نیست با کدوم سخت افزاری مثل FPGA میشه مدارات فرکانس بالا اونم تا این حد فرکانس زیاد ساخت؟

📝 جواب:

در FPGAهای شرکت Xilinx پایه‌های ورودی/خروجی (I/O) مخصوصی وجود دارند به نام Gigabit Transceiver یا GT که قابلیت ارسال و دریافت دیتا حتی بیش از ۱۰ گیگابیت در ثانیه را هم دارند. البته تعداد این پایه‌ها و حداکثر سرعت آن‌ها در هر نوع از FPGAهای شرکت Xilinx متفاوت هست.

برای اطلاعات بیشتر میتونید به لینک زیر مراجعه کنید:

http://www.xilinx.com/products/technology/high-speed-serial.html

البته طراحی چنین بردی نیاز به تجربه دارد. با نرم‌افزار آلتیوم می‌توان این برد را طراحی کرد، فقط طراح حتماً باید تجربه‌ی چنین کاری را داشته باشد؛ در غیر این صورت نیاز به زمان زیادی خواهد داشت.
🆔 @FPGA0
⚡️ تحقق مداری یک سیگنال در زبان VHDL وقتی در FPGA پیاده‌سازی می‌شود چیست؟

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

🔹 به صورت یک سیم
🔹 به صورت یک رجیستر

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

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

اگر به یک سیگنال داخلی در محیط کانکارنت ارجاع‌ دهید (یعنی این سیگنال در محیط کانکارنت سمت چپ یک ارجاع باشد)، در پیاده‌سازی تبدیل به یک سیم می‌شود.

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

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

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

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

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

🔷 در زبان VHDL، برای انجام ارجاع‌ها قوانینی وجود دارد که در ادامه به آن‌ها می‌پردازیم.

1⃣ قانون ارجاع ساده

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

🔷 برای مثال، باید عرض بیت دو سیگنال A و B در ارجاع زیر با هم برابر باشد:

A <= B;

2⃣ قانون ارجاع جمع

🔷 فرض کنید مانند کد زیر می‌خواهیم تعدادی سیگنال را با هم جمع یا تفریق کنیم:

A <= B + C – D;

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

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

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

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

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

🔷 در قسمت قبل، با قانون ارجاع ساده و ارجاع جمع در زبان VHDL آشنا شدیم. در این قسمت، با دو قانون ارجاع دیگر آشنا خواهیم شد.

3⃣ قانون ارجاع ضرب

🔷 عملگر ضرب در زبان VHDL تعریف شده است و ما می‌توانیم به راحتی از آن استفاده کنیم.

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

🔷 طبق قانون ارجاع ضرب در زبان VHDL باید عرض بیت سیگنال سمت چپ با مجموع عرض بیت‌های سیگنال‌های سمت راست برابر باشد.

🔷 برای مثال، در کد زیر باید عرض بیت سیگنال A، با مجموع عرض بیت‌های سیگنال‌های B و C برابر باشد.

A <= B * C;

4⃣ قانون ارجاع Concatenation

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

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

یادآوری: به طور کلی، در هر نوع ارجاعی، باید نوع یا تایپ‌ تمامی سیگنال‌های حاضر در ارجاع یکسان باشد.

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

🆔 @FPGA0
سوال:

ايا برای يادگيري و تسلط بالاي هفتاد درصد به fpga نياز به يادگيري arm, avr, dsp هست؟ اگه هست تا چه حد؟
اين سوال من و خيلي از هم کلاسيانم هست،ممنون.

🆔 @FPGA0
📝 جواب:

برای یادگیری و تسلط بر FPGA نیاز به یادگیری هیچکدام از پردازنده‌هایی که ذکر کردید نیست. تنها پیش نیاز لازم، آشنایی عمومی با مدارات منطقی هست.

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

🆔 @FPGA0
سوال:

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

🆔 @FPGA0
📝 جواب:

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

برای آشنایی با زبان VHDL می‌توانید برنامه‌های ویدئویی زیر را ببینید:

🌎 http://goo.gl/ex5MTg

🌎 http://goo.gl/2ejGNO

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

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

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

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

ما در دوره‌های تخصصی آموزشگاه فراد اندیش، زبان VHDL را آموزش می‌دهیم.

لینک نرم‌افزار ISE را قبلاً برای دانلود در پست زیر قرار دادم:

🌎 http://goo.gl/czypdO


🆔 @FPGA0