No history yet

بهینه‌سازی توابع منطقی

تکنیک‌های پیشرفته ساده‌سازی

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

نقشه کارنو برای ۵ متغیر

یک نقشه کارنو ۵ متغیره را می‌توان به عنوان دو نقشه ۴ متغیره در نظر گرفت که روی هم قرار گرفته‌اند. یکی از نقشه‌ها برای حالتی است که متغیر پنجم (مثلاً A) برابر با ۰ است و دیگری برای حالتی که A برابر با ۱ است. خانه‌هایی که در دو نقشه در یک موقعیت یکسان قرار دارند، با یکدیگر همسایه محسوب می‌شوند، گویی نقشه به صورت سه‌بعدی تا شده است.

برای گروه‌بندی، شما می‌توانید خانه‌های «۱» را درون هر نقشه ۴ متغیره به صورت معمول گروه‌بندی کنید. علاوه بر این، می‌توانید گروه‌هایی ایجاد کنید که بین دو نقشه مشترک هستند. یک گروه دو خانه‌ای بین دو نقشه، متغیر پنجم (A) را حذف می‌کند. یک گروه چهار خانه‌ای که دو خانه در یک نقشه و دو خانه در نقشه دیگر دارد، متغیر پنجم و یک متغیر دیگر را حذف می‌کند.

فراتر از نقشه‌ها: الگوریتم کوئین-مک‌کلاسکی

برای توابع با بیش از ۵ یا ۶ متغیر، استفاده از نقشه کارنو عملاً غیرممکن می‌شود. الگوریتم کوئین-مک‌کلاسکی یک روش جدولی و الگوریتمی برای ساده‌سازی توابع بولی است. این روش تضمین می‌کند که به ساده‌ترین شکل ممکن (SOP) برسید و چون یک روال مشخص دارد، برای پیاده‌سازی کامپیوتری ایده‌آل است. این الگوریتم دو مرحله اصلی دارد: یافتن تمام پوشاننده‌های اول (prime implicants) و سپس انتخاب مجموعه‌ای کمینه از آن‌ها برای پوشش کامل تابع.

مرحلهفعالیتهدف
۱یافتن پوشاننده‌های اولمینترم‌ها بر اساس تعداد «۱» در نمایش باینری‌شان گروه‌بندی می‌شوند. سپس گروه‌های مجاور با هم مقایسه شده و با حذف متغیر متفاوت، جملات جدید و ساده‌تر ایجاد می‌شوند. این فرآیند تا زمانی که دیگر ترکیبی ممکن نباشد ادامه می‌یابد.
۲ساخت جدول پوشاننده‌های اولجدولی ساخته می‌شود که سطرها نشان‌دهنده پوشاننده‌های اول و ستون‌ها نشان‌دهنده مینترم‌های اصلی تابع هستند. در این جدول، پوشاننده‌های اول ضروری (essential prime implicants) شناسایی شده و سپس با کمترین تعداد از پوشاننده‌های باقی‌مانده، تمام مینترم‌های تابع پوشش داده می‌شوند.

گرچه این روش به صورت دستی زمان‌بر است، اما اساس بسیاری از ابزارهای نرم‌افزاری است که امروزه در طراحی مدارهای مجتمع (IC) استفاده می‌شوند. این ابزارها می‌توانند توابع بسیار پیچیده با ده‌ها متغیر را در چند ثانیه بهینه کنند.

استفاده از حالات بی‌اهمیت

در بسیاری از سیستم‌های دیجیتال، برخی از ترکیب‌های ورودی هرگز رخ نمی‌دهند یا خروجی برای آن‌ها اهمیتی ندارد. این شرایط به عنوان حالات بی‌اهمیت یا don't care شناخته می‌شوند. برای مثال، در یک سیستم که ورودی آن کد BCD است، ترکیب‌های باینری معادل اعداد ۱۰ تا ۱۵ هرگز به عنوان ورودی معتبر ظاهر نمی‌شوند.

Lesson image

ما می‌توانیم از این حالات بی‌اهمیت به نفع خود استفاده کنیم. در نقشه کارنو یا الگوریتم کوئین-مک‌کلاسکی، می‌توانیم هر خانه «don't care» را به دلخواه «۰» یا «۱» در نظر بگیریم. هدف این است که آن‌ها را به گونه‌ای انتخاب کنیم که بزرگترین گروه‌های ممکن از «۱»ها شکل بگیرند و در نتیجه، ساده‌ترین عبارت منطقی به دست آید. این کار به ما انعطاف‌پذیری بیشتری در بهینه‌سازی می‌دهد و معمولاً منجر به مدارهایی با تعداد گیت کمتر و هزینه پایین‌تر می‌شود.

یک حالت بی‌اهمیت (don't care) مانند یک «جوکر» در بازی ورق است. می‌توانید از آن برای تکمیل یک گروه بزرگ‌تر و قوی‌تر استفاده کنید، اما مجبور نیستید آن را به کار بگیرید.

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

Quiz Questions 1/4

یک نقشه کارنو ۵ متغیره چگونه به طور معمول نمایش داده می‌شود؟

Quiz Questions 2/4

مزیت اصلی الگوریتم کوئین-مک‌کلاسکی نسبت به نقشه کارنو چیست؟

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