انکدرها — به زبان ساده (+ دانلود فیلم آموزش گام به گام)
«اِنکدرهای دیجیتالی» (Digital Encoders) مدارهایی هستند که یک دادهی ورودی را گرفته و کد باینری معادل آن را در خروجی تولید میکنند. برخلاف مالتیپلکسرها که تنها دادهی یک خط ورودی را انتخاب کرده و آن را به یک خط خروجی ارسال یا سوئیچ میکنند، انکدرهای دیجیتالی یا باینری در هر لحظه از زمان بر اساس مقدار تمامی ورودیها تصمیمگیری کرده و یک خروجی باینری معادل تولید میکند. لذا میتوان گفت انکدر باینری یک مدار منطقی ترکیبی با چند ورودی است که بسته به شمارهی پایهای از ورودی که مقدار آن 1 منطقی است، در خروجی مقدار باینری معادل آن شماره را قرار میدهد.
فیلم آموزشی انکدر باینری
انکودرهای دیجیتالی بسته به تعداد خطوط دادهی ورودی، ممکن است خروجیهای 2 بیتی، 3 بیتی و یا 4 بیتی تولید کنند. به طور کلی یک انکدر n بیتی دارای 2n خط ورودی و n خط خروجی است. مرسومترین انکدرها عبارتند از انکدرهای 4 به 2، 8 به 3 و 16 به 4.
- بخشهای اول، دوم و سوم این مجموعه مطلب را میتوانید با کلیک روی هر یک از لینکهای مربوطه مطالعه کنید.
در انکدرها معادل باینری خطی از ورودی که مقدار 1 منطقی دارد، در خطوط خروجی قرار میگیرد. انکدرها را میتوان برای «کدگذاری» یا انکد (encode) دادههای ورودی دهدهی یا هگزادسیمال به دادههای باینری یا BCD در خروجی استفاده کرد.
انکدر باینری 4 به 2
در صورتی که بیش از یک خط ورودی دارای مقدار 1 منطقی باشند، در خروجی انکدر کد اشتباهی تولید میشود که این موضوع یکی از بزرگترین اشکالات انکدرهای استاندارد است. به عنوان مثال، اگر به طور همزمان پایههای D1 و D2 را HIGH کنیم، خروجی تولید شده نه 01 است و نه 10، بلکه 11 خواهد بود که یقیناً این مقدار خروجی متعلق به ورودی فعلی نیست. همچنین در دو حالت 1 بودن پایهی D0 و یا 0 بودن تمامی ورودیها، حالت یکسان 00 در خروجی ایجاد میشود.
یکی از سادهترین روشها برای غلبه بر این مشکل «اولویتدهی» ورودی هاست. در این روش اگر دو یا چند ورودی 1 باشند، خروجی تولید شده بر اساس ورودی دارای بالاترین اولویت خواهد بود. این نوع از انکدرهای دیجیتالی به نام «انکدر اولویت» (Priority Encoder) و یا به اختصار P-encoder نیز شناخته میشوند.
انکدر اولویت
استفاده از انکدر اولویت مشکلی که در بالا گفته شد را حل میکند. در این انکدرها به هر کدام از ورودیها یک سطح اولویت اختصاص داده میشود. در صورت 1 بودن چند پایه، خروجی انکدر اولویت مربوط به پایهای از ورودی است که بالاترین اولویت را دارد. لذا اگر پایهی ورودی با اولویت بیشتر 1 باشد، سایر ورودیها در نظر گرفته نمیشوند.
انکدرهای اولویت به شکلهای مختلفی وجود دارند. در مثال زیر یک انکدر اولویت همراه با جدول صحت آن آورده شده است.
انکدر اولویت 8 به 3
انکدرهای اولویت به شکل آیسیهای استاندارد تولید میشوند؛ مثلاً TTL 74LS148 یک انکدر اولویت 8 به 3 بیتی است که ورودیهای آن فعالپایین (active LOW) هستند. این آیسی با توجه به ورودی با بالاترین اولویت یک کد 3 بیتی در خروجی تولید میکند.
انکدرهای اولویت ورودی با بالاترین اولویت را در خروجی قرار میدهند. به عنوان مثال اگر ورودیهای D3 ،D5 و D2 به طور همزمان اعمال شوند، کد خروجی ایجاد شده متعلق به (D5) با مقدار 101 خواهد بود؛ چرا که این پایه بالاترین اولویت را بین این سه ورودی دارد. اگر D5 را حذف کنیم، اولویت بعدی متعلق به D3 خواهد بود (011) و الی آخر.
جدول صحت یک انکدر اولویت 8 به 3 به شرح زیر است:
نماد X نشان دهندهی حالات بیاهمیت (don't care) است، که ممکن است 0 منطقی یا 1 منطقی باشد.
میتوان با استفاده از این جدول، عبارت بولی مربوط به انکدر گفته شده را به دست آورد. در این معادلات D0 تا D7 ورودیهای انکدر و Q0, Q1, Q2 خروجیهای آن هستند.
خروجی Q0
خروجی Q1
خروجی Q2
در آخر عبارت بولی نهایی مربوط به انکدر اولویت با در نظر گرفتن ورودیهای صفر به صورت زیر است:
لازم به ذکر است در کاربردهای عملی این ورودیهای صفر نادیده گرفته میشوند. با توجه به عبارات بالا میتوان یک انکدر ساده را به وسیلهی گیتهای OR پیادهسازی کرد. شکل زیر این موضوع را بهتر نشان میدهد.
انکدر دیجیتال با گیتهای منطقی
کاربردهای انکدر دیجیتال
همانگونه که پیشتر اشاره شد، انکدرهای دیجیتال از پرکاربردترین مدارهای ترکیبی هستند که به طور گستردهای در سیستمهای دیجیتالی استفاده میشوند. سه نمونه از مهمترین کاربردهای انکدرها عبارتند از اتصال کیبردها، جهتیابی مغناطیسی و درخواست وقفه که در ادامه هر کدام را بررسی خواهیم کرد.
انکدر کیبرد
در مدارها و کاربردهایی که به چندین ورودی نیاز است، از انکدر اولویت برای کاهش تعداد سیمها و اتصالات استفاده میشود. به عنوان مثال فرض کنید یک میکروپروسسور باید 104 کلید یک کیبرد QWERTY را بخواند که در این کیبرد در هر لحظه میتوان تنها یک کلید را فشار داد و HIGH یا LOW کرد.
به عنوان یک راه حل میتوان مستقیماً 104 سیم از تمامی کلیدهای کیبرد گرفته و به ورودی کامپیوتر وصل کرد. اما واضح است که چنین روشی برای یک کامپیوتر خانگی کوچک امکانپذیر نیست. در اینگونه مواقع روش بهتر استفاده از یک انکدر اولویت به عنوان واسط بین کامپیوتر و کیبرد است.
با استفاده از انکدر، 104 کلید کیبرد به یک کد اَسکی (ASCII) استاندارد و تنها 7 بیتی کدگذاری میشوند که این کد 7 بیتی (0 تا 127 دهدهی) نمایندهی کلیدها یا کاراکترهای روی کیبرد است. برای پیادهسازی این روش آیسیهای مختلفی مثل 74C923 که یک انکدر 20 کلیده است تولید شده است.
انکدرهای موقعیتی
یکی دیگر از کاربردهای رایج انکدرها در سیستمهای کنترل موقعیت مغناطیسی است که در ناوبری کشتیها، تشخیص وضعیت بازوهای رباتیکی و ... به کار میروند. به عنوان مثال موقعیت چرخشی یا زاویهای یک قطبنما از طریق یک انکدر اولویت 8 به 3 مثل 74LS148 به یک کد دیجیتالی تبدیل شده و سپس این کد دیجیتالی به عنوان دادهای برای جهتیابی در سیستمهای کامپیوتری استفاده میشود.
شکل زیر یک انکدر قطبنمای ساده را نشان میدهد که در آن 8 وضعیت بررسی شده و یک کد 3 بیتی در خروجی تولید میشود. همچنین میتوان از آهنرباها و سوئیچهای مغناطیسی به منظور تشخیص دقیق موقعیت زاویهای در هر نقطه از قطبنما استفاده کرد.
جهتیابی به وسیلهی انکدر اولویت
درخواست وقفه
از دیگر کاربردهای مهم انکدرهای اولویت به شناسایی وقفهها در سیستمهای میکرپروسسوری برمیگردد. میکروپروسسورها برای برقراری ارتباط با وسایل جانبی مثل دیسک خوان (disk drive)، اسکنر، موس و ... از «وقفه» (interrupt) استفاده میکنند؛ اما در هر لحظه از زمان میکروپروسسور تنها میتواند با یک وسیلهی جانبی صحبت کند. در نتیجه هرگاه یک وسیلهی جانبی به برقراری ارتباط با میکروپروسسور احتیاج دارد، باید به شیوهای میکروپروسسور را از این موضوع آگاه سازد.
میکروپروسسور این کار را از طریق سیگنالهای «درخواست وقفه» یا به اختصار IRQ ها (Interrupt Requests) انجام میدهد. با به کارگیری این سیگنالها اطمینان مییابیم که به تمام دستگاههای جانبی اولویتی اختصاص یافته و اینکه ابتدا به دستگاه با بالاترین اولویت رسیدگی میشود. ترتیب اهمیت دستگاههای جانبی به اینکه به کدام پایهی انکدر اولویت متصل باشند بستگی دارد.
برای پیادهسازی چنین سیستمی با انکدر اولویت 74LS148، به مدارهای منطقی دیگری نیز نیاز خواهد بود. لذا مدارهای مجتمعی مانند 8259 طراحی شدهاند که تمامی قطعات مورد نیاز را در خود جا دادهاند. به این آیسی «کنترلگر وقفه با اولویت قابل برنامهریزی» (Programmable Priority Interrupt Controller) نیز گفته میشود.
خلاصه
به طور خلاصه، انکدر دیجیتال یک مدار منطقی ترکیبی است که با توجه به یک یا چند ورودی فعالش، خروجی مشخصی تولید میکند. این خروجی میتواند به صورت باینری یا BCD باشد. انکدرها دو دستهاند: «انکدر باینری» و «انکدر اولویت».
همانگونه که دیدیم، انکدرهای باینری یکی از 2n ورودی خود را به یک خروجی n بیتی تبدیل میکنند. واضح است که تعداد بیتهای خروجی انکدر باینری از تعداد بیتهای ورودی آن کمتر است. انکدرهای باینری ابزارهای سودمندی برای فشردهسازی اطلاعات هستند و آنها را میتوان بهسادگی با گیتهای AND یا OR پیادهسازی کرد. یکی از بزرگترین اشکالات انکدرهای باینری این است که هر زمان بیش از 1 ورودی فعال باشد، در خروجی خطا رخ میدهد. برای غلبه بر این مشکل انکدرهای اولویت طراحی شدند.
انکدر اولویت نوع دیگری از مدارهای ترکیبی است که شباهت بسیار زیادی به انکدر باینری دارد، با این تفاوت که کد خروجی بر اساس ورودی با بالاترین اولویت تولید میشود. انکدرهای اولویت به طور گستردهای در سیستمهای کامپیوتری و دیجیتالی به کار میروند. مثلاً برای شناسایی وقفه با بالاترین اولویت در کنترل کنندهی وقفهی میکروپروسسور از انکدر اولویت استفاده میشوند.
در قسمت بعدی از مجموعه آموزشهای مربوط به مدارهای منطقی ترکیبی، نگاهی به دیکدرها (Decoder) خواهیم داشت که به نوعی عکس انکدرها عمل میکنند. دیکدرها یک کد n بیتی در ورودی را به یکی از 2n خط خروجی تبدیل میکنند.
اگر مطلب بالا برای شما مفید بوده است، ممکن است آموزشهای زیر نیز برایتان کاربردی باشند.
- مجموعه آموزش های مدارهای منطقی (طراحی دیجیتال)
- گنجینه فرادرس های آموزش الکترونیک دیجیتال و سیستم های برنامه پذیر
- مجموعه آموزشهای مهندسی برق
- منطق ترکیبی به زبان ساده – بخش اول: مقدمه
- منطق ترکیبی به زبان ساده – بخش دوم: مالتیپلکسر
- منطق ترکیبی به زبان ساده – بخش سوم: دیمالتیپلکسر
^^
عالی بود.تشکر