Изменения

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

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

155 байт добавлено, 23:44, 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>.
}}
==Принцип работы мультиплексора==
[[Файл:2to1mux.png|thumb|180px|2-to-1 2—to—1 мультиплексор]]
[[Файл:4to1mux.png|thumb|180px|4-to-1 4—to—1 мультиплексор]]
===Мультиплексор <tex>2</tex>-to-<tex>1</tex>===
Рассмотрим мультиплексор <tex>2</tex>-to-<tex>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>4</tex>-to-<tex>1</tex>===Также рассмотрим мультиплексор <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 = <tex>0</tex></tex>, то на выход <tex>z</tex> будет подаваться значение входа <tex>x_0</tex>, если <tex>s_0 = <tex>1</tex></tex> и <tex>s_1 = <tex>0</tex></tex> <tex>-</tex> то значение <tex>x_1</tex>, если <tex>s_0 = <tex>0</tex></tex> и <tex>s_1 = <tex>1</tex></tex> <tex>-</tex> то значение <tex>x_2</tex>, в противном случае <tex>-</tex> значение <tex>x_3</tex>. Для более лучшее понимания рекомендуется обратиться к таблице истинности.
{| class="wikitable"
|-
==Логическая схема мультиплексора==
[[Файл:LogicSircuit1to8.png|thumb|360px|Логическая схема мультиплексора <tex>8</tex>-to-<tex>1</tex>]]
Заметим, что [[дешифратор]] имеет <tex>n</tex> входов и <tex>2^n</tex> выходов, причём на все выходы дешифратора подаётся <tex>0</tex> кроме выхода <tex>z_i</tex>, на который подаётся <tex>1</tex>, где <tex>i</tex> - число, которое кодируется его входами.
Тогда давайте построим дешифратор <tex>{n}</tex>-to-{<tex>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>.
==Принцип работы демультиплексора==
[[Файл:1to2demux.png|thumb|180px|<tex>1</tex>-to-<tex>2 </tex> демультиплексор]]
[[Файл:1to4demux.png|thumb|180px|<tex>1</tex>-to-<tex>4 </tex> демультиплексор]]
===Демультиплексор <tex>1</tex>-to-<tex>2</tex>===Рассмотрим демультиплексор <tex>1</tex>-to-<tex>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>1</tex>-to-<tex>4</tex>===Также рассмотрим демультиплексор <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 = <tex>0</tex></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 = <tex>1</tex></tex> и <tex>s_1 = <tex>0</tex></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 = <tex>0</tex></tex>, <tex>s_1 = <tex>1</tex></tex> и <tex>s_0 = s_1 = <tex>1</tex></tex>. Для более лучшего понимания посмотрим на таблицу истинности.
{| class="wikitable"
==Логическая схема демультиплексора==
[[Файл:LogicSircuit1to8demux.png|thumb|360px|Логическая схема демультиплексора <tex>1</tex>-to-<tex>8</tex>]]
Построим схему, аналогичную схеме мультиплексора.
Тогда давайте построим дешифратор, <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>.
==См. также==
390
правок

Навигация