رمزگذارها (Encoder) و رمزگشاها (Decoder) در بسیاری از پروژههای الکترونیکی برای فشردهسازی تعداد ورودیهای متعدد به تعداد کمتری خروجی استفاده میشوند. انکدر یا رمزنگار، یک مدار ترکیبی است که حداکثر 2n ورودی و n خروجی دارد. کار این مدار این است که عدد متناظر پایهی ورودی را در خروجی تولید کند یا به عبارت دیگر میتوان گفت که انکدر، داده ورودی را گرفته و در خروجی، کد باینری معادل آن را تولید میکند (یا به اصطلاح دیگر Encode میکند).
به فرآیند تبدیل نمادها (Symbols) یا اعداد به فرمت کد شده، Encoding میگویند.
انکدر برعکس دیکدر است، دیکدر در هر لحظه از زمان یک ورودی فعال دارد، در حالی که در انکدر امکان داشتن بیش از یک ورودی فعال وجود دارد. اما داشتن بیش از یک ورودی فعال به منزله مزیت آن نیست، در ادامه به این موضوع خواهیم پرداخت.
بررسی انکدر 4 به 2
برای درک هر چه بهتر این موضوع، مثالی را با استفاده از انکدر حل میکنیم، فرض کنید ما یک DP (Dip Switch) داریم که روی آن ۴ کلید وجود دارد، ما با متصل کردن پایههای این DP به یک انکدر 4 به 2 میخواهیم شماره کلیدی که فعال شده است را در خروجی نشان دهیم:
یک انکدر 4 به 2 بهشکل زیر است :
جدول صحت یک انکدر 4 به 2
Outputs | Inputs | ||||
---|---|---|---|---|---|
Y0 | Y1 | I0 | I1 | I2 | I3 |
0 | 0 | 1 | 0 | 0 | 0 |
1 | 0 | 0 | 1 | 0 | 0 |
0 | 1 | 0 | 0 | 1 | 0 |
1 | 1 | 0 | 0 | 0 | 1 |
اگر بخواهیم معادله (SOP) Y1 و Y0 را بنویسیم، به صورت زیر است:
Y0 = I3 + I1
Y1 = I3 + I2
مدار انکدر 4 به 2
حال با متصل شدن پایههای ورودی انکدر به پایههای کلید DP، هر کلیدی که روشن شود، عدد متناظر آن در خروجی تولید میشود. اما مشکلی در میان است، به نظرتان مشکل در کجاست؟
به این فکر کنید که اگر دو کلید و یا سه کلید، یا اصلا تمامی کلیدها فعال شوند چه اتفاقی میافتد؟ در این حالت خروجی ما، خروجی صحیحی نخواهد داشت و برای حل این موضوع، دست به دامن انکدر اولویت دار (Priority Encoder) میشود.
انکدر اولویت دار (Priority Encoder)
تمام حرف این انکدر این است که اگر در هر لحظه از زمان، چند ورودی فعال نیز داشته باشد، تنها آن ورودی را انتخاب میکند که دارای بیشترین ارزش باشد. به جدول زیر نگاه کنید (پایهی I3 دارای بیشترین ارزش و I0 کمترین ارزش را دارد) :
با توجه به جدول روبهرو، انکدر اولویت دار به این شکل عمل میکند که اگر V (Valid) یک باشد یعنی خروجی معتبر است (البته V صرفا برای حالت تمام صفر ایجاد شده است، در صورتی که ورودی تمام صفر باشد، V صفر باشد و ما به خروجی اهمیت ندهیم)، از طرف دیگر هم تنها با ارزش ترین ورودی را در بین ورودی های دریافت شده میپذیرد، برای مثال ما اگر I1 و I2 را به طور همزمان یک دهیم در خروجی فقط عدد متناظر I2 تولید میشود.
Outputs | Inputs | |||||
---|---|---|---|---|---|---|
V | Y0 | Y1 | I0 | I1 | I2 | I3 |
0 | X | X | 0 | 0 | 0 | 0 |
1 | 0 | 0 | 1 | 0 | 0 | 0 |
1 | 1 | 0 | X | 1 | 0 | 0 |
1 | 0 | 1 | X | X | 1 | 0 |
1 | 1 | 1 | X | X | X | 1 |
معادله (SOP) Y1 و Y0 به صورت زیر است:
Y0 = I3 + I1.Ī2
Y1 = I3 + I2
از کاربردهای انکدر اولویتدار میتوان به تشخیص یا شناسایی وقفه در برنامههای ریزپردازنده اشاره کرد. ریزپردازنده از وقفههایی برای ارتباط با دستگاههای جانبی مانند اسکنر، ماوس، کیبرد و ... استفاده میکند، اما ریزپردازنده در هرلحظه از زمان میتواند تنها به یک وفقه پاسخ دهد، به همین علت باید اولویت هر یک از این وقفه ها مشخص شود که پردازنده این کار را با استفاده از سیگنالهای درخواست وقفه یا IRQ انجام میدهد تا اولویت هر کدام از دستگاههای جانبی را مشخص کند. ترتیب اهمیت این دستگاهها را انکدر اولویتدار انجام میدهد. از انکدر اولویتدار برای کاهش تعداد سیمهای مورد نیاز در یک مدار نیز استفاده میشود.
انکدر Decimal به BCD (Binary Codded Decimal)
این انکدر به منظور تبدیل عدد دهدهی یا Decimal به کد BCD استفاده میشود که هدف از این کار، انجام عملیاتهای دودویی نظیر جمع، تفریق، تقسیم و ضرب و ... است، که به انکدر 10 به 4 نیز معروف است.
جدول صحت انکدر 10 به 4
Outputs | Inputs | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Y0 | Y1 | Y2 | Y3 | I0 | I1 | I2 | I3 | I4 | I5 | I6 | I7 | I8 | I9 |
0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
1 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
1 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 |
1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 |
0 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 |
1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 |
0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |
1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
همین موضوع را نیز نسبت به اعداد مبنای ۸ داریم، که انکدر Octal به Binary نام دارد.
کاربردی از انکدر
انکدر موقعیت یاب
اگر بگوییم از انکدر در مشخص کردن جهت جغرافیایی استفاده میشود مزاح نکردیم، در کشتی های ناوبری، توسط یک رمزنگار اولویت دار 8 به 3 برای مشخص کردن جهت جغرافیایی استفاده میشود.
این جهت یابی توسط چند سنسور اثر هال (نوعی حسگر که نسبت به قطبهای مغناطیسی حساسیت نشان میدهد) انجام میشود.
با جدول زیر نیز توسط خروجی های بدست آمده جهت را تشخیص میدهند:
Q2 | Q1 | Q0 | جهت جغرافیایی |
0 | 0 | 0 | شمال |
1 | 0 | 0 | شمال شرقی |
0 | 1 | 0 | شرق |
1 | 1 | 0 | جنوب شرقی |
0 | 0 | 1 | جنوب |
1 | 0 | 1 | جنوب غربی |
0 | 1 | 1 | غرب |
1 | 1 | 1 | شمال غربی |
ساخت انکدر 8 به 3 با زبان C
unsigned char i=0,num=0;
DDRA=0xFF; // تعریف کردن هشت پایه اول پورت بهصورت خروجی
while(1){
num=0;
for(i=0;i 8;i++){
num=1 i; // درهربار تکرار حلقه، میزان این متغیر دوبرابر مقدار قبلی میشود
PORTA=num; // پورت ما که خروجی ماست، برابر ما متغیر افزایش یافته خواهد شد
delay_ms(500); // ایجاد تاخیر 500 میلیثانیه
}
}
}
جمع بندی
انکدر (Encoder) یک مدار ترکیبی است که عدد متناظر پایهی ورودی را در خروجی تولید میکند، که به دو دسته اصلی انکدر باینری و انکدر اولویت دار تقسیم میشود. تعداد ورودی آن حداکثر 2n و تعداد خروجی برابر با n است. از انکدر اولویت دار برای کاهش تعداد سیم های مورد نیاز در یک مدار نیز استفاده میشود.
انکدر چیست؟
همانطور که در مقاله توضیح داده شد، انکدر مداری ترکیبی است که داده ورودی را به کد باینری معادل تبدیل میکند یا به بیانی دیگر عدد متناظر پایه ورودی را در خروجی تولید میکند.
دیکدر و انکدر چه تفاوتهایی دارند؟
دیکدر و انکدر دقیقا عکس یکدیگر هستند. دراین مقاله انکدر بهطور کامل توضیح داده شد. دیکدر نیز در ورودی یک عدد دودویی دریافت میکند و در خروجی، عدد متناظر باورودی را برروی یکی از پایهها قرار میدهد. برای کسب اطلاعات کامل به مقالهی دیکدر مراجعه کنید.
کاربرد انکدر در کجاست؟
رمزگذارها (Encoder) و رمزگشاها (Decoder) در بسیاری از پروژه های الکترونیکی برای فشرده سازی تعداد ورودی های متعدد به تعداد کمتری خروجی استفاده می شوند. برای مثال از دیکدر در جهت یابی جغرافیایی استفاده میشود.