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

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

معمولا، انکدرهای دیجیتال، وابسته به خط‌های ورودی داده، خروجی های کد 2 بیتی،3 بیتی یا 4 بیتی تولید می‌کنند. یک انکدر باینری n” بیتی”، دارای 2n خط ورودی و n بیت خط خروجی با انواع رایج آن است؛ که شامل پیکربندی‌های  4 به 2 ،8 به3 و 16 به 4 خط است.

خط‌های خروجی یک انکدر دیجیتال، معادل باینری خط ورودی را، با ارزش “1” تولید می‌کند و برای انکد(رمزگشایی) کردن الگوی ورودی ده دهی یا مبنای 16، به کد خروجی باینری یا “BCD” (ده‌دهی کدشده در مبنای دو)موجود است.

انکدر ۴ به ۲ بیت باینری

یکی از معایب اصلی انکدرهای استاندارد دیجیتال، این است؛ که درصورت وجود بیش از یک ورودی در سطح منطقی “1”، می‌توانند کد خروجی اشتباه، تولید نمایند. برای مثال، اگر ما دو ورودی  و  را، به‌صورت همزمان، در حالت HIGH و سطح منطقی “1” قرار دهیم؛ خروجی نهایی ما نه “01” و نه “10” ، بلکه برابر با “11” خواهد بود؛ که یک خروجی با یک عدد باینری متفاوت از ورودی واقعی ما است. هم‌چنین، کد خروجی برای تمام منطق‌های “0”، زمانی می‌تواند تولید شود؛ که تمام ورودی‌های آن در حالت “0” یا ورودی  برابر با 1 باشد.

یک راه ساده برای غلبه بر این مشکل، “اولویت‌بندی” هر پین ورودی است. بنابراین، اگر بیش از یک ورودی، به‌طور همزمان، در سطح منطقی “۱” ، موجود باشد؛ کد خروجی واقعی، فقط با ورودی دارای بالاترین اولویت تعیین‌شده، تطابق خواهدداشت. درنتیجه، این نوع از انکدر دیجیتال، معمولا انکدر اولویت یا برای اختصار انکدر- P نامیده می‌شود.

انکدر اولویت

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

انکدرهای اولویت، در اشکال مختلفی موجود می‌باشند؛ که برای مثال، می‌توان نمونه‌ای از یک انکدر اولویت با ۸ ورودی را، با جدول درستی آن در زیر مشاهده نمود:

انکدر اولویت ۸ به ۳ بیت

انکدرهای اولویت به‌صورت IC استاندارد موجود می‌باشند. TTL74S148، یک انکدر اولویت 8 به 3 بیتی است؛ که دارای 8 ورودی فعال در سطح LOW( منطق “0”) بوده و یک کد 3 بیتی از طریق ورودی دارای بیشترین رتبه در خروجی خود، فراهم می‌کند.

انکدرهای اولویت، ابتدا به بالاترین مرتبه‌ی ورودی، خروجی اختصاص می‌دهند. برای مثال، اگر خطوط ورودی ،  و ، به‌طور همزمان، اعمال شوند؛ کد خروجی برای (“۱۰۱”) بوده؛ زیرا دارای بالاترین رتبه، بین ۳ ورودی می‌باشد. پس از حذف‌شدن ورودی ، بالاترین کد خروجی بعدی، برای ورودی  بوده و همین‌گونه، ادامه خواهدداشت.

جدول درستی، برای یک انکدر اولویت ۸ به ۳ ، به‌صورت زیر است:

زمانی‌که، X برابر با عبارت “don,t care”(مهم نیست) می‌شود؛ به این معناست؛ که می‌تواند در یکی از منطق “0” یا “1” قرار بگیرد.

برای این جدول درستی، عبارت بولین برای انکدر بالا، با ورودی‌های داده  تا  و خروجی‌های ،  و ، به‌صورت زیر است:

خروجی‌

خروجی‌ Q1

خروجی Q2

درنتیجه، آخرین عبارت بولین برای انکدر اولویت شامل ورودی های صفر، به‌صورت زیر تعریف می‌شود:

بیان خروجی انکدر الویت

درعمل، این ورودی‌های صفر، نادیده گرفته می‌شوند و اجازه می‌دهند تا عبارت بولین نهایی برای خروجی‌های انکدر اولویت 8 به 3، اجرا شود. می‌توانیم یک انکدر ساده با استفاده از عبارات بالا و تنها با گیت‌های OR به‌صورت زیر بسازیم:

انکدر دیجیتال با استفاده از گیت‌های منطقی

کاربردهای انکدر دیجیتال

انکدر کیبورد

انکدرهای اولویت، می‌توانند برای کاهش تعداد سیم‌های موردنیاز در مدارها یا اپلیکیشن‌های دارای ورودی‌های متعدد، استفاده شوند. برای مثال، فرض‌کنید؛ که یک میکروکامپیوتر، باید 104 کلید از یک کیبورد QWERTY استاندارد را بخواند؛ درجایی‌که، تنها یک کلید “HIGH” یا “LOW”، در هر زمان، لمس خواهد شد.

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

104 دکمه‌های جداگانه یا کلید، می‌تواند به‌صورت یک کد اسکی استاندارد شامل تنها 7 بیت(0 تا 127 دسیمال) انکد شود تا هر کلید یا کاراکتر برروی کیبورد و نیز ورودی را، به‌عنوان یک کد بسیار کوچکتر 7 بیت یا BCD، مستقیما برروی کامپیوتر، نشان دهد.

انکدرهای کیبورد مانند 74C923 که یک انکدر با 20 کلید است؛ برای انجام این عمل، در دسترس می‌باشند.

انکدرهای موقعیت

یکی دیگر از کاربردهای رایج، کنترل موقعیت مغناطیسی است؛ که در جهت‌یابی کشتی‌ها یا موقعیت بازوی رباتیک و غیره، استفاده می‌شود. برای مثال در اینجا، موقعیت زاویه‌ای یا دوران یک قطب‌نما، به یک کد دیجیتال، توسط انکدر اولویت 8 به 3 خط 74LS148 تبدیل شده‌است و ورودی به کامپیوتر سیستم برای ارائه‌ی داده‌های جهت‌یابی و نیز مثالی از یک انکدر ساده قطب‌نمای 8 موقعیت به خروجی 3 بیت، در زیر نشان داده شده‌است. از آهنرباها و کلید‌های نی(reed switch) می‌توان برای نشان‌دادن موقعیت زاویه‌ای سوزن‌ها ، در هر نقطه از قطب‌نما، استفاده کرد.

مسیریابی انکدر اولویت

درخواست‌های وقفه

کاربردهای دیگر، به‌خصوص برای انکدرهای اولویت، ممکن است؛ شامل تشخیص وقفه در اپلیکیشن‎های ریزپردازنده‌ها باشد. در اینجا، ریزپردازنده، از وقفه برای امکان‌دادن به دستگاه‌های جانبی مانند دیسک درایو، اسکنر، موس، پرینتر و … و ارتباط با آن‌ها استفاده می‌کند؛ اما یک ریزپردازنده، فقط می‌تواند در هر زمان، با یک دستگاه جانبی “صحبت” کند و بنابراین، به راهی نیاز است؛ که بدانیم یک دستگاه جانبی خاص، در چه زمانی، می‌خواهد با آن ارتباط برقرار کند.

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

از آنجایی‌که، پیاده‌سازی چنین سیستم‌های با استفاده از انکدرهای اولویت، مانند IC استاندارد انکدر اولویت 74LS148 شامل مدارهای منطقی اضافی است؛ مدارهای یکپارچه‌ای مانند کنترلر وقفه‌ی اولویت قابل برنامه‌ریزی 8259 در دسترس است.

خلاصه‌ی انکدر دیجیتال

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

پیش از این دیدیم؛ که یک انکدر باینری، یکی از ۲n  ورودی را به خروجی n بیت، تبدیل می‌کند. پس یک انکدر باینری، بیت‌های خروجی کمتری، نسبت به کد ورودی دارد. انکدرهای باینری، برای فشرده‌سازی داده، مفید می‌باشند و می‌توانند توسط گیت‌های ساده‌ی AND و OR ساخته شوند. یکی از معایب اصلی آن‌ها، این است؛ که اگر بیش از یک ورودی همزمان فعال باشند؛ انکدر در خروجی خطا تولید خواهد کرد و برای غلبه بر این مشکل، انکدرهای اولویت، توسعه یافته‌اند.

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

در آموزش بعدی درباره‌ی دستگاه‌های منطقی ترکیبی، نگاهی به عملکرد مکمل انکدر یعنی دیکدر خواهیم داشت؛ که یک کد ورودی n بیتی را به 2n  خط خروجی، تبدیل می‌کند.