複数の入力の中から選択信号で1つを選んで出力する回路。
マルチプレクサ(MUX、データセレクタ)とは、複数の入力の中から選択信号で1つを選んで出力する回路です。たとえば4つの入力があるとき、2ビットの選択信号で「どれを出力につなぐか」を指定します。
身近な例で考えると、テレビのチャンネル切り替えに似ています。たくさんの放送(入力)が届いていても、リモコンで選んだ1つ(選択信号)だけが画面(出力)に映ります。多くの入力の中から、選んだ1本だけを通すスイッチだと考えてください。
上のツールで▶ボタンを押すと、選択信号が与えられ、その信号が指す入力だけが出力につながり、その値が出力に現れるまでの流れを確認できます。
選択信号(セレクト信号)は、「どの入力を出力につなぐか」を指定する命令です。マルチプレクサの動きを決める司令塔のような役割で、この信号の値が変わると、出力につながる入力も切り替わります。
選択信号と選ばれる入力の対応は次のとおりです。
・S = 00 → D0 を出力
・S = 01 → D1 を出力
・S = 10 → D2 を出力
・S = 11 → D3 を出力
ここで大事なのは必要な選択信号のビット数です。入力が n 個あれば、それを区別するのに log2(n) ビットの選択信号が要ります。4入力なら2ビット、8入力なら3ビットです。出力に現れるのは「選ばれた入力の値のコピー」で、選ばれなかった入力の値は出力に影響しません。上のツールの真理値表で、選択信号と出力につながる入力の対応を確認できます。
マルチプレクサは「多くの中から1つを選びたい」場面で広く使われます。配線や経路を節約しながら、必要なデータだけを取り出せるのが利点です。
代表的な用途は次のとおりです。
・データの多重化(時分割多重):複数の信号を1本の通信路に順番にのせて送り、配線を減らす
・CPU内部の経路選択:複数のレジスタ(=CPU内の小さな記憶場所)のうち、どの値を演算回路に送るかを選ぶ
・入力の切り替え:複数のセンサーやスイッチの値から、今読みたい1つを選ぶ
とくに多重化は、4本の線をそのまま遠くまで引くのは大変なので、マルチプレクサで1本にまとめて送り、受け取った側でデマルチプレクサ(逆の回路)を使って元の4本に戻す、という使い方をします。1本の道路に複数の車を順番に通すイメージで、限られた配線を有効に使えます。
マルチプレクサは、AND ゲート + OR ゲート + NOT ゲートの組み合わせで作られています。4-to-1 マルチプレクサなら、4 個の AND ゲートと 1 個の OR ゲートで実現できます。
論理式の作り方。「選択信号がそのデータを指しているときだけ、そのデータが OR に届くようにする」のがコツです。各 AND ゲートは「データ入力 1 本+選択信号 2 本(必要に応じて NOT で反転)」の 3 入力を持ちます。
・D0 用 AND=S1=0, S0=0 のとき有効 → D0 ∧ ¬S1 ∧ ¬S0
・D1 用 AND=S1=0, S0=1 のとき有効 → D1 ∧ ¬S1 ∧ S0
・D2 用 AND=S1=1, S0=0 のとき有効 → D2 ∧ S1 ∧ ¬S0
・D3 用 AND=S1=1, S0=1 のとき有効 → D3 ∧ S1 ∧ S0
最後に OR でまとめる。4 つの AND ゲートの出力をすべて OR でつなぐと、「選ばれたデータだけが Y に届く」ことになります。選ばれていない 3 つの AND の出力は 0 のままなので、OR の結果に影響しません。
・全体の論理式:Y = (D0 ∧ ¬S1 ∧ ¬S0) ∨ (D1 ∧ ¬S1 ∧ S0) ∨ (D2 ∧ S1 ∧ ¬S0) ∨ (D3 ∧ S1 ∧ S0)
身近な例で言うと、4 つの蛇口とそれぞれの専用スイッチがあり、押されたスイッチに対応した蛇口だけが開くイメージです。複数の蛇口の水(データ)はそれぞれのスイッチ(AND)を経由して、共通の排水管(OR)に流れ込み、結果として選ばれた 1 つの蛇口の水だけが出てきます。
マルチプレクサのちょうど逆の働きをする回路がデマルチプレクサ(DEMUX、DMUX)です。1 本の入力を、選択信号で指定した 1 本の出力線に振り分けます。
| 観点 | MUX | DEMUX |
|---|---|---|
| 入力線 | 多くの線(例: 4本) | 1本 |
| 出力線 | 1本 | 多くの線(例: 4本) |
| 役割 | 多くの中から1つを選ぶ | 1つを振り分ける |
| 別名 | データセレクタ | データディストリビュータ |
セットで使われる場面。1 本の通信路でデータをやりとりするとき、送信側で MUX を使って多数の信号を 1 本にまとめ、受信側で DMUX を使って元の多数の信号に分配するのが定番の使い方です。送受信の両方で同じ選択信号を共有することで、「今送られているのはどの信号か」を識別できます。
デコーダとの関係。実はデマルチプレクサとデコーダはほぼ同じ回路です。違いは「入力データを通すか、常に 1 を通すか」だけ。デコーダにデータ入力を追加したものがデマルチプレクサ、と考えても OK です。
身近な例で言うと、郵便の集配センターです。地域から集められた多数の手紙が 1 つの配送車(共通路)でセンターに運ばれ(MUX)、センターで宛先の地域別に仕分けられて各地へ届けられる(DMUX)、という流れに似ています。
マルチプレクサは入力数によってサイズが分かれます。「N 入力 → 1 出力」「選択信号は log₂(N) ビット」の関係で、入力が増えると必要な選択ビット数も増えていきます。
| 呼び名 | 入力数 | 出力 | 選択信号 | 主な用途 |
|---|---|---|---|---|
| 2-to-1 | 2本 | 1本 | 1ビット | 2系統の切替 |
| 4-to-1 | 4本 | 1本 | 2ビット | 小規模選択 |
| 8-to-1 | 8本 | 1本 | 3ビット | CPU内部のバス |
| 16-to-1 | 16本 | 1本 | 4ビット | 通信の多重化 |
2-to-1 マルチプレクサは最もシンプルな形で、選択信号 1 ビットだけで 2 つの入力を切り替えます。論理式は Y = (D0 ∧ ¬S) ∨ (D1 ∧ S) と覚えやすく、CPU の内部で「2 つのデータバスをどちらに通すか」を決めるときによく使われます。
マルチビット幅のマルチプレクサもあります。たとえば「8 ビット幅の値を 4 系統から選ぶ」場合、上記の 4-to-1 マルチプレクサを8 個並列に並べて、選択信号を共有します。CPU で 32 ビット幅のレジスタを切り替えるなら、32 個の MUX を並列に動かすイメージです。
必要な論理ゲート数は「AND ゲート N 個 + OR ゲート 1 個 + 選択信号用の NOT ゲート数本」で、入力数 N に対してほぼ線形に増えます。デコーダ(出力数が指数的に増える)と違い、マルチプレクサは大規模になっても回路が比較的シンプルに保てます。
マルチプレクサの最も重要な応用が、通信における時分割多重(TDM、Time Division Multiplexing)です。複数の信号を、時間を細かく区切ったスロットに順番に乗せて 1 本の回線で送る技術で、電話や通信ネットワークの基本になっています。
仕組み
・① タイムスロットを決める:時間軸を小さな区間に分け、A→B→C→D→A→… の順で割り当てる
・② 送信側で MUX が切替:高速な選択信号で MUX を A→B→C→D→A→… と切り替え、その瞬間の信号だけを 1 本の回線に送る
・③ 受信側で DMUX が振り分け:同じタイミング・同じ順番で DMUX を切り替え、対応する出力線に信号を振り分ける
・受信側では、A の時間に届いた信号は A 用の出力へ、B の時間は B 用へ、と分配される
大事なポイント — 同期。送信側の MUX と受信側の DMUX は、選択信号を完全に同期させる必要があります。タイミングがずれると、Aさんの会話がBさんに届いてしまう、というような取り違えが起きてしまいます。電話交換機やネットワークでは、クロック信号で厳密に同期を取っています。
実例:固定電話の交換機。1 本の幹線で大量の通話を同時に運ぶために、TDM が広く使われてきました。デジタル化された各通話を高速にスロットへ詰め込み、相手側の交換機でそれを取り出すことで、1 本の回線で何百もの通話を同時に流せます。インターネット上のパケット通信も、考え方の根本は同じです。
身近な例で言うと、1 本の高速道路で複数の業者の配送車が時間をずらして交互に通るイメージです。それぞれの業者用の道を 4 本作るより、1 本の道を時間で分け合うほうがコスト効率がよい。マルチプレクサが「順番に通す係」、デマルチプレクサが「届いた荷物を業者別に仕分ける係」になります。