مولتی‌پلکسر (Multiplexer) که اغلب به صورت مخفف “Mux” نامیده می‌شود، یکی از اجزای بنیادی و بسیار مهم در طراحی مدارهای منطقی دیجیتال است. نقش اصلی مولتی‌پلکسر، عمل کردن به عنوان یک “انتخاب‌گر داده” (Data Selector) است. تصور کنید شما چندین مسیر ورودی داده دارید و تنها می‌خواهید یکی از آن‌ها را در یک زمان خاص به یک مسیر خروجی واحد متصل کنید. مولتی‌پلکسر دقیقاً همین وظیفه را بر عهده دارد: از میان تعدادی ورودی داده‌ای مختلف، یکی را بر اساس یک سیگنال کنترلی خاص (یا مجموعه سیگنال‌های کنترلی) انتخاب کرده و آن را به خروجی واحد خود منتقل می‌کند.

به بیان ساده‌تر، مولتی‌پلکسر مانند یک کلید چند مسیره است که به شما اجازه می‌دهد تنها یکی از ورودی‌های متعدد را به سمت یک خروجی مشترک هدایت کنید. این ویژگی آن را به ابزاری حیاتی در سیستم‌های دیجیتال تبدیل می‌کند، جایی که نیاز به مسیریابی پویای داده‌ها، کاهش پیچیدگی سیم‌کشی، یا انتخاب عملیات خاص از بین گزینه‌های متعدد وجود دارد.

مولتی‌پلکسرها دارای سه نوع پورت یا خط ارتباطی اصلی هستند:

  1. ورودی‌های داده (Data Inputs -
    D_i
    Di
    ):
    این‌ها خطوطی هستند که سیگنال‌های داده‌ای مختلف را حمل می‌کنند. تعداد این ورودی‌ها معمولاً به صورت توان‌های عدد 2 (مانند 2، 4، 8، 16 و…) مشخص می‌شود.
  2. خطوط انتخاب (Select Lines - Sj): این خطوط، سیگنال‌های کنترلی باینری را دریافت می‌کنند. ترکیب این سیگنال‌ها تعیین می‌کند که کدام یک از ورودی‌های داده باید به خروجی منتقل شود. تعداد خطوط انتخاب (SSS) و تعداد ورودی‌های داده (NNN) با رابطه N=2SN = 2^S به هم مرتبط هستند. به عنوان مثال، برای یک مولتی‌پلکسر با 4 ورودی داده، به 2 خط انتخاب نیاز داریم (4=224 = 2^24=22).
  3. خروجی (Output - Y): این یک خط خروجی واحد است که داده‌ای را که توسط خطوط انتخاب برگزیده شده است، حمل می‌کند.

انواع متداول و عملکرد مولتی‌پلکسرها

مولتی‌پلکسرها بر اساس تعداد ورودی‌های داده‌ای که می‌توانند مدیریت کنند، دسته‌بندی می‌شوند. متداول‌ترین انواع عبارتند از:

  • مولتی‌پلکسر 2 به 1 (2:1 Mux): ساده‌ترین نوع است که دارای دو ورودی داده (مثلاً D0,D1D_0, D_1D0,D1) و یک خط انتخاب (S0S_0S0) می‌باشد. اگر S0=0S_0=0S0=0 باشد، D0D_0D0 به خروجی منتقل می‌شود و اگر S0=1S_0=1S0=1 باشد، D1D_1D1 به خروجی منتقل می‌شود.
  • مولتی‌پلکسر 4 به 1 (4:1 Mux): دارای چهار ورودی داده (D0,D1,D2,D3D_0, D_1, D_2, D_3D0,D1,D2,D3) و دو خط انتخاب (S1,S0S_1, S_0S1,S0) است. ترکیب باینری خطوط انتخاب (00, 01, 10, 11) یکی از چهار ورودی را به خروجی متصل می‌کند.
  • مولتی‌پلکسر 8 به 1 (8:1 Mux): دارای هشت ورودی داده و سه خط انتخاب است.
  • مولتی‌پلکسر 16 به 1 (16:1 Mux): دارای شانزده ورودی داده و چهار خط انتخاب است.

کاربردهای کلیدی مولتی‌پلکسرها

مولتی‌پلکسرها به دلیل ماهیت انتخاب‌گرایانه خود، در بسیاری از بخش‌های سیستم‌های دیجیتال کاربردهای وسیعی دارند:

  • انتخاب داده (Data Selection): رایج‌ترین کاربرد، انتخاب بین منابع مختلف داده برای ارسال به یک پردازنده یا زیرسیستم.
  • مسیردهی سیگنال (Signal Routing): در سیستم‌های پیچیده‌تر، برای کنترل جریان سیگنال‌ها و داده‌ها بین اجزای مختلف یک مدار.
  • پیاده‌سازی توابع منطقی (Logic Function Implementation): یک کاربرد هوشمندانه مولتی‌پلکسرها این است که می‌توانند برای پیاده‌سازی هر تابع منطقی بولین دلخواه استفاده شوند. با اتصال ورودی‌های داده‌ای مولتی‌پلکسر به 0، 1، یا متغیرهای ورودی تابع، و استفاده از متغیرهای باقی‌مانده به عنوان خطوط انتخاب، می‌توان هر تابع منطقی را ایجاد کرد.
  • کاهش سیم‌کشی و اشتراک‌گذاری منابع: در ارتباطات، مولتی‌پلکسرها به سیگنال‌های متعدد اجازه می‌دهند تا از طریق یک کانال مشترک به صورت تقسیم زمانی (Time Division Multiplexing) منتقل شوند که منجر به کاهش تعداد سیم‌کشی‌های فیزیکی می‌شود.
  • طراحی حافظه و رجیستر فایل‌ها: در آدرس‌دهی حافظه‌ها و انتخاب خانه‌های حافظه یا بانک‌های رجیستر.
  • مولد پالس (Pulse Generation): با ترکیب مناسب ورودی‌ها و خطوط انتخاب، می‌توان پالس‌های خاصی را در زمان‌های مشخص تولید کرد.

مولتی‌پلکسرها در FPGA

پیاده‌سازی مولتی‌پلکسرها در FPGA (Field-Programmable Gate Array) بسیار بهینه و کارآمد است. دلیل این امر به ساختار داخلی FPGAها برمی‌گردد که اساساً از بلوک‌های منطقی قابل تنظیم (Configurable Logic Blocks - CLBs) تشکیل شده‌اند. این CLBها عمدتاً شامل Look-Up Tables (LUTs) هستند.

هر LUT یک قابلیت پیاده‌سازی تابع منطقی بولین را برای تعداد محدودی از ورودی‌ها دارد. به عنوان مثال، یک LUT 4 ورودی می‌تواند هر تابع 4 ورودیه‌ای را پیاده‌سازی کند. یک مولتی‌پلکسر 2 به 1 یا حتی 4 به 1 را می‌توان به راحتی درون یک LUT پیاده‌سازی کرد. برای مولتی‌پلکسرهای بزرگتر، ابزارهای سنتز (Synthesis Tools) FPGA چندین LUT را به صورت سلسله مراتبی یا موازی با هم ترکیب می‌کنند تا مولتی‌پلکسر مورد نظر با حداکثر سرعت و کارایی پیاده‌سازی شود.

هنگامی که یک مولتی‌پلکسر در زبان توصیف سخت‌افزار (HDL) مانند VHDL یا Verilog توصیف می‌شود (با استفاده از ساختارهای case، if-else یا تخصیص شرطی)، ابزارهای سنتز FPGA این توصیف رفتاری را به بهینه‌ترین ساختار سخت‌افزاری متشکل از LUTها و سیم‌کشی‌های داخلی FPGA نگاشت (Map) می‌کنند. این فرآیند خودکار است و طراح نیازی به نگرانی در مورد جزئیات سطح پایین نگاشت ندارد.

کلیدواژه ها : مولتی پلکسر-Multiplexer-Mux-انتخاب‌گر داده-Data Selector-FPGA-Look-Up Table-LUT-مدار منطقی-Combinational Logic-خطوط انتخاب-Select Lines-ورودی داده-Data Inputs-خروجی-Output-VHDL-Verilog-سنتز FPGA-کاربردهای مولتی پلکسر-توابع منطقی-طراحی دیجیتال