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

Материал из Викиконспекты
Перейти к: навигация, поиск
Эта статья находится в разработке!


Определение:
Дешифратор (англ. decoder) — логический схема, имеющая [math]n[/math] входов [math]s_0[/math], [math]s_1[/math], [math]\ldots[/math], [math]s_{n-1}[/math] и [math]2^n[/math] выходов [math]z_0[/math], [math]z_1[/math], [math]\ldots[/math], [math]z_{2^n-1}[/math]. На все выходы подаётся [math]0[/math], кроме выхода [math]z_i[/math], на который подаётся [math]1[/math], где [math]i[/math] — число, которое закодировано входами [math]s_0[/math], [math]s_1[/math], [math]\ldots[/math], [math]s_{n-1}[/math]


Принцип работы

Дешифратор [math]2[/math]-to-[math]4[/math]

Суть дешифратора заключается в том, что с помощью [math]n[/math] входов [math]s_0[/math], [math]s_1[/math], [math]\ldots[/math], [math]s_{n-1}[/math] можно задавать выход, на который будет подаваться [math]1[/math]. Для того, чтобы лучше понять, как работает дешифратор, рассмотрим дешифратор [math]2[/math]-to-[math]4[/math] (это значит, что у этого дешифратора есть два входа [math]s_0[/math] и [math]s_1[/math] и четыре выхода [math]z_0[/math], [math]z_1[/math], [math]z_2[/math] и [math]z_3[/math]). Если [math]s_0 = s_1 = 0[/math], то на выходе [math]z_0[/math] будет значение [math]1[/math], на остальных выходах будет [math]0[/math]. Если же [math]s_0 = 1[/math], [math]s_1 = 0[/math], то на выходе [math]z_1[/math] будет [math]1[/math], на остальных выходах будут [math]0[/math]. Если [math]s_0 = 0[/math], [math]s _1 = 1[/math], то на выходе [math]z_2[/math] будет [math]1[/math], а на остальных входах будет [math]0[/math]. Если же [math]s_0 = s_1 = 1[/math], то на выходе [math]z_3[/math] будет [math]1[/math], а на других — [math]0[/math]. Для более ясной картины обратимся к таблице истинности.

[math]S_0[/math] [math]S_1[/math] [math]Z_0[/math] [math]Z_1[/math] [math]Z_2[/math] [math]Z_3[/math]
[math]\textbf{0}[/math] [math]\textbf{0}[/math] [math]\textbf{1}[/math] [math]0[/math] [math]0[/math] [math]0[/math]
[math]\textbf{1}[/math] [math]\textbf{0}[/math] [math]0[/math] [math]\textbf{1}[/math] [math]0[/math] [math]0[/math]
[math]\textbf{0}[/math] [math]\textbf{1}[/math] [math]0[/math] [math]0[/math] [math]\textbf{1}[/math] [math]0[/math]
[math]\textbf{1}[/math] [math]\textbf{1}[/math] [math]0[/math] [math]0[/math] [math]0[/math] [math]\textbf{1}[/math]

Логическая схема

Логическая схема дешифратора [math]1[/math]-to-[math]2[/math]
Логическая схема дешифратора [math]2[/math]-to-[math]4[/math]

Давайте построим логическую схему дешифратора рекурсивным способом: допустим, что мы построили схему для [math]n-1[/math] элемента, теперь попробуем слить [math]n[/math]-ый выход с предыдущими [math]n-1[/math] выходами. Для [math]n=1[/math] схема выглядит тривиальным образом: от входа [math]s_0[/math] отходят два провода, один напрямую соединён с выходом [math]z_0[/math], другой соединён с гейтом [math]NOT[/math], а гейт [math]NOT[/math] соединён с выходом [math]z_1[/math]. Теперь допустим, что мы можем построить схему для [math]n-1[/math] входов. Тогда [math]n[/math]-ый вход соединим с дешифратором [math]1[/math]-to-[math]2[/math], а первые [math]n-1[/math] выходы соединим с дешифратором [math](n-1)[/math]-to-[math](2^{n-1})[/math] и потом соединим каждый выход дешифратора [math](n-1)[/math]-to-[math](2^{n-1})[/math] с каждым выходом дешифратора [math]1[/math]-to-[math]2[/math] с помощью гейтов [math]AND[/math], потом соединим соответствующие гейты с выходами [math]z_i[/math] таким образом, чтобы значение на входе [math]z_i[/math] было равно [math]1[/math] только в том случае, если число [math]i[/math] кодируется входами [math]s_0[/math], [math]s_1[/math], [math]\ldots[/math], [math]s_{n-1}[/math]. Очевидно, что мы таким образом перебрали всевозможные комбинации значений на входах [math]s_0[/math], [math]s_1[/math], [math]\ldots[/math], [math]s_{n-1}[/math], поэтому наша схема будет работать верно.

См. также

Источники информации