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

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

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

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

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

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

  • مولتی پلکسر 2 به 1 (2:1 Mux): دارای دو ورودی داده (D0, D1) و یک خط انتخاب (S0) است. اگر S0=0 باشد، D0 به خروجی منتقل می‌شود و اگر S0=1 باشد، D1 به خروجی منتقل می‌شود.
  • مولتی پلکسر 4 به 1 (4:1 Mux): دارای چهار ورودی داده (D0, D1, D2, D3) و دو خط انتخاب (S1, S0) است. خطوط انتخاب به صورت باینری (00, 01, 10, 11) یکی از چهار ورودی را انتخاب می‌کنند.
  • مولتی پلکسر 8 به 1 (8:1 Mux): دارای هشت ورودی داده و سه خط انتخاب است.
  • مولتی پلکسر 16 به 1 (16:1 Mux): دارای شانزده ورودی داده و چهار خط انتخاب است.

نشان می‌دهد که خروجی Y برابر با OR (یا) منطقی حاصل‌ضرب (AND) خطوط انتخاب (به صورت مکمل یا عادی) با ورودی داده متناظر است.

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

  • انتخاب داده: انتخاب بین چندین منبع داده برای یک پردازنده یا دستگاه.
  • مسیردهی سیگنال: کنترل جریان داده‌ها در سیستم‌های پیچیده.
  • پیاده‌سازی توابع منطقی: با اتصال صحیح ورودی‌های داده به 0، 1، یا متغیرهای ورودی، می‌توان هر تابع منطقی دلخواه را با استفاده از یک مولتی پلکسر پیاده‌سازی کرد. این روش یکی از کاربردهای هوشمندانه مولتی پلکسرها است.
  • کاهش سیم‌کشی: در ارتباطات، امکان ارسال چندین سیگنال از طریق یک خط مشترک (با تقسیم زمانی).
  • طراحی حافظه: در آدرس‌دهی حافظه‌ها و انتخاب بانک‌های حافظه.

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

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

وقتی شما یک مولتی پلکسر را در یک زبان توصیف سخت‌افزار (HDL) مانند VHDL یا Verilog توصیف می‌کنید، ابزارهای سنتز (Synthesis Tools) FPGA این توصیف را به منابع سخت‌افزاری موجود در FPGA نگاشت (Map) می‌کنند.

مراحل مفهومی پیاده‌سازی در HDL (بدون ارائه کد مستقیم):

  1. تعریف ورودی و خروجی:
  • تعریف ورودی‌های داده (مثلاً data_in_0, data_in_1, …) که می‌توانند سیگنال‌های تک بیتی یا وکتورهای چند بیتی باشند.
  • تعریف خطوط انتخاب (مثلاً select_lines که یک وکتور بیتی است).
  • تعریف یک خروجی واحد (مثلاً output_data) که متناسب با عرض ورودی‌های داده است.
  1. توصیف رفتار انتخاب:

منطق انتخاب در HDL معمولاً با یکی از ساختارهای زیر توصیف می‌شود:

  • استفاده از دستور case (در VHDL) یا case / always (در Verilog): این روش برای مولتی پلکسرهای بزرگتر یا زمانی که نیاز به خوانایی بیشتر است، ترجیح داده می‌شود. شما حالت‌های مختلف خطوط انتخاب را فهرست کرده و برای هر حالت، ورودی داده مربوطه را به خروجی تخصیص می‌دهید.
  • استفاده از دستورات شرطی if-elsif-else (در VHDL) یا if-else if-else (در Verilog): این روش نیز برای پیاده‌سازی انتخاب شرطی مناسب است، اما ممکن است برای مولتی پلکسرهای خیلی بزرگ کمی طولانی‌تر شود.
  • استفاده از تخصیص شرطی (Conditional Assignment): برای مولتی پلکسرهای ساده‌تر (مثل 2 به 1) یا زمانی که معادله منطقی مستقیماً قابل بیان است، می‌توان از این روش استفاده کرد.

نگاشت به منابع سخت‌افزاری FPGA:

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

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