دیکدر باینری، یکیدیگر از مدارهای منطقی ترکیبی است؛ که از گیتهای منطقی منحصربفرد ساختهشده و دقیقا معکوس انکدر است.
“دیکدر”، بهمعنای ترجمه یا دیکدکردن اطلاعات کدشده، از یک فرمت به فرمت دیگر است؛ بنابراین، دیکدر باینری، سیگنالهای ورودی باینری n، را به کد معادل 2n خروجی، تبدیل میکند.
دیکدرهای باینری، نوع دیگری از دستگاههای منطقی دیجیتال، میباشند؛که بسته به تعداد خطهای ورودی داده، دارای ورودیهای کد 2 بیتی،3 بیتی یا 4 بیتی میباشند و بنابراین، یک دیکدر که دارای مجموعهای از دو یا چند بیت است؛ بهعنوان دارندهی کد n” بیتی” تعریف میشود و بنابراین میتوان، 2n مقدار ممکن را نشانداد. پس، یک دیکدر، معمولا یک مقدار باینری را با تنظیم دقیقا یکی از n خروجی خود در منطق 1، به مقدار غیر باینری، دیکد میکند.
اگر یک دیکدر باینری، n ورودی دریافت کند؛ (معمولا بهعنوان یک عدد باینری یا بولین، گروهبندی میشود) تنها و تنها یکی از خروجیهای 2n خود را، براساس آن ورودی فعال میکند و همهی خروجیهای دیگر را غیرفعال میکند.
برای مثال، یک معکوسکننده( گیت NOT) میتواند بهعنوان یک دیکدر باینری 1 به 2 دستهبندی شود؛ زیرا امکان یک ورودی و دو خروجی (2۱) را دارد و ورودی A، میتواند دو خروجی A و (not A) بهصورت رو به رو داشته باشد:
پس میتوانیم بگوییم؛ که یک دیکدر منطقی ترکیبی استاندارد، یک دیکدر n به m است؛ درجاییکه بوده و خروجی آن، تنها وابسته به حالتهای ورودی فعلی آن است. به بیان دیگر، یک دیکدر باینری، به ورودیهای فعلی خود نگاه میکند؛ تعیین میکند که کدام کد یا عدد باینری در ورودیهایش موجود است و درنهایت، خروجی مناسب و مطابق با ورودی باینری خود را؛ انتخاب میکند.
یک دیکدر باینری، ورودیهای کدشده را به خروجیهای کدشده تبدیل میکند؛ درجاییکه، کدهای ورودی و خروجی متفاوت بوده و دیکدرها برای دیکد کردن یک الگوی ورودی باینری یا BCD (کد 8421) به یک کد خروجی دهدهی، دردسترس هستند. دیکدرهای BCD به دسیمال موجود، شامل TTL7442 یا CMOS4028 میباشند. درحالت کلی، کد خروجی یک دیکدر، بهصورت نرمال دارای تعداد بیت بیشتری از کد ورودی خود است و مدارهای “دیکدر باینری” کاربردی، شامل پیکربندیهای 2 به 4، 3 به 8 و 4 به 16 خط میباشد.
یک مثال از دیکدر ۲ به ۴ خط، همراه با جدول درستی آن، بهصورت زیر است:
دیکدرهای باینری ۲ به ۴
این مثال ساده از دیکدر باینری 2 به 4 خط در بالا، شامل آرایهای از 4 گیت AND است. 2 ورودی باینری برچسبزدهشده A و B به یکی از 4 خروجی، دیکد میشوند و توصیف دیکدر باینری 2 به 4 همین است. هر خروجی، نشاندهندهی یکی از ترمهای کوچک دو متغیر ورودی است( هر خروجی= یک ترم کوچک).
ورودیهای A و B تعیین میکنند؛ که کدام خط خروجی از تا در حالت “HIGH” در سطح منطق “1” قرار میگیرد؛ درحالیکه، بقیهی خروجیها در حالت “LOW” و سطح منطق “0” نگه داشته شدهاند ودرنتیجه، تنها یک خروجی میتواند در هر زمان، فعال (HIGH) باشد. از اینرو، اینکه که کدام خط خروجی، “HIGH” است؛ کد باینری موجود در ورودی را تعیین میکند و به بیان دیگر، ورودی باینری را “دیکد” میکند.
برخی از دیکدرهای باینری، دارای یک پین ورودی اضافه با برچسب “Enable (فعالساز)” میباشند؛ که خروجیهای دستگاه را کنترل میکند. این ورودی اضافی، به خروجیهای دیکدر اجازه روشن (“ON”) یا خاموششدن (“OFF”) را در صورت نیاز، میدهد. این نوع از دیکدرهای باینری، معمولا بهعنوان “دیکدرهای آدرس حافظه” در اپلیکیشنهای حافظه در ریزپردازندهها استفاده میشوند.
پس دیدیم؛ که دیکدر باینری 2 به 4 خط (TTL74155 ) میتواند برای دیکدکردن هر کد باینری 2 بیتی و فراهمکردن 4 خروجی، برای هر پیکربندی ورودی موجود، استفاده شود. با این حال، گاهیاوقات، نیاز به یک دیکدر باینری با تعداد خروجی بیشتر از تعدادی که دردسترس است؛ میباشد و با اضافهنمودن ورودیهای بیشتر، دیکدر میتواند بهصورت بالقوه 2n خروجی بیشتر، ارائه کند.
پس برای مثال، یک دیکدر با 3 ورودی باینری (n=3) یک دیکدر 3 به 8 خط (TTL74138) و 4 ورودی (n=4) یک دیکدر 4 به 16 خط (TTL74154) تولید میکند و اینگونه ادامه مییابد. اما یک دیکدر میتواند دارای خروجیهای کمتراز 2n باشد؛ مانند یک دیکدر BCD به سون-سگمنت (TTL7447) که دارای 4 ورودی و تنها 7 خروجی فعال برای نمایش، بهجای 16 (2۴) خروجی کامل موردانتظار است.
دراینجا، یک دیکدر باینری بسیار بزرگتر ۴ (۳ داده بهعلاوهی ۱ فعالساز) به ۱۶ خط، توسط دو دیکدر کوچکتر ۳ به ۸، پیادهسازی شدهاست.
پیکربندی دیکدر باینری ۴ به ۱۶
ورودیهای A ، B و C برای انتخاب خروجی هریک از دیکدرها با منطق “1” (HIGH) و ورودی D برای فعالسازی ورودی و انتخاب اینکه کدام دیکدر اول یا دوم، خروجی برابر با “1” خواهند داشت؛ استفاده میشوند.
درهرحال، محدودیتی درتعداد ورودیهایی که میتواند برای یک دیکدر خاص استفادهشود؛ وجود دارد و دلیل آن، این است؛ که با افزایش n، تعداد گیتهای AND موردنیاز برای تولید یک خروجی بیشتر میشود و درنتیجه، فن گیتهای استفادهشده برای هدایت آنها، بزرگتر میشود.
این نوع از دیکدرهای فعال (HIGH)، میتواند برای پیادهسازی با استفاده از معکوسکنندهها ( گیتهای NAND) و گیتهای AND، استفاده شود. استفاده از یک گیت AND بهعنوان عنصر دیکدکنندهی اساسی، برای خروجی راحت است؛ زیرا خروجی “HIGH” یا منطقی “1” را، تنها زمانی تولید میکند؛ که همهی ورودیهای منطقی آن، “1” باشد.
اما برخی از دیکدرهای باینری، با استفاده از گیتهای NAND بهجای گیتهای AND ، برای خروجی دیکدشدهی خود، ساخته میشوند؛ زیرا گیتهای NAND نسبت به گیتهای AND، بهدلیل تعداد کمتر ترانزیستورهای موردنیاز برای طراحی خود، برای تولید ارزانتر میباشند.
استفاده از گیتهای NAND بهعنوان عنصر دیکدکردن، خروجی فعال “LOW” را نتیجه میدهد؛ درحالیکه، بقیه در حالت “HIGH” میباشند. همانطور که یک گیت NAND، عمل گیت AND را با خروجی معکوس انجام میدهد؛ جدول دیکدر NAND مشابه زیر و با جدول درستی معکوس آن، است.
دیکدر باینری NAND 2 به 4 خط
پس برای دیکدر NAND، تنها یک خروجی میتواند LOW و برابر با منطق “0” در هر زمانی باشد؛ درحالیکه، بقیهی خروجیها، HIGH و در منطق “1” خواهند بود.
دیکدرها، با یک پین ورودی “Enable” اضافی نیز موجود میباشند؛ که اجازه میدهند، خروجی دیکدشده، با استفاده از منطق “1” یا منطق “0”، بهترتیب “روشن” یا “خاموش” گردد. برای مثال، زمانیکه ورودی enable در سطح منطق “0” است (EN=0)؛ تمام خروجیها در منطق “0” و خاموش میباشند(برای گیتهای AND)؛ بدون اینکه حالت ورودیهای A و B در نظر گرفتهشوند.
در حالت کلی، برای پیادهسازی عملکرد فعالسازی (Enabling) گیتهای دو ورودی AND یا NAND، با گیتهای سه ورودی AND یا NAND جایگزین میشوند. پین ورودی اضافی، نشاندهندهی عملکرد فعالسازی است.
دیکدر آدرس حافظه
دیکدرهای باینری، اغلب در سیستمهای دیجیتالی پیچیدهتر، برای دسترسی به موقعیت یک حافظهی خاص، براساس “آدرس” تولیدشده توسط یک دستگاه محاسباتی، استفاده میشوند. در سیستمهای مدرن ریزپردازنده، میزان حافظه موردنیاز میتواند بسیار زیاد باشد و معمولا بیش از یک تراشهی حافظه، بهتنهایی است.
یکی از روشهای غلبه بر این مشکل، اتصال تعداد زیادی تراشهی حافظه جداگانه به یکدیگر و خواندن دادهها در یک “گذرگاه داده”ی مشترک است. بهمنظور جلوگیری از “خواندن” دادهها از هر تراشهی حافظه، بهطور همزمان، هر تراشهی حافظه، بهصورت جداگانه یک به یک انتخاب میشود و این فرآیند بهعنوان دیکدکردن آدرس، شناخته میشود.
در این نوع کاربرد، آدرس، نشاندهندهی ورودی دادهی کدشده است و خروجیها، سیگنالهای انتخابی عنصر حافظهی خاص میباشند. هر تراشهی حافظه، دارای یک ورودی بهنام انتخاب تراشه با CS است؛که توسط MPU (یکای ریزپردازنده) برای انتخاب تراشهی حافظهی مناسب، زمانیکه نیاز است؛ استفاده میشود. معمولا، منطق “1” در ورودی انتخاب تراشه (CS)، دستگاه حافظه را انتخاب میکند؛ در حالیکه، منطق “0” در ورودی، عکس این عمل را، انجام میدهد.
بنابراین، با انتخاب یا لغو انتخاب هر یک از تراشهها در یک زمان، به ما امکان انتخاب دستگاه آدرس حافظهی مناسب برای موقعیت یک آدرس خاص، داده میشود. مزیت دیکدکردن آدرس، این است؛ که وقتی آدرس حافظهی خاصی را مشخص میکنیم؛ محل حافظهی مربوطه، فقط در یکی از تراشهها، وجود دارد.
برای مثال، فرضکنید؛ ما یک سیستم ریزپردازندهی بسیار ساده داریم ؛که تنها 1 کیلوبایت (=1kBهزاربایت) حافظهی RAM و 10 خط آدرس حافظه دردسترس، دارد. این حافظه، از دستگاههای 128*8 بیتی (128*8=1024b) تشکیل شدهاست و برای یک Kb ، ما به 8 تراشهی حافظهی منحصربفرد، نیاز داریم؛ اما برای انتخاب تراشهی حافظهی صحیح، ما به دیکدر باینری 3 به 8 خط، همانطور که در زیر نشان داده شدهاست؛ احتیاج داریم.
دیکد کردن آدرس حافظه
دیکدر باینری، نیاز به 3 خط آدرس (A۰ تا A۲)، برای انتخاب هر یک از 8 تراشه (بخش پایینتر آدرس) دارد؛ درحالیکه، 8 خط آدرس باقیمانده (A۳ تا A۱۰)، موقعیت حافظهی صحیح را برروی تراشه، انتخاب میکند (بخش بالاتر آدرس).
پس از انتخاب موقعیت حافظه با استفاده از گذرگاه آدرس، اطلاعات موجود در محل حافظهی داخلی خاص، برای استفاده از ریزپردازنده به “گذرگاه داده” مشترک، ارسال میشود. البته این یک مثال ساده است؛ اما اصول برای همهی انواع تراشهها یا ماژولها یکسان است.
دیکدرهای باینری، دستگاههای بسیار مفیدی برای تبدیل یک فرمت دیجیتال به دیگری، مانند نوع دادهی باینری یا BCD ،به فرمت ده دهی یا هشت هشتی و … میباشند و معمولا ICهای دیکدر در دسترس، دیکدر باینری 3 به 8 خط TTL74LS138 و دیکدر 4 به 16 خط 74ALS145 میباشند.
آنها همچنین، برای ارتباط با نمایشگرهای سون سگمنت مانند TTL74LS47 بسیار مفید میباشند؛ که در مقالهی بعدی به آنها خواهیم پرداخت.
منبع: ردرونیک