Изменения

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

Шифратор и дешифратор

1071 байт добавлено, 11:21, 4 декабря 2018
Нет описания правки
{{Определение
|definition='''Дешифратор''' (англ. ''decoder'') — логический [[Реализация булевой функции схемой из функциональных элементов|схема]], имеющая $<tex>n$ </tex> входов $<tex>s_0$</tex>, $<tex>s_1$</tex>, $<tex>\ldots$</tex>, $<tex>s_{n-1}$ </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>1$</tex>, где $<tex>i$ </tex> — число, которое закодировано входами $<tex>s_0$</tex>, $<tex>s_1$</tex>, $<tex>\ldots$</tex>, $<tex>s_{n-1}$</tex>
}}
==Принцип работы==
[[Файл:2to4decoder.png|thumb|180px|Дешифратор $<tex>2$</tex>-to-$<tex>4$</tex>]]
Суть дешифратора заключается в том, что с помощью $<tex>n$ </tex> входов $<tex>s_0$</tex>, $<tex>s_1$</tex>, $<tex>\ldots$</tex>, $<tex>s_{n-1}$ </tex> можно задавать выход, на который будет подаваться $<tex>1$</tex>. Для того, чтобы лучше понять, как работает дешифратор, рассмотрим дешифратор $<tex>2$</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>s_0 = s_1 = 0$</tex>, то на выходе $<tex>z_0$ </tex> будет значение $<tex>1$</tex>, на остальных выходах будет $<tex>0$</tex>. Если же $<tex>s_0 = 1$</tex>, $<tex>s_1 = 0$</tex>, то на выходе $<tex>z_1$ </tex> будет $<tex>1$</tex>, на остальных выходах будут $<tex>0$</tex>. Если $<tex>s_0 = 0$</tex>, $<tex>s _1 = 1$</tex>, то на выходе $<tex>z_2$ </tex> будет $<tex>1$</tex>, а на остальных входах будет $<tex>0$</tex>. Если же $<tex>s_0 = s_1 = 1$</tex>, то на выходе $<tex>z_3$ </tex> будет $<tex>1$</tex>, а на других — $<tex>0$</tex>. Для более ясной картины обратимся к таблице истинности.
{| class="wikitable"
|-
! $<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>\textbf{0}$ </tex> || $<tex>\textbf{0}$ </tex> || $<tex>\textbf{1}$ </tex> || $<tex>0$ </tex> || $<tex>0$ </tex> || $<tex>0$</tex>
|-
| $<tex>\textbf{1}$ </tex> || $<tex>\textbf{0}$ </tex> || $<tex>0$ </tex> || $<tex>\textbf{1}$ </tex> || $<tex>0$ </tex> || $<tex>0$</tex>
|-
| $<tex>\textbf{0}$ </tex> || $<tex>\textbf{1}$ </tex> || $<tex>0$ </tex> || $<tex>0$ </tex> || $<tex>\textbf{1}$ </tex> || $<tex>0$</tex>
|-
| $<tex>\textbf{1}$ </tex> || $<tex>\textbf{1}$ </tex> || $<tex>0$ </tex> || $<tex>0$ </tex> || $<tex>0$ </tex> || $<tex>\textbf{1}$</tex>
|}
==Логическая схема==
[[Файл:LogicSircuit1to2decoder.png|thumb|180px|Логическая схема дешифратора $<tex>1$</tex>-to-$<tex>2$</tex>]]
[[Файл:LogicSircuit2to4decoder.png|thumb|180px|Логическая схема дешифратора $<tex>2$</tex>-to-$<tex>4$</tex>]]
Давайте построим логическую схему дешифратора рекурсивным способом: допустим, что мы построили схему для $<tex>n-1$ </tex> элемента, теперь попробуем слить $<tex>n$</tex>-ый выход с предыдущими $<tex>n-1$ </tex> выходами. Для $<tex>n=1$ </tex> схема выглядит тривиальным образом: от входа $<tex>s_0$ </tex> отходят два провода, один напрямую соединён с выходом $<tex>z_0$</tex>, другой соединён с гейтом $<tex>NOT$</tex>, а гейт $<tex>NOT$ </tex> соединён с выходом $<tex>z_1$</tex>. Теперь допустим, что мы можем построить схему для $<tex>n-1$ </tex> входов. Тогда $<tex>n$</tex>-ый вход соединим с дешифратором $<tex>1$</tex>-to-$<tex>2$</tex>, а первые $<tex>n-1$ </tex> выходы соединим с дешифратором $<tex>(n-1)$</tex>-to-$<tex>(2^{n-1})$ </tex> и потом соединим каждый выход дешифратора $<tex>(n-1)$</tex>-to-$<tex>(2^{n-1})$ </tex> с каждым выходом дешифратора $<tex>1$</tex>-to-$<tex>2$ </tex> с помощью гейтов $<tex>AND$</tex>, потом соединим соответствующие гейты с выходами $<tex>z_i$ </tex> таким образом, чтобы значение на входе $<tex>z_i$ </tex> было равно $<tex>1$ </tex> только в том случае, если число $<tex>i$ </tex> кодируется входами $<tex>s_0$</tex>, $<tex>s_1$</tex>, $<tex>\ldots$</tex>, $<tex>s_{n-1}$</tex>. Очевидно, что мы таким образом перебрали всевозможные комбинации значений на входах $<tex>s_0$</tex>, $<tex>s_1$</tex>, $<tex>\ldots$</tex>, $<tex>s_{n-1}$</tex>, поэтому наша схема будет работать верно.
==См. также==
390
правок

Навигация