دکودر (Decoder)، که گاهی به آن رمزگشا نیز گفته میشود، یکی از بلوکهای سازنده بنیادین و بسیار مهم در طراحی سیستمهای دیجیتال و به ویژه در FPGAها است. این مدار یک تابع منطقی ترکیبی است که هدف اصلی آن “شناسایی” یک الگوی ورودی و “فعالسازی” یک خروجی یکتا متناظر با آن الگو است.
ماهیت و عملکرد اصلی
به طور خلاصه، دکودر یک مدار است که خط ورودی (که میتوانند یک “کد” یا “آدرس” را نشان دهند) را میگیرد و حداکثر تا خط خروجی مجزا تولید میکند. ویژگی کلیدی دکودر این است که در هر لحظه، فقط یکی از این خطوط خروجی فعال (مثلاً به سطح منطقی بالا) میشود، در حالی که تمام خروجیهای دیگر غیرفعال (مثلاً به سطح منطقی پایین) باقی میمانند.
تصور کنید یک کلید گردان دارید که میتواند به چهار موقعیت مختلف بچرخد. یک دکودر 2 به 4 میتواند ورودیهای مربوط به موقعیت این کلید (که با دو بیت باینری 00، 01، 10، 11 نمایش داده میشوند) را گرفته و فقط یکی از چهار لامپ متصل به خروجیهای خود را روشن کند، به طوری که هر لامپ نشاندهنده یک موقعیت خاص از کلید باشد.
ساختار مفهومی و منطقی
در سطح ابتدایی، دکودر از گیتهای منطقی AND و NOT ساخته میشود. هر خروجی دکودر متناظر با یک ترکیب یکتا از ورودیها است. برای فعال کردن یک خروجی خاص، نیاز است که تمام بیتهای ورودی (یا مکمل آنها) با الگوی مورد نظر مطابقت داشته باشند.
به عنوان مثال، برای یک دکودر 2 به 4:
- اگر ورودیها برابر با
00باشند، یک خروجی خاص فعال میشود که به این معنی است که باید غیرفعال (0) و نیز غیرفعال (0) باشند. - اگر ورودیها برابر با
01باشند، خروجی دیگری فعال میشود، به این معنی که باید غیرفعال (0) و فعال (1) باشند. - و به همین ترتیب برای
10و11.
این بدان معناست که هر خروجی دکودر را میتوان با یک “عبارت حداقلی” (minterm) منطقی توصیف کرد که تمامی ورودیها را در حالت فعال یا غیرفعال مناسب ترکیب میکند.
انواع متداول دکودرها
- دکودر باینری (N به 2N): رایجترین نوع دکودر است. مانند دکودر 2 به 4، 3 به 8، 4 به 16، و غیره. این دکودرها در انتخاب تراشههای حافظه، مسیردهی دادهها، و فعالسازی بلوکهای مختلف در یک معماری بزرگتر کاربرد دارند.
- دکودر با ورودی فعالساز (Enable Input): بسیاری از دکودرها یک ورودی کنترلی اضافی به نام “فعالساز” (Enable) دارند. اگر این ورودی فعال نباشد (مثلاً صفر باشد)، تمامی خروجیهای دکودر غیرفعال میمانند، بدون توجه به وضعیت ورودیهای کد. این ویژگی برای کنترل زمانی فعالسازی دکودر و یا ساخت دکودرهای بزرگتر با استفاده از چندین دکودر کوچکتر بسیار مفید است.
- دکودر BCD به 7-سگمنت: این یک دکودر خاص است که 4 بیت ورودی BCD (برای نمایش ارقام 0 تا 9) را میگیرد و آن را به 7 خط خروجی تبدیل میکند که هر یک به یک سگمنت از نمایشگر 7-سگمنتی متصل میشود. در این حالت، (تعداد خروجیها) برابر 7 است، نه . این دکودر برای نمایش اعداد دهدهی روی نمایشگرها کاربرد فراوان دارد.
نقش دکودر در FPGA
در FPGA، دکودرها به عنوان مدارهای ترکیبی خالص، به طور بسیار کارآمد توسط جدولهای جستجو (Look-Up Tables - LUTs) پیادهسازی میشوند. هر LUT میتواند یک تابع بولین (منطقی) با تعداد محدودی از ورودیها را ذخیره و اجرا کند.
- برای دکودرهای کوچکتر، مانند 2 به 4 یا 3 به 8، هر خروجی دکودر میتواند به طور کامل در یک LUT واحد قرار گیرد.
- برای دکودرهای بزرگتر، ابزارهای سنتز FPGA منطق دکودر را به طور هوشمندانه به چندین LUT و ارتباطات بین آنها تقسیم میکنند تا بهترین بهرهوری از منابع و کمترین تأخیر را به دست آورند.
نکات کلیدی:
- مدار ترکیبی: دکودر یک مدار کاملاً ترکیبی است؛ یعنی خروجیهای آن تنها به ورودیهای فعلی بستگی دارند و هیچ حافظهای برای ذخیره وضعیت قبلی وجود ندارد.
- عدم نیاز به کلاک: هسته عملکردی یک دکودر نیازی به پالس ساعت (کلاک) ندارد. تغییر در ورودیها بلافاصله (پس از یک تأخیر انتشار کوچک) در خروجیها منعکس میشود. (البته، اگر بخواهیم ورودیها یا خروجیهای دکودر را همگامسازی کنیم، ممکن است از فلیپفلاپهایی که با کلاک کار میکنند، استفاده شود، اما این بخشی از خود دکودر نیست).
- کاربردهای گسترده: دکودرها در CPUها برای آدرسدهی دستورالعملها، در واحدهای حافظه برای انتخاب سلولهای خاص، در ورودی/خروجی برای انتخاب دستگاههای جانبی، و در بسیاری از کنترلکنندههای دیجیتال دیگر استفاده میشوند.
در نهایت، دکودر یک ابزار قدرتمند برای تبدیل کدهای فشرده به سیگنالهای کنترلی مجزا و فعالسازی یکتای بخشهای مختلف یک سیستم دیجیتال است که در FPGAها با کارایی بالا قابل پیادهسازی است.
کلیدواژه ها : دکودر-FPGA-مدار ترکیبی-LUTs-گیت منطقی-فعالساز-دکودر باینری-BCD به 7-سگمنت-تأخیر انتشار-سیستم دیجیتال-بلوک سازنده-سنتز-توصیف رفتاری