Изменения

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

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

10 650 байт добавлено, 19:11, 4 сентября 2022
м
rollbackEdits.php mass rollback
<div style="background-color: #ABCDEF; font-size: 16px; font-weight: bold; color: #000000; text-align: center; padding: 4px; border-style: solid; border-width: 1px;">Эта статья находится в разработке!</div>
<includeonly>[[Категория: В разработке]]</includeonly>
 
{{Определение
|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> входов и $2^n$ выходов. Обозначим входы как $<tex>s_0$</tex>, $<tex>s_1$</tex>, $<tex>\ldots$</tex>, $<tex>s_{n - 1}$</tex>, $<tex>y$, а выходы как $</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>, а на выход $z_i$ подаётся то же число, которое который подаётся значение на вход $входе <tex>y$</tex>, где $<tex>i$ </tex> — число, которое кодируется входами $<tex>s_0$</tex>, $<tex>s_1$</tex>, $<tex>\ldots$</tex>, $<tex>s_{n-1}$</tex>.
}}
==Принцип работы мультиплексора==
[[Файл:2to1mux.png|thumb|180px|<tex>2-to-</tex>—to—<tex>1 </tex> мультиплексор]] [[Файл:4to1mux.png|thumb|180px|<tex>4</tex>—to—<tex>1</tex> мультиплексор]]
[[Файл:4to1mux.png|thumb|180px|4===Мультиплексор 2-to-1 мультиплексор]]===
Рассмотрим мультиплексор <tex>2</tex>-to-<tex>1 </tex> (это значит, что есть всего два входа $X_0$ <tex>x_0</tex> и $X_1$<tex>x_1</tex>, значения которых могут подаваться на вход $Z$<tex>z</tex>). Рассмотрим Переберём всевозможные варианты значений на входах. Если на $S$ <tex>s</tex> подавать $<tex>0$</tex>, то на выход $Z$ <tex>z</tex> будет подаваться то же значение, которое подаётся на вход $X_0$<tex>x_0</tex>, т.е. в данном случае значение на входе $X_1$ <tex>x_1</tex> нас не интересует. Аналогично, если на вход $S$ <tex>s</tex> подавать $<tex>1$</tex>, то на выход $Z$ <tex>z</tex> будет подаваться то же значение, которое подаётся на вход $X_1$. Для более лучшего понимания посмотрим на таблицу истинности<tex>x_1</tex>.
{| class="wikitable"
|-style="text-align:center;"! $S$ <tex>s</tex> !! $X_0$ <tex>x_0</tex> !! $X_1$ <tex>x_1</tex> !! $Z$<tex>z</tex>|-style="text-align:center;"| '''<tex>\textbf{0''' }</tex> || '''<tex>\textbf{0''' }</tex> || <tex>? </tex> || '''<tex>\textbf{0'''}</tex>|-style="text-align:center;"| '''<tex>\textbf{0''' }</tex> || '''<tex>\textbf{1''' }</tex> || <tex>? </tex> || '''<tex>\textbf{1'''}</tex>|-style="text-align:center;"| '''<tex>\textbf{1''' }</tex> || <tex>? </tex> || '''<tex>\textbf{0''' }</tex> || '''<tex>\textbf{0'''}</tex>|-style="text-align:center;"| <tex>\textbf{1}</tex> || <tex>?</tex> || <tex>\textbf{1}</tex> || <tex>\textbf{1}</tex>| '''} ===Мультиплексор 4-to-1''' ===Рассмотрим мультиплексор <tex>4</tex>-to-<tex>1</tex> (это значит, что есть четыре входа <tex>x_0</tex>, <tex>x_1</tex>, <tex>x_2</tex> и <tex>x_3</tex>, значения которых могут подаваться на выход <tex>z</tex>). Также переберём всевозможные варианты значений на входах. Тут уже <tex>2</tex> входа <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>x_1</tex>, если <tex>s_0 = 0</tex> и <tex>s_1 = 1</tex> — то значение <tex>x_2</tex>, в противном случае — значение <tex>x_3</tex>.  {| class="wikitable" align="center"|- align="center"! <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>|- align="center"| <tex>\textbf{0}</tex> || <tex>\textbf{0}</tex> || <tex>\textbf{0}</tex> || <tex>?</tex> || <tex>?</tex> || <tex>?</tex> || <tex>\textbf{0}</tex>|- align="center"| <tex>\textbf{0}</tex> || <tex>\textbf{0}</tex> || <tex>\textbf{1}</tex> || <tex>?</tex> || <tex>?</tex> || <tex>?</tex> || <tex>\textbf{1}</tex>|- align="center"| <tex>\textbf{1}</tex> || <tex>\textbf{0}</tex> || <tex>?</tex> || <tex>\textbf{0}</tex> || <tex>?</tex> || <tex>?</tex> || <tex>\textbf{0}</tex>|- align="center"| <tex>\textbf{1}</tex> || <tex>\textbf{0}</tex> || <tex>?</tex> || <tex>\textbf{1}</tex> || <tex>?</tex> || <tex>?</tex> || <tex>\textbf{1}</tex>|- align="center"| <tex>\textbf{0}</tex> || <tex>\textbf{1}</tex> || <tex>?</tex> || <tex>?</tex> || <tex>\textbf{0}</tex> || <tex>?</tex> || <tex>\textbf{0}</tex>|- align="center"| <tex>\textbf{0}</tex> || <tex>\textbf{1}</tex> || <tex>?</tex> || <tex>?</tex> || <tex>\textbf{1}</tex> || <tex>?</tex> || <tex>\textbf{1}</tex>|- align="center"| <tex>\textbf{1}</tex> || <tex>\textbf{1}</tex> || <tex>?</tex> || <tex>?</tex> || <tex>?</tex> || <tex>\textbf{0}</tex> || <tex>\textbf{0}</tex>|- align="center"| <tex>\textbf{1}</tex> || <tex>\textbf{1}</tex> || <tex>?</tex> || <tex>?</tex> || <tex>? </tex> || '''<tex>\textbf{1''' }</tex> || '''<tex>\textbf{1'''}</tex>
|}
Также рассмотрим мультиплексор 4==Логическая схема мультиплексора== {{main|Шифратор и дешифратор}} Заметим, что дешифратор имеет <tex>n</tex> входов и <tex>2^n</tex> выходов, причём на все выходы дешифратора подаётся <tex>0</tex> кроме выхода <tex>z_i</tex>, на который подаётся <tex>1</tex>, где <tex>i</tex> — число, которое кодируется его входами. Тогда давайте построим дешифратор <tex>n</tex>-to-1 <tex>2^n</tex> (это значит, что есть четыре входа $X_0$у дешифратора имеется <tex>n</tex> входов и <tex>2^n</tex> выходов), $X_1$на вход ему подадим значения входов <tex>s_0</tex>, $X_2$ <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>OR</tex>, у которого <tex>2^n</tex> входов и $X_3$один выход. Давайте разберёмся, почему эта схема правильная: очевидно, что если входы <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>, значит, что значения которых могут подаваться на выход $Z$). Также рассмотрим всевозможные варианты значений на входах. Тут уже 2 входа $S_0$ и $S_1$<tex>x_0</tex>, <tex>x_1</tex>, <tex>\ldots</tex>, которые определяют<tex>x_{i-1}</tex>, значение какого из входов $X_)$<tex>x_{i+1}</tex>, $X_1$<tex>\ldots</tex>, $X_2$ или $X_3$ будет подаваться <tex>x_{2^n-1}</tex> на выход $Z$ответ никак повлиять не могут. Если $S_0 = S_1 = Теперь, если на входе <tex>x_i</tex> было <tex>0$</tex>, то на выход $Z$ выходе <tex>z</tex> будет подаваться значение входа $X_0$<tex>0</tex>, если $S_0 же на входе <tex>x_i</tex> был <tex>1</tex>, то на выходе <tex>z</tex> будет <tex>1</tex>. {||[[Файл:LogicSircuit1to8.png|thumb|500px|Логическая схема мультиплексора <tex>8</tex>-to-<tex>1</tex>]]|} ==Принцип работы демультиплексора== [[Файл:1to2demux.png|thumb|180px|<tex>1</tex>-to-<tex>2</tex> демультиплексор]] [[Файл:1to4demux.png|thumb|180px|<tex>1</tex>-to-<tex>4</tex> демультиплексор]] = ==Демультиплексор 1$ и $S_1 -to-2=== Рассмотрим демультиплексор <tex>1</tex>-to-<tex>2</tex> (это значит, что у демультиплексора два выхода). Если на вход <tex>s</tex> подать значение <tex>0$ - </tex>, то на выход <tex>z_0</tex> будет подаваться то же значение $X_1$, если $S_0 = которое подаётся на вход <tex>y</tex>, а на выход <tex>z_1</tex> будет подаваться <tex>0$ и $S_1 = </tex>. Если же на вход <tex>s</tex> подать значение <tex>1$ - </tex>, то на выход <tex>z_0</tex> будет подаваться значение $X_2$<tex>0</tex>, в противном случае - а на выход <tex>z_1</tex> то же значение $X_3$. Для более лучшее понимания рекомендуется обратиться к таблице истинности, которое будет подаваться на вход <tex>y</tex>
{| class="wikitable"
|-align="center"! $S_0$ <tex>s</tex> !! $S_1$ <tex>y</tex> !! $X_0$ <tex>z_0</tex> !! $X_1$ !! $X_2$ !! $X_3$ !! $Z$<tex>z_1</tex>|-align="center"| '''<tex>\textbf{0''' }</tex> || '''<tex>\textbf{0''' }</tex> || '''<tex>\textbf{0''' |}</tex> | ? || ? || ? || '''<tex>0'''</tex>|-align="center"| '''<tex>\textbf{0''' }</tex> || '''0''' || '''<tex>\textbf{1''' }</tex> || ? || ? || ? || '''1'''|-| '''<tex>\textbf{1''' }</tex> || '''<tex>0''' || ? || '''0''' || ? || ? || '''0'''|-| '''1''' || '''0''' || ? || '''1''' || ? || ? || '''1'''</tex>|-align="center"| '''0''' || '''<tex>\textbf{1''' |}</tex> | ? || ? || '''<tex>\textbf{0''' |}</tex> | ? || '''<tex>0'''</tex> |-| '''<tex>\textbf{0''' || '''1''' || ? || ? || '''1''' || ? || '''1'''}</tex>|-align="center"| '''<tex>\textbf{1''' }</tex> || '''<tex>\textbf{1''' || ? || ? || ? || '''0''' }</tex> || '''<tex>0'''|-| '''1''' || '''1''' || ? || ? || ? || '''1''' </tex> || '''<tex>\textbf{1'''}</tex>
|}
==Логическая схема мультиплексора=Демультиплексор 1-to-4===Рассмотрим демультиплексор <tex>1</tex>-to-<tex>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>.
[[Файл:LogicSircuit2to1mux.png{|thumbclass="wikitable"|180px- align="center"! <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>|- align="center"| <tex>\textbf{0}</tex> || <tex>\textbf{0}</tex> || <tex>\textbf{0}</tex> || <tex>\textbf{0}</tex> || <tex>0</tex> || <tex>0</tex> || <tex>0</tex>|- align="center"| <tex>\textbf{0}</tex> || <tex>\textbf{0}</tex> || <tex>\textbf{1}</tex> || <tex>\textbf{1}</tex> || <tex>0</tex> || <tex>0</tex> || <tex>0</tex>|- align="center"| <tex>\textbf{1}</tex> || <tex>\textbf{0}</tex> || <tex>\textbf{0}</tex> || <tex>0</tex> || <tex>\textbf{0}</tex> || <tex>0</tex> || <tex>0</tex>|- align="center"| <tex>\textbf{1}</tex> || <tex>\textbf{0}</tex> || <tex>\textbf{1}</tex> || <tex>0</tex> || <tex>\textbf{1}</tex> || <tex>0</tex> || <tex>0</tex>|Логическая схема мультиплексора 4-toalign="center"| <tex>\textbf{0}</tex> || <tex>\textbf{1}</tex> || <tex>\textbf{0}</tex> || <tex>0</tex> || <tex>0</tex> || <tex>\textbf{0}</tex> || <tex>0</tex>|- align="center"| <tex>\textbf{0}</tex> || <tex>\textbf{1}</tex> || <tex>\textbf{1}</tex> || <tex>0</tex> || <tex>0</tex> || <tex>\textbf{1}</tex> || <tex>0</tex>|-align="center"| <tex>\textbf{1]]}</tex> || <tex>\textbf{1}</tex> || <tex>\textbf{0}</tex> || <tex>0</tex> || <tex>0</tex> || <tex>0</tex> || <tex>\textbf{0}</tex>|- align="center"| <tex>\textbf{1}</tex> || <tex>\textbf{1}</tex> || <tex>\textbf{1}</tex> || <tex>0</tex> || <tex>0</tex> || <tex>0</tex> || <tex>\textbf{1}</tex>|}
Построим логическую схему мультиплексора. Очевидно, что если входы $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$. Очевидно, что такая схема будет иметь размер, линейно зависящий от количества входов.
==Логическая схема демультиплексора==
Построим схему, аналогичную схеме мультиплексора. Тогда давайте построим дешифратор, <tex>n</tex>-to-<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>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>. {||[[Файл:LogicSircuit1to4demuxLogicSircuit1to8demux.png|thumb|180px500px|Логическая схема мультиплексора демультиплексора <tex>1</tex>-to-4<tex>8</tex>]]|} ==Применение мультиплексора и демультиплексора в реальной жизни== Мультиплексоры и демультиплексоры часто используются в электронных схемах.  В качестве примера можно рассмотреть использование мультиплексоров для разделения на временные слоты и предоставления каждому объекту логической цепи своего слота, во время которого можно обмениваться данными с другими объектами. Данный способ позволяет использовать как можно меньше проводов для соединения объектов между собою. Такой принцип применяется при построении телефонных станций, которые соединяются с помощью одного провода, а для обеспечения помехоустойчивой связи используются временные слоты, в которые только одна из станций может обмениваться данными с остальными.  Также мультиплексоры и демультиплексоры используются в современных телефонах для преобразование сигналов в голосовые сообщения, поскольку позволяют с помощью малого (порядка <tex>30</tex> входов) воспроизводить любой сигнал с частотой, которую может различить человеческое ухо. Кроме того, мультиплексоры используются и при производстве компьютерных компонентов.
==См. также==
*[[Реализация булевой функции схемой из функциональных элементов]]
*[[Метод Лупанова синтеза схем]]
*[[Шифратор и дешифратор]]
 
==Источники информации==
*[https://en.wikipedia.org/wiki/Multiplexer Wikipedia - Multiplexer]
*[https://books.google.ru/books?id=UD0h_GqgbHgC&printsec=frontcover&dq=network%2B+guide+to+networks&redir_esc=y#v=onepage&q&f=false Dean, Tamara (2010), Network+ Guide to Networks, стр. 79-84]
 
[[Категория: Дискретная математика и алгоритмы]]
 
[[Категория: Схемы из функциональных элементов]]
1632
правки

Навигация