Изменения

Перейти к: навигация, поиск

Мультиплексор и демультиплексор

1835 байт добавлено, 19:22, 3 декабря 2018
Нет описания правки
{{Определение
|definition='''Мультиплексор''' (англ. ''multiplexer'', или ''mux'') - логический элемент, имеющий $<tex>2^n + n$ </tex> входов $<tex>x_0$</tex>, $<tex>x_1$</tex>, $<tex>\ldots$</tex>, $<tex>x_{2^n-1}$</tex>, $<tex>s_0$</tex>, $<tex>s_1$</tex>, $<tex>\ldots$</tex>, $<tex>s_{n-1}$ </tex> и один выход $<tex>z$</tex>, на который подаётся значение на входе $<tex>x_i$</tex>, где $<tex>i$ </tex> - число, которое кодируется входами $<tex>s_0$</tex>, $<tex>s_1$</tex>, $<tex>\ldots$</tex>, $<tex>s_{n-1}$</tex>.
}}
{{Определение
|definition='''Демультиплексор''' (англ. ''demultiplexer'', или ''demux'') - логический элемент, имеющий $<tex>n+1$ </tex> входов $<tex>s_0$</tex>, $<tex>s_1$</tex>, $<tex>\ldots$</tex>, $<tex>s_{n-1}$</tex>, $<tex>x$ </tex> и $<tex>2^n$ </tex> выходов $<tex>z_0$</tex>, $<tex>z_1$</tex>, $<tex>\ldots$</tex>, $<tex>z_{2^n-1}$</tex>. На все выходы подаётся $<tex>0$ </tex> кроме выхода $<tex>z_i$</tex>, на который подаётся значение на входе $<tex>y$</tex>, где $<tex>i$ </tex> - число, которое кодируется входами $<tex>s_0$</tex>, $<tex>s_1$</tex>, $<tex>\ldots$</tex>, $<tex>s_{n-1}$</tex>.
}}
===Мультиплексор 2-to-1===
Рассмотрим мультиплексор $<tex>2-to-1$ </tex> (это значит, что есть всего два входа $<tex>x_0$ </tex> и $<tex>x_1$</tex>, значения которых могут подаваться на вход $<tex>z$</tex>). Переберём всевозможные варианты значений на входах. Если на $<tex>s$ </tex> подавать $<tex>0$</tex>, то на выход $<tex>z$ </tex> будет подаваться то же значение, которое подаётся на вход $<tex>x_0$</tex>, т.е. в данном случае значение на входе $<tex>x_1$ </tex> нас не интересует. Аналогично, если на вход $<tex>s$ </tex> подавать $<tex>1$</tex>, то на выход $<tex>z$ </tex> будет подаваться то же значение, которое подаётся на вход $<tex>x_1$</tex>. Для более лучшего понимания посмотрим на таблицу истинности.
{| class="wikitable"
|-
! $<tex>s$ </tex> !! $<tex>x_0$ </tex> !! $<tex>x_1$ </tex> !! $<tex>z$</tex>
|-
| '''0''' || '''0''' || ? || '''0'''
===Мультиплексор 4-to-1===
Также рассмотрим мультиплексор $<tex>4-to-1$ </tex> (это значит, что есть четыре входа $<tex>x_0$</tex>, $<tex>x_1$</tex>, $<tex>x_2$ </tex> и $<tex>x_3$</tex>, значения которых могут подаваться на выход $<tex>z$</tex>). Также переберём всевозможные варианты значений на входах. Тут уже 2 входа $<tex>s_0$ </tex> и $<tex>s_1$</tex>, которые определяют, значение какого из входов $<tex>x_0$</tex>, $<tex>x_1$</tex>, $<tex>x_2$ </tex> или $<tex>x_3$ </tex> будет подаваться на выход $<tex>z$</tex>. Если $<tex>s_0 = s_1 = 0$</tex>, то на выход $<tex>z$ </tex> будет подаваться значение входа $<tex>x_0$</tex>, если $<tex>s_0 = 1$ </tex> и $<tex>s_1 = 0$ $</tex> <tex>-$ </tex> то значение $<tex>x_1$</tex>, если $<tex>s_0 = 0$ </tex> и $<tex>s_1 = 1$ $</tex> <tex>-$ </tex> то значение $<tex>x_2$</tex>, в противном случае $<tex>-$ </tex> значение $<tex>x_3$</tex>. Для более лучшее понимания рекомендуется обратиться к таблице истинности.
{| class="wikitable"
|-
! $<tex>s_0$ </tex> !! $<tex>s_1$ </tex> !! $<tex>x_0$ </tex> !! $<tex>x_1$ </tex> !! $<tex>x_2$ </tex> !! $<tex>x_3$ </tex> !! $<tex>z$</tex>
|-
| '''0''' || '''0''' || '''0''' || ? || ? || ? || '''0'''
[[Файл:LogicSircuit1to8.png|thumb|180px|Логическая схема мультиплексора 8-to-1]]
Заметим, что [[дешифратор]] имеет $<tex>n$ </tex> входов и $<tex>2^n$ </tex> выходов, причём на все выходы дешифратора подаётся $<tex>0$ </tex> кроме выхода $<tex>z_i$</tex>, на который подаётся $<tex>1$</tex>, где $<tex>i$ </tex> - число, которое кодируется его входами.
Тогда давайте построим дешифратор $<tex>{n}-to-{2^n}$ </tex> (это значит, что у дешифратора имеется $<tex>n$ </tex> входов и $<tex>2^n$ </tex> выходов), на вход ему подадим входы $<tex>s_0$</tex>, $<tex>s_1$</tex>, $<tex>\ldots$</tex>, $<tex>s_{n-1}$</tex>, а выходы этого дешифратора обозначим как $<tex>y_0$</tex>, $<tex>y_1$</tex>, $<tex>\ldots$</tex>, $<tex>y_{2^n-1}$</tex>, а потом с помощью гейта $<tex>AND$ </tex> соединим выход $<tex>y_i$ </tex> дешифратора с входом $<tex>x_i$ </tex> мультиплексора, потом соединим все гейты с выходом $<tex>z$</tex>. Давайте разберёмся, почему эта схема правильная: очевидно, что если входы $<tex>s_0$</tex>, $<tex>s_1$</tex>, $<tex>\ldots$ $</tex> <tex>s_{n-1}$ </tex> кодируют вход $<tex>i$</tex>, то это значит, что только $<tex>y_i$ </tex> выход дешифратора будет иметь $<tex>1$</tex>, тогда как на остальных выходах будет $<tex>0$</tex>, значит, что значения на входах $<tex>x_0$</tex>, $<tex>x_1$</tex>, $<tex>\ldots$</tex>, $<tex>x_{i-1}$</tex>, $<tex>x_{i+1}$</tex>, $<tex>\ldots$</tex>, $<tex>x_{2^n-1}$ </tex> на ответ никак повлиять не могут. Теперь, если на входе $<tex>x_i$ </tex> было $<tex>0$</tex>, то на выходе $<tex>z$ </tex> будет $<tex>0$</tex>, если же на входе $<tex>x_i$ </tex> был $<tex>1$</tex>, то на выходе $<tex>z$ </tex> будет $<tex>1$</tex>.
==Принцип работы демультиплексора==
===Демультиплексор 1-to-2===
Рассмотрим демультиплексор $<tex>1-to-2$ </tex> (это значит, что у демультиплексора два выхода). Если на вход $<tex>s$ </tex> подать значение $<tex>0$</tex>, то на выход $<tex>z_0$ </tex> будет подаваться то же значение, которое подаётся на вход $<tex>y$</tex>, а на выход $<tex>z_1$ </tex> будет подаваться $<tex>0$</tex>. Если же на вход $<tex>s$ </tex> подать значение $<tex>1$</tex>, то на выход $<tex>z_0$ </tex> будет подаваться значение $<tex>0$</tex>, а на выход $<tex>z_1$ </tex> то же значение, которое будет подаваться на вход $<tex>y$</tex>. Для более лучшего понимания посмотрим на таблицу истинности.
{| class="wikitable"
|-
! $<tex>s$ </tex> !! $<tex>y$ </tex> !! $<tex>z_0$ </tex> !! $<tex>z_1$</tex>
|-
| '''0''' || '''0''' || '''0''' || 0
| '''1''' || '''1''' || 0 || '''1'''
|}
===Демультиплексор 1-to-4===
Также рассмотрим демультиплексор $<tex>1-to-4$ </tex> (это значит, что у демультиплексора четыре выхода). Теперь у нас уже есть два входа $<tex>s_0$ </tex> и $<tex>s_1$</tex>, которые определяют, на какой из выходов $<tex>z_0$</tex>, $<tex>z_1$</tex>, $<tex>z_2$ </tex> или $<tex>z_3$ </tex> будет подаваться значение $<tex>y$</tex>, тогда как на остальные выходы будет подаваться $<tex>0$</tex>. В случае, когда $<tex>s_0 = s_1 = 0$</tex>, то на выход $<tex>z_0$ </tex> будет подаваться значение на входе $<tex>y$</tex>, тогда как на $<tex>z_1$</tex>, $<tex>z_2$ </tex> и $<tex>z_3$ </tex> будет подаваться $<tex>0$</tex>. Если же $<tex>s_0 = 1$ </tex> и $<tex>s_1 = 0$</tex>, то на выходы $<tex>z_0$</tex>, $<tex>z_2$ </tex> и $<tex>z_3$ </tex> будет подаваться $<tex>0$</tex>, а на выход $<tex>z_1$ </tex> будет подаваться то же, что подаётся на вход $<tex>y$</tex>. Аналогично разбираются случаи $<tex>s_0 = 0$</tex>, $<tex>s_1 = 1$ </tex> и $<tex>s_0 = s_1 = 1$</tex>. Для более лучшего понимания посмотрим на таблицу истинности.
{| class="wikitable"
|-
! $<tex>s_0$ </tex> !! $<tex>s_1$ </tex> !! $<tex>y$ </tex> !! $<tex>z_0$ </tex> !! $<tex>z_1$ </tex> !! $<tex>z_2$ </tex> !! $<tex>z_3$</tex>
|-
| '''0''' || '''0''' || '''0''' || '''0''' || 0 || 0 || 0
Построим схему, аналогичную схеме мультиплексора.
Тогда давайте построим дешифратор, $<tex>{n}-to-{2^n}$</tex>, на входы дешифратора подадим входы $<tex>s_0$</tex>, $<tex>s_1$</tex>, $<tex>\ldots$</tex>, $<tex>s_{n-1}$</tex>, а выходы этого дешифратора мы обозначим как $<tex>y_0$</tex>, $<tex>y_1$</tex>, $<tex>\ldots$</tex>, $<tex>y_{2^n-1}$</tex>. Поставим $<tex>2^n$ </tex> гейтов $<tex>AND$ </tex> и соединим каждый из выходов дешифратора $<tex>y_0$</tex>, $<tex>y_1$</tex>, $<tex>\ldots$</tex>, $<tex>y_{2^n-1}$ </tex> со входом $<tex>x$ </tex> с помощью гейта $<tex>AND$</tex>, потом соединим соответственные гейты с выходами $<tex>z_0$</tex>, $<tex>z_1$</tex>, $<tex>\ldots$</tex>, $<tex>z_{2^n-1}$</tex>, причем мы соединим гейт $<tex>AND$ </tex> с выходом $<tex>z_i$</tex>, если на этот гейт приходится выход дешифратора $<tex>y_i$</tex>.
==См. также==
390
правок

Навигация