Мультиплексор и демультиплексор
Определение: |
Мультиплексор (англ. multiplexer, или mux) - логическая схема, которая имеет $2^n + n$ входов и один выход. Обозначим входы как $x_0$, $x_1$, $\ldots$, $x_{2^n - 1}$, $s_0$, $s_1$, $\ldots$, $s_{n-1}$. На выход подаётся то же, что подаётся на вход $x_i$, где $i$ - двоичное число, которое кодируется входами $s_0$, $s_1$, $\ldots$, $s_{n - 1}$. |
Определение: |
Демультиплексор (англ. demultiplexer, или demux) - логическая схема, которая имеет $n + 1$ входов и $2^n$ выходов. Обозначим входы как $s_0$, $s_1$, $\ldots$, $s_{n - 1}$, $y$, а выходы как $z_0$, $z_1$, $\ldots$, $z_{2^n-1}$. Тогда на все выходы подаётся $0$, а на выход $z_i$ подаётся то же число, которое подаётся на вход $y$, где $i$ кодируется входами $s_0$, $s_1$, $\ldots$, $s_{n-1}$. |
Содержание
Принцип работы мультиплексора
Рассмотрим мультиплексор 2-to-1 (это значит, что есть всего два входа $X_0$ и $X_1$, значения которых могут подаваться на вход $Z$). Рассмотрим всевозможные варианты значений на входах. Если на $S$ подавать $0$, то на выход $Z$ будет подаваться то же значение, которое подаётся на вход $X_0$, т.е. в данном случае значение на входе $X_1$ нас не интересует. Аналогично, если на вход $S$ подавать $1$, то на выход $Z$ будет подаваться то же значение, которое подаётся на вход $X_1$. Для более лучшего понимания посмотрим на таблицу истинности.
$S$ | $X_0$ | $X_1$ | $Z$ |
---|---|---|---|
0 | 0 | ? | 0 |
0 | 1 | ? | 1 |
1 | ? | 0 | 0 |
1 | ? | 1 | 1 |
Также рассмотрим мультиплексор 4-to-1 (это значит, что есть четыре входа $X_0$, $X_1$, $X_2$ и $X_3$, значения которых могут подаваться на выход $Z$). Также рассмотрим всевозможные варианты значений на входах. Тут уже 2 входа $S_0$ и $S_1$, которые определяют, значение какого из входов $X_)$, $X_1$, $X_2$ или $X_3$ будет подаваться на выход $Z$. Если $S_0 = S_1 = 0$, то на выход $Z$ будет подаваться значение входа $X_0$, если $S_0 = 1$ и $S_1 = 0$ - то значение $X_1$, если $S_0 = 0$ и $S_1 = 1$ - то значение $X_2$, в противном случае - значение $X_3$. Для более лучшее понимания рекомендуется обратиться к таблице истинности.
$S_0$ | $S_1$ | $X_0$ | $X_1$ | $X_2$ | $X_3$ | $Z$ |
---|---|---|---|---|---|---|
0 | 0 | 0 | ? | ? | ? | 0 |
0 | 0 | 1 | ? | ? | ? | 1 |
1 | 0 | ? | 0 | ? | ? | 0 |
1 | 0 | ? | 1 | ? | ? | 1 |
0 | 1 | ? | ? | 0 | ? | 0 |
0 | 1 | ? | ? | 1 | ? | 1 |
1 | 1 | ? | ? | ? | 0 | 0 |
1 | 1 | ? | ? | ? | 1 | 1 |
Логическая схема мультиплексора
Построим логическую схему мультиплексора. Очевидно, что если входы $s_0$, $s_1$, $\ldots$, $s_{n-1}$ задают вход $x_i$, причем значение на входе $x_i$ равно $0$, то на выходе $z$ будет $0$, если же значение на входе $x_i$ равно $1$, то и на выходе $z$ значение тоже будет $1$. Также давайте построим логическую схему, которая перебирает всевозможные варианты значений на входах $s_0$, $s_1$, $\ldots$, $s_{n-1}$, т.е. имеет $n$ входов и $2^n$ выходов, причём на всех выходах будет $0$ кроме $i$-ого выхода, на котором будет $1$, где $i$ - число, которое кодируется входами. Такая схема называется шифратором, и подробное её устройство можно почитаться в соответствующей статье, размер такой схемы будет $O(2^n)$. Теперь давайте соединим гейтами $AND$ вход $x_i$ и выход $i$ шифратора, а получившиеся провода от гейтов $AND$ мы все сведём к выходу $Z$. Очевидно, что такая схема будет иметь размер, линейно зависящий от количества входов.
Принцип работы демультиплексора
Логическая схема демультиплексора
Схема демультиплексора можно построить аналогично схеме мультиплексора за тем лишь исключением, что теперь на входе у нас, кроме входов $s_0$, $s_1$, $\ldots$, $s_n$, ещё один вход, а не $2^n$ входов, как это было в случае с мультиплексором, зато теперь у нас $2^n$ выходов вместо одного выхода. Мы также построим схему шифратора, у которой $n$ входов и $2^n$ выходов, также поставим $2^n$ гейтов $AND$, и с каждым гейтом $AND$ мы соединим вход $y$. Таким образом, мы построили схему демультиплексора.