
شما در این مطلب و پست های بعدی یاد می گیرید:
دیکدر چیست (در این مطلب)
انکدر چیست (در پست بعدی)
خواندن کلید فشرده شده کی پد ۸x8 با استفاده از دیکودر (در پست اخر)
کدبردار (به انگلیسی: Decoder) دستگاه، مدار، مبدل، نرمافزار، الگوریتم یا شخصی است که پیام/اطلاعات کدگذاری شده توسط کدگذار را به حالت اولش باز میگرداند به طوری که اطلاعات اصلی را میتوان بازیابی کرد.
در مدار منطقی رمزگشا یا دیکدر مداری است که دارای n پایه ورودی و حداکثر ۲n پایه خروجی است که بسته به ترکیب سیگنالهای ورودی، در هر لحظه تنها یکی از ۲n پایه فعال میشود.
دیکدرها دارای انواع دو به چهار، سه به هشت، چهار به شانزده و … هستند. کاربرد اصلی دیکودر در مدارهای دیجیتال، دسترسی به خانههای حافظه است. مدار دیکدر میتواند شامل یک سیگنال فعال ساز (En) باشد. اگر سیگنال فعالساز وجود نداشته باشد، مدار دیکودر غیرفعال خواهد شد و عمل نخواهد کرد. دیکدرها را میتوان به یکدیگر متصل کرد تا یک دیکدر بزرگتر حاصل شود. مثلاً میتوان دو دیکدر ۲ به چهار را به هم متصل کرد تا یک دیکدر ۳ به ۸ به دست آید.
مثال برای درک بهتر نحوه ی عملکرد دیکدر:
دیکدر ۲ به ۴:
اگر از دیکدر دو به چهار حرف می زنیم یعنی دو خط ورودی داریم و چهار خط خروجی:
ما می دانیم که ورودی دیکدر مقدار کد شده (باینری یا دودویی) را می گیرد و در خروجی همان مقدار را کدگشایی و مقدار دهدهی را تحویل می دهد
برای درک بهتر جدول صحت دیکودر ۲ به ۴ را مشاهده کنید:
عملکرد جدول صحت بالا را در عکس زیر مشاهده کنید:
ای سی مورد استفاده دیکدر دو به چهار ، ۴۵۵۵ می باشد.
همانطور که می بینید در دیکدر ها برای هر مقدار ورودی تنها یک خروجی فعال است و هیچ وقت دو ورودی در سیستم دهدهی با هم فعال نمی شود.
برای اینکه بتوانیم مدار یک دیکدر ۲ به چهار را با استفاده از گیت های منطقی رسم کنیم
نیاز است توابع خروجی جدول صحت را بدست آوریم
Y3=E.A1.A0
Y2=E.A1.A0‘
Y1=E.A1‘.A0
Y0=E.A1‘.A0‘
با بدست آوردن خروجی ها اقدام به رسم مدار دیکدر می کنیم:
دیکدر ۳ به ۸:
دیکدر ۳ به ۸ به دیکدر باینری به اکتال هم معروف است در این نوع دیکدر در مجموع به تعداد هشت عدد خروجی و سه عدد ورودی و همانند دیکدر دو به چهار یک پایه فعالساز داریم
خروجی ها به ترتیب از Y0 تا Y7 و ورودی ها از A0 تا A2 در بلوک دیاگرام زیر قابل مشاهده است:
جدول صحت دیکدر ۳ به ۸:
با حل جدول ، خروجی های زیر بدست میاد:
Y0=A0‘.A1‘.A2‘
Y1=A0.A1‘.A2‘
Y2=A0‘.A1.A2‘
Y3=A0.A1.A2‘
Y4=A0‘.A1‘.A2
Y5=A0.A1‘.A2
Y6=A0‘.A1.A2
Y7=A0.A1.A2
بعد از بدست آوردن خروجی ها حال می توانیم مدار را رسم کنیم:
دیکدر ۴ به ۱۶:
یک دیکدر ۴ ب ۱۶ حاوی تعداد چهار ورودی از A0 تا A3 و به تعداد ۱۶ خروجی از Y0 تا Y15 می باشد. دیکدر ۴ به ۱۶ را می توان از دیکدر های ۲ به ۴ یا دیکدر های ۳ به هشت طراحی کرد
فورمول طراحی دیکدر از دیکدر های رده پایین تر از خود به صورت زیر است:
تعداد دیکدر مورد استفاده =m2 / m1
m2=مقدار خروجی دیکدری که طراحی می کنیم
m1=مقدار خروجی دیکدری که برای طراحی استفاده می کنیم
اگر از دیکدر ۳ به ۸ برای طراحی دیکدر ۴ به ۱۶ استفاده کنیم خواهیم داشت:
۱۶ تقسیم بر ۸
مساوی ۲
پس به تعداد ۲ عدد از دیکدر سه به هشت برای طراحی دیکدر چهار به شانزده نیاز داریم
سپس اقدام به رسم بلوک دیاگرم می کنیم:
جدول صحت دیکدر ۴ به ۱۶:
موارد کاربرد دیکدر ها:
از دیکدر ها برای کم کردن تعداد پایه ها ، آدرس دهی حافظه ، روشن و خاموش کردن متوالی دستگاها ، کمک کننده در پردازش داده ها و … استفاده می شود.
به عنوان مثال اگر برنامه ای داشته باشید که در آن از یک عدد سون سگمنت مالتی پلکس هشت تایی استفاده شده باشد می دانیم که علاوه بر پایه های دیتای سون سگمنت نیاز به هشت پایه برای فعالسازی و رفرش سون سگمنتها داریم بنابراین می توانیم با استفاده از یک دیکدر سه به هشت تعداد پایه های اشغال شده mcu را از هشت عدد به سه عدد کاهش دهیم و اگر از پایه فعالساز دیکدر هم مجبور شویم استفاده کنیم نهایتا چهار پایه از mcu اشغال می شود و چهار پایه آزاد می ماند که ما می توانیم از این چهار پایه آزاد مانده برای مقاصد دیگری استفاده کنیم.
نمونه کد راه اندازی دیکدر ۳ به ۸ به زبان C:
1 2 3 4 5 6 7 8 9 10 |
void main(){ unsigned int _count=0 DDRB=0xFF; while(1){ for(_count=0;_count<16;_count++){ PORTB=_count; delay_ms(1000); } } } |
نمونه کد راه اندازی دیکدر ۳ به ۸ به زبان بیسیک:
1 2 3 4 5 6 7 8 |
config PORTB=OUTPUT dim _count as byte do for _count=0 to 15 step 1 PORTB=_count wait 1 next loop |
در پست بعدی انکدر که عملکردی کاملا برعکس دیکدر دارد مورد بررسی قرار می دهیم و سپس در پست اینده اقدام به کد نویسی یک کی پد ۸X8 با استفاده از دیکدر و انکودر می کنیم تا علاوه بر اینکه توضیحات دیکدر و انکدر را یاد گرفتید یک مثال عملی هم برای درک بهتر موضوع داشته باشیم.
منابع:
ویکی پدیا ، www.javatpoint.com
دیدگاهها (0)