آموزش اِف‌پی‌جی‌اِی از صفر
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 پرداختم؛ در این پست مراحل کار را پی می‌گیریم.

3⃣ سنتز طرح و شبیه‌سازی زمانی

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

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

🔷 به عبارت دیگر، نرم‌افزار پیاده‌ساز باید بتواند به‌کمک منابعی که در یک FPGA خاص وجود دارد، مثل LUTها، مالتی‌پلکسرها، ضرب‌کننده‌ها و غیره، توصیف سخت‌افزاری موردنظر را پیاده‌سازی کند.

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

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

🔷 بنابراین، بعد از مرحله‌ی سنتز می‌توان مجدداً طرح را شبیه‌سازی کرد. تفاوت این شبیه‌سازی که به آن شبیه‌سازی زمانی (Timing Simulation) گفته می‌شود، با شبیه‌سازی منطقی در این است که تأخیر‌های انتشار (Propagation Delays) منابع به‌کار گرفته شده در طرح نیز در شبیه‌سازی دخیل می‌شوند و درنتیجه، شبیه‌سازی به آنچه در عمل رخ می‌دهد نزدیک‌تر است.

4⃣ جانمایی طرح

🔷 مرحله مهم بعدی در طراحی دیجیتال به‌کمک FPGA، جانمایی (Placement) است.

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

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

5⃣ مسیریابی و شبیه‌سازی زمانی

🔷 مرحله بسیار مهم دیگر در پیاده‌سازی طرح، مسیریابی (Routing) است.

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

🔷 با توجه به اینکه خود مسیرها (سیم‌ها) دارای تأخیر هستند، می‌‌توان در این مرحله نیز مجدداً طرح را شبیه‌سازی زمانی کرد.

🔷 در این شبیه‌سازی که به آن شبیه‌سازی بعد از جانمایی و مسیریابی (Post-Place & Rout Simulation) می‌گویند، نه تنها تأخیر گیت‌ها و منابع دیجیتالی دیگر، بلکه تأخیر مربوط به سیم‌های متصل‌کننده‌ی منابع دیجیتالی به یکدیگر نیز در نظر گرفته می‌شود.

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

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

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

6⃣ ساخت فایل پیکربندی

🔷 مرحله بعدی پیاده‌سازی، ساخت فایل پیکربندی (Configuration File) است.

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

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

برای آشنایی با نحوه ساخت فایل پیکربندی و پروگرام کردن FPGA، مقاله زیر از سایت فراداندیش را ملاحظه کنید:

🌎 https://bit.ly/FPGA-Configuration

7⃣ پیکربندی یا پروگرام کردن FPGA

🔷 آخرین مرحله، پیکربندی FPGA است.

🔷 در این مرحله، به‌کمک یک پروگرامر و رابط Jtag موجود در FPGA، فایل باینری پیکربندی درون FPGA بارگذاری می‌شود.

🔷 بعد از بارگذاری این فایل، FPGA تبدیل به سخت‌افزاری که به‌کمک زبان HDL توصیف کرده بودیم می‌شود.

برای مشاهده‌ی فلوچارت مراحل پیاده‌سازی و جزئیات بیشتر، مقاله‌ی زیر از سایت فراداندیش را ببینید 👇👇👇👇

🌎 https://bit.ly/Steps-to-Configure-FPGA

🆔 @FPGA0
طبق توصیه‌ی شرکت Xilinx، برای پیاده‌سازی اعداد به‌صورت tow's complement در FPGA، باید از کدام نوع داده استفاده کنیم؟
Anonymous Quiz
34%
std_logic_vector
66%
signed
♨️ برای اطلاعات بیشتر درباره نحوه پیاده‌سازی اعداد علامت‌دار در FPGA به مجموعه پست زیر مراجعه کنید👇👇👇

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

🆔 @FPGA0
⚡️ منابع سخت‌افزاری درون FPGA (قسمت اول)

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

1⃣ کدنویسی اصولی به یک زبان توصیف سخت‌افزاری، مانند VHDL یا Verilog

2⃣ آشنایی با استفاده‌ی اصولی از منابع سخت‌افزاری درون FPGA

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

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

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

❇️ LUT:

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

🌀 هر تابع منطقی را می‌توانیم به‌کمک یک Look-Up Table یا LUT پیاده‌ساز‌‌ی کنیم‌‌.

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

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

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

🌀 در اصطلاح، به عمل سیم‌‌‌بند‌‌ی بین LUT ها، Routing گفته می‌شود‌‌.

❇️ Routing Matrix‌‌:

🌀 این سخت‌افزار شامل سیم‌‌‌ها و شبکه‌‌‌ی اتصالات قابل برنامه‌‌‌ریز‌‌ی (سوئیچ‌‌‌ها‌‌) است.

🌀 می‌توانیم منابع دیجیتالی مختلف، از جمله LUTها را به‌کمک این سیم‌‌‌ها به یکدیگر متصل کنیم‌‌.

❇️ Logic Block:

🌀 تراشه‌ی FPGA از دریایی از logic block‌ها تشکیل‌‌ شده است.

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

🌀 معمولاً به Logic Blockها‌‌، Logic Cell نیز گفته می‌شود‌‌.

🌀 با استفاده از فلیپ‌‌‌فلاپ‌های درون Logic Blockها می‌‌‌توانید مدارات سنکرون را طراحی کنید‌‌.

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

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

🆔 @FPGA0
⚡️ منابع سخت‌افزاری درون FPGA (قسمت دوم)

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

❇️ IO Block:

🌀 هر کدام از پایه‌های IOی FPGA به مداری به‌نام IO Block متصل است که این مدار قابلیت‌هایی را ایجاد می‌کند.

🌀 تبدیل هر پایه IO به ورودی، خروجی، یا IOی دوطرفه، یکی از قابلیت‌های این بلوک است.

🌀 همچنین، شما به‌وسیله‌‌‌ی IO Block می‌توانید انواع استاندارد‌‌ها‌‌ی I/O را برای این پایه‌‌‌ها تعریف کنید.

🌀 مثلا‌‌ً، می‌توانید مقدار جریان‌‌‌دهی پایه‌‌‌ها‌‌ی خروجی را تعریف کنید، یا سطح ولتاژ پایه‌‌‌ها‌‌ی ورودی-خروجی‌ را تعیین کنید. به‌کمک این قابلیت می‌توانید پایه‌‌‌ها‌‌ی FPGA را به انواع مختلف قطعات جانبی وصل کنید‌‌.

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

🌀 معمولاً در مدارات دیجیتال، به مقداری حافظه موقت نیز نیاز است‌‌.

🌀 ممکن است محاسباتی در سیستم انجام شود و بخواهید از نتیجه‌‌‌ی آن در مراحل بعد‌‌ی استفاده کنید.

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

در هر صورت، نیاز دارید که مقادیر‌‌ی را به‌صورت موقت در جایی ذخیره کنید‌‌.

برای این کار، در FPGAها حافظه‌‌‌ها‌‌یی به‌صورت بلوک سخت‌‌‌افزار‌‌ی طراحی شد‌‌ه‌‌ است.

❇️ ضرب‌‌‌کنند‌‌ه‌‌‌ها:

🌀 در تمام FPGAهای شرکت Xilinx، ضرب کننده‌ها بخش بسیار مهمی هستند که علاوه بر عملیات ضرب، قابلیت‌های بسیار زیاد دیگری نیز دارند.

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

🌀 اگر ضرب‌‌‌کنند‌‌ه‌‌‌ها‌‌ی از پیش ساخته شد‌‌ه در FPGA وجود نداشت، شما مجبور بودید از LUTها استفاده کنید و به‌کمک آن‌ها ضرب‌‌‌کنند‌‌ه‌‌‌ها را پیاده‌‌‌ساز‌‌ی کنید.

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

🆔 @FPGA0
⚡️ منابع سخت‌افزاری درون FPGA (قسمت سوم)

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

❇️ منابع کلاک:

🌀 مسئله‌ی کلاک‌‌، به‌خصوص در طراحی مدارات سنکرون مسئله‌ی‌‌ بسیار مهمی است‌‌.

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

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

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

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

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

🌀 بنا‌‌بر‌‌این‌‌، نیاز دارید که از فرکانس اسیلاتور، فرکانس جدید‌‌ی ایجاد کنید‌‌.

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

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

🌀 به‌کمک این منابع می‌توانید فرکانس اسیلاتور موجود روی برد را تغییر دهید و سیگنال کلاکی با فرکانس متفاوت داشته باشید.

🌀 استفاده از بلوک DCM مزایای دیگری نیز دارد که در پست زیر به‌طور مفصل به آن‌ها پرداخته‌ام:

🆔 https://t.me/fpga0/888

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

🌎 https://bit.ly/FPGA_Clock

🆔 @FPGA0
🆔 @FPGA0
#مقاله۸
🎓 ملزومات پیاده‌سازی کلاک در FPGA

📚 نوشته احمد ثقفی

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

🌎 https://bit.ly/FPGA_Clock
برای پیاده‌سازی اعداد اعشاری در FPGA معمولاً از چه روشی استفاده می‌کنیم؟
Anonymous Quiz
46%
floating-point
54%
fixed-point
♨️ برای اطلاعات بیشتر درباره نحوه پیاده‌سازی اعداد اعشاری در 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